@fantastic.dev/better-stripe 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/MIGRATION.md +12 -0
  3. package/README.md +46 -2
  4. package/dist/client/billing/checkout.d.ts +1 -0
  5. package/dist/client/billing/checkout.d.ts.map +1 -1
  6. package/dist/client/billing/checkout.js +5 -1
  7. package/dist/client/billing/checkout.js.map +1 -1
  8. package/dist/client/billing/providerReads.d.ts +18 -0
  9. package/dist/client/billing/providerReads.d.ts.map +1 -0
  10. package/dist/client/billing/providerReads.js +15 -0
  11. package/dist/client/billing/providerReads.js.map +1 -0
  12. package/dist/client/billing/subscriptions.d.ts +1 -1
  13. package/dist/client/billing/subscriptions.d.ts.map +1 -1
  14. package/dist/client/billing/subscriptions.js.map +1 -1
  15. package/dist/client/connect/payoutSnapshot.d.ts +28 -0
  16. package/dist/client/connect/payoutSnapshot.d.ts.map +1 -0
  17. package/dist/client/connect/payoutSnapshot.js +81 -0
  18. package/dist/client/connect/payoutSnapshot.js.map +1 -0
  19. package/dist/client/connect/transfers.d.ts.map +1 -1
  20. package/dist/client/connect/transfers.js +13 -32
  21. package/dist/client/connect/transfers.js.map +1 -1
  22. package/dist/client/core/accounts.d.ts +12 -23
  23. package/dist/client/core/accounts.d.ts.map +1 -1
  24. package/dist/client/core/accounts.js +5 -1
  25. package/dist/client/core/accounts.js.map +1 -1
  26. package/dist/client/core/idempotency.d.ts +5 -0
  27. package/dist/client/core/idempotency.d.ts.map +1 -0
  28. package/dist/client/core/idempotency.js +10 -0
  29. package/dist/client/core/idempotency.js.map +1 -0
  30. package/dist/client/index.d.ts +31 -25
  31. package/dist/client/index.d.ts.map +1 -1
  32. package/dist/client/index.js +29 -52
  33. package/dist/client/index.js.map +1 -1
  34. package/dist/client/settlement/allocation.d.ts +30 -0
  35. package/dist/client/settlement/allocation.d.ts.map +1 -0
  36. package/dist/client/settlement/allocation.js +71 -0
  37. package/dist/client/settlement/allocation.js.map +1 -0
  38. package/dist/client/settlement/commissions.d.ts +27 -0
  39. package/dist/client/settlement/commissions.d.ts.map +1 -0
  40. package/dist/client/settlement/commissions.js +69 -0
  41. package/dist/client/settlement/commissions.js.map +1 -0
  42. package/dist/client/settlement/execution.d.ts +27 -0
  43. package/dist/client/settlement/execution.d.ts.map +1 -0
  44. package/dist/client/settlement/execution.js +70 -0
  45. package/dist/client/settlement/execution.js.map +1 -0
  46. package/dist/client/settlement/reconciliation.d.ts +10 -0
  47. package/dist/client/settlement/reconciliation.d.ts.map +1 -0
  48. package/dist/client/settlement/reconciliation.js +73 -0
  49. package/dist/client/settlement/reconciliation.js.map +1 -0
  50. package/dist/client/settlement/settleSale.d.ts +21 -0
  51. package/dist/client/settlement/settleSale.d.ts.map +1 -0
  52. package/dist/client/settlement/settleSale.js +27 -0
  53. package/dist/client/settlement/settleSale.js.map +1 -0
  54. package/dist/client/settlement/verifiedSale.d.ts +25 -0
  55. package/dist/client/settlement/verifiedSale.d.ts.map +1 -0
  56. package/dist/client/settlement/verifiedSale.js +100 -0
  57. package/dist/client/settlement/verifiedSale.js.map +1 -0
  58. package/dist/client/webhooks/asyncHooks.d.ts +5 -0
  59. package/dist/client/webhooks/asyncHooks.d.ts.map +1 -0
  60. package/dist/client/webhooks/asyncHooks.js +20 -0
  61. package/dist/client/webhooks/asyncHooks.js.map +1 -0
  62. package/dist/component/_generated/component.d.ts +115 -0
  63. package/dist/component/_generated/component.d.ts.map +1 -1
  64. package/dist/component/connect/queries.d.ts +30 -1
  65. package/dist/component/connect/queries.d.ts.map +1 -1
  66. package/dist/component/connect/queries.js +19 -2
  67. package/dist/component/connect/queries.js.map +1 -1
  68. package/dist/component/schema.d.ts +67 -0
  69. package/dist/component/schema.js +4 -0
  70. package/dist/component/schema.js.map +1 -1
  71. package/dist/component/settlement/mutations.d.ts +47 -0
  72. package/dist/component/settlement/mutations.d.ts.map +1 -0
  73. package/dist/component/settlement/mutations.js +104 -0
  74. package/dist/component/settlement/mutations.js.map +1 -0
  75. package/dist/component/settlement/queries.d.ts +29 -0
  76. package/dist/component/settlement/queries.d.ts.map +1 -0
  77. package/dist/component/settlement/queries.js +35 -0
  78. package/dist/component/settlement/queries.js.map +1 -0
  79. package/dist/component/settlement/schema.d.ts +99 -0
  80. package/dist/component/settlement/schema.d.ts.map +1 -0
  81. package/dist/component/settlement/schema.js +35 -0
  82. package/dist/component/settlement/schema.js.map +1 -0
  83. package/dist/react/workflows/AffiliatePayoutEditor.d.ts +41 -0
  84. package/dist/react/workflows/AffiliatePayoutEditor.d.ts.map +1 -0
  85. package/dist/react/workflows/AffiliatePayoutEditor.js +80 -0
  86. package/dist/react/workflows/AffiliatePayoutEditor.js.map +1 -0
  87. package/dist/react/workflows/AffiliateRateEditor.d.ts +26 -0
  88. package/dist/react/workflows/AffiliateRateEditor.d.ts.map +1 -0
  89. package/dist/react/workflows/AffiliateRateEditor.js +49 -0
  90. package/dist/react/workflows/AffiliateRateEditor.js.map +1 -0
  91. package/dist/react/workflows/Checkout.d.ts +3 -1
  92. package/dist/react/workflows/Checkout.d.ts.map +1 -1
  93. package/dist/react/workflows/Checkout.js +3 -2
  94. package/dist/react/workflows/Checkout.js.map +1 -1
  95. package/dist/react/workflows/CheckoutForms.d.ts +2 -0
  96. package/dist/react/workflows/CheckoutForms.d.ts.map +1 -1
  97. package/dist/react/workflows/CheckoutForms.js +22 -16
  98. package/dist/react/workflows/CheckoutForms.js.map +1 -1
  99. package/dist/react/workflows/IntegrationSwitch.js +2 -2
  100. package/dist/react/workflows/IntegrationSwitch.js.map +1 -1
  101. package/dist/react/workflows/Pagination.d.ts +32 -0
  102. package/dist/react/workflows/Pagination.d.ts.map +1 -0
  103. package/dist/react/workflows/Pagination.js +49 -0
  104. package/dist/react/workflows/Pagination.js.map +1 -0
  105. package/dist/react/workflows/Payouts.d.ts +3 -18
  106. package/dist/react/workflows/Payouts.d.ts.map +1 -1
  107. package/dist/react/workflows/Payouts.js +2 -2
  108. package/dist/react/workflows/Payouts.js.map +1 -1
  109. package/dist/react/workflows/PlanPricingEditor.d.ts +35 -0
  110. package/dist/react/workflows/PlanPricingEditor.d.ts.map +1 -0
  111. package/dist/react/workflows/PlanPricingEditor.js +64 -0
  112. package/dist/react/workflows/PlanPricingEditor.js.map +1 -0
  113. package/dist/react/workflows/index.d.ts +8 -0
  114. package/dist/react/workflows/index.d.ts.map +1 -1
  115. package/dist/react/workflows/index.js +4 -0
  116. package/dist/react/workflows/index.js.map +1 -1
  117. package/docs/react-workflows-audit.md +19 -0
  118. package/docs/react-workflows.md +94 -3
  119. package/docs/settlement.md +158 -0
  120. package/package.json +6 -4
  121. package/src/client/billing/checkout-idempotency.test.ts +82 -0
  122. package/src/client/billing/checkout.ts +6 -1
  123. package/src/client/billing/providerReads.test.ts +60 -0
  124. package/src/client/billing/providerReads.ts +30 -0
  125. package/src/client/billing/subscriptions.ts +1 -8
  126. package/src/client/connect/payoutSnapshot.test.ts +91 -0
  127. package/src/client/connect/payoutSnapshot.ts +130 -0
  128. package/src/client/connect/transfers.test.ts +15 -4
  129. package/src/client/connect/transfers.ts +13 -42
  130. package/src/client/core/account-idempotency.test.ts +78 -0
  131. package/src/client/core/accounts.ts +18 -25
  132. package/src/client/core/idempotency.test.ts +10 -0
  133. package/src/client/core/idempotency.ts +11 -0
  134. package/src/client/index.ts +84 -103
  135. package/src/client/settlement/allocation.test.ts +98 -0
  136. package/src/client/settlement/allocation.ts +110 -0
  137. package/src/client/settlement/commissions.test.ts +103 -0
  138. package/src/client/settlement/commissions.ts +125 -0
  139. package/src/client/settlement/execution.test.ts +186 -0
  140. package/src/client/settlement/execution.ts +134 -0
  141. package/src/client/settlement/reconciliation.ts +119 -0
  142. package/src/client/settlement/settleSale.ts +59 -0
  143. package/src/client/settlement/verifiedSale.test.ts +139 -0
  144. package/src/client/settlement/verifiedSale.ts +159 -0
  145. package/src/client/webhooks/asyncHooks.ts +38 -0
  146. package/src/client/webhooks/processors.test.ts +9 -9
  147. package/src/component/_generated/api.ts +4 -0
  148. package/src/component/_generated/component.ts +141 -0
  149. package/src/component/connect/queries.ts +26 -2
  150. package/src/component/earnings-totals.test.ts +13 -0
  151. package/src/component/schema.ts +8 -0
  152. package/src/component/settlement/mutations.ts +119 -0
  153. package/src/component/settlement/queries.ts +38 -0
  154. package/src/component/settlement/schema.ts +45 -0
  155. package/src/component/settlement-claims.test.ts +77 -0
  156. package/src/component/transfers.test.ts +48 -0
  157. package/src/react/components/EmbeddedDisputes.render.test.tsx +2 -2
  158. package/src/react/index.payment-element.test.ts +22 -37
  159. package/src/react/workflows/AffiliatePayoutEditor.test.tsx +90 -0
  160. package/src/react/workflows/AffiliatePayoutEditor.tsx +201 -0
  161. package/src/react/workflows/AffiliateRateEditor.test.tsx +36 -0
  162. package/src/react/workflows/AffiliateRateEditor.tsx +92 -0
  163. package/src/react/workflows/Checkout.test.tsx +30 -0
  164. package/src/react/workflows/Checkout.tsx +10 -3
  165. package/src/react/workflows/CheckoutForms.test.tsx +40 -0
  166. package/src/react/workflows/CheckoutForms.tsx +37 -16
  167. package/src/react/workflows/IntegrationSwitch.test.tsx +25 -0
  168. package/src/react/workflows/IntegrationSwitch.tsx +2 -2
  169. package/src/react/workflows/Pagination.test.tsx +53 -0
  170. package/src/react/workflows/Pagination.tsx +93 -0
  171. package/src/react/workflows/Payouts.test.tsx +33 -0
  172. package/src/react/workflows/Payouts.tsx +21 -15
  173. package/src/react/workflows/PlanPricingEditor.test.tsx +79 -0
  174. package/src/react/workflows/PlanPricingEditor.tsx +156 -0
  175. package/src/react/workflows/index.ts +22 -0
@@ -0,0 +1,80 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId, useMemo, useState } from "react";
4
+ import { useWorkflowAction } from "./useWorkflowAction.js";
5
+ function initialFields(props) {
6
+ return {
7
+ scope: `${props.scopeKey}:${props.version}`,
8
+ term: props.affiliateCommissionTerm ?? "inherit",
9
+ mode: props.affiliateFixedAmount != null
10
+ ? "fixed"
11
+ : "percentage",
12
+ value: props.affiliateFixedAmount != null
13
+ ? String(props.affiliateFixedAmount)
14
+ : props.affiliateBasisPoints == null
15
+ ? ""
16
+ : String(props.affiliateBasisPoints / 100),
17
+ };
18
+ }
19
+ /** Unstyled inline payout editor. Clear saves inheritance; explicit zero disables payouts. */
20
+ export function AffiliatePayoutEditor(props) {
21
+ const id = useId();
22
+ const currency = (props.currency ?? "usd").toUpperCase();
23
+ const formatter = useMemo(() => new Intl.NumberFormat("en-US", {
24
+ style: "currency",
25
+ currency,
26
+ currencyDisplay: "narrowSymbol",
27
+ }), [currency]);
28
+ const currencySymbol = formatter.formatToParts(0).find((part) => part.type === "currency")
29
+ ?.value ?? currency;
30
+ const scope = `${props.scopeKey}:${props.version}`;
31
+ const initial = initialFields(props);
32
+ const [fields, setFields] = useState(initial);
33
+ if (fields.scope !== scope)
34
+ setFields(initial);
35
+ const action = useWorkflowAction(async (clear = false) => {
36
+ const value = clear ? "" : fields.value.trim();
37
+ const amount = value === "" ? null : Number(value);
38
+ if (amount !== null &&
39
+ (!/^\d+(\.\d{1,2})?$/.test(value) ||
40
+ !Number.isSafeInteger(Math.round(amount * 100)) ||
41
+ amount < 0 ||
42
+ (fields.mode === "percentage" && amount > 100)))
43
+ throw new Error("Enter a non-negative amount with at most two decimals, or a percentage from 0 to 100.");
44
+ await props.onSave({
45
+ affiliateCommissionTerm: clear || fields.term === "inherit" ? null : fields.term,
46
+ affiliateBasisPoints: fields.mode === "percentage" && amount !== null
47
+ ? Math.round(amount * 100)
48
+ : null,
49
+ affiliateFixedAmount: fields.mode === "fixed" ? amount : null,
50
+ expectedVersion: props.version,
51
+ });
52
+ if (clear)
53
+ setFields((previous) => previous.scope === scope
54
+ ? { ...previous, value: "", term: "inherit" }
55
+ : previous);
56
+ return clear
57
+ ? "Affiliate payout cleared. Using the inherited default."
58
+ : "Affiliate payout saved.";
59
+ }, props.scopeKey);
60
+ const state = {
61
+ ...fields,
62
+ currencySymbol,
63
+ setTerm: (term) => setFields((previous) => ({ ...previous, term })),
64
+ setValue: (value) => setFields((previous) => ({ ...previous, value })),
65
+ setMode: (mode) => setFields((previous) => ({ ...previous, mode })),
66
+ effectiveLabel: `Commission term: ${(props.effectiveCommissionTerm ?? "forever") === "forever" ? "Forever" : "One-time"}. Effective payout: ${props.effectiveFixedAmount != null ? formatter.format(props.effectiveFixedAmount) : `${props.effectiveBasisPoints / 100}%`}${props.source && props.source !== "none" ? ` from ${props.source === "plan" ? "store plan" : props.source}` : ""}.`,
67
+ save: () => action.run(false),
68
+ clear: () => action.run(true),
69
+ isPending: action.isPending,
70
+ error: action.error,
71
+ message: action.result,
72
+ };
73
+ if (props.children)
74
+ return _jsx(_Fragment, { children: props.children(state) });
75
+ return (_jsxs("form", { onSubmit: (event) => {
76
+ event.preventDefault();
77
+ void state.save();
78
+ }, children: [_jsx("label", { htmlFor: id, children: "Affiliate payout" }), _jsx("input", { id: id, inputMode: "decimal", value: state.value, disabled: state.isPending, onChange: (event) => state.setValue(event.target.value) }), _jsx("button", { type: "button", "aria-label": "Percentage", "aria-pressed": state.mode === "percentage", disabled: state.isPending, onClick: () => state.setMode("percentage"), children: "%" }), _jsx("button", { type: "button", "aria-label": `Fixed amount in ${currency}`, "aria-pressed": state.mode === "fixed", disabled: state.isPending, onClick: () => state.setMode("fixed"), children: currencySymbol }), _jsx("label", { htmlFor: `${id}-term`, children: "Commission term" }), _jsxs("select", { id: `${id}-term`, value: state.term, disabled: state.isPending, onChange: (event) => state.setTerm(event.target.value), children: [_jsx("option", { value: "inherit", children: "Inherited term" }), _jsx("option", { value: "forever", children: "Forever" }), _jsx("option", { value: "one_time", children: "One-time" })] }), _jsx("button", { type: "submit", disabled: state.isPending, children: "Save" }), _jsx("button", { type: "button", "aria-label": "Clear affiliate payout", disabled: state.isPending, onClick: () => void state.clear(), children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: _jsx("path", { d: "M18 6 6 18M6 6l12 12" }) }) }), _jsxs("p", { children: [state.effectiveLabel, " Blank inherits the default. Fixed payouts are capped at proceeds after fees."] }), state.error && _jsx("p", { role: "alert", children: state.error }), state.message && _jsx("p", { role: "status", children: state.message })] }));
79
+ }
80
+ //# sourceMappingURL=AffiliatePayoutEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AffiliatePayoutEditor.js","sourceRoot":"","sources":["../../../src/react/workflows/AffiliatePayoutEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from "react";
2
+ export type AffiliateRateUpdate = {
3
+ affiliateBasisPoints: number | null;
4
+ expectedVersion: number;
5
+ };
6
+ export type AffiliateRateEditorState = {
7
+ percentage: string;
8
+ setPercentage: (value: string) => void;
9
+ effectiveLabel: string;
10
+ isPending: boolean;
11
+ error: string | null;
12
+ message: string | undefined;
13
+ save: () => Promise<unknown>;
14
+ };
15
+ export type AffiliateRateEditorProps = {
16
+ scopeKey: string;
17
+ affiliateBasisPoints: number | null;
18
+ effectiveBasisPoints: number;
19
+ source: "plan" | "product" | "price" | "store" | "global" | "none";
20
+ version: number;
21
+ onSave: (update: AffiliateRateUpdate) => Promise<unknown>;
22
+ children?: (state: AffiliateRateEditorState) => ReactNode;
23
+ };
24
+ /** Unstyled nullable commission editor. Blank inherits the next applicable rate. */
25
+ export declare function AffiliateRateEditor(props: AffiliateRateEditorProps): import("react").JSX.Element;
26
+ //# sourceMappingURL=AffiliateRateEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AffiliateRateEditor.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/AffiliateRateEditor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,SAAS,CAAC;CAC3D,CAAC;AACF,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,+BAiElE"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId, useState } from "react";
4
+ import { useWorkflowAction } from "./useWorkflowAction.js";
5
+ /** Unstyled nullable commission editor. Blank inherits the next applicable rate. */
6
+ export function AffiliateRateEditor(props) {
7
+ const id = useId();
8
+ const scope = `${props.scopeKey}:${props.version}`;
9
+ const initial = {
10
+ scope,
11
+ percentage: props.affiliateBasisPoints === null
12
+ ? ""
13
+ : String(props.affiliateBasisPoints / 100),
14
+ };
15
+ const [fields, setFields] = useState(initial);
16
+ if (fields.scope !== scope)
17
+ setFields(initial);
18
+ const action = useWorkflowAction(async () => {
19
+ const value = fields.percentage.trim();
20
+ const rate = value === "" ? null : Math.round(Number(value) * 100);
21
+ if (rate !== null &&
22
+ (!/^\d+(\.\d{1,2})?$/.test(value) ||
23
+ !Number.isSafeInteger(rate) ||
24
+ rate < 0 ||
25
+ rate > 10000))
26
+ throw new Error("Enter a percentage from 0 to 100 with at most two decimal places, or leave it blank to inherit.");
27
+ await props.onSave({
28
+ affiliateBasisPoints: rate,
29
+ expectedVersion: props.version,
30
+ });
31
+ return "Affiliate payout saved.";
32
+ }, props.scopeKey);
33
+ const state = {
34
+ percentage: fields.percentage,
35
+ setPercentage: (percentage) => setFields((previous) => ({ ...previous, percentage })),
36
+ effectiveLabel: `Effective payout: ${props.effectiveBasisPoints / 100}% from ${props.source === "plan" ? "store plan" : props.source}.`,
37
+ isPending: action.isPending,
38
+ error: action.error,
39
+ message: action.result,
40
+ save: action.run,
41
+ };
42
+ if (props.children)
43
+ return _jsx(_Fragment, { children: props.children(state) });
44
+ return (_jsxs("form", { onSubmit: (event) => {
45
+ event.preventDefault();
46
+ void state.save();
47
+ }, children: [_jsx("label", { htmlFor: id, children: "Affiliate payout (%)" }), _jsx("input", { id: id, inputMode: "decimal", value: state.percentage, disabled: state.isPending, onChange: (event) => state.setPercentage(event.target.value) }), _jsxs("p", { children: [state.effectiveLabel, " Leave blank to inherit."] }), state.error && _jsx("p", { role: "alert", children: state.error }), state.message && _jsx("p", { role: "status", children: state.message }), _jsx("button", { type: "submit", disabled: state.isPending, children: state.isPending ? "Saving…" : "Save payout" })] }));
48
+ }
49
+ //# sourceMappingURL=AffiliateRateEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AffiliateRateEditor.js","sourceRoot":"","sources":["../../../src/react/workflows/AffiliateRateEditor.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  import { type CheckoutFormOptions } from "./CheckoutForms.js";
3
3
  export type CheckoutMode = "redirect" | "embedded" | "custom" | "form" | "payment-intent";
4
4
  export type CheckoutSessionResult = {
@@ -27,6 +27,8 @@ type Common = CheckoutFormOptions & {
27
27
  publishableKey: string;
28
28
  /** Changes when the price, signed-in customer, or referral attribution changes. */
29
29
  orderKey: string;
30
+ /** Optional durable logical-order identity, persisted by the host app. */
31
+ requestId?: string;
30
32
  returnUrl: string;
31
33
  onNavigate?: (url: string) => void;
32
34
  children?: (state: CheckoutRenderProps) => ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkout.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/Checkout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,MAAM,MAAM,YAAY,GACtB,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AACF,KAAK,MAAM,GAAG,mBAAmB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,GAChC,CACI;IACE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9C,aAAa,EAAE,CACb,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACrC,CACJ,CAAC;AACJ,6HAA6H;AAC7H,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAE5C"}
1
+ {"version":3,"file":"Checkout.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/Checkout.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,MAAM,MAAM,YAAY,GACtB,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AACF,KAAK,MAAM,GAAG,mBAAmB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,GAChC,CACI;IACE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9C,aAAa,EAAE,CACb,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACrC,CACJ,CAAC;AACJ,6HAA6H;AAC7H,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAO5C"}
@@ -1,15 +1,16 @@
1
1
  "use client";
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
3
4
  import { EmbeddedCheckout } from "../components/EmbeddedCheckout.js";
4
5
  import { useWorkflowResource } from "./useWorkflowResource.js";
5
6
  import { CheckoutElementsForm, PaymentIntentForm, CheckoutForm, } from "./CheckoutForms.js";
6
7
  /** All checkout integrations share one unstyled lifecycle. Callbacks must authenticate and validate prices on the server. */
7
8
  export function Checkout(props) {
8
- return _jsx(CheckoutBody, { ...props }, `${props.orderKey}:${props.mode}`);
9
+ return (_jsx(CheckoutBody, { ...props }, `${props.orderKey}:${props.mode}:${props.requestId ?? ""}`));
9
10
  }
10
11
  function CheckoutBody(props) {
12
+ const [requestId] = useState(() => props.requestId ?? crypto.randomUUID());
11
13
  const state = useWorkflowResource(async () => {
12
- const requestId = crypto.randomUUID();
13
14
  const result = props.mode === "payment-intent"
14
15
  ? await props.createPaymentIntent({ requestId })
15
16
  : await props.createSession({ mode: props.mode, requestId });
@@ -1 +1 @@
1
- {"version":3,"file":"Checkout.js","sourceRoot":"","sources":["../../../src/react/workflows/Checkout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Checkout.js","sourceRoot":"","sources":["../../../src/react/workflows/Checkout.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { type FormEvent, type ReactNode } from "react";
2
2
  import { type Appearance } from "@stripe/stripe-js";
3
3
  export type CheckoutFormState = {
4
4
  email: string;
5
+ /** Stripe supplied this email when the session loaded; do not edit it. */
6
+ emailReadOnly?: boolean;
5
7
  setEmail: (email: string) => void;
6
8
  emailInputId: string;
7
9
  isPending: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"CheckoutForms.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/CheckoutForms.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgBhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACrD,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAkCF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,+BAU5D;AAsCD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,+BAYzD;AAiDD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAkBpD"}
1
+ {"version":3,"file":"CheckoutForms.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/CheckoutForms.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgBhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACrD,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAoCF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,+BAU5D;AAuDD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,+BAYzD;AAiDD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAkBpD"}
@@ -7,33 +7,39 @@ import { PaymentElement, useCheckout, CheckoutFormProvider, CheckoutForm as Stri
7
7
  import { CheckoutSessionProvider } from "../components/CheckoutSessionProvider.js";
8
8
  import { StripeProvider } from "../components/StripeProvider.js";
9
9
  import { useWorkflowAction } from "./useWorkflowAction.js";
10
- function NativeForm({ email, setEmail, emailInputId, paymentElement, submit, isPending, error, }) {
11
- return (_jsxs("form", { onSubmit: submit, "data-better-stripe": "checkout-form", "aria-busy": isPending, children: [_jsx("label", { htmlFor: emailInputId, children: "Email for your receipt" }), _jsx("input", { id: emailInputId, type: "email", name: "email", required: true, autoComplete: "email", value: email, onChange: (event) => setEmail(event.target.value) }), paymentElement, error && _jsx("p", { role: "alert", children: error }), _jsx("button", { type: "submit", disabled: isPending, children: isPending ? "Processing…" : "Pay" })] }));
10
+ function NativeForm({ email, emailReadOnly, setEmail, emailInputId, paymentElement, submit, isPending, error, }) {
11
+ return (_jsxs("form", { onSubmit: submit, "data-better-stripe": "checkout-form", "aria-busy": isPending, children: [_jsx("label", { htmlFor: emailInputId, children: "Email for your receipt" }), _jsx("input", { id: emailInputId, type: "email", name: "email", required: true, autoComplete: "email", value: email, readOnly: emailReadOnly, onChange: (event) => setEmail(event.target.value) }), paymentElement, error && _jsx("p", { role: "alert", children: error }), _jsx("button", { type: "submit", disabled: isPending, children: isPending ? "Processing…" : "Pay" })] }));
12
12
  }
13
13
  export function CheckoutElementsForm(props) {
14
14
  return (_jsx(CheckoutSessionProvider, { publishableKey: props.publishableKey, clientSecret: props.clientSecret, appearance: props.appearance, children: _jsx(SessionForm, { ...props }) }));
15
15
  }
16
- function SessionForm({ email: initialEmail = "", returnUrl, onNavigate, renderForm, }) {
16
+ function SessionForm(props) {
17
17
  const checkout = useCheckout();
18
- const [email, setEmail] = useState(initialEmail);
18
+ if (checkout.type === "loading")
19
+ return _jsx("p", { role: "status", children: "Loading checkout\u2026" });
20
+ if (checkout.type === "error")
21
+ return _jsx("p", { role: "alert", children: checkout.error.message });
22
+ return (_jsx(ReadySessionForm, { ...props, checkout: checkout.checkout }, checkout.checkout.id));
23
+ }
24
+ function ReadySessionForm({ checkout, email: initialEmail = "", returnUrl, onNavigate, renderForm, }) {
25
+ // Snapshot once per session: a guest update must not lock their input on retry.
26
+ const [sessionEmail] = useState(() => checkout.email);
27
+ const [email, setEmail] = useState(sessionEmail ?? initialEmail);
19
28
  const emailInputId = useId();
20
29
  const action = useWorkflowAction(async () => {
21
- if (checkout.type !== "success")
22
- throw new Error("Checkout is not ready.");
23
- const updated = await checkout.checkout.updateEmail(email);
24
- if (updated.type === "error")
25
- throw new Error(updated.error.message);
26
- const confirmed = await checkout.checkout.confirm();
30
+ if (!sessionEmail) {
31
+ const updated = await checkout.updateEmail(email);
32
+ if (updated.type === "error")
33
+ throw new Error(updated.error.message);
34
+ }
35
+ const confirmed = await checkout.confirm();
27
36
  if (confirmed.type === "error")
28
37
  throw new Error(confirmed.error.message);
29
- onNavigate(returnUrl.replace("{CHECKOUT_SESSION_ID}", checkout.checkout.id));
38
+ onNavigate(returnUrl.replace("{CHECKOUT_SESSION_ID}", checkout.id));
30
39
  });
31
- if (checkout.type === "loading")
32
- return _jsx("p", { role: "status", children: "Loading checkout\u2026" });
33
- if (checkout.type === "error")
34
- return _jsx("p", { role: "alert", children: checkout.error.message });
35
40
  const state = {
36
- email,
41
+ email: sessionEmail ?? email,
42
+ emailReadOnly: !!sessionEmail,
37
43
  setEmail,
38
44
  emailInputId,
39
45
  paymentElement: _jsx(PaymentElement, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"CheckoutForms.js","sourceRoot":"","sources":["../../../src/react/workflows/CheckoutForms.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckoutForms.js","sourceRoot":"","sources":["../../../src/react/workflows/CheckoutForms.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  const labels = {
5
- headless: "Headless",
6
- components: "Components",
5
+ headless: "via API",
6
+ components: "BetterStripe components",
7
7
  embedded: "Stripe embedded",
8
8
  hosted: "Stripe hosted",
9
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationSwitch.js","sourceRoot":"","sources":["../../../src/react/workflows/IntegrationSwitch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,GAAoC;IAC9C,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,eAAe;CACxB,CAAC;AAcF,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EACL,YAAY,GAAG,UAAU,EACzB,aAAa,EACb,QAAQ,GACe;IACvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,OAAO,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAuB;SACvD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACnE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,MAAM,GAAG,CAAC,IAAqB,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;YAAE,OAAO;QAC7D,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7E,IAAI,QAAQ;QAAE,OAAO,4BAAG,QAAQ,CAAC,KAAK,CAAC,GAAI,CAAC;IAC5C,OAAO,CACL,qCAAwB,oBAAoB,aAC1C,cAAK,IAAI,EAAC,OAAO,gBAAY,sBAAsB,YAChD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,iBAEE,IAAI,EAAC,QAAQ,kBACC,QAAQ,KAAK,MAAM,CAAC,KAAK,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAElC,MAAM,CAAC,KAAK,IALR,MAAM,CAAC,KAAK,CAMV,CACV,CAAC,GACE,EACL,KAAK,CAAC,OAAO,IACV,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IntegrationSwitch.js","sourceRoot":"","sources":["../../../src/react/workflows/IntegrationSwitch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,GAAoC;IAC9C,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,yBAAyB;IACrC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,eAAe;CACxB,CAAC;AAcF,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EACL,YAAY,GAAG,UAAU,EACzB,aAAa,EACb,QAAQ,GACe;IACvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,OAAO,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAuB;SACvD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACnE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,MAAM,GAAG,CAAC,IAAqB,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;YAAE,OAAO;QAC7D,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7E,IAAI,QAAQ;QAAE,OAAO,4BAAG,QAAQ,CAAC,KAAK,CAAC,GAAI,CAAC;IAC5C,OAAO,CACL,qCAAwB,oBAAoB,aAC1C,cAAK,IAAI,EAAC,OAAO,gBAAY,sBAAsB,YAChD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,iBAEE,IAAI,EAAC,QAAQ,kBACC,QAAQ,KAAK,MAAM,CAAC,KAAK,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAElC,MAAM,CAAC,KAAK,IALR,MAAM,CAAC,KAAK,CAMV,CACV,CAAC,GACE,EACL,KAAK,CAAC,OAAO,IACV,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from "react";
2
+ /** Cursor history for bounded server pages. Changing scope resets navigation. */
3
+ export declare function useCursorPagination(scopeKey: string): {
4
+ cursor: string | null;
5
+ page: number;
6
+ canPrevious: boolean;
7
+ previous: () => void;
8
+ next: (cursor: string) => void;
9
+ };
10
+ export type PaginationProps = {
11
+ page: number;
12
+ canPrevious: boolean;
13
+ canNext: boolean;
14
+ isLoading?: boolean;
15
+ onPrevious: () => void;
16
+ onNext: () => void;
17
+ previousLabel?: string;
18
+ nextLabel?: string;
19
+ pageLabel?: string;
20
+ children?: (state: {
21
+ pageLabel: string;
22
+ previousLabel: string;
23
+ nextLabel: string;
24
+ previousDisabled: boolean;
25
+ nextDisabled: boolean;
26
+ previous: () => void;
27
+ next: () => void;
28
+ }) => ReactNode;
29
+ };
30
+ /** Unstyled navigation with render props for application design systems. */
31
+ export declare function Pagination({ page, canPrevious, canNext, isLoading, onPrevious, onNext, previousLabel, nextLabel, pageLabel, children, }: PaginationProps): import("react").JSX.Element;
32
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/Pagination.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM;IAMhD,MAAM;IACN,IAAI;IACJ,WAAW;IACX,QAAQ;IAKR,IAAI,WAAW,MAAM;EAOxB;AACD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,IAAI,EAAE,MAAM,IAAI,CAAC;KAClB,KAAK,SAAS,CAAC;CACjB,CAAC;AACF,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAiB,EACjB,UAAU,EACV,MAAM,EACN,aAA0B,EAC1B,SAAkB,EAClB,SAA0B,EAC1B,QAAQ,GACT,EAAE,eAAe,+BAkCjB"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ /** Cursor history for bounded server pages. Changing scope resets navigation. */
5
+ export function useCursorPagination(scopeKey) {
6
+ const initial = { scopeKey, cursors: [null], index: 0 };
7
+ const [state, setState] = useState(initial);
8
+ const current = state.scopeKey === scopeKey ? state : initial;
9
+ if (state.scopeKey !== scopeKey)
10
+ setState(initial);
11
+ return {
12
+ cursor: current.cursors[current.index],
13
+ page: current.index + 1,
14
+ canPrevious: current.index > 0,
15
+ previous: () => setState((previous) => ({
16
+ ...previous,
17
+ index: Math.max(0, previous.index - 1),
18
+ })),
19
+ next: (cursor) => setState((previous) => ({
20
+ ...previous,
21
+ cursors: [...previous.cursors.slice(0, previous.index + 1), cursor],
22
+ index: previous.index + 1,
23
+ })),
24
+ };
25
+ }
26
+ /** Unstyled navigation with render props for application design systems. */
27
+ export function Pagination({ page, canPrevious, canNext, isLoading = false, onPrevious, onNext, previousLabel = "Previous", nextLabel = "Next", pageLabel = `Page ${page}`, children, }) {
28
+ const previousDisabled = isLoading || !canPrevious;
29
+ const nextDisabled = isLoading || !canNext;
30
+ const state = {
31
+ pageLabel,
32
+ previousLabel,
33
+ nextLabel,
34
+ previousDisabled,
35
+ nextDisabled,
36
+ previous: () => {
37
+ if (!previousDisabled)
38
+ onPrevious();
39
+ },
40
+ next: () => {
41
+ if (!nextDisabled)
42
+ onNext();
43
+ },
44
+ };
45
+ if (children)
46
+ return _jsx(_Fragment, { children: children(state) });
47
+ return (_jsxs("nav", { "aria-label": "Pagination", children: [_jsx("button", { type: "button", disabled: previousDisabled, onClick: state.previous, children: previousLabel }), _jsx("span", { role: "status", "aria-live": "polite", children: pageLabel }), _jsx("button", { type: "button", disabled: nextDisabled, onClick: state.next, children: nextLabel })] }));
48
+ }
49
+ //# sourceMappingURL=Pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/react/workflows/Pagination.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,CAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,IAAI,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;QAC9B,QAAQ,EAAE,GAAG,EAAE,CACb,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtB,GAAG,QAAQ;YACX,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;SACvC,CAAC,CAAC;QACL,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CACvB,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtB,GAAG,QAAQ;YACX,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YACnE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC;SAC1B,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AAqBD,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,UAAU,EACV,MAAM,EACN,aAAa,GAAG,UAAU,EAC1B,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,QAAQ,IAAI,EAAE,EAC1B,QAAQ,GACQ;IAChB,MAAM,gBAAgB,GAAG,SAAS,IAAI,CAAC,WAAW,CAAC;IACnD,MAAM,YAAY,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC;IAC3C,MAAM,KAAK,GAAG;QACZ,SAAS;QACT,aAAa;QACb,SAAS;QACT,gBAAgB;QAChB,YAAY;QACZ,QAAQ,EAAE,GAAG,EAAE;YACb,IAAI,CAAC,gBAAgB;gBAAE,UAAU,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,CAAC,YAAY;gBAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC;IACF,IAAI,QAAQ;QAAE,OAAO,4BAAG,QAAQ,CAAC,KAAK,CAAC,GAAI,CAAC;IAC5C,OAAO,CACL,6BAAgB,YAAY,aAC1B,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,KAAK,CAAC,QAAQ,YAEtB,aAAa,GACP,EACT,eAAM,IAAI,EAAC,QAAQ,eAAW,QAAQ,YACnC,SAAS,GACL,EACP,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,YAC9D,SAAS,GACH,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -1,24 +1,9 @@
1
+ import type { RecipientPayoutSnapshot, RecipientPayoutRow } from "../../client/connect/payoutSnapshot.js";
1
2
  import { type ReactNode } from "react";
2
3
  import { type ConnectProps } from "./Connect.js";
3
4
  import { type CollectionProps, type WorkflowColumn } from "./Collection.js";
4
- export type PayoutRow = {
5
- id: string;
6
- amount: number;
7
- currency: string;
8
- status: string;
9
- /** Unix milliseconds. */ arrivalDate: number | null;
10
- created: number;
11
- };
12
- export type PayoutSnapshot = {
13
- balances: {
14
- currency: string;
15
- available: number;
16
- pending: number;
17
- }[];
18
- payouts: PayoutRow[];
19
- upcoming: PayoutRow[];
20
- nextCursor: string | null;
21
- };
5
+ export type PayoutRow = RecipientPayoutRow;
6
+ export type PayoutSnapshot = Pick<RecipientPayoutSnapshot, "balances" | "payouts" | "upcoming" | "nextCursor"> & Partial<Pick<RecipientPayoutSnapshot, "status" | "reason" | "upcomingComplete">>;
22
7
  export type PayoutsRenderProps = {
23
8
  data: PayoutSnapshot | undefined;
24
9
  error: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"Payouts.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/Payouts.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrE,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;CACrD,CAAC;AACF,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;IAAE,YAAY,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAGrE,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAM1C;AA+DD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,SAAS,EACT,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CACxD,CAAC;AACF,MAAM,MAAM,kBAAkB,CAC5B,GAAG,SAAS,gBAAgB,GAAG,gBAAgB,IAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG;IACrD,OAAO,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;CACjC,CAAC;AACF,wBAAgB,aAAa,CAAC,GAAG,SAAS,gBAAgB,EACxD,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,+BAyB/B"}
1
+ {"version":3,"file":"Payouts.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/Payouts.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,uBAAuB,EACvB,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CACnD,GACC,OAAO,CACL,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,QAAQ,GAAG,kBAAkB,CAAC,CACxE,CAAC;AACJ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;CACrD,CAAC;AACF,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;IAAE,YAAY,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAGrE,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAM1C;AA+DD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,SAAS,EACT,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CACxD,CAAC;AACF,MAAM,MAAM,kBAAkB,CAC5B,GAAG,SAAS,gBAAgB,GAAG,gBAAgB,IAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG;IACrD,OAAO,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;CACjC,CAAC;AACF,wBAAgB,aAAa,CAAC,GAAG,SAAS,gBAAgB,EACxD,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,+BAyB/B"}
@@ -79,9 +79,9 @@ export function PayoutHistory(props) {
79
79
  return (_jsx(Collection, { emptyLabel: "No payouts yet.", ...props, getKey: (row) => row.id, columns: props.columns ?? columns }));
80
80
  }
81
81
  function NativePayouts({ data, isLoading, isPending, error, nextPayout, previousPayouts, upcomingPayouts, refresh, loadMore, }) {
82
- return (_jsxs("section", { "data-better-stripe": "payouts", "aria-busy": isPending, children: [_jsx("h2", { children: "Payouts" }), _jsx("button", { type: "button", disabled: isPending, onClick: refresh, children: isPending ? "Refreshing…" : "Refresh" }), error && _jsx("p", { role: "alert", children: error }), isLoading && !data && _jsx("p", { role: "status", children: "Loading payouts\u2026" }), data && (_jsxs(_Fragment, { children: [_jsxs("dl", { children: [data.balances.map((balance) => (_jsxs("div", { children: [_jsx("dt", { children: "Available" }), _jsx("dd", { children: formatPrice(balance.available, balance.currency) }), _jsx("dt", { children: "Pending" }), _jsx("dd", { children: formatPrice(balance.pending, balance.currency) })] }, balance.currency))), _jsx("dt", { children: "Next payout" }), _jsx("dd", { children: nextPayout
82
+ return (_jsxs("section", { "data-better-stripe": "payouts", "aria-busy": isPending, children: [_jsx("h2", { children: "Payouts" }), _jsx("button", { type: "button", disabled: isPending, onClick: refresh, children: isPending ? "Refreshing…" : "Refresh" }), error && _jsx("p", { role: "alert", children: error }), isLoading && !data && _jsx("p", { role: "status", children: "Loading payouts\u2026" }), data?.status === "not_ready" && (_jsx("p", { role: "alert", children: "Stripe account data is not available yet." })), data && data.status !== "not_ready" && (_jsxs(_Fragment, { children: [_jsxs("dl", { children: [data.balances.map((balance) => (_jsxs("div", { children: [_jsx("dt", { children: "Available" }), _jsx("dd", { children: formatPrice(balance.available, balance.currency) }), _jsx("dt", { children: "Pending" }), _jsx("dd", { children: formatPrice(balance.pending, balance.currency) })] }, balance.currency))), _jsx("dt", { children: "Next payout" }), _jsx("dd", { children: nextPayout
83
83
  ? `${formatPrice(nextPayout.amount, nextPayout.currency)} · ${date(nextPayout.arrivalDate)}`
84
- : "Not scheduled" })] }), _jsx("h3", { children: "Upcoming payouts" }), _jsx(PayoutHistory, { rows: upcomingPayouts, emptyLabel: "No upcoming payouts scheduled." }), _jsx("h3", { children: "Previous payouts" }), _jsx(PayoutHistory, { rows: previousPayouts, emptyLabel: "No previous payouts yet." }), data.nextCursor && (_jsx("button", { type: "button", disabled: isPending, onClick: () => {
84
+ : "Not scheduled" })] }), _jsx("h3", { children: "Upcoming payouts" }), data.upcomingComplete === false && (_jsx("p", { children: "Upcoming payouts are a bounded preview. More may be scheduled." })), _jsx(PayoutHistory, { rows: upcomingPayouts, emptyLabel: "No upcoming payouts scheduled." }), _jsx("h3", { children: "Previous payouts" }), _jsx(PayoutHistory, { rows: previousPayouts, emptyLabel: "No previous payouts yet." }), data.nextCursor && (_jsx("button", { type: "button", disabled: isPending, onClick: () => {
85
85
  void loadMore();
86
86
  }, children: isPending ? "Loading…" : "Load more payouts" }))] }))] }));
87
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Payouts.js","sourceRoot":"","sources":["../../../src/react/workflows/Payouts.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Payouts.js","sourceRoot":"","sources":["../../../src/react/workflows/Payouts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type ReactNode } from "react";
2
+ export type PlanPricing = {
3
+ id: string;
4
+ name: string;
5
+ monthlyAmount: number;
6
+ feeBasisPoints: number | null;
7
+ affiliateBasisPoints?: number | null;
8
+ version: number;
9
+ };
10
+ export type PlanPricingUpdate = {
11
+ monthlyAmount: number;
12
+ feeBasisPoints: number | null;
13
+ affiliateBasisPoints?: number | null;
14
+ expectedVersion: number;
15
+ };
16
+ export type PlanPricingEditorState = {
17
+ monthlyPrice: string;
18
+ saleFee: string;
19
+ affiliateShare: string;
20
+ setMonthlyPrice: (value: string) => void;
21
+ setSaleFee: (value: string) => void;
22
+ setAffiliateShare: (value: string) => void;
23
+ save: () => Promise<unknown>;
24
+ isPending: boolean;
25
+ error: string | null;
26
+ message: string | undefined;
27
+ };
28
+ export type PlanPricingEditorProps = {
29
+ plan: PlanPricing;
30
+ onSave: (update: PlanPricingUpdate) => Promise<unknown>;
31
+ children?: (state: PlanPricingEditorState) => ReactNode;
32
+ };
33
+ /** Unstyled store-plan pricing editor. Authorization and Stripe price creation belong on the server. */
34
+ export declare function PlanPricingEditor({ plan, onSave, children, }: PlanPricingEditorProps): import("react").JSX.Element;
35
+ //# sourceMappingURL=PlanPricingEditor.d.ts.map