@fantastic.dev/better-stripe 0.8.0 → 0.9.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 (87) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +19 -3
  3. package/dist/client/connect/disputes.d.ts +1 -1
  4. package/dist/client/connect/disputes.d.ts.map +1 -1
  5. package/dist/client/connect/disputes.js +12 -6
  6. package/dist/client/connect/disputes.js.map +1 -1
  7. package/dist/component/_generated/component.d.ts +35 -0
  8. package/dist/component/_generated/component.d.ts.map +1 -1
  9. package/dist/component/connect/queries.d.ts +30 -1
  10. package/dist/component/connect/queries.d.ts.map +1 -1
  11. package/dist/component/connect/queries.js +19 -2
  12. package/dist/component/connect/queries.js.map +1 -1
  13. package/dist/react/components/DisputeDetail.d.ts +4 -1
  14. package/dist/react/components/DisputeDetail.d.ts.map +1 -1
  15. package/dist/react/components/DisputeDetail.js +12 -6
  16. package/dist/react/components/DisputeDetail.js.map +1 -1
  17. package/dist/react/components/DisputesList.d.ts.map +1 -1
  18. package/dist/react/components/DisputesList.js +2 -1
  19. package/dist/react/components/DisputesList.js.map +1 -1
  20. package/dist/react/index.d.ts +1 -1
  21. package/dist/react/index.d.ts.map +1 -1
  22. package/dist/react/index.js +1 -1
  23. package/dist/react/index.js.map +1 -1
  24. package/dist/react/workflows/AffiliatePayoutEditor.d.ts +41 -0
  25. package/dist/react/workflows/AffiliatePayoutEditor.d.ts.map +1 -0
  26. package/dist/react/workflows/AffiliatePayoutEditor.js +80 -0
  27. package/dist/react/workflows/AffiliatePayoutEditor.js.map +1 -0
  28. package/dist/react/workflows/AffiliateRateEditor.d.ts +26 -0
  29. package/dist/react/workflows/AffiliateRateEditor.d.ts.map +1 -0
  30. package/dist/react/workflows/AffiliateRateEditor.js +49 -0
  31. package/dist/react/workflows/AffiliateRateEditor.js.map +1 -0
  32. package/dist/react/workflows/CheckoutForms.d.ts +2 -0
  33. package/dist/react/workflows/CheckoutForms.d.ts.map +1 -1
  34. package/dist/react/workflows/CheckoutForms.js +22 -16
  35. package/dist/react/workflows/CheckoutForms.js.map +1 -1
  36. package/dist/react/workflows/Disputes.d.ts.map +1 -1
  37. package/dist/react/workflows/Disputes.js +9 -9
  38. package/dist/react/workflows/Disputes.js.map +1 -1
  39. package/dist/react/workflows/IntegrationSwitch.js +2 -2
  40. package/dist/react/workflows/IntegrationSwitch.js.map +1 -1
  41. package/dist/react/workflows/Pagination.d.ts +32 -0
  42. package/dist/react/workflows/Pagination.d.ts.map +1 -0
  43. package/dist/react/workflows/Pagination.js +49 -0
  44. package/dist/react/workflows/Pagination.js.map +1 -0
  45. package/dist/react/workflows/Payouts.d.ts +1 -0
  46. package/dist/react/workflows/Payouts.d.ts.map +1 -1
  47. package/dist/react/workflows/Payouts.js +3 -2
  48. package/dist/react/workflows/Payouts.js.map +1 -1
  49. package/dist/react/workflows/PlanPricingEditor.d.ts +35 -0
  50. package/dist/react/workflows/PlanPricingEditor.d.ts.map +1 -0
  51. package/dist/react/workflows/PlanPricingEditor.js +64 -0
  52. package/dist/react/workflows/PlanPricingEditor.js.map +1 -0
  53. package/dist/react/workflows/index.d.ts +8 -0
  54. package/dist/react/workflows/index.d.ts.map +1 -1
  55. package/dist/react/workflows/index.js +4 -0
  56. package/dist/react/workflows/index.js.map +1 -1
  57. package/docs/react-workflows-audit.md +41 -0
  58. package/docs/react-workflows.md +92 -1
  59. package/package.json +5 -4
  60. package/src/client/connect/disputes.test.ts +15 -0
  61. package/src/client/connect/disputes.ts +13 -7
  62. package/src/component/_generated/component.ts +41 -0
  63. package/src/component/connect/queries.ts +26 -2
  64. package/src/component/earnings-totals.test.ts +13 -0
  65. package/src/component/transfers.test.ts +48 -0
  66. package/src/react/components/DisputeDetail.tsx +14 -5
  67. package/src/react/components/DisputesList.render.test.tsx +21 -0
  68. package/src/react/components/DisputesList.tsx +2 -1
  69. package/src/react/components/EvidenceForm.render.test.tsx +1 -2
  70. package/src/react/index.ts +4 -1
  71. package/src/react/workflows/AffiliatePayoutEditor.test.tsx +90 -0
  72. package/src/react/workflows/AffiliatePayoutEditor.tsx +201 -0
  73. package/src/react/workflows/AffiliateRateEditor.test.tsx +36 -0
  74. package/src/react/workflows/AffiliateRateEditor.tsx +92 -0
  75. package/src/react/workflows/CheckoutForms.test.tsx +40 -0
  76. package/src/react/workflows/CheckoutForms.tsx +37 -16
  77. package/src/react/workflows/Disputes.test.tsx +41 -2
  78. package/src/react/workflows/Disputes.tsx +49 -40
  79. package/src/react/workflows/IntegrationSwitch.test.tsx +25 -0
  80. package/src/react/workflows/IntegrationSwitch.tsx +2 -2
  81. package/src/react/workflows/Pagination.test.tsx +53 -0
  82. package/src/react/workflows/Pagination.tsx +93 -0
  83. package/src/react/workflows/Payouts.test.tsx +30 -0
  84. package/src/react/workflows/Payouts.tsx +4 -1
  85. package/src/react/workflows/PlanPricingEditor.test.tsx +79 -0
  86. package/src/react/workflows/PlanPricingEditor.tsx +156 -0
  87. package/src/react/workflows/index.ts +22 -0
@@ -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"}
@@ -26,6 +26,7 @@ export type PayoutsRenderProps = {
26
26
  isPending: boolean;
27
27
  nextPayout: PayoutRow | undefined;
28
28
  previousPayouts: PayoutRow[];
29
+ upcomingPayouts: PayoutRow[];
29
30
  refresh: () => void;
30
31
  loadMore: () => Promise<void>;
31
32
  };
@@ -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,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;AA8DD,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,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"}
@@ -48,6 +48,7 @@ function PayoutsBody({ load, scopeKey, children }) {
48
48
  isPending: resource.isLoading || more.isPending,
49
49
  error: resource.error ?? more.error,
50
50
  nextPayout: sortedUpcoming[0],
51
+ upcomingPayouts: sortedUpcoming,
51
52
  previousPayouts: data?.payouts.filter((row) => !upcoming(row)) ?? [],
52
53
  refresh: resource.refresh,
53
54
  loadMore,
@@ -77,10 +78,10 @@ export function PayoutHistory(props) {
77
78
  ];
78
79
  return (_jsx(Collection, { emptyLabel: "No payouts yet.", ...props, getKey: (row) => row.id, columns: props.columns ?? columns }));
79
80
  }
80
- function NativePayouts({ data, isLoading, isPending, error, nextPayout, previousPayouts, refresh, loadMore, }) {
81
+ function NativePayouts({ data, isLoading, isPending, error, nextPayout, previousPayouts, upcomingPayouts, refresh, loadMore, }) {
81
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
83
  ? `${formatPrice(nextPayout.amount, nextPayout.currency)} · ${date(nextPayout.arrivalDate)}`
83
- : "Not scheduled" })] }), _jsx("h3", { children: "Upcoming payouts" }), _jsx(PayoutHistory, { rows: data.upcoming, 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" }), _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
85
  void loadMore();
85
86
  }, children: isPending ? "Loading…" : "Load more payouts" }))] }))] }));
86
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanPricingEditor.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/PlanPricingEditor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,SAAS,CAAC;CACzD,CAAC;AACF,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,QAAQ,GACT,EAAE,sBAAsB,+BAoHxB"}
@@ -0,0 +1,64 @@
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 store-plan pricing editor. Authorization and Stripe price creation belong on the server. */
6
+ export function PlanPricingEditor({ plan, onSave, children, }) {
7
+ const id = useId();
8
+ const scope = `${plan.id}:${plan.version}`;
9
+ const initial = {
10
+ scope,
11
+ affiliateShare: String((plan.affiliateBasisPoints ?? 0) / 100),
12
+ monthlyPrice: (plan.monthlyAmount / 100).toFixed(2),
13
+ saleFee: plan.feeBasisPoints === null ? "" : String(plan.feeBasisPoints / 100),
14
+ };
15
+ const [fields, setFields] = useState(initial);
16
+ if (fields.scope !== scope)
17
+ setFields(initial);
18
+ const action = useWorkflowAction(async () => {
19
+ if (!/^\d+(\.\d{1,2})?$/.test(fields.monthlyPrice.trim()))
20
+ throw new Error("Enter a positive monthly price with at most two decimal places.");
21
+ const monthlyAmount = Math.round(Number(fields.monthlyPrice) * 100);
22
+ if (!Number.isSafeInteger(monthlyAmount) || monthlyAmount <= 0)
23
+ throw new Error("Enter a positive monthly price.");
24
+ const feeBasisPoints = fields.saleFee.trim() === ""
25
+ ? null
26
+ : Math.round(Number(fields.saleFee) * 100);
27
+ if (feeBasisPoints !== null &&
28
+ (!/^\d+(\.\d{1,2})?$/.test(fields.saleFee.trim()) ||
29
+ !Number.isSafeInteger(feeBasisPoints) ||
30
+ feeBasisPoints < 0 ||
31
+ feeBasisPoints > 10000))
32
+ throw new Error("Enter a sale fee from 0 to 100%, with at most two decimal places, or leave it blank for Stripe processing only.");
33
+ const affiliateBasisPoints = Math.round(Number(fields.affiliateShare) * 100);
34
+ if (!/^\d+(\.\d{1,2})?$/.test(fields.affiliateShare.trim()) ||
35
+ !Number.isSafeInteger(affiliateBasisPoints) ||
36
+ affiliateBasisPoints < 0 ||
37
+ affiliateBasisPoints > 10000)
38
+ throw new Error("Enter an affiliate payout from 0 to 100%, with at most two decimal places.");
39
+ await onSave({
40
+ monthlyAmount,
41
+ feeBasisPoints,
42
+ affiliateBasisPoints,
43
+ expectedVersion: plan.version,
44
+ });
45
+ return "Pricing saved. Existing subscriptions keep their monthly price.";
46
+ }, plan.id);
47
+ const state = {
48
+ ...fields,
49
+ setMonthlyPrice: (monthlyPrice) => setFields((previous) => ({ ...previous, monthlyPrice })),
50
+ setSaleFee: (saleFee) => setFields((previous) => ({ ...previous, saleFee })),
51
+ setAffiliateShare: (affiliateShare) => setFields((previous) => ({ ...previous, affiliateShare })),
52
+ save: action.run,
53
+ isPending: action.isPending,
54
+ error: action.error,
55
+ message: action.result,
56
+ };
57
+ if (children)
58
+ return _jsx(_Fragment, { children: children(state) });
59
+ return (_jsxs("form", { onSubmit: (event) => {
60
+ event.preventDefault();
61
+ void state.save();
62
+ }, "aria-label": `${plan.name} pricing`, children: [_jsx("h3", { children: plan.name }), _jsx("label", { htmlFor: `${id}-monthly`, children: "Monthly price (USD)" }), _jsx("input", { id: `${id}-monthly`, inputMode: "decimal", value: state.monthlyPrice, disabled: state.isPending, onChange: (event) => state.setMonthlyPrice(event.target.value) }), _jsx("label", { htmlFor: `${id}-fee`, children: "Sale fee (%)" }), _jsx("input", { id: `${id}-fee`, inputMode: "decimal", value: state.saleFee, disabled: state.isPending, onChange: (event) => state.setSaleFee(event.target.value) }), _jsx("p", { children: "Leave the sale fee blank for Stripe processing only. The seller always covers actual Stripe processing costs." }), _jsx("label", { htmlFor: `${id}-affiliate`, children: "Affiliate payout (%)" }), _jsx("input", { id: `${id}-affiliate`, inputMode: "decimal", value: state.affiliateShare, disabled: state.isPending, onChange: (event) => state.setAffiliateShare(event.target.value) }), _jsx("p", { children: "Percentage of a referred sale after the sale fee. The seller receives the remainder." }), 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 pricing" })] }));
63
+ }
64
+ //# sourceMappingURL=PlanPricingEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanPricingEditor.js","sourceRoot":"","sources":["../../../src/react/workflows/PlanPricingEditor.tsx"],"names":[],"mappings":"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"}
@@ -67,4 +67,12 @@ export { PayoutOverview } from "./Overview.js";
67
67
  export type { PayoutOverviewProps, PayoutOverviewRow } from "./Overview.js";
68
68
  export { ChargeSummary, PaymentDetails } from "./Financials.js";
69
69
  export type { ChargeSummaryProps, PaymentDetailsProps, PaymentDetailsPayment, PaymentDetailsState, } from "./Financials.js";
70
+ export { Pagination, useCursorPagination } from "./Pagination.js";
71
+ export type { PaginationProps } from "./Pagination.js";
72
+ export { PlanPricingEditor } from "./PlanPricingEditor.js";
73
+ export type { PlanPricing, PlanPricingUpdate, PlanPricingEditorState, PlanPricingEditorProps, } from "./PlanPricingEditor.js";
74
+ export { AffiliateRateEditor } from "./AffiliateRateEditor.js";
75
+ export type { AffiliateRateUpdate, AffiliateRateEditorProps, AffiliateRateEditorState, } from "./AffiliateRateEditor.js";
76
+ export { AffiliatePayoutEditor } from "./AffiliatePayoutEditor.js";
77
+ export type { AffiliateCommissionTerm, AffiliatePayoutEditorProps, AffiliatePayoutEditorState, AffiliatePayoutUpdate, } from "./AffiliatePayoutEditor.js";
70
78
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC9D,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
@@ -35,4 +35,8 @@ export { DEFAULT_CONNECT_COUNTRIES } from "./Onboarding.js";
35
35
  export { PayoutHistory } from "./Payouts.js";
36
36
  export { PayoutOverview } from "./Overview.js";
37
37
  export { ChargeSummary, PaymentDetails } from "./Financials.js";
38
+ export { Pagination, useCursorPagination } from "./Pagination.js";
39
+ export { PlanPricingEditor } from "./PlanPricingEditor.js";
40
+ export { AffiliateRateEditor } from "./AffiliateRateEditor.js";
41
+ export { AffiliatePayoutEditor } from "./AffiliatePayoutEditor.js";
38
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,EACL,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAU5D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAO5D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAO7D,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AAQtB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQ1D,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AAOpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMjE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAS9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/workflows/index.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,9 @@ uses render props or companion hooks to apply shadcn styling.
30
30
  | Affiliate earnings | `Earnings`, `EarningsSummary` |
31
31
  | Affiliate referred sales | `ReferredSales`, store attribution and commission |
32
32
  | Affiliate links | `useReferralLinks`, `ReferralLinks`, `ClipboardButton` |
33
+ | Seller affiliate payout rules | `AffiliatePayoutEditor` with amount, percentage/currency mode, inherited term, Save/Clear, and async feedback |
34
+ | Admin store plans | `PlanPricingEditor` and `AffiliatePayoutEditor`; the app binds Stripe pricing and inherited commission policy |
35
+ | Affiliate sales pagination | `Pagination` and `useCursorPagination`; the backend supplies indexed cursors |
33
36
  | Admin overview | `Overview` |
34
37
  | Admin subscriptions | `Subscriptions`, `useSubscriptionFilter` |
35
38
  | Admin webhooks | `WebhookEvents`, `useWebhookFilters` |
@@ -64,3 +67,41 @@ Connect and hosted Stripe UI remain available only where Stripe supports them.
64
67
  - Checkout tests complete referred guest purchases through all five integrations
65
68
  in a Stripe sandbox and verify webhook receipts and settlement.
66
69
  - `pnpm run check:all` enforces all repository gates, including Shadscan at 100.
70
+
71
+ ## Follow-up audit
72
+
73
+ The final sandbox QA and follow-up audit checked every example route and its
74
+ adapters against the public React exports. Checkout delegates through the
75
+ session and PaymentIntent adapters. The remaining local state controls the
76
+ app's command menu, mobile sidebar, URL parameters, or selected demo price.
77
+ Financial actions use package workflow controllers or components.
78
+
79
+ The follow-up removed payout-status filtering from the example. Both native
80
+ `Payouts` and its render-prop example now consume the package's
81
+ `upcomingPayouts`, `previousPayouts`, and `nextPayout`. Regression tests cover
82
+ mixed payout statuses and arrival ordering. Dispute lists and detail views hide
83
+ stale evidence deadlines after a dispute leaves a response-required status.
84
+
85
+ Live browser checks cover reset/reseed, all persona routes, integration tabs,
86
+ five checkout integrations, saved-card add/remove and persistence, product
87
+ editing, subscription pause/resume, invoice estimates, balance-payment consent,
88
+ affiliate link copying, dispute evidence, and partial/remaining-balance refunds.
89
+ The tests use Stripe sandbox objects and await action results or webhook state.
90
+ Native public-entry tests also render the workflows without example providers,
91
+ CSS classes, inline styles, or example URLs.
92
+
93
+ ## Pricing and affiliate updates
94
+
95
+ Seller product/price rows, store-wide defaults, admin plan rows, and platform-wide
96
+ defaults all use the public `AffiliatePayoutEditor`. It owns percentage/fixed
97
+ amount validation, commission-term selection, clear/inherit behavior, edit
98
+ versions, pending state, and errors. `PlanPricingEditor` owns the monthly-price
99
+ and sale-fee form. The example binds both to Convex functions and supplies shadcn
100
+ markup. Rule resolution, Stripe metadata, first-invoice claims, fee accounting,
101
+ and transfer execution remain backend application policy.
102
+
103
+ Browser regression checks cover equal cards/layouts in API and package views,
104
+ referral-sales pagination, inline payout controls, and plan pricing. Sandbox QA
105
+ covers all five checkout integrations, declined-card retries, inherited and fixed
106
+ commissions, and Forever/One-time subscription renewals using Stripe test clocks.
107
+ Existing subscriptions keep their monthly price and saved commission term.
@@ -72,6 +72,10 @@ Use `renderForm` on the custom and PaymentIntent modes to render your own email
72
72
  input, `paymentElement`, error, and submit button. The preview `form` mode renders
73
73
  Stripe's form and does not use that renderer. `children` replaces the outer
74
74
  checkout frame and receives `content`, `isLoading`, `error`, and `retry`.
75
+ Respect `state.emailReadOnly` on your email input. Custom Checkout uses the
76
+ email Stripe supplied when the session loaded and skips `updateEmail` for that
77
+ session. Guest sessions without an email collect it before confirmation and
78
+ keep it editable if a payment attempt fails.
75
79
  The lower-level `CheckoutElementsForm`, `PaymentIntentForm`, and `CheckoutForm`
76
80
  are also exported for an existing client secret.
77
81
 
@@ -79,7 +83,14 @@ Only a server-confirmed payment or checkout session should grant access to the
79
83
  product. Use `PaymentReceipt` or `CheckoutStatus` with webhook-backed query data;
80
84
  a browser return URL alone does not prove payment.
81
85
 
82
- ## Headless or Stripe embedded
86
+ ## Via API, BetterStripe components, or Stripe embedded
87
+
88
+ The switch labels are **via API**, **BetterStripe components**, **Stripe embedded**,
89
+ and **Stripe hosted**. BetterStripe components are the unstyled exports from this
90
+ package; Stripe embedded views mount Stripe's Connect UI. The internal mode keys
91
+ remain `headless`, `components`, `embedded`, and `hosted` for compatibility, including
92
+ existing `?example=headless` links. The package's native components accept render
93
+ props so the example can match the API view's cards and layout.
83
94
 
84
95
  `Account`, `Onboarding`, `Disputes`, `Refunds`, `Earnings`, and `Payouts` accept
85
96
  `presentation="embedded"` with Connect session props. Their default headless
@@ -167,6 +178,9 @@ mounts. Setup/testing tasks call the operations you explicitly bind.
167
178
  `pending`. Payout rows include `id`, `amount`, `currency`, `status`, `arrivalDate`,
168
179
  and `created`. The component shows available and pending balances, the next
169
180
  known payout and arrival date, upcoming payouts, and paginated previous payouts.
181
+ Render props expose `upcomingPayouts` sorted by arrival date,
182
+ `previousPayouts`, and `nextPayout`. Use these package-owned classifications
183
+ in custom UI; completed or failed payouts are excluded from upcoming payouts.
170
184
  If Stripe has not provided an upcoming payout, the UI says so rather than
171
185
  inventing a date.
172
186
 
@@ -229,3 +243,80 @@ available and pending Stripe balances shown by `Payouts`.
229
243
  shared by its account pages and native `Onboarding`. Supply `countries` to limit
230
244
  or expand the UI for your platform. This default is not a complete list of
231
245
  Stripe-supported countries; your server must validate account eligibility.
246
+
247
+ ## Cursor pagination
248
+
249
+ Use `useCursorPagination(accountId)` to keep a page number, current cursor, and
250
+ Previous/Next history. Pass `cursor` to your backend's paginated query and call
251
+ `next(result.continueCursor)` only when `result.isDone` is false. Changing the
252
+ scope key resets the history to page 1.
253
+
254
+ `Pagination` renders unstyled Previous/Next buttons and an announced page number,
255
+ or accepts a render function for your design system. Supply `canPrevious`,
256
+ `canNext`, `isLoading`, `onPrevious`, and `onNext`. Navigation is disabled while
257
+ loading. The example's affiliate sales page uses this with the component query
258
+ `connect.queries.paginateTransfersByAccount`, which returns newest-first cursor
259
+ pages scoped to the recipient account. Earnings totals still use aggregate
260
+ queries independently of pagination.
261
+
262
+ ## Store-plan pricing editor
263
+
264
+ `PlanPricingEditor` accepts a `plan` with `id`, `name`, `monthlyAmount` in minor
265
+ units, nullable `feeBasisPoints`, and `version`, plus `onSave(update)`. The update
266
+ contains `monthlyAmount`, `feeBasisPoints`, and `expectedVersion`. Blank fees
267
+ mean processing-only. Native fields are unstyled; use the render prop to supply
268
+ your design system. Server-side authorization, fee floors, Stripe Price creation,
269
+ and conflict checks belong in your backend. Existing subscription migration is
270
+ an application policy, not an automatic side effect of this editor.
271
+
272
+ `PlanPricingEditor` also supports optional `affiliateBasisPoints` on the plan and
273
+ save update, defaulting to 0. Its render state exposes `affiliateShare` and
274
+ `setAffiliateShare`. The native field is labeled Affiliate payout (%), accepts
275
+ 0 through 100 with at most two decimal places, and saves integer basis points.
276
+ Omitting the field in an older backend request preserves an existing configured
277
+ rate. The example applies this rate after sale fees and records it with each
278
+ settled sale.
279
+
280
+ ## Product and subscription affiliate-rate editor
281
+
282
+ `AffiliateRateEditor` accepts `scopeKey`, nullable `affiliateBasisPoints`,
283
+ `effectiveBasisPoints`, `source` of global/store/plan/product/price/none, `version`, and `onSave`.
284
+ Its save update contains nullable `affiliateBasisPoints` and `expectedVersion`.
285
+ Blank input means inherit, zero disables commission, and percentages support
286
+ 0 to 100 with two decimal places. Use its native unstyled form or render state
287
+ `percentage`, `setPercentage`, `effectiveLabel`, `save`, `isPending`, `error`,
288
+ and `message` to supply styled controls. The backend must verify ownership and
289
+ resolve price overrides before product overrides and plan defaults. The example
290
+ uses the current subscription price on renewals and preserves settled economics.
291
+
292
+ ## Percentage or fixed affiliate payouts
293
+
294
+ `AffiliatePayoutEditor` is the unstyled editor used inline by the example's seller
295
+ product and price rows and admin store-plan rows. Supply `scopeKey`, nullable
296
+ `affiliateBasisPoints`, optional nullable `affiliateFixedAmount`, effective values,
297
+ `version`, `currency`, and `onSave`. Fixed amounts are major currency units,
298
+ not cents. The save callback receives both nullable fields and `expectedVersion`;
299
+ only one payout field is non-null. Blank means inherit; explicit zero disables.
300
+
301
+ The native form includes a number input, `%`/currency-symbol toggle, Save, and X.
302
+ X saves null for both fields to clear the override. `currency` defaults to USD
303
+ and controls the display symbol. A render prop exposes `value`, `mode`, `setValue`,
304
+ `setMode`, `currencySymbol`, `effectiveLabel`, `save`, `clear`, `isPending`, `error`,
305
+ and `message` so applications can supply their own markup. Server code must
306
+ resolve defaults, validate ownership and versions, convert major amounts into
307
+ Stripe minor units, and cap fixed payouts at proceeds after fees. The example
308
+ uses a nominal fixed amount per sale currency; it does not perform FX conversion.
309
+
310
+ Affiliate payout sources can be `global`, `store`, `plan`, `product`, `price`, or
311
+ `none`. Unset app rules fall back to zero. The example resolves price → product →
312
+ store-wide → plan → platform-wide → 0, and distinguishes explicit zero from null
313
+ inheritance. Both global controls use the same package editor as the row controls.
314
+
315
+ `AffiliatePayoutEditor` also exposes an optional `affiliateCommissionTerm`
316
+ (`"forever"`, `"one_time"`, or `null` to inherit) and
317
+ `effectiveCommissionTerm`. Its render state includes `term` and `setTerm`, and
318
+ `onSave` receives the selected term together with the payout amount. Clear
319
+ removes both overrides. The example saves the resolved subscription term in
320
+ Stripe metadata at checkout and claims the first paid invoice atomically in its
321
+ Convex ledger; the UI component does not itself create transfers or process
322
+ renewals.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fantastic.dev/better-stripe",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "A Convex component for Stripe V2 Accounts API integration.",
5
5
  "keywords": [
6
6
  "stripe",
@@ -103,12 +103,15 @@
103
103
  "@stripe/react-connect-js": "^3.4.4",
104
104
  "@stripe/react-stripe-js": "^7.0.0",
105
105
  "@stripe/stripe-js": "^10.0.0",
106
+ "convex-helpers": "^0.1.128",
106
107
  "stripe": "~23.0.0"
107
108
  },
108
109
  "devDependencies": {
109
110
  "@convex-dev/eslint-plugin": "^5.0.0",
110
111
  "@edge-runtime/vm": "^5.0.0",
111
112
  "@fantastic.dev/repo-gates": "^0.4.0",
113
+ "@shadcn/lint": "0.1.5",
114
+ "@shadscan/cli": "0.7.0",
112
115
  "@testing-library/jest-dom": "^7.0.1",
113
116
  "@testing-library/react": "^16.3.3",
114
117
  "@testing-library/user-event": "^14.6.7",
@@ -127,9 +130,7 @@
127
130
  "pretty-quick": "^4.2.2",
128
131
  "typescript": "npm:@typescript/typescript6@^6.0.2",
129
132
  "typescript-eslint": "^8.71.1",
130
- "vitest": "^5.0.3",
131
- "@shadcn/lint": "0.1.5",
132
- "@shadscan/cli": "0.7.0"
133
+ "vitest": "^5.0.3"
133
134
  },
134
135
  "peerDependencies": {
135
136
  "convex": "^1.29.3",
@@ -73,6 +73,21 @@ describe("buildDisputeEvidence (BTS-31)", () => {
73
73
  });
74
74
  });
75
75
 
76
+ it("sends communication prose as text while preserving other context", () => {
77
+ expect(
78
+ buildDisputeEvidence({
79
+ additionalInfo: "Delivered",
80
+ customerCommunication: "Customer confirmed receipt",
81
+ }),
82
+ ).toEqual({
83
+ uncategorized_text:
84
+ "Delivered\n\nCustomer communication:\nCustomer confirmed receipt",
85
+ });
86
+ expect(buildDisputeEvidence({ customerCommunication: "file_123" })).toEqual(
87
+ { customer_communication: "file_123" },
88
+ );
89
+ });
90
+
76
91
  it("omits unset categories", () => {
77
92
  expect(buildDisputeEvidence({ productDescription: "X" })).toEqual({
78
93
  product_description: "X",
@@ -260,9 +260,19 @@ export function buildDisputeEvidence(input: {
260
260
  accessActivity?: string;
261
261
  /** Off-platform context / anything else (Stripe: uncategorized_text). */
262
262
  additionalInfo?: string;
263
- /** Communications with the buyer (Stripe: customer_communication). */
263
+ /** Communication prose is appended to text evidence; file_ IDs remain file evidence. */
264
264
  customerCommunication?: string;
265
265
  }): import("stripe").Stripe.DisputeUpdateParams.Evidence {
266
+ const communication = input.customerCommunication;
267
+ const file = communication?.startsWith("file_") ? communication : undefined;
268
+ const text = [
269
+ input.additionalInfo,
270
+ !file && communication
271
+ ? `Customer communication:\n${communication}`
272
+ : undefined,
273
+ ]
274
+ .filter(Boolean)
275
+ .join("\n\n");
266
276
  return {
267
277
  ...(input.productDescription
268
278
  ? { product_description: input.productDescription }
@@ -270,12 +280,8 @@ export function buildDisputeEvidence(input: {
270
280
  ...(input.accessActivity
271
281
  ? { access_activity_log: input.accessActivity }
272
282
  : {}),
273
- ...(input.additionalInfo
274
- ? { uncategorized_text: input.additionalInfo }
275
- : {}),
276
- ...(input.customerCommunication
277
- ? { customer_communication: input.customerCommunication }
278
- : {}),
283
+ ...(text ? { uncategorized_text: text } : {}),
284
+ ...(file ? { customer_communication: file } : {}),
279
285
  };
280
286
  }
281
287