@slyxup/ui 2.5.3 → 3.0.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 (51) hide show
  1. package/README.md +33 -10
  2. package/dist/components/BillingPortal/BillingPortal.d.ts +2 -1
  3. package/dist/components/BillingPortal/BillingPortal.d.ts.map +1 -1
  4. package/dist/components/BillingPortal/BillingPortal.js +2 -2
  5. package/dist/components/BillingPortal/BillingPortal.js.map +1 -1
  6. package/dist/components/CurrentPlanCard/CurrentPlanCard.d.ts +19 -3
  7. package/dist/components/CurrentPlanCard/CurrentPlanCard.d.ts.map +1 -1
  8. package/dist/components/CurrentPlanCard/CurrentPlanCard.js +129 -23
  9. package/dist/components/CurrentPlanCard/CurrentPlanCard.js.map +1 -1
  10. package/dist/components/InvoicesTable/InvoicesTable.d.ts +4 -2
  11. package/dist/components/InvoicesTable/InvoicesTable.d.ts.map +1 -1
  12. package/dist/components/InvoicesTable/InvoicesTable.js +23 -19
  13. package/dist/components/InvoicesTable/InvoicesTable.js.map +1 -1
  14. package/dist/components/PlanCard/PlanCard.js +1 -1
  15. package/dist/components/PlanCard/PlanCard.js.map +1 -1
  16. package/dist/components/PricingTable/PricingTable.d.ts +2 -2
  17. package/dist/components/PricingTable/PricingTable.d.ts.map +1 -1
  18. package/dist/components/PricingTable/PricingTable.js +8 -1
  19. package/dist/components/PricingTable/PricingTable.js.map +1 -1
  20. package/dist/components/SignIn/SignIn.d.ts.map +1 -1
  21. package/dist/components/SignIn/SignIn.js +43 -14
  22. package/dist/components/SignIn/SignIn.js.map +1 -1
  23. package/dist/components/SignUp/SignUp.d.ts.map +1 -1
  24. package/dist/components/SignUp/SignUp.js +15 -5
  25. package/dist/components/SignUp/SignUp.js.map +1 -1
  26. package/dist/components/SocialButtons/SocialButtons.d.ts.map +1 -1
  27. package/dist/components/SocialButtons/SocialButtons.js +16 -7
  28. package/dist/components/SocialButtons/SocialButtons.js.map +1 -1
  29. package/dist/components/SubscriptionStatus/SubscriptionStatus.d.ts.map +1 -1
  30. package/dist/components/SubscriptionStatus/SubscriptionStatus.js +14 -0
  31. package/dist/components/SubscriptionStatus/SubscriptionStatus.js.map +1 -1
  32. package/dist/react/context/auth-context.d.ts +4 -0
  33. package/dist/react/context/auth-context.d.ts.map +1 -1
  34. package/dist/react/context/auth-context.js.map +1 -1
  35. package/dist/react/hooks/useAuth.d.ts +2 -0
  36. package/dist/react/hooks/useAuth.d.ts.map +1 -1
  37. package/dist/react/hooks/useAuth.js +3 -0
  38. package/dist/react/hooks/useAuth.js.map +1 -1
  39. package/dist/react/hooks/useBilling.d.ts +2 -0
  40. package/dist/react/hooks/useBilling.d.ts.map +1 -1
  41. package/dist/react/hooks/useBilling.js +56 -13
  42. package/dist/react/hooks/useBilling.js.map +1 -1
  43. package/dist/react/provider/SlyxUpProvider.d.ts +4 -1
  44. package/dist/react/provider/SlyxUpProvider.d.ts.map +1 -1
  45. package/dist/react/provider/SlyxUpProvider.js +19 -4
  46. package/dist/react/provider/SlyxUpProvider.js.map +1 -1
  47. package/dist/styles.d.ts +2 -2
  48. package/dist/styles.d.ts.map +1 -1
  49. package/dist/styles.js +22 -8
  50. package/dist/styles.js.map +1 -1
  51. package/package.json +2 -2
package/README.md CHANGED
@@ -12,20 +12,27 @@ npm install @slyxup/ui @slyxup/core
12
12
 
13
13
  ## Setup
14
14
 
15
- Inject the stylesheet once at your app root:
15
+ Wrap auth and billing UI in a provider at your app root:
16
16
 
17
17
  ```tsx
18
- import { SlyxupClient } from '@slyxup/core';
19
- import { SlyxUpStyles } from '@slyxup/ui';
20
-
21
- const client = new SlyxupClient({ publishableKey: 'pk_test_xxx', apiUrl: '...' });
18
+ import { SlyxUpProvider, SlyxUpStyles } from '@slyxup/ui';
22
19
 
23
- <SlyxUpStyles />
24
- <App />
20
+ <SlyxUpProvider
21
+ publishableKey="pk_test_your_project_key"
22
+ apiUrl="https://auth.slyxup.online"
23
+ billingApiUrl="https://billing.slyxup.online"
24
+ >
25
+ <SlyxUpStyles />
26
+ <App />
27
+ </SlyxUpProvider>
25
28
  ```
26
29
 
27
30
  (Components also auto-inject on first mount if you skip this.)
28
31
 
32
+ The default stylesheet inherits host typography and does not load external fonts. Webfonts are loaded only when you explicitly select a font theme that has a stylesheet URL.
33
+
34
+ Pass configuration explicitly (`import.meta.env.VITE_*` in Vite or `process.env.NEXT_PUBLIC_*` in a Next.js client boundary). Tokens are memory-only by default. Client-only SPAs can opt into `tokenStorage="sessionStorage"` for same-tab reload persistence, scoped by auth URL and project key. This remains script-readable; a same-origin server with HttpOnly cookies is the preferred sensitive-app integration. Billing hooks inherit the provider's key, current token, and `billingApiUrl`; they no longer use a global localStorage token. `useInvoices()` returns `{ invoices, loading, error, reload }`, so failures can be shown with a retry action instead of an empty invoice history.
35
+
29
36
  ## Components
30
37
 
31
38
  ### `<SignIn />` / `<SignUp />`
@@ -44,8 +51,8 @@ import { SignIn, SignUp } from '@slyxup/ui';
44
51
  ```
45
52
 
46
53
  Notes:
47
- - `SignIn` accepts **either an email or a username** in the identifier field.
48
- - When the account has 2FA enabled, `SignIn` auto-detects the `2FA_REQUIRED` response and swaps to an authenticator-code step, then completes the sign-in with `completeSignIn`.
54
+ - `SignIn username` accepts **either an email or a username** and sends the corresponding field. Without this prop the field validates an email address.
55
+ - When the account has 2FA enabled, `SignIn` swaps to an authenticator-code step with a **Use a recovery code** alternative. Errors remain visible until the next attempt. Each instance has unique input IDs for accessible labels.
49
56
  - `SignUp` includes an optional **username** field (used for password sign-in as an alternative to email).
50
57
 
51
58
  ### `<UserButton />` — avatar + dropdown
@@ -112,6 +119,10 @@ Requires the endpoints shipped in the auth worker (`POST /v1/user/password`, `GE
112
119
 
113
120
  Redirects to the hosted OAuth flow.
114
121
 
122
+ **Release update:** project-scoped OAuth is now implemented. SignIn/SignUp call `client.auth.startOAuth`; the provider exchanges the callback code using the initiating tab's verifier. `useAuth()` exposes `oauthChallenge` and `authError`; SignIn displays the second-factor step when OAuth requires it. Register the return hostname on the project; test projects also allow localhost. Use the current SDK flow rather than hand-built OAuth links.
123
+
124
+ `SocialButtons` uses the same proof-key flow and displays start errors. For custom servers configure the provider `apiUrl`; a conflicting legacy `basePath` is rejected rather than bypassing the callback exchange.
125
+
115
126
  ### `<PricingTable />` — billing plans grid
116
127
 
117
128
  ```tsx
@@ -162,10 +173,11 @@ const client = new SlyxupClient({ publishableKey: 'pk_test_xxx', apiUrl: '...' }
162
173
  subscription={subscription}
163
174
  invoices={invoices}
164
175
  onCancel={cancelSubscription}
176
+ onResume={resumeSubscription}
165
177
  />
166
178
  ```
167
179
 
168
- Shows current plan, status, renewal date, invoice history, and an optional cancel action.
180
+ Shows current plan, status, renewal date, invoice history, and optional cancel/resume actions. Invoice amounts use currency-aware formatting; totals are grouped by currency rather than adding unrelated currencies together.
169
181
 
170
182
  ### Granular billing parts — compose your own layouts
171
183
 
@@ -184,9 +196,20 @@ import {
184
196
  <CurrentPlanCard
185
197
  subscription={subscription} // null = free tier empty state
186
198
  onCancel={cancelSubscription}
199
+ onResume={resumeSubscription} // shown when cancellation is scheduled
187
200
  theme={{ accent: 'emerald' }}
188
201
  />
189
202
 
203
+ // subscription display fields (status required, rest optional):
204
+ // { planName?, status, currentPeriodEnd, currentPeriodStart?,
205
+ // cancelAtPeriodEnd, amount? (cents), currency?, interval?,
206
+ // paymentMethod? ("Visa •••• 4242") }
207
+ // → price line, days-left progress, renew/billed meta, trial note,
208
+ // scheduled-cancellation warning + Resume render automatically.
209
+
210
+ // Invoices with paid total + status pills:
211
+ <InvoicesTable invoices={invoices} showTotal /> // null when empty
212
+
190
213
  // Fully custom pricing section:
191
214
  {plans.map((p) => (
192
215
  <PlanCard
@@ -10,6 +10,7 @@ export interface BillingPortalProps {
10
10
  subscription: PortalSubscription | null;
11
11
  invoices: InvoiceRow[];
12
12
  onCancel?: () => void;
13
+ onResume?: () => void;
13
14
  /** Per-component theme (accent, mode, radius…) — scoped, never global. */
14
15
  theme?: SlyxUpTheme;
15
16
  style?: CSSProperties;
@@ -20,5 +21,5 @@ export interface BillingPortalProps {
20
21
  * Composes CurrentPlanCard + InvoicesTable — use those directly for
21
22
  * finer-grained layouts.
22
23
  */
23
- export declare function BillingPortal({ subscription, invoices, onCancel, theme, style, className, }: BillingPortalProps): import("react").JSX.Element;
24
+ export declare function BillingPortal({ subscription, invoices, onCancel, onResume, theme, style, className, }: BillingPortalProps): import("react").JSX.Element;
24
25
  //# sourceMappingURL=BillingPortal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BillingPortal.d.ts","sourceRoot":"","sources":["../../../src/components/BillingPortal/BillingPortal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,gCAAgC,CAAC;AAEhF,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,+BAepB"}
1
+ {"version":3,"file":"BillingPortal.d.ts","sourceRoot":"","sources":["../../../src/components/BillingPortal/BillingPortal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,gCAAgC,CAAC;AAEhF,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,+BAgBpB"}
@@ -8,8 +8,8 @@ import { InvoicesTable } from '../InvoicesTable/InvoicesTable';
8
8
  * Composes CurrentPlanCard + InvoicesTable — use those directly for
9
9
  * finer-grained layouts.
10
10
  */
11
- export function BillingPortal({ subscription, invoices, onCancel, theme, style, className, }) {
11
+ export function BillingPortal({ subscription, invoices, onCancel, onResume, theme, style, className, }) {
12
12
  injectStyles();
13
- return (_jsxs("div", { className: className, style: { display: 'flex', flexDirection: 'column', gap: 18, ...style }, children: [_jsx(CurrentPlanCard, { subscription: subscription, onCancel: onCancel, theme: theme }), _jsx(InvoicesTable, { invoices: invoices, theme: theme })] }));
13
+ return (_jsxs("div", { className: className, style: { display: 'flex', flexDirection: 'column', gap: 18, ...style }, children: [_jsx(CurrentPlanCard, { subscription: subscription, onCancel: onCancel, onResume: onResume, theme: theme }), _jsx(InvoicesTable, { invoices: invoices, theme: theme })] }));
14
14
  }
15
15
  //# sourceMappingURL=BillingPortal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BillingPortal.js","sourceRoot":"","sources":["../../../src/components/BillingPortal/BillingPortal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EACL,eAAe,GAEhB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAmB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAiBhF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACU;IACnB,YAAY,EAAE,CAAC;IACf,OAAO,CACL,eACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,aAEtE,KAAC,eAAe,IACd,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACZ,EACF,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,IAC/C,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BillingPortal.js","sourceRoot":"","sources":["../../../src/components/BillingPortal/BillingPortal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EACL,eAAe,GAEhB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAmB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAkBhF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACU;IACnB,YAAY,EAAE,CAAC;IACf,OAAO,CACL,eACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,aAEtE,KAAC,eAAe,IACd,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACZ,EACF,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,IAC/C,CACP,CAAC;AACJ,CAAC"}
@@ -4,11 +4,25 @@ export interface CurrentPlanSubscription {
4
4
  planName?: string | null;
5
5
  status: string;
6
6
  currentPeriodEnd: string | null;
7
+ /** Period start — enables the "days left" progress bar. */
8
+ currentPeriodStart?: string | null;
7
9
  cancelAtPeriodEnd: boolean;
10
+ /** Minor units (cents). Shows the price line when present. */
11
+ amount?: number | null;
12
+ currency?: string | null;
13
+ interval?: 'month' | 'year' | string | null;
14
+ /** Rendered under the price, e.g. "Visa •••• 4242". */
15
+ paymentMethod?: string | null;
8
16
  }
9
17
  export interface CurrentPlanCardLabels {
10
18
  title?: string;
11
19
  cancel?: string;
20
+ resume?: string;
21
+ renews?: string;
22
+ billed?: string;
23
+ daysLeft?: string;
24
+ cancelTitle?: string;
25
+ cancelText?: string;
12
26
  emptyTitle?: string;
13
27
  emptyText?: string;
14
28
  }
@@ -16,6 +30,7 @@ export interface CurrentPlanCardProps {
16
30
  /** Null = free tier / no subscription (renders the empty state). */
17
31
  subscription: CurrentPlanSubscription | null;
18
32
  onCancel?: () => void;
33
+ onResume?: () => void;
19
34
  labels?: CurrentPlanCardLabels;
20
35
  /** Per-component theme (accent, mode, radius…) — scoped, never global. */
21
36
  theme?: SlyxUpTheme;
@@ -23,8 +38,9 @@ export interface CurrentPlanCardProps {
23
38
  className?: string;
24
39
  }
25
40
  /**
26
- * Standalone "your plan" card — drop it anywhere without mounting a full
27
- * profile/portal. Shows status, renewal date and cancel action.
41
+ * Rich "your plan" card — price, status, period progress, renewal meta,
42
+ * cancel/resume actions and a scheduled-cancellation warning. Drop it
43
+ * anywhere without mounting a full profile/portal.
28
44
  */
29
- export declare function CurrentPlanCard({ subscription, onCancel, labels, theme, style, className, }: CurrentPlanCardProps): import("react").JSX.Element;
45
+ export declare function CurrentPlanCard({ subscription, onCancel, onResume, labels, theme, style, className, }: CurrentPlanCardProps): import("react").JSX.Element;
30
46
  //# sourceMappingURL=CurrentPlanCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentPlanCard.d.ts","sourceRoot":"","sources":["../../../src/components/CurrentPlanCard/CurrentPlanCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,+BAwEtB"}
1
+ {"version":3,"file":"CurrentPlanCard.d.ts","sourceRoot":"","sources":["../../../src/components/CurrentPlanCard/CurrentPlanCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,+BAyQtB"}
@@ -3,36 +3,142 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useScopedTheme } from '../../lib/scoped-theme';
4
4
  import { injectStyles } from '../../styles';
5
5
  import { SubscriptionStatus } from '../SubscriptionStatus/SubscriptionStatus';
6
+ const DAY_MS = 86_400_000;
7
+ function daysLeft(endIso) {
8
+ if (!endIso)
9
+ return null;
10
+ const ms = new Date(endIso).getTime() - Date.now();
11
+ if (Number.isNaN(ms))
12
+ return null;
13
+ return Math.max(0, Math.ceil(ms / DAY_MS));
14
+ }
15
+ function periodProgress(startIso, endIso) {
16
+ if (!startIso || !endIso)
17
+ return null;
18
+ const start = new Date(startIso).getTime();
19
+ const end = new Date(endIso).getTime();
20
+ if (Number.isNaN(start) || Number.isNaN(end) || end <= start)
21
+ return null;
22
+ const pct = ((Date.now() - start) / (end - start)) * 100;
23
+ return Math.min(100, Math.max(0, Math.round(pct)));
24
+ }
25
+ function formatDate(iso) {
26
+ const d = new Date(iso);
27
+ return Number.isNaN(d.getTime())
28
+ ? iso
29
+ : d.toLocaleDateString(undefined, {
30
+ month: 'short',
31
+ day: 'numeric',
32
+ year: 'numeric',
33
+ });
34
+ }
6
35
  /**
7
- * Standalone "your plan" card — drop it anywhere without mounting a full
8
- * profile/portal. Shows status, renewal date and cancel action.
36
+ * Rich "your plan" card — price, status, period progress, renewal meta,
37
+ * cancel/resume actions and a scheduled-cancellation warning. Drop it
38
+ * anywhere without mounting a full profile/portal.
9
39
  */
10
- export function CurrentPlanCard({ subscription, onCancel, labels, theme, style, className, }) {
40
+ export function CurrentPlanCard({ subscription, onCancel, onResume, labels, theme, style, className, }) {
11
41
  injectStyles();
12
42
  const ref = useScopedTheme(theme);
13
43
  if (!subscription) {
14
44
  return (_jsxs("div", { ref: ref, className: `slx-card ${className ?? ''}`, style: style, children: [_jsx("h3", { style: { fontSize: 16, fontWeight: 600 }, children: labels?.emptyTitle ?? 'No active subscription' }), _jsx("p", { style: { fontSize: 13.5, color: 'var(--slx-muted)', marginTop: 6 }, children: labels?.emptyText ??
15
45
  "You don't have a subscription yet. Choose a plan to get started." })] }));
16
46
  }
17
- return (_jsx("div", { ref: ref, className: `slx-card ${className ?? ''}`, style: style, children: _jsxs("div", { style: {
18
- display: 'flex',
19
- justifyContent: 'space-between',
20
- alignItems: 'center',
21
- }, children: [_jsxs("div", { children: [_jsxs("h3", { style: { fontSize: 15, fontWeight: 600 }, children: [labels?.title ?? 'Current plan', subscription.planName ? ` — ${subscription.planName}` : ''] }), _jsxs("p", { style: { fontSize: 13, color: 'var(--slx-muted)', marginTop: 4 }, children: ["Status: ", _jsx(SubscriptionStatus, { status: subscription.status })] }), subscription.currentPeriodEnd && (_jsxs("p", { style: {
22
- fontSize: 12.5,
23
- color: 'var(--slx-muted)',
24
- marginTop: 4,
25
- }, children: ["Renews", ' ', new Date(subscription.currentPeriodEnd).toLocaleDateString(), subscription.cancelAtPeriodEnd ? ' (cancels at period end)' : ''] }))] }), subscription.status !== 'canceled' &&
26
- !subscription.cancelAtPeriodEnd &&
27
- onCancel && (_jsx("button", { type: "button", onClick: onCancel, style: {
28
- fontSize: 13,
29
- fontWeight: 550,
30
- background: 'transparent',
31
- border: '1px solid var(--slx-border)',
32
- borderRadius: 'var(--slx-radius)',
33
- padding: '8px 14px',
34
- cursor: 'pointer',
35
- color: 'var(--slx-danger)',
36
- }, children: labels?.cancel ?? 'Cancel' }))] }) }));
47
+ const left = daysLeft(subscription.currentPeriodEnd);
48
+ const progress = periodProgress(subscription.currentPeriodStart, subscription.currentPeriodEnd);
49
+ const showPrice = typeof subscription.amount === 'number' && subscription.amount >= 0;
50
+ const scheduled = subscription.cancelAtPeriodEnd;
51
+ const trialing = subscription.status === 'trialing';
52
+ return (_jsxs("div", { ref: ref, className: `slx-card ${className ?? ''}`, style: style, children: [_jsxs("div", { style: {
53
+ display: 'flex',
54
+ justifyContent: 'space-between',
55
+ alignItems: 'flex-start',
56
+ gap: 12,
57
+ }, children: [_jsxs("div", { children: [_jsx("p", { style: {
58
+ fontSize: 11.5,
59
+ fontWeight: 700,
60
+ letterSpacing: '.08em',
61
+ textTransform: 'uppercase',
62
+ color: 'var(--slx-muted)',
63
+ margin: '0 0 4px',
64
+ }, children: labels?.title ?? 'Current plan' }), _jsx("h3", { style: {
65
+ fontSize: 22,
66
+ fontWeight: 750,
67
+ letterSpacing: '-0.02em',
68
+ fontFamily: 'var(--slx-display)',
69
+ margin: 0,
70
+ }, children: subscription.planName ?? 'Subscription' })] }), _jsx(SubscriptionStatus, { status: subscription.status })] }), showPrice && (_jsxs("div", { style: { marginTop: 10 }, children: [_jsxs("span", { className: "slx-price", style: { fontSize: 30 }, children: ["$", (subscription.amount / 100).toFixed(subscription.amount % 100 === 0 ? 0 : 2)] }), ' ', _jsxs("span", { style: { fontSize: 13, color: 'var(--slx-muted)' }, children: [subscription.currency ?? '', "/", subscription.interval === 'year' ? 'year' : 'month'] }), subscription.paymentMethod && (_jsx("p", { style: {
71
+ fontSize: 12.5,
72
+ color: 'var(--slx-muted)',
73
+ margin: '4px 0 0',
74
+ }, children: subscription.paymentMethod }))] })), progress !== null && left !== null && (_jsxs("div", { style: { marginTop: 16 }, children: [_jsx("div", { style: {
75
+ height: 6,
76
+ borderRadius: 999,
77
+ background: 'color-mix(in srgb, var(--slx-ink) 8%, transparent)',
78
+ overflow: 'hidden',
79
+ }, children: _jsx("div", { style: {
80
+ height: '100%',
81
+ width: `${progress}%`,
82
+ borderRadius: 999,
83
+ background: 'linear-gradient(90deg, var(--slx-accent), var(--slx-accent-2))',
84
+ transition: 'width .4s ease',
85
+ } }) }), _jsx("p", { style: {
86
+ fontSize: 12,
87
+ color: 'var(--slx-muted)',
88
+ margin: '6px 0 0',
89
+ }, children: left === 0
90
+ ? 'Renews today'
91
+ : `${left} day${left === 1 ? '' : 's'} left in this period` })] })), _jsxs("div", { style: {
92
+ display: 'flex',
93
+ flexWrap: 'wrap',
94
+ gap: '8px 24px',
95
+ marginTop: 16,
96
+ paddingTop: 14,
97
+ borderTop: '1px solid var(--slx-border)',
98
+ }, children: [subscription.currentPeriodEnd && (_jsxs("div", { children: [_jsx("p", { style: {
99
+ fontSize: 11,
100
+ fontWeight: 600,
101
+ textTransform: 'uppercase',
102
+ letterSpacing: '.06em',
103
+ color: 'var(--slx-muted)',
104
+ margin: '0 0 2px',
105
+ }, children: scheduled ? 'Ends' : (labels?.renews ?? 'Renews') }), _jsx("p", { style: { fontSize: 13.5, fontWeight: 600, margin: 0 }, children: formatDate(subscription.currentPeriodEnd) })] })), subscription.interval && (_jsxs("div", { children: [_jsx("p", { style: {
106
+ fontSize: 11,
107
+ fontWeight: 600,
108
+ textTransform: 'uppercase',
109
+ letterSpacing: '.06em',
110
+ color: 'var(--slx-muted)',
111
+ margin: '0 0 2px',
112
+ }, children: labels?.billed ?? 'Billed' }), _jsx("p", { style: {
113
+ fontSize: 13.5,
114
+ fontWeight: 600,
115
+ margin: 0,
116
+ textTransform: 'capitalize',
117
+ }, children: subscription.interval === 'year' ? 'Yearly' : 'Monthly' })] })), trialing && (_jsxs("div", { children: [_jsx("p", { style: {
118
+ fontSize: 11,
119
+ fontWeight: 600,
120
+ textTransform: 'uppercase',
121
+ letterSpacing: '.06em',
122
+ color: 'var(--slx-muted)',
123
+ margin: '0 0 2px',
124
+ }, children: "Trial" }), _jsx("p", { style: { fontSize: 13.5, fontWeight: 600, margin: 0 }, children: "Convert to paid on renewal" })] }))] }), scheduled && (_jsxs("div", { style: {
125
+ marginTop: 14,
126
+ borderRadius: 'var(--slx-radius)',
127
+ border: '1px solid color-mix(in srgb, var(--slx-danger) 30%, transparent)',
128
+ background: 'color-mix(in srgb, var(--slx-danger) 7%, transparent)',
129
+ padding: '10px 12px',
130
+ fontSize: 12.5,
131
+ lineHeight: 1.5,
132
+ }, children: [_jsx("strong", { children: labels?.cancelTitle ?? 'Cancellation scheduled' }), _jsx("br", {}), _jsx("span", { style: { color: 'var(--slx-muted)' }, children: labels?.cancelText ??
133
+ 'You keep access until the end date above, then move to the free tier.' })] })), (onResume && scheduled) || (onCancel && !scheduled) ? (_jsxs("div", { style: { display: 'flex', gap: 8, marginTop: 14 }, children: [onResume && scheduled && (_jsx("button", { type: "button", onClick: onResume, className: "slx-btn", style: { width: 'auto', flex: 1 }, children: labels?.resume ?? 'Resume plan' })), onCancel && !scheduled && (_jsx("button", { type: "button", onClick: onCancel, style: {
134
+ fontSize: 13,
135
+ fontWeight: 550,
136
+ background: 'transparent',
137
+ border: '1px solid var(--slx-border)',
138
+ borderRadius: 'var(--slx-radius)',
139
+ padding: '8px 14px',
140
+ cursor: 'pointer',
141
+ color: 'var(--slx-danger)',
142
+ }, children: labels?.cancel ?? 'Cancel' }))] })) : null] }));
37
143
  }
38
144
  //# sourceMappingURL=CurrentPlanCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentPlanCard.js","sourceRoot":"","sources":["../../../src/components/CurrentPlanCard/CurrentPlanCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AA2B9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,GACY;IACrB,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,cAAc,CAAiB,KAAK,CAAC,CAAC;IAElD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,SAAS,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,aACnE,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YACzC,MAAM,EAAE,UAAU,IAAI,wBAAwB,GAC5C,EACL,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,EAAE,YAClE,MAAM,EAAE,SAAS;wBAChB,kEAAkE,GAClE,IACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,SAAS,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YACnE,eACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,eAAe;gBAC/B,UAAU,EAAE,QAAQ;aACrB,aAED,0BACE,cAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aACzC,MAAM,EAAE,KAAK,IAAI,cAAc,EAC/B,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IACxD,EACL,aAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,EAAE,yBACzD,KAAC,kBAAkB,IAAC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAI,IACzD,EACH,YAAY,CAAC,gBAAgB,IAAI,CAChC,aACE,KAAK,EAAE;gCACL,QAAQ,EAAE,IAAI;gCACd,KAAK,EAAE,kBAAkB;gCACzB,SAAS,EAAE,CAAC;6BACb,uBAEM,GAAG,EACT,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,EAC5D,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,IAC/D,CACL,IACG,EACL,YAAY,CAAC,MAAM,KAAK,UAAU;oBACjC,CAAC,YAAY,CAAC,iBAAiB;oBAC/B,QAAQ,IAAI,CACV,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE;wBACL,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,6BAA6B;wBACrC,YAAY,EAAE,mBAAmB;wBACjC,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,SAAS;wBACjB,KAAK,EAAE,mBAAmB;qBAC3B,YAEA,MAAM,EAAE,MAAM,IAAI,QAAQ,GACpB,CACV,IACC,GACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CurrentPlanCard.js","sourceRoot":"","sources":["../../../src/components/CurrentPlanCard/CurrentPlanCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AA0C9E,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,SAAS,QAAQ,CAAC,MAAqB;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CACrB,QAAmC,EACnC,MAAqB;IAErB,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAC9B,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;AACT,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,GACY;IACrB,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,cAAc,CAAiB,KAAK,CAAC,CAAC;IAElD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,SAAS,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,aACnE,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YACzC,MAAM,EAAE,UAAU,IAAI,wBAAwB,GAC5C,EACL,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,EAAE,YAClE,MAAM,EAAE,SAAS;wBAChB,kEAAkE,GAClE,IACA,CACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,cAAc,CAC7B,YAAY,CAAC,kBAAkB,EAC/B,YAAY,CAAC,gBAAgB,CAC9B,CAAC;IACF,MAAM,SAAS,GACb,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;IACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC;IAEpD,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,SAAS,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,aAEnE,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,UAAU,EAAE,YAAY;oBACxB,GAAG,EAAE,EAAE;iBACR,aAED,0BACE,YACE,KAAK,EAAE;oCACL,QAAQ,EAAE,IAAI;oCACd,UAAU,EAAE,GAAG;oCACf,aAAa,EAAE,OAAO;oCACtB,aAAa,EAAE,WAAW;oCAC1B,KAAK,EAAE,kBAAkB;oCACzB,MAAM,EAAE,SAAS;iCAClB,YAEA,MAAM,EAAE,KAAK,IAAI,cAAc,GAC9B,EACJ,aACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,aAAa,EAAE,SAAS;oCACxB,UAAU,EAAE,oBAAoB;oCAChC,MAAM,EAAE,CAAC;iCACV,YAEA,YAAY,CAAC,QAAQ,IAAI,cAAc,GACrC,IACD,EACN,KAAC,kBAAkB,IAAC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAI,IAC/C,EAGL,SAAS,IAAI,CACZ,eAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAC3B,gBAAM,SAAS,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAEhD,CAAE,YAAY,CAAC,MAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAC7C,YAAY,CAAC,MAAiB,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,IACI,EAAC,GAAG,EACX,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,aACrD,YAAY,CAAC,QAAQ,IAAI,EAAE,OAC3B,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAC/C,EACN,YAAY,CAAC,aAAa,IAAI,CAC7B,YACE,KAAK,EAAE;4BACL,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,SAAS;yBAClB,YAEA,YAAY,CAAC,aAAa,GACzB,CACL,IACG,CACP,EAGA,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CACrC,eAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAC3B,cACE,KAAK,EAAE;4BACL,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,GAAG;4BACjB,UAAU,EAAE,oDAAoD;4BAChE,QAAQ,EAAE,QAAQ;yBACnB,YAED,cACE,KAAK,EAAE;gCACL,MAAM,EAAE,MAAM;gCACd,KAAK,EAAE,GAAG,QAAQ,GAAG;gCACrB,YAAY,EAAE,GAAG;gCACjB,UAAU,EACR,gEAAgE;gCAClE,UAAU,EAAE,gBAAgB;6BAC7B,GACD,GACE,EACN,YACE,KAAK,EAAE;4BACL,QAAQ,EAAE,EAAE;4BACZ,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,SAAS;yBAClB,YAEA,IAAI,KAAK,CAAC;4BACT,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,sBAAsB,GAC3D,IACA,CACP,EAGD,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,MAAM;oBAChB,GAAG,EAAE,UAAU;oBACf,SAAS,EAAE,EAAE;oBACb,UAAU,EAAE,EAAE;oBACd,SAAS,EAAE,6BAA6B;iBACzC,aAEA,YAAY,CAAC,gBAAgB,IAAI,CAChC,0BACE,YACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,aAAa,EAAE,WAAW;oCAC1B,aAAa,EAAE,OAAO;oCACtB,KAAK,EAAE,kBAAkB;oCACzB,MAAM,EAAE,SAAS;iCAClB,YAEA,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,GAChD,EACJ,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,YACrD,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,GACxC,IACA,CACP,EACA,YAAY,CAAC,QAAQ,IAAI,CACxB,0BACE,YACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,aAAa,EAAE,WAAW;oCAC1B,aAAa,EAAE,OAAO;oCACtB,KAAK,EAAE,kBAAkB;oCACzB,MAAM,EAAE,SAAS;iCAClB,YAEA,MAAM,EAAE,MAAM,IAAI,QAAQ,GACzB,EACJ,YACE,KAAK,EAAE;oCACL,QAAQ,EAAE,IAAI;oCACd,UAAU,EAAE,GAAG;oCACf,MAAM,EAAE,CAAC;oCACT,aAAa,EAAE,YAAY;iCAC5B,YAEA,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GACtD,IACA,CACP,EACA,QAAQ,IAAI,CACX,0BACE,YACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,GAAG;oCACf,aAAa,EAAE,WAAW;oCAC1B,aAAa,EAAE,OAAO;oCACtB,KAAK,EAAE,kBAAkB;oCACzB,MAAM,EAAE,SAAS;iCAClB,sBAGC,EACJ,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,2CAEpD,IACA,CACP,IACG,EAGL,SAAS,IAAI,CACZ,eACE,KAAK,EAAE;oBACL,SAAS,EAAE,EAAE;oBACb,YAAY,EAAE,mBAAmB;oBACjC,MAAM,EACJ,kEAAkE;oBACpE,UAAU,EAAE,uDAAuD;oBACnE,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;iBAChB,aAED,2BAAS,MAAM,EAAE,WAAW,IAAI,wBAAwB,GAAU,EAClE,cAAM,EACN,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,YACvC,MAAM,EAAE,UAAU;4BACjB,uEAAuE,GACpE,IACH,CACP,EAGA,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACrD,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,aACnD,QAAQ,IAAI,SAAS,IAAI,CACxB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAEhC,MAAM,EAAE,MAAM,IAAI,aAAa,GACzB,CACV,EACA,QAAQ,IAAI,CAAC,SAAS,IAAI,CACzB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE;4BACL,QAAQ,EAAE,EAAE;4BACZ,UAAU,EAAE,GAAG;4BACf,UAAU,EAAE,aAAa;4BACzB,MAAM,EAAE,6BAA6B;4BACrC,YAAY,EAAE,mBAAmB;4BACjC,OAAO,EAAE,UAAU;4BACnB,MAAM,EAAE,SAAS;4BACjB,KAAK,EAAE,mBAAmB;yBAC3B,YAEA,MAAM,EAAE,MAAM,IAAI,QAAQ,GACpB,CACV,IACG,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -10,11 +10,13 @@ export interface InvoiceRow {
10
10
  export interface InvoicesTableProps {
11
11
  invoices: InvoiceRow[];
12
12
  title?: string;
13
+ /** Show a "Total paid" footer row. Default true. */
14
+ showTotal?: boolean;
13
15
  /** Per-component theme (accent, mode, radius…) — scoped, never global. */
14
16
  theme?: SlyxUpTheme;
15
17
  style?: CSSProperties;
16
18
  className?: string;
17
19
  }
18
- /** Invoice history table. Renders nothing when there are no invoices. */
19
- export declare function InvoicesTable({ invoices, title, theme, style, className, }: InvoicesTableProps): import("react").JSX.Element | null;
20
+ /** Invoice history table with status pills + paid total. Renders nothing when empty. */
21
+ export declare function InvoicesTable({ invoices, title, showTotal, theme, style, className, }: InvoicesTableProps): import("react").JSX.Element | null;
20
22
  //# sourceMappingURL=InvoicesTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvoicesTable.d.ts","sourceRoot":"","sources":["../../../src/components/InvoicesTable/InvoicesTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAkB,EAClB,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,sCAqEpB"}
1
+ {"version":3,"file":"InvoicesTable.d.ts","sourceRoot":"","sources":["../../../src/components/InvoicesTable/InvoicesTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAkB,EAClB,SAAgB,EAChB,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,sCA4FpB"}
@@ -2,32 +2,36 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useScopedTheme } from '../../lib/scoped-theme';
4
4
  import { injectStyles } from '../../styles';
5
- /** Invoice history table. Renders nothing when there are no invoices. */
6
- export function InvoicesTable({ invoices, title = 'Invoices', theme, style, className, }) {
5
+ import { SubscriptionStatus } from '../SubscriptionStatus/SubscriptionStatus';
6
+ /** Invoice history table with status pills + paid total. Renders nothing when empty. */
7
+ export function InvoicesTable({ invoices, title = 'Invoices', showTotal = true, theme, style, className, }) {
7
8
  injectStyles();
8
9
  const ref = useScopedTheme(theme);
9
10
  if (invoices.length === 0)
10
11
  return null;
11
- return (_jsxs("div", { ref: ref, className: `slx-card ${className ?? ''}`, style: style, children: [_jsx("h3", { style: { fontSize: 15, fontWeight: 600, marginBottom: 12 }, children: title }), _jsxs("table", { style: { width: '100%', fontSize: 13, borderCollapse: 'collapse' }, children: [_jsx("thead", { children: _jsxs("tr", { style: {
12
+ const totals = new Map();
13
+ for (const invoice of invoices) {
14
+ if (invoice.status === 'paid')
15
+ totals.set(invoice.currency, (totals.get(invoice.currency) ?? 0) + invoice.amount);
16
+ }
17
+ const money = (amount, currency) => new Intl.NumberFormat(undefined, { style: 'currency', currency }).format(amount / 100);
18
+ return (_jsxs("div", { ref: ref, className: `slx-card ${className ?? ''}`, style: style, children: [_jsx("h3", { style: { fontSize: 15, fontWeight: 600, marginBottom: 12 }, children: title }), _jsxs("table", { "aria-label": title, style: { width: '100%', fontSize: 13, borderCollapse: 'collapse' }, children: [_jsx("thead", { children: _jsxs("tr", { style: {
12
19
  borderBottom: '1px solid var(--slx-border)',
13
20
  textAlign: 'left',
14
21
  }, children: [_jsx("th", { style: { padding: '6px 0', fontWeight: 550 }, children: "Date" }), _jsx("th", { style: { padding: '6px 0', fontWeight: 550 }, children: "Amount" }), _jsx("th", { style: { padding: '6px 0', fontWeight: 550 }, children: "Status" })] }) }), _jsx("tbody", { children: invoices.map((inv) => (_jsxs("tr", { className: "slx-row-hover", style: { borderBottom: '1px solid var(--slx-border)' }, children: [_jsx("td", { style: { padding: '8px 0' }, children: inv.billedAt
15
22
  ? new Date(inv.billedAt).toLocaleDateString()
16
- : '—' }), _jsxs("td", { style: { padding: '8px 0' }, children: ["$", (inv.amount / 100).toFixed(2), " ", inv.currency] }), _jsx("td", { style: { padding: '8px 0' }, children: _jsx("span", { style: {
17
- fontSize: 11.5,
18
- fontWeight: 600,
19
- padding: '2px 8px',
20
- borderRadius: 999,
21
- background: inv.status === 'paid'
22
- ? 'rgba(52,211,153,.1)'
23
- : inv.status === 'overdue'
24
- ? 'rgba(214,69,80,.1)'
25
- : 'rgba(108,108,232,.08)',
26
- color: inv.status === 'paid'
27
- ? '#34d399'
28
- : inv.status === 'overdue'
29
- ? 'var(--slx-danger)'
30
- : 'var(--slx-accent)',
31
- }, children: inv.status }) })] }, inv.id))) })] })] }));
23
+ : '—' }), _jsxs("td", { style: { padding: '8px 0' }, children: [money(inv.amount, inv.currency), " ", inv.currency] }), _jsx("td", { style: { padding: '8px 0' }, children: _jsx(SubscriptionStatus, { status: inv.status }) })] }, inv.id))) }), showTotal && totals.size > 0 && (_jsx("tfoot", { children: Array.from(totals, ([currency, paidTotal]) => (_jsxs("tr", { children: [_jsx("td", { colSpan: 2, style: {
24
+ padding: '10px 0 2px',
25
+ fontSize: 12,
26
+ fontWeight: 600,
27
+ textTransform: 'uppercase',
28
+ letterSpacing: '.06em',
29
+ color: 'var(--slx-muted)',
30
+ }, children: "Total paid" }), _jsxs("td", { style: {
31
+ padding: '10px 0 2px',
32
+ fontSize: 14,
33
+ fontWeight: 750,
34
+ fontFamily: 'var(--slx-display)',
35
+ }, children: [money(paidTotal, currency), " ", currency] })] }, currency))) }))] })] }));
32
36
  }
33
37
  //# sourceMappingURL=InvoicesTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvoicesTable.js","sourceRoot":"","sources":["../../../src/components/InvoicesTable/InvoicesTable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAoB5C,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,GAAG,UAAU,EAClB,KAAK,EACL,KAAK,EACL,SAAS,GACU;IACnB,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,cAAc,CAAiB,KAAK,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,SAAS,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,aACnE,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,YAC3D,KAAK,GACH,EACL,iBACE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,aAElE,0BACE,cACE,KAAK,EAAE;gCACL,YAAY,EAAE,6BAA6B;gCAC3C,SAAS,EAAE,MAAM;6BAClB,aAED,aAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,qBAAW,EAC3D,aAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAa,EAC7D,aAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAa,IAC1D,GACC,EACR,0BACG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACrB,cAEE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,EAAE,YAAY,EAAE,6BAA6B,EAAE,aAEtD,aAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAC5B,GAAG,CAAC,QAAQ;wCACX,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE;wCAC7C,CAAC,CAAC,GAAG,GACJ,EACL,cAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,kBAC3B,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,GAAG,CAAC,QAAQ,IAC3C,EACL,aAAI,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAC7B,eACE,KAAK,EAAE;4CACL,QAAQ,EAAE,IAAI;4CACd,UAAU,EAAE,GAAG;4CACf,OAAO,EAAE,SAAS;4CAClB,YAAY,EAAE,GAAG;4CACjB,UAAU,EACR,GAAG,CAAC,MAAM,KAAK,MAAM;gDACnB,CAAC,CAAC,qBAAqB;gDACvB,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS;oDACxB,CAAC,CAAC,oBAAoB;oDACtB,CAAC,CAAC,uBAAuB;4CAC/B,KAAK,EACH,GAAG,CAAC,MAAM,KAAK,MAAM;gDACnB,CAAC,CAAC,SAAS;gDACX,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS;oDACxB,CAAC,CAAC,mBAAmB;oDACrB,CAAC,CAAC,mBAAmB;yCAC5B,YAEA,GAAG,CAAC,MAAM,GACN,GACJ,KAnCA,GAAG,CAAC,EAAE,CAoCR,CACN,CAAC,GACI,IACF,IACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"InvoicesTable.js","sourceRoot":"","sources":["../../../src/components/InvoicesTable/InvoicesTable.tsx"],"names":[],"mappings":"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"}
@@ -25,6 +25,6 @@ export function PlanCard({ plan, current = false, currentLabel = 'Current plan',
25
25
  left: 0,
26
26
  color: '#34d399',
27
27
  fontWeight: 700,
28
- }, children: "\u2713" }), ' ', f] }, f))) }), _jsx("button", { type: "button", className: "slx-btn", onClick: () => (current ? undefined : onSelect?.(plan)), disabled: loading || current, style: current ? { opacity: 0.65, cursor: 'default' } : undefined, children: current ? currentLabel : ctaLabel })] }));
28
+ }, children: "\u2713" }), ' ', f] }, f))) }), _jsx("button", { type: "button", className: current ? 'slx-btn-current' : 'slx-btn', onClick: () => (current ? undefined : onSelect?.(plan)), disabled: loading || current, style: current ? { opacity: 1, cursor: 'default' } : undefined, children: current ? currentLabel : ctaLabel })] }));
29
29
  }
30
30
  //# sourceMappingURL=PlanCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanCard.js","sourceRoot":"","sources":["../../../src/components/PlanCard/PlanCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanCard.js","sourceRoot":"","sources":["../../../src/components/PlanCard/PlanCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA6B5C,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,YAAY,GAAG,cAAc,EAC7B,QAAQ,GAAG,aAAa,EACxB,gBAAgB,GAAG,SAAS,EAC5B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,SAAS,GACK;IACd,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,cAAc,CAAiB,KAAK,CAAC,CAAC;IAClD,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,0BAA0B,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,EAChH,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,KAAK;SACT,aAEA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,CAC7B,eAAM,SAAS,EAAC,iBAAiB,YAAE,gBAAgB,GAAQ,CAC5D,EACA,OAAO,IAAI,eAAM,SAAS,EAAC,mBAAmB,YAAE,YAAY,GAAQ,EACrE,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,YACpE,IAAI,CAAC,IAAI,GACP,EACL,eAAK,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,aACjC,gBAAM,SAAS,EAAC,WAAW,kBAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAQ,EACpE,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBACpD,IAAI,CAAC,QAAQ,IACV,IACH,EACL,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAChB,aACE,KAAK,EAAE;oBACL,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,YAAY,EAAE,CAAC;iBAChB,aAEA,IAAI,CAAC,SAAS,uBACb,CACL,CAAC,CAAC,CAAC,CACF,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,EAAE,uBAE7D,CACL,EACD,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,YAC5D,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAc,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CACtD,cAEE,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,gBAAgB;wBACvB,OAAO,EAAE,gBAAgB;wBACzB,QAAQ,EAAE,UAAU;qBACrB,aAED,eACE,KAAK,EAAE;gCACL,QAAQ,EAAE,UAAU;gCACpB,IAAI,EAAE,CAAC;gCACP,KAAK,EAAE,SAAS;gCAChB,UAAU,EAAE,GAAG;6BAChB,uBAGI,EAAC,GAAG,EACV,CAAC,KAlBG,CAAC,CAmBH,CACN,CAAC,GACC,EACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAClD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EACvD,QAAQ,EAAE,OAAO,IAAI,OAAO,EAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,YAE7D,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,GAC3B,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -10,8 +10,8 @@ export interface PricingTableProps {
10
10
  * `currentLabel` disabled instead of "Get started". Pass the active
11
11
  * subscription's planId, or the $0 plan's id when on the free tier. */
12
12
  currentPlanId?: string | null;
13
- currentLabel?: string;
14
- ctaLabel?: string;
13
+ currentLabel?: string | ((plan: PricingPlan) => string);
14
+ ctaLabel?: string | ((plan: PricingPlan) => string);
15
15
  /** Per-component theme (accent, mode, radius…) — scoped, never global. */
16
16
  theme?: SlyxUpTheme;
17
17
  style?: CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"PricingTable.d.ts","sourceRoot":"","sources":["../../../src/components/PricingTable/PricingTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAQvC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;4EAEwE;IACxE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAoB,EACpB,YAA6B,EAC7B,QAAwB,EACxB,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,iBAAiB,+BA+DnB"}
1
+ {"version":3,"file":"PricingTable.d.ts","sourceRoot":"","sources":["../../../src/components/PricingTable/PricingTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAQvC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;4EAEwE;IACxE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IACpD,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAoB,EACpB,YAA6B,EAC7B,QAAwB,EACxB,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,iBAAiB,+BAwEnB"}
@@ -18,6 +18,13 @@ export function PricingTable({ plans, onSelect, loading, currentPlanId = null, c
18
18
  if (loading) {
19
19
  return (_jsxs(_Fragment, { children: [_jsx("style", { children: PRICING_GRID_CSS }), _jsx("div", { ref: ref, className: gridClass, style: style, "aria-busy": "true", children: [1, 2, 3].map((i) => (_jsxs("div", { className: "slx-card", style: { minHeight: 320 }, children: [_jsx("div", { className: "slx-skeleton", style: { height: 18, width: '45%' } }), _jsx("div", { className: "slx-skeleton", style: { height: 40, width: '60%', marginTop: 14 } }), _jsx("div", { className: "slx-skeleton", style: { height: 12, width: '80%', marginTop: 18 } }), _jsx("div", { className: "slx-skeleton", style: { height: 12, width: '70%', marginTop: 10 } }), _jsx("div", { className: "slx-skeleton", style: { height: 12, width: '75%', marginTop: 10 } }), _jsx("div", { className: "slx-skeleton", style: { height: 40, marginTop: 26 } })] }, i))) })] }));
20
20
  }
21
- return (_jsxs(_Fragment, { children: [_jsx("style", { children: PRICING_GRID_CSS }), _jsx("div", { ref: ref, className: gridClass, style: style, children: plans.map((plan, i) => (_jsx(PlanCard, { plan: plan, current: currentPlanId != null && plan.id === currentPlanId, currentLabel: currentLabel, ctaLabel: ctaLabel, onSelect: onSelect, loading: loading, className: i < 3 ? `slx-rise-${i + 1}` : undefined }, plan.id))) })] }));
21
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: PRICING_GRID_CSS }), _jsx("div", { ref: ref, className: gridClass, style: style, children: plans.map((plan, i) => {
22
+ const isCurrent = currentPlanId != null && plan.id === currentPlanId;
23
+ const resolvedCurrentLabel = typeof currentLabel === 'function'
24
+ ? currentLabel(plan)
25
+ : currentLabel;
26
+ const resolvedCtaLabel = typeof ctaLabel === 'function' ? ctaLabel(plan) : ctaLabel;
27
+ return (_jsx(PlanCard, { plan: plan, current: isCurrent, currentLabel: resolvedCurrentLabel, ctaLabel: resolvedCtaLabel, onSelect: onSelect, loading: loading, className: i < 3 ? `slx-rise-${i + 1}` : undefined }, plan.id));
28
+ }) })] }));
22
29
  }
23
30
  //# sourceMappingURL=PricingTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PricingTable.js","sourceRoot":"","sources":["../../../src/components/PricingTable/PricingTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PricingTable.js","sourceRoot":"","sources":["../../../src/components/PricingTable/PricingTable.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../src/components/SignIn/SignIn.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,oGAAoG;IACpG,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,2CAA2C;AAC3C,wBAAgB,MAAM,CAAC,EACrB,MAAa,EACb,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,MAAmB,EACnB,QAAgB,EAChB,UAAmC,EACnC,aAA6E,EAC7E,WAAqH,GACtH,EAAE,WAAW,+BA8Ob"}
1
+ {"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../src/components/SignIn/SignIn.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,oGAAoG;IACpG,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,2CAA2C;AAC3C,wBAAgB,MAAM,CAAC,EACrB,MAAa,EACb,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,MAAmB,EACnB,QAAgB,EAChB,UAAmC,EACnC,aAA6E,EAC7E,WAIC,GACF,EAAE,WAAW,+BAkSb"}