From 6f83aca997cb70784b6355bc68ff430c76ce4181 Mon Sep 17 00:00:00 2001 From: Sam Beveridge Date: Tue, 15 Sep 2026 13:55:26 -0700 Subject: [PATCH 1/4] show no warnings if balance is currently zero --- .../.changeset/odd-experts-check.md | 5 ++ .../tax-and-cash/TaxForm.stories.tsx | 3 +- .../PayoutStatusAlert.stories.tsx | 16 ++++- .../sqm-payout-status-alert-view.tsx | 44 +++++++------ .../usePayoutStatus.ts | 61 ++++++++----------- .../TaxAndCashDashboardView.stories.tsx | 17 +++++- .../sqm-tax-and-cash-dashboard-view.tsx | 37 ++++++----- .../useTaxAndCashDashboard.tsx | 7 ++- .../src/components/tax-and-cash/utils.ts | 10 ++- 9 files changed, 123 insertions(+), 77 deletions(-) create mode 100644 packages/mint-components/.changeset/odd-experts-check.md diff --git a/packages/mint-components/.changeset/odd-experts-check.md b/packages/mint-components/.changeset/odd-experts-check.md new file mode 100644 index 000000000..7a5066a01 --- /dev/null +++ b/packages/mint-components/.changeset/odd-experts-check.md @@ -0,0 +1,5 @@ +--- +"@saasquatch/mint-components": patch +--- + +show no warnings if balance is currently zero diff --git a/packages/mint-components/src/components/tax-and-cash/TaxForm.stories.tsx b/packages/mint-components/src/components/tax-and-cash/TaxForm.stories.tsx index b36dd339d..878c6f012 100644 --- a/packages/mint-components/src/components/tax-and-cash/TaxForm.stories.tsx +++ b/packages/mint-components/src/components/tax-and-cash/TaxForm.stories.tsx @@ -1557,7 +1557,8 @@ export const TaxAndCashDashboardBalanceUnderThreshold = () => { demoData={{ ...dashboardProps, states: { - payoutStatus: "BALANCE_UNDER_THRESHOLD", + payoutStatus: "DONE", + belowPayoutThreshold: true, minPayoutAmount: "USD50.00", veriffLoading: false, canEditPayoutInfo: true, diff --git a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.tsx b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.tsx index 120fd8a6e..e4528fea2 100644 --- a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.tsx +++ b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.tsx @@ -93,7 +93,21 @@ export const BalanceUnderThreshold = () => ( demoData={{ states: { ...defaultProps, - status: "BALANCE_UNDER_THRESHOLD", + status: "DONE", + belowPayoutThreshold: true, + minPayoutAmount: "USD50.00", + }, + }} + > +); + +export const BalanceUnderThresholdWithHold = () => ( + ; } @@ -594,11 +582,27 @@ export function PayoutStatusAlertView(props: PayoutStatusAlertViewProps) {
- -

{alertDetails.header}

-

{alertDetails.description}

- {getButton(states.status)} -
+ {states.belowPayoutThreshold && ( + +

{text.balanceUnderThresholdHeader}

+

+ {intl.formatMessage( + { + id: "balanceUnderThresholdDescription", + defaultMessage: text.balanceUnderThresholdDescription, + }, + { minPayoutAmount: states.minPayoutAmount } + )} +

+
+ )} + {showHoldAlert && ( + +

{alertDetails.header}

+

{alertDetails.description}

+ {getButton(states.status)} +
+ )}
); } diff --git a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.ts b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.ts index b04d2c8eb..3defc0806 100644 --- a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.ts +++ b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.ts @@ -26,7 +26,6 @@ export type PayoutStatus = | "VERIFICATION:REVIEW" | "VERIFICATION:FAILED" | "NEW_PAYEE_REVIEW" - | "BALANCE_UNDER_THRESHOLD" | "PAYMENT_HOLD_ON_CHANGE" | "BENEFICIARY_NAME_INVALID" | "BENEFICIARY_NAME_MISMATCH" @@ -89,24 +88,7 @@ const GET_TAX_SETTING = gql` } `; -/** Transient holds that clear automatically, so a balance under the minimum explains the wait better. */ -const DISPLACEABLE_STATUSES: PayoutStatus[] = [ - "DONE", - "NEW_PAYEE_REVIEW", - "PAYMENT_HOLD_ON_CHANGE", -]; - export function getStatus(data: UserQuery): PayoutStatus { - const status = getHoldStatus(data); - const publisher = data.user.impactConnection?.publisher; - - return DISPLACEABLE_STATUSES.includes(status) && - isBalanceUnderPayoutThreshold(publisher) - ? "BALANCE_UNDER_THRESHOLD" - : status; -} - -function getHoldStatus(data: UserQuery): PayoutStatus { const account = data.user.impactConnection?.publisher?.payoutsAccount; const hasTransferredReward = data?.user?.rewards?.data?.find( @@ -120,34 +102,40 @@ function getHoldStatus(data: UserQuery): PayoutStatus { const currentTaxDocument = data.user.impactConnection?.publisher?.currentTaxDocument; - if (account.holdReasons?.includes("NO_W9_DOCUMENT") && !currentTaxDocument) + + // A new-payee review only starts once funds reach Impact, so until then nobody can act on it + const reviewIsLive = !!hasTransferredReward && account.balanceAmount > 0; + const holdReasons = (account.holdReasons ?? []).filter( + (reason) => reason !== "NEW_PAYEE_REVIEW" || reviewIsLive, + ); + + if (holdReasons.includes("NO_W9_DOCUMENT") && !currentTaxDocument) return "OVER_W9_THRESHOLD"; - if (account.holdReasons?.includes("IDV_CHECK_REQUIRED")) + if (holdReasons.includes("IDV_CHECK_REQUIRED")) return "VERIFICATION:REQUIRED"; - if (account.holdReasons?.includes("IDV_CHECK_REQUIRED_INTERNAL")) + if (holdReasons.includes("IDV_CHECK_REQUIRED_INTERNAL")) return "VERIFICATION:INTERNAL"; - if (account.holdReasons?.includes("IDV_CHECK_REVIEW_INTERNAL")) + if (holdReasons.includes("IDV_CHECK_REVIEW_INTERNAL")) return "VERIFICATION:REVIEW"; - if (account.holdReasons?.includes("IDV_CHECK_FAILED_INTERNAL")) + if (holdReasons.includes("IDV_CHECK_FAILED_INTERNAL")) return "VERIFICATION:FAILED"; - // only show banner for NEW_PAYEE_REVIEW if a PFT was created - if (account.holdReasons?.includes("NEW_PAYEE_REVIEW") && hasTransferredReward) - return "NEW_PAYEE_REVIEW"; - if (account.holdReasons?.includes("NEW_PAYEE_REVIEW")) return "DONE"; - if (account.holdReasons?.includes("PAYMENT_HOLD_ON_CHANGE")) + if (holdReasons.includes("NEW_PAYEE_REVIEW")) return "NEW_PAYEE_REVIEW"; + if (holdReasons.includes("PAYMENT_HOLD_ON_CHANGE")) return "PAYMENT_HOLD_ON_CHANGE"; - if (account.holdReasons?.includes("BENEFICIARY_NAME_INVALID")) + if (holdReasons.includes("BENEFICIARY_NAME_INVALID")) return "BENEFICIARY_NAME_INVALID"; - if (account.holdReasons?.includes("BENEFICIARY_NAME_MISMATCH")) + if (holdReasons.includes("BENEFICIARY_NAME_MISMATCH")) return "BENEFICIARY_NAME_MISMATCH"; - if (account.holdReasons?.includes("BANK_TAX_NAME_MISMATCH")) + if (holdReasons.includes("BANK_TAX_NAME_MISMATCH")) return "BANK_TAX_NAME_MISMATCH"; - if (account.holdReasons?.includes("WITHDRAWAL_SETTINGS_INVALID")) + if (holdReasons.includes("WITHDRAWAL_SETTINGS_INVALID")) return "WITHDRAWAL_SETTINGS_INVALID"; - if (account.holdReasons?.includes("PAYMENT_RETURNED")) - return "PAYMENT_RETURNED"; + if (holdReasons.includes("PAYMENT_RETURNED")) return "PAYMENT_RETURNED"; - if (account.hold) return "HOLD"; + // A hold whose every reason was suppressed leaves nothing to report + const unattributedHold = !account.holdReasons?.length; + if (account.hold && (holdReasons.length > 0 || unattributedHold)) + return "HOLD"; return "DONE"; } @@ -226,6 +214,9 @@ export function usePayoutStatus(props: PayoutStatusAlert) { status, error: !!errors, enforceUsTaxComplianceOption, + belowPayoutThreshold: isBalanceUnderPayoutThreshold( + data?.user?.impactConnection?.publisher, + ), minPayoutAmount: formatPayoutThreshold( data?.user?.impactConnection?.publisher, ), diff --git a/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/TaxAndCashDashboardView.stories.tsx b/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/TaxAndCashDashboardView.stories.tsx index c381d792a..ba03fe38c 100644 --- a/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/TaxAndCashDashboardView.stories.tsx +++ b/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/TaxAndCashDashboardView.stories.tsx @@ -214,7 +214,22 @@ export const BalanceUnderThreshold = () => ( +); + +export const BalanceUnderThresholdWithHold = () => ( + { icon: "exclamation-triangle", class: sheet.classes.WarningHoldAlertContainer, }; - case "BALANCE_UNDER_THRESHOLD": - return { - header: text.balanceUnderThresholdHeader, - description: intl.formatMessage( - { - id: "balanceUnderThresholdDescription", - defaultMessage: text.balanceUnderThresholdDescription, - }, - { minPayoutAmount: states.minPayoutAmount }, - ), - buttonText: null, - alertType: "info", - icon: "info-circle", - class: sheet.classes.InfoHoldAlertContainer, - }; case "PAYMENT_HOLD_ON_CHANGE": return { header: text.paymentHoldOnChangeHeader, @@ -1052,6 +1038,27 @@ export const TaxAndCashDashboardView = (props: TaxAndCashDashboardProps) => { )} )} + {states.belowPayoutThreshold && ( + + {text.balanceUnderThresholdHeader} +

+ {intl.formatMessage( + { + id: "balanceUnderThresholdDescription", + defaultMessage: text.balanceUnderThresholdDescription, + }, + { minPayoutAmount: states.minPayoutAmount }, + )} +

+
+ )} {alertInfo && ( Date: Mon, 28 Sep 2026 14:53:38 -0700 Subject: [PATCH 2/4] add retracted status to referral table --- packages/mint-components/src/components.d.ts | 19 ++ .../ReferralTableCell.stories.tsx | 18 +- .../cells/sqm-referral-table-status-cell.tsx | 31 ++-- .../referral-table-status-column.feature | 18 ++ .../sqm-referral-table-status-column.tsx | 81 +++++--- .../sqm-referral-table/mockReferralData.ts | 1 + .../sqm-referral-table/referralStatus.spec.ts | 60 ++++++ .../sqm-referral-table/referralStatus.ts | 28 +++ .../sqm-referral-table/sqm-referral-table.tsx | 2 +- .../sqm-referral-table/useReferralTable.tsx | 2 + .../sqm-payout-status-alert/readme.md | 88 ++++----- .../sqm-tax-and-cash-dashboard/readme.md | 174 +++++++++--------- packages/mint-components/src/saasquatch.d.ts | 2 + 13 files changed, 351 insertions(+), 173 deletions(-) create mode 100644 packages/mint-components/src/components/sqm-referral-table/referralStatus.spec.ts create mode 100644 packages/mint-components/src/components/sqm-referral-table/referralStatus.ts diff --git a/packages/mint-components/src/components.d.ts b/packages/mint-components/src/components.d.ts index bed3c08a3..9db8372a5 100644 --- a/packages/mint-components/src/components.d.ts +++ b/packages/mint-components/src/components.d.ts @@ -53,6 +53,7 @@ import { QRCodeViewProps } from "./components/sqm-qr-code/sqm-qr-code-view"; import { ReferralCodesViewProps } from "./components/sqm-referral-codes/sqm-referral-codes-view"; import { ReferralIframeViewProps } from "./components/sqm-referral-iframe/sqm-referral-iframe-view"; import { ReferralDates } from "./components/sqm-referral-table/useReferralTable"; +import { ReferralStatus } from "./components/sqm-referral-table/referralStatus"; import { RewardExchangeViewProps } from "./components/sqm-reward-exchange-list/sqm-reward-exchange-list-view"; import { ShareButtonViewProps } from "./components/sqm-share-button/sqm-share-button-view"; import { ShareLinkViewProps } from "./components/sqm-share-link/sqm-share-link-view"; @@ -4311,6 +4312,7 @@ export namespace Components { interface SqmReferralTableStatusCell { "converted": boolean; "fraudStatus"?: FraudStatus; + "status"?: ReferralStatus; "statusSubText": string; "statusText": string; } @@ -4346,6 +4348,14 @@ export namespace Components { "renderCell": (data: Referral) => Promise; "renderLabel": () => Promise; "renderReferrerCell": (data: Referrer) => Promise; + /** + * @uiName Retracted status sub-text + */ + "retractedStatusSubText": string; + /** + * @uiName Retracted status text + */ + "retractedStatusText": string; } interface SqmReferralTableUserCell { "name": string; @@ -12793,6 +12803,7 @@ declare namespace LocalJSX { interface SqmReferralTableStatusCell { "converted"?: boolean; "fraudStatus"?: FraudStatus; + "status"?: ReferralStatus; "statusSubText"?: string; "statusText"?: string; } @@ -12825,6 +12836,14 @@ declare namespace LocalJSX { * @uiName Pending review status text */ "pendingReviewStatusText"?: string; + /** + * @uiName Retracted status sub-text + */ + "retractedStatusSubText"?: string; + /** + * @uiName Retracted status text + */ + "retractedStatusText"?: string; } interface SqmReferralTableUserCell { "name"?: string; diff --git a/packages/mint-components/src/components/sqm-referral-table/ReferralTableCell.stories.tsx b/packages/mint-components/src/components/sqm-referral-table/ReferralTableCell.stories.tsx index a1fce9f6a..32b0249e0 100644 --- a/packages/mint-components/src/components/sqm-referral-table/ReferralTableCell.stories.tsx +++ b/packages/mint-components/src/components/sqm-referral-table/ReferralTableCell.stories.tsx @@ -33,6 +33,7 @@ export const EmptyCell = () => ( export const Converted = () => ( ( ); export const InProgress = () => ( ); +export const Retracted = () => ( + +); export const PendingReview = () => ( ); export const Pending = () => ( ); export const Denied = () => ( diff --git a/packages/mint-components/src/components/sqm-referral-table/cells/sqm-referral-table-status-cell.tsx b/packages/mint-components/src/components/sqm-referral-table/cells/sqm-referral-table-status-cell.tsx index 5d53363f7..c7b198465 100644 --- a/packages/mint-components/src/components/sqm-referral-table/cells/sqm-referral-table-status-cell.tsx +++ b/packages/mint-components/src/components/sqm-referral-table/cells/sqm-referral-table-status-cell.tsx @@ -1,6 +1,17 @@ import { Component, h, Prop } from "@stencil/core"; import { FraudStatus } from "../../../saasquatch"; import { createStyleSheet } from "../../../styling/JSS"; +import { ReferralStatus } from "../referralStatus"; + +type ShoeLaceBadgeType = "primary" | "danger" | "warning" | "success" | "info"; + +const badgeTypeMap: Record = { + DENIED: "danger", + RETRACTED: "danger", + PENDING_REVIEW: "warning", + CONVERTED: "success", + IN_PROGRESS: "warning", +}; const style = { SubText: { @@ -63,6 +74,7 @@ const styleString = sheet.toString(); }) export class ReferralTableStatusCell { @Prop() statusText: string; + @Prop() status?: ReferralStatus; @Prop() fraudStatus?: FraudStatus; @Prop() converted: boolean; @Prop() statusSubText: string; @@ -71,21 +83,16 @@ export class ReferralTableStatusCell { const sheet = createStyleSheet(style); const styleString = sheet.toString(); - const getBadgeType = (fraudStatus) => { - if (fraudStatus === "PENDING") return "warning"; - if (fraudStatus === "DENIED") return "danger"; + const getBadgeType = (): ShoeLaceBadgeType => { + if (this.status) return badgeTypeMap[this.status]; + // Callers that predate the status prop still set fraudStatus/converted + if (this.fraudStatus === "PENDING") return "warning"; + if (this.fraudStatus === "DENIED") return "danger"; if (this.converted) return "success"; return "warning"; }; - type ShoeLaceBadgeType = - | "primary" - | "danger" - | "warning" - | "success" - | "info"; - const getBadgeCSSClass = (badgeType: ShoeLaceBadgeType): string => { switch (badgeType) { case "primary": @@ -111,8 +118,8 @@ export class ReferralTableStatusCell { {this.statusText} diff --git a/packages/mint-components/src/components/sqm-referral-table/columns/referral-table-status-column.feature b/packages/mint-components/src/components/sqm-referral-table/columns/referral-table-status-column.feature index be0b81b88..43a9ef57e 100644 --- a/packages/mint-components/src/components/sqm-referral-table/columns/referral-table-status-column.feature +++ b/packages/mint-components/src/components/sqm-referral-table/columns/referral-table-status-column.feature @@ -30,3 +30,21 @@ Feature: Referral Table Status Column | Converted | convertedStatusText | Green | | Pending | pendingReviewStatusText | Orange | | Denied | deniedStatusText | Red | + | Cancelled | retractedStatusText | Red | + + @motivating + Scenario: A referral whose conversion was retracted is not shown as converted + Given a referral with both `dateConverted` and `dateConversionRetracted` set + Then the status is displayed as text from retractedStatusText in a Red pill + And the sub-text from retractedStatusSubText is displayed + + @minutia + Scenario Outline: Fraud moderation takes precedence over the conversion state + Given a referral with `dateConverted` and `dateConversionRetracted` set + And the referral `fraudData.moderationStatus` is + Then the status is displayed as text from + + Examples: + | moderationStatus | statusTextProp | + | "DENIED" | deniedStatusText | + | "PENDING" | pendingReviewStatusText | diff --git a/packages/mint-components/src/components/sqm-referral-table/columns/sqm-referral-table-status-column.tsx b/packages/mint-components/src/components/sqm-referral-table/columns/sqm-referral-table-status-column.tsx index 71dffc4ba..9720c3c1c 100644 --- a/packages/mint-components/src/components/sqm-referral-table/columns/sqm-referral-table-status-column.tsx +++ b/packages/mint-components/src/components/sqm-referral-table/columns/sqm-referral-table-status-column.tsx @@ -1,14 +1,15 @@ import { withHooks } from "@saasquatch/stencil-hooks"; import { Component, h, Host, Method, Prop } from "@stencil/core"; -import { FraudStatus, Referral, Referrer } from "../../../saasquatch"; +import { Referral, Referrer } from "../../../saasquatch"; import { useRequestRerender } from "../../../tables/re-render"; +import { getReferralStatus, ReferralStatus } from "../referralStatus"; import { ReferralTableColumn } from "./ReferralTableColumn"; /** * @uiName Referral Table Status Column * @validParents ["sqm-referral-table"] * @exampleGroup Referrals - * @example Referral Table Status Column - + * @example Referral Table Status Column - */ @Component({ tag: "sqm-referral-table-status-column", @@ -40,6 +41,11 @@ export class ReferralTableStatusColumn implements ReferralTableColumn { */ @Prop() deniedStatusText: string = "Denied"; + /** + * @uiName Retracted status text + */ + @Prop() retractedStatusText: string = "Cancelled"; + /** * @uiName Pending review status sub-text */ @@ -50,36 +56,50 @@ export class ReferralTableStatusColumn implements ReferralTableColumn { */ @Prop() deniedStatusSubText: string = "Detected self-referral"; + /** + * @uiName Retracted status sub-text + */ + @Prop() retractedStatusSubText: string = + "This purchase was cancelled or refunded"; + constructor() { withHooks(this); } disconnectedCallback() {} + private getStatusCopy(status: ReferralStatus): { + text: string; + subText?: string; + } { + return { + DENIED: { + text: this.deniedStatusText, + subText: this.deniedStatusSubText, + }, + PENDING_REVIEW: { + text: this.pendingReviewStatusText, + subText: this.pendingReviewStatusSubText, + }, + RETRACTED: { + text: this.retractedStatusText, + subText: this.retractedStatusSubText, + }, + CONVERTED: { text: this.convertedStatusText }, + IN_PROGRESS: { text: this.inProgressStatusText }, + }[status]; + } + @Method() async renderCell(data: Referral) { - // TODO: Make ICU and more complete - let statusText: string; - let statusSubText: string; - - const fraudStatus: FraudStatus = data?.fraudData?.moderationStatus; - - if (fraudStatus === "DENIED") { - statusText = this.deniedStatusText; - statusSubText = this.deniedStatusSubText; - } else if (fraudStatus === "PENDING") { - statusText = this.pendingReviewStatusText; - statusSubText = this.pendingReviewStatusSubText; - } else { - statusText = data.dateConverted - ? this.convertedStatusText - : this.inProgressStatusText; - } + const status = getReferralStatus(data); + const { text, subText } = this.getStatusCopy(status); return ( ); @@ -92,13 +112,14 @@ export class ReferralTableStatusColumn implements ReferralTableColumn { @Method() async renderReferrerCell(data: Referrer) { - // TODO: Make ICU and more complete - const statusText = data.dateConverted - ? this.convertedStatusText - : this.inProgressStatusText; + const status = getReferralStatus(data); + const { text, subText } = this.getStatusCopy(status); + return ( ); @@ -109,6 +130,12 @@ export class ReferralTableStatusColumn implements ReferralTableColumn { this.columnTitle, this.convertedStatusText, this.inProgressStatusText, + this.pendingReviewStatusText, + this.deniedStatusText, + this.retractedStatusText, + this.pendingReviewStatusSubText, + this.deniedStatusSubText, + this.retractedStatusSubText, ]); return ; } diff --git a/packages/mint-components/src/components/sqm-referral-table/mockReferralData.ts b/packages/mint-components/src/components/sqm-referral-table/mockReferralData.ts index a1ceb4519..06ae6f615 100644 --- a/packages/mint-components/src/components/sqm-referral-table/mockReferralData.ts +++ b/packages/mint-components/src/components/sqm-referral-table/mockReferralData.ts @@ -70,6 +70,7 @@ const getMockData = () => { Math.floor(Math.random() * 10) >= 5 ? DateTime.now().minus({ days: 6 }).toMillis() : null, + dateConversionRetracted: null, dateFraudChecksCompleted: null, dateModerated: 1558730033306, dateModified: 1554934543447, diff --git a/packages/mint-components/src/components/sqm-referral-table/referralStatus.spec.ts b/packages/mint-components/src/components/sqm-referral-table/referralStatus.spec.ts new file mode 100644 index 000000000..26b1cbc47 --- /dev/null +++ b/packages/mint-components/src/components/sqm-referral-table/referralStatus.spec.ts @@ -0,0 +1,60 @@ +import { getReferralStatus } from "./referralStatus"; + +describe("getReferralStatus", () => { + it("returns RETRACTED when a converted referral was later retracted", () => { + expect( + getReferralStatus({ + dateConverted: 1626850800000, + dateConversionRetracted: 1627850800000, + }), + ).toBe("RETRACTED"); + }); + + it("returns CONVERTED when the conversion still stands", () => { + expect( + getReferralStatus({ + dateConverted: 1626850800000, + dateConversionRetracted: null, + }), + ).toBe("CONVERTED"); + }); + + it("returns IN_PROGRESS when the referral never converted", () => { + expect( + getReferralStatus({ dateConverted: null, dateConversionRetracted: null }), + ).toBe("IN_PROGRESS"); + }); + + it("returns DENIED over any conversion state", () => { + expect( + getReferralStatus({ + dateConverted: 1626850800000, + dateConversionRetracted: 1627850800000, + fraudData: { moderationStatus: "DENIED" }, + }), + ).toBe("DENIED"); + }); + + it("returns PENDING_REVIEW over any conversion state", () => { + expect( + getReferralStatus({ + dateConverted: 1626850800000, + dateConversionRetracted: 1627850800000, + fraudData: { moderationStatus: "PENDING" }, + }), + ).toBe("PENDING_REVIEW"); + }); + + it("ignores an APPROVED fraud check and falls through to the conversion state", () => { + expect( + getReferralStatus({ + dateConverted: 1626850800000, + fraudData: { moderationStatus: "APPROVED" }, + }), + ).toBe("CONVERTED"); + }); + + it("returns IN_PROGRESS for a referral with no dates at all", () => { + expect(getReferralStatus({})).toBe("IN_PROGRESS"); + }); +}); diff --git a/packages/mint-components/src/components/sqm-referral-table/referralStatus.ts b/packages/mint-components/src/components/sqm-referral-table/referralStatus.ts new file mode 100644 index 000000000..5dc291836 --- /dev/null +++ b/packages/mint-components/src/components/sqm-referral-table/referralStatus.ts @@ -0,0 +1,28 @@ +import { FraudStatus } from "../../saasquatch"; + +export type ReferralStatus = + | "DENIED" + | "PENDING_REVIEW" + | "RETRACTED" + | "CONVERTED" + | "IN_PROGRESS"; + +type ReferralStatusInput = { + dateConverted?: number | null; + dateConversionRetracted?: number | null; + fraudData?: { moderationStatus?: FraudStatus }; +}; + +export function getReferralStatus( + referral: ReferralStatusInput, +): ReferralStatus { + const fraudStatus = referral?.fraudData?.moderationStatus; + + if (fraudStatus === "DENIED") return "DENIED"; + if (fraudStatus === "PENDING") return "PENDING_REVIEW"; + // A retraction leaves dateConverted set, so it has to be checked before CONVERTED + if (referral?.dateConversionRetracted) return "RETRACTED"; + if (referral?.dateConverted) return "CONVERTED"; + + return "IN_PROGRESS"; +} diff --git a/packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx b/packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx index 2bd1359e2..f84a3908d 100644 --- a/packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx +++ b/packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx @@ -24,7 +24,7 @@ import { tryMethod, useReferralTable } from "./useReferralTable"; * @validChildren ["sqm-referral-table-column","sqm-referral-table-date-column","sqm-referral-table-rewards-column","sqm-referral-table-status-column","sqm-referral-table-user-column","sqm-empty"] * @exampleGroup Referrals * @slots [{"name":"", "title":"Table Row"},{"name":"empty", "title":"Empty"},{"name":"loading","title":"Loading"}] - * @example Referral Table - + * @example Referral Table - */ @Component({ tag: "sqm-referral-table", diff --git a/packages/mint-components/src/components/sqm-referral-table/useReferralTable.tsx b/packages/mint-components/src/components/sqm-referral-table/useReferralTable.tsx index 0e1cb036e..754350c7c 100644 --- a/packages/mint-components/src/components/sqm-referral-table/useReferralTable.tsx +++ b/packages/mint-components/src/components/sqm-referral-table/useReferralTable.tsx @@ -28,6 +28,7 @@ const GET_REFERRER_DATA = gql` ... on User { referredByReferral(programId: $programId) { dateConverted + dateConversionRetracted dateFraudChecksCompleted dateModerated dateModified @@ -132,6 +133,7 @@ const GET_REFERRAL_DATA = gql` referralCodeUsed moderationStatus dateConverted + dateConversionRetracted dateFraudChecksCompleted dateModerated dateModified diff --git a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/readme.md b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/readme.md index 9d3515a33..1802d051e 100644 --- a/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/readme.md +++ b/packages/mint-components/src/components/tax-and-cash/sqm-payout-status-alert/readme.md @@ -7,50 +7,50 @@ ## Properties -| Property | Attribute | Description | Type | Default | -| ----------------------------------------- | -------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accountReviewDescription` | `account-review-description` | | `string` | `"This process takes 48 hours, payouts are on hold until it's completed. You will receive an email from our referral provider, Impact.com, if any issues arise. It contains details on how to resolve this issue. If you need further assistance, please reach out to our {supportLink}."` | -| `accountReviewHeader` | `account-review-header` | | `string` | `"Your account is under review"` | -| `balanceUnderThresholdDescription` | `balance-under-threshold-description` | | `string` | `"Your total balance is under {minPayoutAmount}, the minimum required for payout."` | -| `balanceUnderThresholdHeader` | `balance-under-threshold-header` | | `string` | `"Your balance is under the minimum payout"` | -| `bankTaxNameMismatchDescription` | `bank-tax-name-mismatch-description` | | `string` | `"The bank account (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `bankTaxNameMismatchHeader` | `bank-tax-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | -| `beneficiaryNameInvalidDescription` | `beneficiary-name-invalid-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `beneficiaryNameInvalidHeader` | `beneficiary-name-invalid-header` | | `string` | `"Your payment information does not match your tax form"` | -| `beneficiaryNameMismatchDescription` | `beneficiary-name-mismatch-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `beneficiaryNameMismatchHeader` | `beneficiary-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | -| `cashPayoutsPageUrl` | `cash-payouts-page-url` | | `string` | `"/taxAndCash"` | -| `demoData` | -- | | `{ states?: { error: boolean; loading: boolean; status: PayoutStatus; veriffLoading: boolean; minPayoutAmount?: string; enforceUsTaxComplianceOption?: EnforceUsTaxComplianceOption; }; data?: { type: "SquatchJS2" \| "SquatchAndroid" \| "SquatchIOS" \| "SquatchPortal" \| "SquatchAdmin" \| "None"; }; }` | `undefined` | -| `editPaymentInformationButton` | `edit-payment-information-button` | | `string` | `"Edit Payout Information"` | -| `errorDescription` | `error-description` | | `string` | `"There was an error with determining your payout status."` | -| `errorHeader` | `error-header` | | `string` | `"Could not determine payout status."` | -| `holdDescription` | `hold-description` | | `string` | `"Please check your inbox for an email from our referral provider, impact.com. It contains details on how to resolve this issue. If you need further assistance, feel free to reach out to our {supportLink}."` | -| `holdHeader` | `hold-header` | | `string` | `"Your payouts and account are on hold"` | -| `informationRequiredButtonText` | `information-required-button-text` | | `string` | `"Payouts & Tax Settings"` | -| `informationRequiredDescription` | `information-required-description` | | `string` | `"Submit your banking details and tax documents to receive your rewards."` | -| `informationRequiredHeader` | `information-required-header` | | `string` | `"Payout and tax information required"` | -| `newFormButton` | `new-form-button` | | `string` | `"Submit new tax form"` | -| `paymentHoldOnChangeDescription` | `payment-hold-on-change-description` | | `string` | `"Your payout is temporarily on hold while we review your new payment information, this process is usually resolved within 48 hours."` | -| `paymentHoldOnChangeHeader` | `payment-hold-on-change-header` | | `string` | `"We are reviewing your new payout settings"` | -| `paymentReturnedDescription` | `payment-returned-description` | | `string` | `"Our recent payment attempt for your earnings was unsuccessful. Please review your payment information and make sure it is correct."` | -| `paymentReturnedHeader` | `payment-returned-header` | | `string` | `"Payout unsuccessful"` | -| `stateController` | `state-controller` | | `string` | `"{}"` | -| `supportLink` | `support-link` | | `string` | `"support team"` | -| `termsAndConditions` | `terms-and-conditions` | | `string` | `"Terms and Conditions"` | -| `verificationFailedInternalDescription` | `verification-failed-internal-description` | | `string` | `"Identity verification has failed. Our team is reviewing the report and will contact you with further information. If you don't hear from us contact our {supportLink}."` | -| `verificationFailedInternalHeader` | `verification-failed-internal-header` | | `string` | `"Identity verification unsuccessful"` | -| `verificationRequiredButtonText` | `verification-required-button-text` | | `string` | `"Start Verification"` | -| `verificationRequiredDescription` | `verification-required-description` | | `string` | `"It should only take a few minutes verify. If you run in to an issue verifying your identity contact our {supportLink}."` | -| `verificationRequiredHeader` | `verification-required-header` | | `string` | `"Verify your identity"` | -| `verificationRequiredInternalDescription` | `verification-required-internal-description` | | `string` | `"Identity verification submission has been received. Our system is currently performing additional checks and analyzing the results. You will be updated shortly. If you don't hear from us contact our {supportLink}."` | -| `verificationRequiredInternalHeader` | `verification-required-internal-header` | | `string` | `"Identity Verification in progress"` | -| `verificationReviewInternalDescription` | `verification-review-internal-description` | | `string` | `"Identity verification requires further review due to a potential error. Our team is reviewing the information and will update you shortly. If you don't hear from us contact our {supportLink}."` | -| `verificationReviewInternalHeader` | `verification-review-internal-header` | | `string` | `"Identity Verification under review"` | -| `w9RequiredButtonText` | `w-9-required-button-text` | | `string` | `"Submit W-9"` | -| `w9RequiredDescription` | `w-9-required-description` | | `string` | `"You have surpassed the $2000 threshold requiring a W-9 form or have multiple accounts with impact.com. To remove the hold, please submit your W-9 form."` | -| `w9RequiredHeader` | `w-9-required-header` | | `string` | `"Your next payout is on hold"` | -| `withdrawalSettingsInvalidDescription` | `withdrawal-settings-invalid-description` | | `string` | `"There are missing fields or invalid characters in your payment information. Please review your information and make sure it is correct. Your payouts are on hold until this is resolved."` | -| `withdrawalSettingsInvalidHeader` | `withdrawal-settings-invalid-header` | | `string` | `"Your payment information is incomplete or includes invalid characters"` | +| Property | Attribute | Description | Type | Default | +| ----------------------------------------- | -------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accountReviewDescription` | `account-review-description` | | `string` | `"This process takes 48 hours, payouts are on hold until it's completed. You will receive an email from our referral provider, Impact.com, if any issues arise. It contains details on how to resolve this issue. If you need further assistance, please reach out to our {supportLink}."` | +| `accountReviewHeader` | `account-review-header` | | `string` | `"Your account is under review"` | +| `balanceUnderThresholdDescription` | `balance-under-threshold-description` | | `string` | `"Your total balance is under {minPayoutAmount}, the minimum required for payout."` | +| `balanceUnderThresholdHeader` | `balance-under-threshold-header` | | `string` | `"Your balance is under the minimum payout"` | +| `bankTaxNameMismatchDescription` | `bank-tax-name-mismatch-description` | | `string` | `"The bank account (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `bankTaxNameMismatchHeader` | `bank-tax-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | +| `beneficiaryNameInvalidDescription` | `beneficiary-name-invalid-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `beneficiaryNameInvalidHeader` | `beneficiary-name-invalid-header` | | `string` | `"Your payment information does not match your tax form"` | +| `beneficiaryNameMismatchDescription` | `beneficiary-name-mismatch-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `beneficiaryNameMismatchHeader` | `beneficiary-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | +| `cashPayoutsPageUrl` | `cash-payouts-page-url` | | `string` | `"/taxAndCash"` | +| `demoData` | -- | | `{ states?: { error: boolean; loading: boolean; status: PayoutStatus; veriffLoading: boolean; belowPayoutThreshold?: boolean; minPayoutAmount?: string; enforceUsTaxComplianceOption?: EnforceUsTaxComplianceOption; }; data?: { type: "SquatchJS2" \| "SquatchAndroid" \| "SquatchIOS" \| "SquatchPortal" \| "SquatchAdmin" \| "None"; }; }` | `undefined` | +| `editPaymentInformationButton` | `edit-payment-information-button` | | `string` | `"Edit Payout Information"` | +| `errorDescription` | `error-description` | | `string` | `"There was an error with determining your payout status."` | +| `errorHeader` | `error-header` | | `string` | `"Could not determine payout status."` | +| `holdDescription` | `hold-description` | | `string` | `"Please check your inbox for an email from our referral provider, impact.com. It contains details on how to resolve this issue. If you need further assistance, feel free to reach out to our {supportLink}."` | +| `holdHeader` | `hold-header` | | `string` | `"Your payouts and account are on hold"` | +| `informationRequiredButtonText` | `information-required-button-text` | | `string` | `"Payouts & Tax Settings"` | +| `informationRequiredDescription` | `information-required-description` | | `string` | `"Submit your banking details and tax documents to receive your rewards."` | +| `informationRequiredHeader` | `information-required-header` | | `string` | `"Payout and tax information required"` | +| `newFormButton` | `new-form-button` | | `string` | `"Submit new tax form"` | +| `paymentHoldOnChangeDescription` | `payment-hold-on-change-description` | | `string` | `"Your payout is temporarily on hold while we review your new payment information, this process is usually resolved within 48 hours."` | +| `paymentHoldOnChangeHeader` | `payment-hold-on-change-header` | | `string` | `"We are reviewing your new payout settings"` | +| `paymentReturnedDescription` | `payment-returned-description` | | `string` | `"Our recent payment attempt for your earnings was unsuccessful. Please review your payment information and make sure it is correct."` | +| `paymentReturnedHeader` | `payment-returned-header` | | `string` | `"Payout unsuccessful"` | +| `stateController` | `state-controller` | | `string` | `"{}"` | +| `supportLink` | `support-link` | | `string` | `"support team"` | +| `termsAndConditions` | `terms-and-conditions` | | `string` | `"Terms and Conditions"` | +| `verificationFailedInternalDescription` | `verification-failed-internal-description` | | `string` | `"Identity verification has failed. Our team is reviewing the report and will contact you with further information. If you don't hear from us contact our {supportLink}."` | +| `verificationFailedInternalHeader` | `verification-failed-internal-header` | | `string` | `"Identity verification unsuccessful"` | +| `verificationRequiredButtonText` | `verification-required-button-text` | | `string` | `"Start Verification"` | +| `verificationRequiredDescription` | `verification-required-description` | | `string` | `"It should only take a few minutes verify. If you run in to an issue verifying your identity contact our {supportLink}."` | +| `verificationRequiredHeader` | `verification-required-header` | | `string` | `"Verify your identity"` | +| `verificationRequiredInternalDescription` | `verification-required-internal-description` | | `string` | `"Identity verification submission has been received. Our system is currently performing additional checks and analyzing the results. You will be updated shortly. If you don't hear from us contact our {supportLink}."` | +| `verificationRequiredInternalHeader` | `verification-required-internal-header` | | `string` | `"Identity Verification in progress"` | +| `verificationReviewInternalDescription` | `verification-review-internal-description` | | `string` | `"Identity verification requires further review due to a potential error. Our team is reviewing the information and will update you shortly. If you don't hear from us contact our {supportLink}."` | +| `verificationReviewInternalHeader` | `verification-review-internal-header` | | `string` | `"Identity Verification under review"` | +| `w9RequiredButtonText` | `w-9-required-button-text` | | `string` | `"Submit W-9"` | +| `w9RequiredDescription` | `w-9-required-description` | | `string` | `"You have surpassed the $2000 threshold requiring a W-9 form or have multiple accounts with impact.com. To remove the hold, please submit your W-9 form."` | +| `w9RequiredHeader` | `w-9-required-header` | | `string` | `"Your next payout is on hold"` | +| `withdrawalSettingsInvalidDescription` | `withdrawal-settings-invalid-description` | | `string` | `"There are missing fields or invalid characters in your payment information. Please review your information and make sure it is correct. Your payouts are on hold until this is resolved."` | +| `withdrawalSettingsInvalidHeader` | `withdrawal-settings-invalid-header` | | `string` | `"Your payment information is incomplete or includes invalid characters"` | ## Dependencies diff --git a/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/readme.md b/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/readme.md index 4b62a8074..cf360360e 100644 --- a/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/readme.md +++ b/packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/readme.md @@ -7,93 +7,93 @@ ## Properties -| Property | Attribute | Description | Type | Default | -| ----------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accountReviewDescription` | `account-review-description` | | `string` | `"This process takes 48 hours, payouts are on hold until it's completed. You will receive an email from our referral provider, Impact.com, if any issues arise. It contains details on how to resolve this issue. If you need further assistance, please reach out to our {supportLink}."` | -| `accountReviewHeader` | `account-review-header` | | `string` | `"Your account is under review"` | -| `accountText` | `account-text` | Shown before the participant’s bank account information. | `string` | `"Account"` | -| `badgeTextAwaitingReview` | `badge-text-awaiting-review` | Additional text displayed next to the tax form's status badge. | `string` | `"Awaiting review. Submitted on {dateSubmitted}."` | -| `badgeTextSubmittedOn` | `badge-text-submitted-on` | Additional text displayed next to the tax form's status badge | `string` | `"Submitted on {dateSubmitted}."` | -| `badgeTextSubmittedOnW8` | `badge-text-submitted-on-w-8` | Additional text displayed next to the tax form's status badge. | `string` | `"Submitted on {dateSubmitted}. Valid for three years after submission."` | -| `balanceUnderThresholdDescription` | `balance-under-threshold-description` | | `string` | `"Your total balance is under {minPayoutAmount}, the minimum required for payout."` | -| `balanceUnderThresholdHeader` | `balance-under-threshold-header` | | `string` | `"Your balance is under the minimum payout"` | -| `bankTaxNameMismatchDescription` | `bank-tax-name-mismatch-description` | | `string` | `"The bank account (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `bankTaxNameMismatchHeader` | `bank-tax-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | -| `bankingInformationSectionHeader` | `banking-information-section-header` | | `string` | `"Payout information"` | -| `beneficiaryNameInvalidDescription` | `beneficiary-name-invalid-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `beneficiaryNameInvalidHeader` | `beneficiary-name-invalid-header` | | `string` | `"Your payment information does not match your tax form"` | -| `beneficiaryNameMismatchDescription` | `beneficiary-name-mismatch-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | -| `beneficiaryNameMismatchHeader` | `beneficiary-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | -| `cancelButton` | `cancel-button` | | `string` | `"Cancel"` | -| `dateColumnTitle` | `date-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Date"` | -| `demoData` | -- | | `{ states?: { status?: string; documentType: TaxDocumentType; documentTypeString: string; canEditPayoutInfo: boolean; disabled?: boolean; dateSubmitted?: string; noFormNeeded?: boolean; indirectTaxType?: string; qstNumber?: string; subRegionTaxNumber?: string; subRegion?: string; indirectTaxNumber?: string; province?: string; country?: string; notRegistered?: boolean; isBusinessEntity?: boolean; loading?: boolean; loadingError?: boolean; showNewFormDialog: boolean; hasHold: boolean; payoutStatus: PayoutStatus; minPayoutAmount?: string; veriffLoading: boolean; errors?: { general?: boolean; }; enforceUsTaxComplianceOption?: string; }; }` | `undefined` | -| `earningsAfterTaxColumnTitle` | `earnings-after-tax-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Earnings after tax"` | -| `earningsColumnTitle` | `earnings-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Earnings"` | -| `editPaymentInformationButton` | `edit-payment-information-button` | | `string` | `"Edit payout information"` | -| `generalErrorDescription` | `general-error-description` | Part of the alert displayed at the top of the page. | `string` | `"Please review your information and try again. If this problem continues, contact our {supportLink}."` | -| `generalErrorTitle` | `general-error-title` | Part of the alert displayed at the top of the page. | `string` | `"There was a problem submitting your information"` | -| `indirectTaxColumnTitle` | `indirect-tax-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Indirect tax"` | -| `indirectTaxDetails` | `indirect-tax-details` | Displayed to participants who have submitted their indirect tax information. | `string` | `"{indirectTaxType} number: {indirectTaxNumber}"` | -| `indirectTaxInfoCanada` | `indirect-tax-info-canada` | If the participant is registered for indirect tax in Canada, display the province they’re registered in. | `string` | `"Registered in {province}, {country}"` | -| `indirectTaxInfoOtherCountry` | `indirect-tax-info-other-country` | If the participant is registered for indirect tax, display the country they’re registered in. | `string` | `"Registered in {country}"` | -| `indirectTaxInfoSectionHeader` | `indirect-tax-info-section-header` | | `string` | `"Indirect tax"` | -| `indirectTaxInfoSpain` | `indirect-tax-info-spain` | If the participant is registered for indirect tax in Spain, display the region they’re registered in. | `string` | `"Registered in {country}, {subRegion}"` | -| `indirectTaxTooltipSupport` | `indirect-tax-tooltip-support` | | `string` | `"To make changes to your indirect tax information, please contact our {supportLink}."` | -| `invalidForm` | `invalid-form` | Additional text displayed next to the tax form's status badge. | `string` | `"Make sure your information is correct and submit new form."` | -| `invoiceColumnTitle` | `invoice-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Invoice"` | -| `invoiceDescription` | `invoice-description` | | `string` | `"View and download your invoices to report your earnings and stay tax compliant."` | -| `invoiceEmptyStateHeader` | `invoice-empty-state-header` | | `string` | `"View your invoice details"` | -| `invoiceEmptyStateText` | `invoice-empty-state-text` | | `string` | `"Refer a friend to view the status of your invoices and rewards earned"` | -| `invoiceHeader` | `invoice-header` | | `string` | `"Invoices"` | -| `invoiceMoreLabel` | `invoice-more-label` | | `string` | `"Next"` | -| `invoicePrevLabel` | `invoice-prev-label` | | `string` | `"Prev"` | -| `loadingErrorAlertDescription` | `loading-error-alert-description` | Part of the alert displayed at the top of the page. | `string` | `"Please refresh the page and try again. If this problem continues, contact our {supportLink}."` | -| `loadingErrorAlertHeader` | `loading-error-alert-header` | Part of the alert displayed at the top of the page. | `string` | `"There was a problem loading your form"` | -| `newFormButton` | `new-form-button` | | `string` | `"Submit new tax form"` | -| `notRegisteredForTax` | `not-registered-for-tax` | | `string` | `"Not registered for indirect tax. If you’ve previously registered with your tax authority, contact our {supportLink} to add your information to stay tax compliant."` | -| `paymentHoldOnChangeDescription` | `payment-hold-on-change-description` | | `string` | `"Your payout is temporarily on hold while we review your new payment information, this process is usually resolved within 48 hours."` | -| `paymentHoldOnChangeHeader` | `payment-hold-on-change-header` | | `string` | `"We are reviewing your new payout settings"` | -| `paymentReturnedDescription` | `payment-returned-description` | | `string` | `"Our recent payment attempt for your earnings was unsuccessful. Please review your payment information and make sure it is correct."` | -| `paymentReturnedHeader` | `payment-returned-header` | | `string` | `"Payout unsuccessful"` | -| `payoutFromImpact` | `payout-from-impact` | Displayed under the payout details card. | `string` | `"Your balance may take up to 24 hours to update. Payouts will be sent from our referral program provider, impact.com."` | -| `payoutHoldAlertDescription` | `payout-hold-alert-description` | Part of the alert displayed at the top of the page when there’s been an issue preventing payouts. | `string` | `"Please contact our {supportLink} or check your inbox for an email from our referral program provider, impact.com."` | -| `payoutHoldAlertHeader` | `payout-hold-alert-header` | Part of the alert displayed at the top of the page when there’s been an issue preventing payouts. | `string` | `"Your payout is on hold"` | -| `payoutMissingInformationText` | `payout-missing-information-text` | Text displayed for existing publishers that do not have saved banking information. | `string` | `"Missing banking information, go to Impact.com to resolve."` | -| `qstNumber` | `qst-number` | Displayed to participants registered in Quebec, Canada. | `string` | `"QST number: {qstNumber}"` | -| `replaceTaxFormModalBodyText` | `replace-tax-form-modal-body-text` | | `string` | `"Submitting a new tax form will remove your existing form. Make sure to sign and complete your new tax form to prevent any issues with your next payout."` | -| `replaceTaxFormModalHeader` | `replace-tax-form-modal-header` | | `string` | `"Replace existing tax form"` | -| `requiredTaxForm` | `required-tax-form` | Additional text displayed next to the tax form's status badge | `string` | `"Your payouts are on hold until you submit a {taxFormType} tax form."` | -| `stateController` | `state-controller` | | `string` | `"{}"` | -| `statusBadgeText` | `status-badge-text` | | `string` | `"{badgeText, select, payoutToday {Payout Today} nextPayout {Next Payout} other {Failed} }"` | -| `statusTextActive` | `status-text-active` | | `string` | `"Active"` | -| `statusTextNotActive` | `status-text-not-active` | | `string` | `"Invalid Tax Form"` | -| `statusTextNotVerified` | `status-text-not-verified` | Displayed when the participant submitted their form but it is awaiting review. | `string` | `"Not Verified"` | -| `statusTextRequired` | `status-text-required` | Displayed when the participant has not submitted their required tax form. | `string` | `"Required"` | -| `subRegionTaxNumber` | `sub-region-tax-number` | | `string` | `"Income tax number: {subRegionTaxNumber}"` | -| `supportLink` | `support-link` | | `string` | `"support team"` | -| `taxAlertHeaderNotActiveW8` | `tax-alert-header-not-active-w-8` | Part of the alert displayed at the top of the page. | `string` | `"{documentType} tax form is invalid"` | -| `taxAlertHeaderNotActiveW9` | `tax-alert-header-not-active-w-9` | Part of the alert displayed at the top of the page. | `string` | `"Your W-9 tax form has personal information that doesn’t match your profile"` | -| `taxAlertNotActiveMessageW8` | `tax-alert-not-active-message-w-8` | Part of the alert displayed at the top of the page. | `string` | `"Your tax form may have expired or has personal information that doesn’t match your profile. Please submit a new {documentType} form."` | -| `taxAlertNotActiveMessageW9` | `tax-alert-not-active-message-w-9` | Part of the alert displayed at the top of the page. | `string` | `"Please resubmit a new {documentType} form."` | -| `taxDocumentSectionHeader` | `tax-document-section-header` | | `string` | `"Tax documents"` | -| `taxDocumentSectionSubHeader` | `tax-document-section-sub-header` | Displayed under the tax document section header. | `string` | `"{documentType} tax form"` | -| `taxDocumentSectionSubHeaderNoDocument` | `tax-document-section-sub-header-no-document` | Displayed under the tax document section header. | `string` | `"Tax form"` | -| `termsAndConditions` | `terms-and-conditions` | | `string` | `"Terms and Conditions"` | -| `thresholdPayoutText` | `threshold-payout-text` | Display participants' payout preference on the payout information card, indicating the balance at which they want to get paid. | `string` | `"Next payout occurs when balance is {thresholdBalance}"` | -| `verificationFailedInternalDescription` | `verification-failed-internal-description` | | `string` | `"Identity verification has failed. Our team is reviewing the report and will contact you with further information. If you don't hear from us contact our {supportLink}."` | -| `verificationFailedInternalHeader` | `verification-failed-internal-header` | | `string` | `"Identity verification unsuccessful"` | -| `verificationRequiredButtonText` | `verification-required-button-text` | Part of the alert displayed at the top of the page when the user needs to verify their identity. | `string` | `"Start Verification"` | -| `verificationRequiredDescription` | `verification-required-description` | Part of the alert displayed at the top of the page when the user needs to verify their identity | `string` | `"Complete your verification to start receiving your cash rewards. It should only take a few minutes verify. If you run in to an issue verifying your identity contact our {supportLink}."` | -| `verificationRequiredHeader` | `verification-required-header` | Part of the alert displayed at the top of the page when the user needs to verify their identity. | `string` | `"Verify your identity"` | -| `verificationRequiredInternalDescription` | `verification-required-internal-description` | | `string` | `"Identity verification submission has been received. Our system is currently performing additional checks and analyzing the results. You will be updated shortly. If you don't hear from us contact our {supportLink}."` | -| `verificationRequiredInternalHeader` | `verification-required-internal-header` | | `string` | `"Identity verification in progress"` | -| `verificationReviewInternalDescription` | `verification-review-internal-description` | | `string` | `"Identity verification requires further review due to a potential error. Our team is reviewing the information and will update you shortly. If you don't hear from us contact our {supportLink}."` | -| `verificationReviewInternalHeader` | `verification-review-internal-header` | | `string` | `"Identity verification under review"` | -| `w9RequiredButtonText` | `w-9-required-button-text` | | `string` | `"Submit W-9"` | -| `w9RequiredDescription` | `w-9-required-description` | | `string` | `"You have surpassed the $2000 threshold requiring a W-9 form or have multiple accounts with impact.com. To remove the hold, please submit your W-9 form."` | -| `w9RequiredHeader` | `w-9-required-header` | | `string` | `"Your next payout is on hold"` | -| `withdrawalSettingsInvalidDescription` | `withdrawal-settings-invalid-description` | | `string` | `"There are missing fields or invalid characters in your payment information. Please review your information and make sure it is correct. Your payouts are on hold until this is resolved."` | -| `withdrawalSettingsInvalidHeader` | `withdrawal-settings-invalid-header` | | `string` | `"Your payment information is incomplete or includes invalid characters"` | +| Property | Attribute | Description | Type | Default | +| ----------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accountReviewDescription` | `account-review-description` | | `string` | `"This process takes 48 hours, payouts are on hold until it's completed. You will receive an email from our referral provider, Impact.com, if any issues arise. It contains details on how to resolve this issue. If you need further assistance, please reach out to our {supportLink}."` | +| `accountReviewHeader` | `account-review-header` | | `string` | `"Your account is under review"` | +| `accountText` | `account-text` | Shown before the participant’s bank account information. | `string` | `"Account"` | +| `badgeTextAwaitingReview` | `badge-text-awaiting-review` | Additional text displayed next to the tax form's status badge. | `string` | `"Awaiting review. Submitted on {dateSubmitted}."` | +| `badgeTextSubmittedOn` | `badge-text-submitted-on` | Additional text displayed next to the tax form's status badge | `string` | `"Submitted on {dateSubmitted}."` | +| `badgeTextSubmittedOnW8` | `badge-text-submitted-on-w-8` | Additional text displayed next to the tax form's status badge. | `string` | `"Submitted on {dateSubmitted}. Valid for three years after submission."` | +| `balanceUnderThresholdDescription` | `balance-under-threshold-description` | | `string` | `"Your total balance is under {minPayoutAmount}, the minimum required for payout."` | +| `balanceUnderThresholdHeader` | `balance-under-threshold-header` | | `string` | `"Your balance is under the minimum payout"` | +| `bankTaxNameMismatchDescription` | `bank-tax-name-mismatch-description` | | `string` | `"The bank account (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `bankTaxNameMismatchHeader` | `bank-tax-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | +| `bankingInformationSectionHeader` | `banking-information-section-header` | | `string` | `"Payout information"` | +| `beneficiaryNameInvalidDescription` | `beneficiary-name-invalid-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `beneficiaryNameInvalidHeader` | `beneficiary-name-invalid-header` | | `string` | `"Your payment information does not match your tax form"` | +| `beneficiaryNameMismatchDescription` | `beneficiary-name-mismatch-description` | | `string` | `"The account holder (beneficiary) name in your payment information does not match what was submitted in your tax form. Please review and update your payment information or tax form so that they match exactly and do not include any invalid characters. Your payouts are on hold until this is resolved."` | +| `beneficiaryNameMismatchHeader` | `beneficiary-name-mismatch-header` | | `string` | `"Your payment information does not match your tax form"` | +| `cancelButton` | `cancel-button` | | `string` | `"Cancel"` | +| `dateColumnTitle` | `date-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Date"` | +| `demoData` | -- | | `{ states?: { status?: string; documentType: TaxDocumentType; documentTypeString: string; canEditPayoutInfo: boolean; disabled?: boolean; dateSubmitted?: string; noFormNeeded?: boolean; indirectTaxType?: string; qstNumber?: string; subRegionTaxNumber?: string; subRegion?: string; indirectTaxNumber?: string; province?: string; country?: string; notRegistered?: boolean; isBusinessEntity?: boolean; loading?: boolean; loadingError?: boolean; showNewFormDialog: boolean; hasHold: boolean; payoutStatus: PayoutStatus; belowPayoutThreshold?: boolean; minPayoutAmount?: string; veriffLoading: boolean; errors?: { general?: boolean; }; enforceUsTaxComplianceOption?: string; }; }` | `undefined` | +| `earningsAfterTaxColumnTitle` | `earnings-after-tax-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Earnings after tax"` | +| `earningsColumnTitle` | `earnings-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Earnings"` | +| `editPaymentInformationButton` | `edit-payment-information-button` | | `string` | `"Edit payout information"` | +| `generalErrorDescription` | `general-error-description` | Part of the alert displayed at the top of the page. | `string` | `"Please review your information and try again. If this problem continues, contact our {supportLink}."` | +| `generalErrorTitle` | `general-error-title` | Part of the alert displayed at the top of the page. | `string` | `"There was a problem submitting your information"` | +| `indirectTaxColumnTitle` | `indirect-tax-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Indirect tax"` | +| `indirectTaxDetails` | `indirect-tax-details` | Displayed to participants who have submitted their indirect tax information. | `string` | `"{indirectTaxType} number: {indirectTaxNumber}"` | +| `indirectTaxInfoCanada` | `indirect-tax-info-canada` | If the participant is registered for indirect tax in Canada, display the province they’re registered in. | `string` | `"Registered in {province}, {country}"` | +| `indirectTaxInfoOtherCountry` | `indirect-tax-info-other-country` | If the participant is registered for indirect tax, display the country they’re registered in. | `string` | `"Registered in {country}"` | +| `indirectTaxInfoSectionHeader` | `indirect-tax-info-section-header` | | `string` | `"Indirect tax"` | +| `indirectTaxInfoSpain` | `indirect-tax-info-spain` | If the participant is registered for indirect tax in Spain, display the region they’re registered in. | `string` | `"Registered in {country}, {subRegion}"` | +| `indirectTaxTooltipSupport` | `indirect-tax-tooltip-support` | | `string` | `"To make changes to your indirect tax information, please contact our {supportLink}."` | +| `invalidForm` | `invalid-form` | Additional text displayed next to the tax form's status badge. | `string` | `"Make sure your information is correct and submit new form."` | +| `invoiceColumnTitle` | `invoice-column-title` | Part of the Invoice table displayed at the bottom of the page. | `string` | `"Invoice"` | +| `invoiceDescription` | `invoice-description` | | `string` | `"View and download your invoices to report your earnings and stay tax compliant."` | +| `invoiceEmptyStateHeader` | `invoice-empty-state-header` | | `string` | `"View your invoice details"` | +| `invoiceEmptyStateText` | `invoice-empty-state-text` | | `string` | `"Refer a friend to view the status of your invoices and rewards earned"` | +| `invoiceHeader` | `invoice-header` | | `string` | `"Invoices"` | +| `invoiceMoreLabel` | `invoice-more-label` | | `string` | `"Next"` | +| `invoicePrevLabel` | `invoice-prev-label` | | `string` | `"Prev"` | +| `loadingErrorAlertDescription` | `loading-error-alert-description` | Part of the alert displayed at the top of the page. | `string` | `"Please refresh the page and try again. If this problem continues, contact our {supportLink}."` | +| `loadingErrorAlertHeader` | `loading-error-alert-header` | Part of the alert displayed at the top of the page. | `string` | `"There was a problem loading your form"` | +| `newFormButton` | `new-form-button` | | `string` | `"Submit new tax form"` | +| `notRegisteredForTax` | `not-registered-for-tax` | | `string` | `"Not registered for indirect tax. If you’ve previously registered with your tax authority, contact our {supportLink} to add your information to stay tax compliant."` | +| `paymentHoldOnChangeDescription` | `payment-hold-on-change-description` | | `string` | `"Your payout is temporarily on hold while we review your new payment information, this process is usually resolved within 48 hours."` | +| `paymentHoldOnChangeHeader` | `payment-hold-on-change-header` | | `string` | `"We are reviewing your new payout settings"` | +| `paymentReturnedDescription` | `payment-returned-description` | | `string` | `"Our recent payment attempt for your earnings was unsuccessful. Please review your payment information and make sure it is correct."` | +| `paymentReturnedHeader` | `payment-returned-header` | | `string` | `"Payout unsuccessful"` | +| `payoutFromImpact` | `payout-from-impact` | Displayed under the payout details card. | `string` | `"Your balance may take up to 24 hours to update. Payouts will be sent from our referral program provider, impact.com."` | +| `payoutHoldAlertDescription` | `payout-hold-alert-description` | Part of the alert displayed at the top of the page when there’s been an issue preventing payouts. | `string` | `"Please contact our {supportLink} or check your inbox for an email from our referral program provider, impact.com."` | +| `payoutHoldAlertHeader` | `payout-hold-alert-header` | Part of the alert displayed at the top of the page when there’s been an issue preventing payouts. | `string` | `"Your payout is on hold"` | +| `payoutMissingInformationText` | `payout-missing-information-text` | Text displayed for existing publishers that do not have saved banking information. | `string` | `"Missing banking information, go to Impact.com to resolve."` | +| `qstNumber` | `qst-number` | Displayed to participants registered in Quebec, Canada. | `string` | `"QST number: {qstNumber}"` | +| `replaceTaxFormModalBodyText` | `replace-tax-form-modal-body-text` | | `string` | `"Submitting a new tax form will remove your existing form. Make sure to sign and complete your new tax form to prevent any issues with your next payout."` | +| `replaceTaxFormModalHeader` | `replace-tax-form-modal-header` | | `string` | `"Replace existing tax form"` | +| `requiredTaxForm` | `required-tax-form` | Additional text displayed next to the tax form's status badge | `string` | `"Your payouts are on hold until you submit a {taxFormType} tax form."` | +| `stateController` | `state-controller` | | `string` | `"{}"` | +| `statusBadgeText` | `status-badge-text` | | `string` | `"{badgeText, select, payoutToday {Payout Today} nextPayout {Next Payout} other {Failed} }"` | +| `statusTextActive` | `status-text-active` | | `string` | `"Active"` | +| `statusTextNotActive` | `status-text-not-active` | | `string` | `"Invalid Tax Form"` | +| `statusTextNotVerified` | `status-text-not-verified` | Displayed when the participant submitted their form but it is awaiting review. | `string` | `"Not Verified"` | +| `statusTextRequired` | `status-text-required` | Displayed when the participant has not submitted their required tax form. | `string` | `"Required"` | +| `subRegionTaxNumber` | `sub-region-tax-number` | | `string` | `"Income tax number: {subRegionTaxNumber}"` | +| `supportLink` | `support-link` | | `string` | `"support team"` | +| `taxAlertHeaderNotActiveW8` | `tax-alert-header-not-active-w-8` | Part of the alert displayed at the top of the page. | `string` | `"{documentType} tax form is invalid"` | +| `taxAlertHeaderNotActiveW9` | `tax-alert-header-not-active-w-9` | Part of the alert displayed at the top of the page. | `string` | `"Your W-9 tax form has personal information that doesn’t match your profile"` | +| `taxAlertNotActiveMessageW8` | `tax-alert-not-active-message-w-8` | Part of the alert displayed at the top of the page. | `string` | `"Your tax form may have expired or has personal information that doesn’t match your profile. Please submit a new {documentType} form."` | +| `taxAlertNotActiveMessageW9` | `tax-alert-not-active-message-w-9` | Part of the alert displayed at the top of the page. | `string` | `"Please resubmit a new {documentType} form."` | +| `taxDocumentSectionHeader` | `tax-document-section-header` | | `string` | `"Tax documents"` | +| `taxDocumentSectionSubHeader` | `tax-document-section-sub-header` | Displayed under the tax document section header. | `string` | `"{documentType} tax form"` | +| `taxDocumentSectionSubHeaderNoDocument` | `tax-document-section-sub-header-no-document` | Displayed under the tax document section header. | `string` | `"Tax form"` | +| `termsAndConditions` | `terms-and-conditions` | | `string` | `"Terms and Conditions"` | +| `thresholdPayoutText` | `threshold-payout-text` | Display participants' payout preference on the payout information card, indicating the balance at which they want to get paid. | `string` | `"Next payout occurs when balance is {thresholdBalance}"` | +| `verificationFailedInternalDescription` | `verification-failed-internal-description` | | `string` | `"Identity verification has failed. Our team is reviewing the report and will contact you with further information. If you don't hear from us contact our {supportLink}."` | +| `verificationFailedInternalHeader` | `verification-failed-internal-header` | | `string` | `"Identity verification unsuccessful"` | +| `verificationRequiredButtonText` | `verification-required-button-text` | Part of the alert displayed at the top of the page when the user needs to verify their identity. | `string` | `"Start Verification"` | +| `verificationRequiredDescription` | `verification-required-description` | Part of the alert displayed at the top of the page when the user needs to verify their identity | `string` | `"Complete your verification to start receiving your cash rewards. It should only take a few minutes verify. If you run in to an issue verifying your identity contact our {supportLink}."` | +| `verificationRequiredHeader` | `verification-required-header` | Part of the alert displayed at the top of the page when the user needs to verify their identity. | `string` | `"Verify your identity"` | +| `verificationRequiredInternalDescription` | `verification-required-internal-description` | | `string` | `"Identity verification submission has been received. Our system is currently performing additional checks and analyzing the results. You will be updated shortly. If you don't hear from us contact our {supportLink}."` | +| `verificationRequiredInternalHeader` | `verification-required-internal-header` | | `string` | `"Identity verification in progress"` | +| `verificationReviewInternalDescription` | `verification-review-internal-description` | | `string` | `"Identity verification requires further review due to a potential error. Our team is reviewing the information and will update you shortly. If you don't hear from us contact our {supportLink}."` | +| `verificationReviewInternalHeader` | `verification-review-internal-header` | | `string` | `"Identity verification under review"` | +| `w9RequiredButtonText` | `w-9-required-button-text` | | `string` | `"Submit W-9"` | +| `w9RequiredDescription` | `w-9-required-description` | | `string` | `"You have surpassed the $2000 threshold requiring a W-9 form or have multiple accounts with impact.com. To remove the hold, please submit your W-9 form."` | +| `w9RequiredHeader` | `w-9-required-header` | | `string` | `"Your next payout is on hold"` | +| `withdrawalSettingsInvalidDescription` | `withdrawal-settings-invalid-description` | | `string` | `"There are missing fields or invalid characters in your payment information. Please review your information and make sure it is correct. Your payouts are on hold until this is resolved."` | +| `withdrawalSettingsInvalidHeader` | `withdrawal-settings-invalid-header` | | `string` | `"Your payment information is incomplete or includes invalid characters"` | ## Dependencies diff --git a/packages/mint-components/src/saasquatch.d.ts b/packages/mint-components/src/saasquatch.d.ts index cd1b4fbcf..2da58717e 100644 --- a/packages/mint-components/src/saasquatch.d.ts +++ b/packages/mint-components/src/saasquatch.d.ts @@ -1,6 +1,7 @@ interface Referral { id: string; dateConverted: number; + dateConversionRetracted?: number | null; dateReferralStarted: number; dateReferralPaid: number; dateReferralEnded: number; @@ -33,6 +34,7 @@ interface Referral { interface Referrer { dateReferralStarted: number; dateConverted: number; + dateConversionRetracted?: number | null; referrerUser: { firstName: string; lastName: string; From dd49d1a6934ce70dc9af26d492277610ed8a6c9f Mon Sep 17 00:00:00 2001 From: Sam Beveridge Date: Mon, 28 Sep 2026 15:22:44 -0700 Subject: [PATCH 3/4] build --- .../components/sqm-referral-codes/readme.md | 20 +++++++++---------- .../src/components/sqm-skeleton/readme.md | 2 -- .../src/components/sqm-stencilbook/readme.md | 1 - 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/mint-components/src/components/sqm-referral-codes/readme.md b/packages/mint-components/src/components/sqm-referral-codes/readme.md index e059cf311..e2d625925 100644 --- a/packages/mint-components/src/components/sqm-referral-codes/readme.md +++ b/packages/mint-components/src/components/sqm-referral-codes/readme.md @@ -7,15 +7,15 @@ ## Properties -| Property | Attribute | Description | Type | Default | -| --------------------------- | ------------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `demoData` | -- | | `{ states?: { noCodes: boolean; loading: boolean; }; slots?: { shareButtons: VNode; shareCodes: VNode; pagination: VNode; empty: VNode; loading: VNode; }; titleText?: string; textColor?: string; }` | `undefined` | -| `emptyStateDescriptionText` | `empty-state-description-text` | | `string` | `"Please contact our program support team to let them know you’re out of codes."` | -| `emptyStateHeaderText` | `empty-state-header-text` | | `string` | `"Your new codes and links aren’t ready yet"` | -| `emptyStateImageUrl` | `empty-state-image-url` | | `string` | `"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png"` | -| `programId` | `program-id` | | `string` | `undefined` | -| `textColor` | `text-color` | | `string` | `undefined` | -| `titleText` | `title-text` | | `string` | `"Start sharing"` | +| Property | Attribute | Description | Type | Default | +| --------------------------- | ------------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `demoData` | -- | | `{ states?: { noCodes: boolean; loading: boolean; }; slots?: { shareButtons: VNode; shareCodes: VNode; pagination: VNode; empty: VNode; }; titleText?: string; textColor?: string; }` | `undefined` | +| `emptyStateDescriptionText` | `empty-state-description-text` | | `string` | `"Please contact our program support team to let them know you’re out of codes."` | +| `emptyStateHeaderText` | `empty-state-header-text` | | `string` | `"Your new codes and links aren’t ready yet"` | +| `emptyStateImageUrl` | `empty-state-image-url` | | `string` | `"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png"` | +| `programId` | `program-id` | | `string` | `undefined` | +| `textColor` | `text-color` | | `string` | `undefined` | +| `titleText` | `title-text` | | `string` | `"Start sharing"` | ## Dependencies @@ -27,13 +27,11 @@ ### Depends on - [sqm-empty](../sqm-empty) -- [sqm-skeleton](../sqm-skeleton) ### Graph ```mermaid graph TD; sqm-referral-codes --> sqm-empty - sqm-referral-codes --> sqm-skeleton sqm-empty --> sqm-portal-container sqm-empty --> sqm-titled-section sqm-empty --> sqm-text diff --git a/packages/mint-components/src/components/sqm-skeleton/readme.md b/packages/mint-components/src/components/sqm-skeleton/readme.md index b97d81c51..1cacb1d89 100644 --- a/packages/mint-components/src/components/sqm-skeleton/readme.md +++ b/packages/mint-components/src/components/sqm-skeleton/readme.md @@ -23,7 +23,6 @@ - [sqm-leaderboard](../sqm-leaderboard) - [sqm-payout-details-card](../tax-and-cash/sqm-payout-details-card) - [sqm-qr-code](../sqm-qr-code) - - [sqm-referral-codes](../sqm-referral-codes) - [sqm-referral-table](../sqm-referral-table) - [sqm-reward-exchange-list](../sqm-reward-exchange-list) - [sqm-rewards-table](../sqm-rewards-table) @@ -43,7 +42,6 @@ graph TD; sqm-leaderboard --> sqm-skeleton sqm-payout-details-card --> sqm-skeleton sqm-qr-code --> sqm-skeleton - sqm-referral-codes --> sqm-skeleton sqm-referral-table --> sqm-skeleton sqm-reward-exchange-list --> sqm-skeleton sqm-rewards-table --> sqm-skeleton diff --git a/packages/mint-components/src/components/sqm-stencilbook/readme.md b/packages/mint-components/src/components/sqm-stencilbook/readme.md index 23b09fe74..da3ac70ae 100644 --- a/packages/mint-components/src/components/sqm-stencilbook/readme.md +++ b/packages/mint-components/src/components/sqm-stencilbook/readme.md @@ -242,7 +242,6 @@ graph TD; sqm-portal-google-login --> sqm-form-message sqm-share-link --> sqm-form-message sqm-referral-codes --> sqm-empty - sqm-referral-codes --> sqm-skeleton sqm-referral-table --> sqm-empty sqm-referral-table --> sqm-table-row sqm-referral-table --> sqm-table-cell From 90e4a2f57a9fc5943b59f9a6dd1a710012881e53 Mon Sep 17 00:00:00 2001 From: Sam Beveridge Date: Mon, 28 Sep 2026 15:27:46 -0700 Subject: [PATCH 4/4] changeset --- .../.changeset/{odd-experts-check.md => chatty-tools-bake.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename packages/mint-components/.changeset/{odd-experts-check.md => chatty-tools-bake.md} (50%) diff --git a/packages/mint-components/.changeset/odd-experts-check.md b/packages/mint-components/.changeset/chatty-tools-bake.md similarity index 50% rename from packages/mint-components/.changeset/odd-experts-check.md rename to packages/mint-components/.changeset/chatty-tools-bake.md index 7a5066a01..b087df5b6 100644 --- a/packages/mint-components/.changeset/odd-experts-check.md +++ b/packages/mint-components/.changeset/chatty-tools-bake.md @@ -2,4 +2,4 @@ "@saasquatch/mint-components": patch --- -show no warnings if balance is currently zero +display retracted referrals as cancelled