@carlonicora/nextjs-jsonapi 1.41.2 → 1.42.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 (47) hide show
  1. package/dist/AuthComponent-CU0B9hdO.d.ts +53 -0
  2. package/dist/AuthComponent-D_L2S4g9.d.mts +53 -0
  3. package/dist/{BlockNoteEditor-VUAWVZF4.js → BlockNoteEditor-4N7TQT7S.js} +6 -6
  4. package/dist/{BlockNoteEditor-VUAWVZF4.js.map → BlockNoteEditor-4N7TQT7S.js.map} +1 -1
  5. package/dist/{BlockNoteEditor-B3RQ4VQ7.mjs → BlockNoteEditor-PBQFKKXW.mjs} +2 -2
  6. package/dist/billing/index.js +299 -299
  7. package/dist/billing/index.mjs +1 -1
  8. package/dist/{chunk-QPWHMXE2.js → chunk-GRMFGTY3.js} +2 -2
  9. package/dist/{chunk-QPWHMXE2.js.map → chunk-GRMFGTY3.js.map} +1 -1
  10. package/dist/{chunk-BJNQZGMN.mjs → chunk-V35USBCM.mjs} +2 -2
  11. package/dist/client/index.js +2 -2
  12. package/dist/client/index.mjs +1 -1
  13. package/dist/components/index.d.mts +2 -1
  14. package/dist/components/index.d.ts +2 -1
  15. package/dist/components/index.js +10 -3
  16. package/dist/components/index.js.map +1 -1
  17. package/dist/components/index.mjs +9 -2
  18. package/dist/contexts/index.js +2 -2
  19. package/dist/contexts/index.mjs +1 -1
  20. package/dist/core/index.d.mts +4 -26
  21. package/dist/core/index.d.ts +4 -26
  22. package/dist/index.d.mts +3 -3
  23. package/dist/index.d.ts +3 -3
  24. package/dist/scripts/generate-web-module/templates/components/editor.template.js +7 -2
  25. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
  26. package/dist/scripts/generate-web-module/templates/data/interface.template.js +5 -2
  27. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -1
  28. package/dist/scripts/generate-web-module/templates/data/model.template.js +4 -1
  29. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -1
  30. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -1
  31. package/dist/scripts/generate-web-module/transformers/import-resolver.js +4 -1
  32. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -1
  33. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +3 -3
  34. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -1
  35. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +12 -5
  36. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -1
  37. package/package.json +1 -1
  38. package/scripts/generate-web-module/templates/components/editor.template.ts +7 -2
  39. package/scripts/generate-web-module/templates/data/interface.template.ts +5 -2
  40. package/scripts/generate-web-module/templates/data/model.template.ts +4 -1
  41. package/scripts/generate-web-module/transformers/import-resolver.ts +4 -1
  42. package/scripts/generate-web-module/transformers/relationship-resolver.ts +12 -5
  43. package/src/components/index.ts +3 -0
  44. package/dist/AuthComponent-BuWc2C4g.d.ts +0 -28
  45. package/dist/AuthComponent-fLVGdvSr.d.mts +0 -28
  46. /package/dist/{BlockNoteEditor-B3RQ4VQ7.mjs.map → BlockNoteEditor-PBQFKKXW.mjs.map} +0 -0
  47. /package/dist/{chunk-BJNQZGMN.mjs.map → chunk-V35USBCM.mjs.map} +0 -0
@@ -47,7 +47,7 @@
47
47
 
48
48
 
49
49
 
50
- var _chunkQPWHMXE2js = require('../chunk-QPWHMXE2.js');
50
+ var _chunkGRMFGTY3js = require('../chunk-GRMFGTY3.js');
51
51
 
52
52
 
53
53
 
@@ -113,41 +113,41 @@ function SubscriptionSummaryCard({
113
113
  onManageClick
114
114
  }) {
115
115
  if (loading) {
116
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
117
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
118
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
116
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
117
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
118
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
119
119
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-4 w-4 text-muted-foreground" })
120
120
  ] }),
121
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
122
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-32 mb-2" }),
123
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-24 mb-1" }),
124
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-40" })
121
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
122
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-32 mb-2" }),
123
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-24 mb-1" }),
124
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-40" })
125
125
  ] })
126
126
  ] });
127
127
  }
128
128
  if (error) {
129
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
130
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
131
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
129
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
130
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
131
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
132
132
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-4 w-4 text-muted-foreground" })
133
133
  ] }),
134
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
134
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
135
135
  ] });
136
136
  }
137
137
  const activeSubscriptions = subscriptions.filter(
138
138
  (sub) => sub.status === "active" /* ACTIVE */ || sub.status === "trialing" /* TRIALING */
139
139
  );
140
140
  const primarySubscription = activeSubscriptions[0];
141
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onManageClick, children: [
142
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
143
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
141
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onManageClick, children: [
142
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
143
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Subscriptions" }),
144
144
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-4 w-4 text-muted-foreground" })
145
145
  ] }),
146
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: subscriptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
146
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: subscriptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
147
147
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold text-muted-foreground", children: "No active plan" }),
148
148
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-muted-foreground", children: "Subscribe to get started" }),
149
149
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
150
- _chunkQPWHMXE2js.Button,
150
+ _chunkGRMFGTY3js.Button,
151
151
  {
152
152
  variant: "outline",
153
153
  size: "sm",
@@ -166,7 +166,7 @@ function SubscriptionSummaryCard({
166
166
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
167
167
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold", children: formatPlanName(primarySubscription) }),
168
168
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
169
- _chunkQPWHMXE2js.Badge,
169
+ _chunkGRMFGTY3js.Badge,
170
170
  {
171
171
  variant: primarySubscription.cancelAtPeriodEnd ? "secondary" : getStatusBadgeVariant(primarySubscription.status),
172
172
  children: primarySubscription.cancelAtPeriodEnd ? "Canceling" : primarySubscription.status
@@ -208,37 +208,37 @@ function PaymentMethodSummaryCard({
208
208
  onManageClick
209
209
  }) {
210
210
  if (loading) {
211
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
212
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
213
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
211
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
212
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
213
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
214
214
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wallet, { className: "h-4 w-4 text-muted-foreground" })
215
215
  ] }),
216
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
217
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-32 mb-2" }),
218
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-24" })
216
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
217
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-32 mb-2" }),
218
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-24" })
219
219
  ] })
220
220
  ] });
221
221
  }
222
222
  if (error) {
223
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
224
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
225
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
223
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
224
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
225
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
226
226
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wallet, { className: "h-4 w-4 text-muted-foreground" })
227
227
  ] }),
228
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
228
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
229
229
  ] });
230
230
  }
231
231
  const defaultMethod = paymentMethods.find((pm) => pm.id === defaultPaymentMethodId) || paymentMethods[0];
232
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onManageClick, children: [
233
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
234
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
232
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onManageClick, children: [
233
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
234
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Payment Method" }),
235
235
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wallet, { className: "h-4 w-4 text-muted-foreground" })
236
236
  ] }),
237
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: paymentMethods.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
237
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: paymentMethods.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
238
238
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold text-muted-foreground", children: "No payment method" }),
239
239
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-muted-foreground", children: "Add a card to enable subscriptions" }),
240
240
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
241
- _chunkQPWHMXE2js.Button,
241
+ _chunkGRMFGTY3js.Button,
242
242
  {
243
243
  variant: "outline",
244
244
  size: "sm",
@@ -311,52 +311,52 @@ function CustomerInfoCard({ customer, loading, error }) {
311
311
  }
312
312
  }, "handlePortalClick");
313
313
  if (loading) {
314
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
315
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
316
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
314
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
315
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
316
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
317
317
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.User, { className: "h-4 w-4 text-muted-foreground" })
318
318
  ] }),
319
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
320
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-32 mb-2" }),
321
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-48 mb-1" }),
322
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-24" })
319
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
320
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-32 mb-2" }),
321
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-48 mb-1" }),
322
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-24" })
323
323
  ] })
324
324
  ] });
325
325
  }
326
326
  if (error) {
327
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
328
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
329
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
327
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
328
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
329
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
330
330
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.User, { className: "h-4 w-4 text-muted-foreground" })
331
331
  ] }),
332
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
332
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
333
333
  ] });
334
334
  }
335
335
  if (!customer) {
336
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
337
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
338
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
336
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
337
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
338
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
339
339
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.User, { className: "h-4 w-4 text-muted-foreground" })
340
340
  ] }),
341
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
341
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
342
342
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold text-muted-foreground", children: "Not set up" }),
343
343
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-muted-foreground", children: "Billing account will be created when you subscribe" })
344
344
  ] })
345
345
  ] });
346
346
  }
347
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
348
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
349
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
347
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
348
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
349
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Billing Account" }),
350
350
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.User, { className: "h-4 w-4 text-muted-foreground" })
351
351
  ] }),
352
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
352
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
353
353
  customer.name && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold", children: customer.name }),
354
354
  customer.email && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-muted-foreground", children: customer.email }),
355
355
  customer.balance !== void 0 && customer.balance !== 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-sm", children: [
356
356
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground", children: "Credit Balance: " }),
357
357
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: customer.balance < 0 ? "text-green-600" : "text-destructive", children: formatBalance(customer.balance, customer.currency) })
358
358
  ] }),
359
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", size: "sm", className: "mt-2", onClick: handlePortalClick, disabled: portalLoading, children: [
359
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", size: "sm", className: "mt-2", onClick: handlePortalClick, disabled: portalLoading, children: [
360
360
  portalLoading ? "Loading..." : "Manage in Stripe Portal",
361
361
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-4 w-4 ml-1" })
362
362
  ] })
@@ -400,42 +400,42 @@ function formatAmount(amount, currency) {
400
400
  _chunk7QVYU63Ejs.__name.call(void 0, formatAmount, "formatAmount");
401
401
  function InvoicesSummaryCard({ invoices, loading, error, onViewAllClick }) {
402
402
  if (loading) {
403
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
404
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
405
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
403
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
404
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
405
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
406
406
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ReceiptIcon, { className: "h-4 w-4 text-muted-foreground" })
407
407
  ] }),
408
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
409
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-24 mb-2" }),
410
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-32 mb-1" }),
411
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-20" })
408
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
409
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-24 mb-2" }),
410
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-32 mb-1" }),
411
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-20" })
412
412
  ] })
413
413
  ] });
414
414
  }
415
415
  if (error) {
416
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
417
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
418
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
416
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
417
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
418
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
419
419
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ReceiptIcon, { className: "h-4 w-4 text-muted-foreground" })
420
420
  ] }),
421
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
421
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
422
422
  ] });
423
423
  }
424
424
  const latestInvoice = invoices[0];
425
425
  const paidInvoices = invoices.filter((inv) => inv.status === "paid" /* PAID */);
426
426
  const openInvoices = invoices.filter((inv) => inv.status === "open" /* OPEN */);
427
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onViewAllClick, children: [
428
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
429
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
427
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onViewAllClick, children: [
428
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
429
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Recent Invoices" }),
430
430
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ReceiptIcon, { className: "h-4 w-4 text-muted-foreground" })
431
431
  ] }),
432
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: invoices.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
432
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: invoices.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
433
433
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold text-muted-foreground", children: "No invoices yet" }),
434
434
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-muted-foreground", children: "Invoices will appear after your first billing cycle" })
435
435
  ] }) : latestInvoice ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
436
436
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
437
437
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold", children: formatAmount(latestInvoice.total, latestInvoice.currency) }),
438
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Badge, { variant: getStatusBadgeVariant2(latestInvoice.status), children: latestInvoice.status })
438
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Badge, { variant: getStatusBadgeVariant2(latestInvoice.status), children: latestInvoice.status })
439
439
  ] }),
440
440
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-muted-foreground", children: latestInvoice.stripeInvoiceNumber || `Invoice from ${formatDate2(latestInvoice.periodStart)}` }),
441
441
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 text-xs text-muted-foreground", children: [
@@ -475,24 +475,24 @@ function BillingUsageSummaryCard({
475
475
  onViewDetailsClick
476
476
  }) {
477
477
  if (loading) {
478
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
479
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
480
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
478
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
479
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
480
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
481
481
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Activity, { className: "h-4 w-4 text-muted-foreground" })
482
482
  ] }),
483
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { children: [
484
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-24 mb-2" }),
485
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-32" })
483
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { children: [
484
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-24 mb-2" }),
485
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-32" })
486
486
  ] })
487
487
  ] });
488
488
  }
489
489
  if (error) {
490
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
491
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
492
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
490
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
491
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
492
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
493
493
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Activity, { className: "h-4 w-4 text-muted-foreground" })
494
494
  ] }),
495
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
495
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-destructive", children: error }) })
496
496
  ] });
497
497
  }
498
498
  const totalUsage = Object.values(summaries).reduce((acc, summary) => {
@@ -500,12 +500,12 @@ function BillingUsageSummaryCard({
500
500
  }, 0);
501
501
  const primaryMeter = meters.find((m) => _optionalChain([summaries, 'access', _17 => _17[m.id], 'optionalAccess', _18 => _18.aggregatedValue]));
502
502
  const primarySummary = primaryMeter ? summaries[primaryMeter.id] : null;
503
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onViewDetailsClick, children: [
504
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
505
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
503
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { className: "cursor-pointer hover:bg-accent/50 transition-colors", onClick: onViewDetailsClick, children: [
504
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
505
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { className: "text-sm font-medium", children: "Usage This Month" }),
506
506
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Activity, { className: "h-4 w-4 text-muted-foreground" })
507
507
  ] }),
508
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: meters.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
508
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: meters.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
509
509
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl font-bold text-muted-foreground", children: "No meters" }),
510
510
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-muted-foreground", children: "No usage meters are configured" })
511
511
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
@@ -611,7 +611,7 @@ function PaymentMethodForm({ onSuccess, onCancel, isLoading = false }) {
611
611
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground", children: "Loading payment form..." }) });
612
612
  }
613
613
  if (!setupIntent && error) {
614
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Alert, { variant: "destructive", className: "bg-red-50 border-red-200", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDescription, { children: error }) });
614
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Alert, { variant: "destructive", className: "bg-red-50 border-red-200", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDescription, { children: error }) });
615
615
  }
616
616
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-y-4", children: [
617
617
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rounded-md border border-gray-300 p-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -634,13 +634,13 @@ function PaymentMethodForm({ onSuccess, onCancel, isLoading = false }) {
634
634
  }
635
635
  ) }),
636
636
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
637
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Checkbox, { id: "setAsDefault", checked: setAsDefault, onCheckedChange: (checked) => setSetAsDefault(!!checked) }),
638
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Label, { htmlFor: "setAsDefault", className: "text-sm font-normal", children: "Set as default payment method" })
637
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Checkbox, { id: "setAsDefault", checked: setAsDefault, onCheckedChange: (checked) => setSetAsDefault(!!checked) }),
638
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Label, { htmlFor: "setAsDefault", className: "text-sm font-normal", children: "Set as default payment method" })
639
639
  ] }),
640
- error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Alert, { variant: "destructive", className: "bg-red-50 border-red-200", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDescription, { children: error }) }),
640
+ error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Alert, { variant: "destructive", className: "bg-red-50 border-red-200", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDescription, { children: error }) }),
641
641
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-end gap-x-2", children: [
642
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { type: "button", variant: "outline", onClick: onCancel, disabled: isSubmitting || isLoading, children: "Cancel" }),
643
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { type: "submit", disabled: !stripe || isSubmitting || isLoading, children: isSubmitting ? "Processing..." : "Add Card" })
642
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { type: "button", variant: "outline", onClick: onCancel, disabled: isSubmitting || isLoading, children: "Cancel" }),
643
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { type: "submit", disabled: !stripe || isSubmitting || isLoading, children: isSubmitting ? "Processing..." : "Add Card" })
644
644
  ] })
645
645
  ] });
646
646
  }
@@ -656,10 +656,10 @@ function PaymentMethodEditor({ open, onOpenChange, onSuccess }) {
656
656
  const handleCancel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
657
657
  onOpenChange(false);
658
658
  }, "handleCancel");
659
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-md", children: [
660
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
661
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: "Add Payment Method" }),
662
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: "Add a new payment method to your account. Your card information is securely processed by Stripe." })
659
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-md", children: [
660
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
661
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: "Add Payment Method" }),
662
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: "Add a new payment method to your account. Your card information is securely processed by Stripe." })
663
663
  ] }),
664
664
  open && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PaymentMethodForm, { onSuccess: handleSuccess, onCancel: handleCancel })
665
665
  ] }) });
@@ -720,16 +720,16 @@ function PaymentMethodCard({ paymentMethod, onUpdate }) {
720
720
  }
721
721
  }, "handleRemove");
722
722
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
723
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { className: "relative", children: [
724
- isDefault && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Badge, { className: "absolute right-2 top-2 bg-green-100 text-green-800 hover:bg-green-100", children: "Default" }),
725
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center justify-between pb-2", children: [
723
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { className: "relative", children: [
724
+ isDefault && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Badge, { className: "absolute right-2 top-2 bg-green-100 text-green-800 hover:bg-green-100", children: "Default" }),
725
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center justify-between pb-2", children: [
726
726
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
727
727
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-2xl", children: brandIcon }),
728
728
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium capitalize", children: brand })
729
729
  ] }),
730
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DropdownMenu, { children: [
731
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DropdownMenuTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
732
- _chunkQPWHMXE2js.Button,
730
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DropdownMenu, { children: [
731
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DropdownMenuTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
732
+ _chunkGRMFGTY3js.Button,
733
733
  {
734
734
  render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}),
735
735
  nativeButton: false,
@@ -740,13 +740,13 @@ function PaymentMethodCard({ paymentMethod, onUpdate }) {
740
740
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.MoreVertical, { className: "h-4 w-4" })
741
741
  }
742
742
  ) }),
743
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DropdownMenuContent, { align: "end", children: [
744
- !isDefault && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DropdownMenuItem, { onClick: handleSetDefault, disabled: loading, children: "Set as Default" }),
745
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DropdownMenuItem, { onClick: () => setShowRemoveDialog(true), disabled: loading, className: "text-red-600", children: "Remove" })
743
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DropdownMenuContent, { align: "end", children: [
744
+ !isDefault && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DropdownMenuItem, { onClick: handleSetDefault, disabled: loading, children: "Set as Default" }),
745
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DropdownMenuItem, { onClick: () => setShowRemoveDialog(true), disabled: loading, className: "text-red-600", children: "Remove" })
746
746
  ] })
747
747
  ] })
748
748
  ] }),
749
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-1", children: [
749
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-1", children: [
750
750
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-lg font-semibold", children: [
751
751
  "\u2022\u2022\u2022\u2022 ",
752
752
  last4
@@ -759,17 +759,17 @@ function PaymentMethodCard({ paymentMethod, onUpdate }) {
759
759
  ] })
760
760
  ] }) })
761
761
  ] }),
762
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialog, { open: showRemoveDialog, onOpenChange: setShowRemoveDialog, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogContent, { children: [
763
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogHeader, { children: [
764
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogTitle, { children: "Remove Payment Method" }),
765
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogDescription, { children: [
762
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialog, { open: showRemoveDialog, onOpenChange: setShowRemoveDialog, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogContent, { children: [
763
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogHeader, { children: [
764
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogTitle, { children: "Remove Payment Method" }),
765
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogDescription, { children: [
766
766
  "Are you sure you want to remove this payment method? This action cannot be undone.",
767
767
  isDefault && " This is your default payment method."
768
768
  ] })
769
769
  ] }),
770
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogFooter, { children: [
771
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogCancel, { disabled: loading, children: "Cancel" }),
772
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogAction, { onClick: handleRemove, disabled: loading, className: "bg-red-600 hover:bg-red-700", children: loading ? "Removing..." : "Remove" })
770
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogFooter, { children: [
771
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogCancel, { disabled: loading, children: "Cancel" }),
772
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogAction, { onClick: handleRemove, disabled: loading, className: "bg-red-600 hover:bg-red-700", children: loading ? "Removing..." : "Remove" })
773
773
  ] })
774
774
  ] }) })
775
775
  ] });
@@ -812,14 +812,14 @@ function PaymentMethodsContainer() {
812
812
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-8 w-8" }),
813
813
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-3xl font-bold", children: "Payment Methods" })
814
814
  ] }),
815
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => setShowAddPaymentMethod(true), children: "Add Payment Method" })
815
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => setShowAddPaymentMethod(true), children: "Add Payment Method" })
816
816
  ] }),
817
817
  paymentMethods.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-center justify-center gap-y-4 rounded-lg border-2 border-dashed border-gray-300 bg-muted/50 p-12", children: [
818
818
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-16 w-16 text-muted-foreground" }),
819
819
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center", children: [
820
820
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "mb-2 text-xl font-semibold", children: "No payment methods" }),
821
821
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mb-4 text-muted-foreground", children: "Add a payment method to enable subscriptions and secure checkout." }),
822
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => setShowAddPaymentMethod(true), children: "Add Your First Card" })
822
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => setShowAddPaymentMethod(true), children: "Add Your First Card" })
823
823
  ] })
824
824
  ] }),
825
825
  paymentMethods.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PaymentMethodsList, { paymentMethods, onUpdate: loadPaymentMethods }),
@@ -948,13 +948,13 @@ function InvoiceDetails({
948
948
  return invoice.stripeInvoiceId.slice(-8);
949
949
  }, "getInvoiceNumber");
950
950
  const productName = _optionalChain([invoice, 'access', _29 => _29.subscription, 'optionalAccess', _30 => _30.price, 'optionalAccess', _31 => _31.product, 'optionalAccess', _32 => _32.name]) || "Subscription";
951
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-2xl", children: [
952
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
953
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: [
951
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-2xl", children: [
952
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
953
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: [
954
954
  "Invoice ",
955
955
  getInvoiceNumber()
956
956
  ] }),
957
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: formatDate3(invoice.periodStart) })
957
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: formatDate3(invoice.periodStart) })
958
958
  ] }),
959
959
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [
960
960
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-3", children: [
@@ -1019,15 +1019,15 @@ function InvoiceDetails({
1019
1019
  ] })
1020
1020
  ] }),
1021
1021
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap gap-2 pt-4 border-t", children: [
1022
- invoice.stripePdfUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handleDownloadPDF, children: [
1022
+ invoice.stripePdfUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handleDownloadPDF, children: [
1023
1023
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Download, { className: "mr-2 h-4 w-4" }),
1024
1024
  "Download PDF"
1025
1025
  ] }),
1026
- invoice.status === "open" /* OPEN */ && invoice.attempted && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Button, { variant: "default", onClick: handleRetryPayment, children: [
1026
+ invoice.status === "open" /* OPEN */ && invoice.attempted && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Button, { variant: "default", onClick: handleRetryPayment, children: [
1027
1027
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCw, { className: "mr-2 h-4 w-4" }),
1028
1028
  "Retry Payment"
1029
1029
  ] }),
1030
- invoice.stripeHostedInvoiceUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handleViewInStripe, children: [
1030
+ invoice.stripeHostedInvoiceUrl && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handleViewInStripe, children: [
1031
1031
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "mr-2 h-4 w-4" }),
1032
1032
  "View in Stripe"
1033
1033
  ] })
@@ -1051,30 +1051,30 @@ function InvoicesList({ invoices, onInvoicesChange }) {
1051
1051
  return invoice.stripeInvoiceId.slice(-8);
1052
1052
  }, "getInvoiceNumber");
1053
1053
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1054
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border rounded-lg overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Table, { children: [
1055
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TableRow, { children: [
1056
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Invoice #" }),
1057
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Date" }),
1058
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Status" }),
1059
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { className: "text-right", children: "Amount" }),
1060
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Period" })
1054
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border rounded-lg overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Table, { children: [
1055
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TableRow, { children: [
1056
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Invoice #" }),
1057
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Date" }),
1058
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Status" }),
1059
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { className: "text-right", children: "Amount" }),
1060
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Period" })
1061
1061
  ] }) }),
1062
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableBody, { children: invoices.map((invoice) => {
1062
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableBody, { children: invoices.map((invoice) => {
1063
1063
  const invoiceNumber = getInvoiceNumber(invoice);
1064
1064
  const date = formatDate3(invoice.periodStart);
1065
1065
  const amount = formatCurrency(invoice.total, invoice.currency);
1066
1066
  const period = `${formatDate3(invoice.periodStart)} - ${formatDate3(invoice.periodEnd)}`;
1067
1067
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1068
- _chunkQPWHMXE2js.TableRow,
1068
+ _chunkGRMFGTY3js.TableRow,
1069
1069
  {
1070
1070
  onClick: () => handleRowClick(invoice),
1071
1071
  className: "cursor-pointer hover:bg-muted/50",
1072
1072
  children: [
1073
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "font-medium", children: invoiceNumber }),
1074
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-muted-foreground text-sm", children: date }),
1075
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InvoiceStatusBadge, { status: invoice.status }) }),
1076
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-right font-medium", children: amount }),
1077
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-muted-foreground text-sm", children: period })
1073
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "font-medium", children: invoiceNumber }),
1074
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-muted-foreground text-sm", children: date }),
1075
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InvoiceStatusBadge, { status: invoice.status }) }),
1076
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-right font-medium", children: amount }),
1077
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-muted-foreground text-sm", children: period })
1078
1078
  ]
1079
1079
  },
1080
1080
  invoice.id
@@ -1123,12 +1123,12 @@ function InvoicesContainer() {
1123
1123
  setStatusFilter(value);
1124
1124
  }, "handleFilterChange");
1125
1125
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
1126
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Tabs, { value: statusFilter, onValueChange: handleFilterChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TabsList, { children: [
1127
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "all", children: "All" }),
1128
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "paid" /* PAID */, children: "Paid" }),
1129
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "open" /* OPEN */, children: "Open" }),
1130
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "void" /* VOID */, children: "Void" }),
1131
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "uncollectible" /* UNCOLLECTIBLE */, children: "Uncollectible" })
1126
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Tabs, { value: statusFilter, onValueChange: handleFilterChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TabsList, { children: [
1127
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "all", children: "All" }),
1128
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "paid" /* PAID */, children: "Paid" }),
1129
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "open" /* OPEN */, children: "Open" }),
1130
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "void" /* VOID */, children: "Void" }),
1131
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "uncollectible" /* UNCOLLECTIBLE */, children: "Uncollectible" })
1132
1132
  ] }) }),
1133
1133
  loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-center py-8 text-muted-foreground", children: "Loading invoices..." }),
1134
1134
  !loading && invoices.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "border border-dashed border-gray-300 rounded-lg p-8 text-center", children: [
@@ -1188,19 +1188,19 @@ function CancelSubscriptionDialog({
1188
1188
  }
1189
1189
  }, "onSubmit");
1190
1190
  const periodEndDate = formatDate3(subscription.currentPeriodEnd);
1191
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-md", children: [
1192
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
1193
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: "Cancel Subscription" }),
1194
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: "Are you sure you want to cancel this subscription? This action cannot be undone." })
1191
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-md", children: [
1192
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
1193
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: "Cancel Subscription" }),
1194
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: "Are you sure you want to cancel this subscription? This action cannot be undone." })
1195
1195
  ] }),
1196
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
1196
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
1197
1197
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-3 text-sm text-blue-800", children: [
1198
1198
  "Your subscription will remain active until ",
1199
1199
  periodEndDate,
1200
1200
  ". You can continue using the service until then."
1201
1201
  ] }),
1202
1202
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1203
- _chunkQPWHMXE2js.FormTextarea,
1203
+ _chunkGRMFGTY3js.FormTextarea,
1204
1204
  {
1205
1205
  form,
1206
1206
  id: "reason",
@@ -1210,8 +1210,8 @@ function CancelSubscriptionDialog({
1210
1210
  }
1211
1211
  ),
1212
1212
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-x-2 justify-end pt-2", children: [
1213
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), disabled: isSubmitting, children: "Keep Subscription" }),
1214
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { type: "submit", variant: "destructive", disabled: isSubmitting, children: isSubmitting ? "Canceling..." : "Confirm Cancellation" })
1213
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), disabled: isSubmitting, children: "Keep Subscription" }),
1214
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { type: "submit", variant: "destructive", disabled: isSubmitting, children: isSubmitting ? "Canceling..." : "Confirm Cancellation" })
1215
1215
  ] })
1216
1216
  ] }) })
1217
1217
  ] }) });
@@ -1333,10 +1333,10 @@ function SubscriptionDetails({
1333
1333
  const canResume = subscription.status === "paused" /* PAUSED */;
1334
1334
  const canCancel = subscription.status === "active" /* ACTIVE */ || subscription.status === "trialing" /* TRIALING */ || subscription.status === "paused" /* PAUSED */;
1335
1335
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1336
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-2xl", children: [
1337
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
1338
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: "Subscription Details" }),
1339
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: "View and manage your subscription" })
1336
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-2xl", children: [
1337
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
1338
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: "Subscription Details" }),
1339
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: "View and manage your subscription" })
1340
1340
  ] }),
1341
1341
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [
1342
1342
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-3", children: [
@@ -1378,11 +1378,11 @@ function SubscriptionDetails({
1378
1378
  "."
1379
1379
  ] }) }),
1380
1380
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap gap-2 pt-4 border-t", children: [
1381
- onChangePlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "default", onClick: () => onChangePlan(subscription), children: "Change Plan" }),
1382
- canPause && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handlePause, disabled: isProcessing, children: isProcessing ? "Pausing..." : "Pause" }),
1383
- canResume && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handleResume, disabled: isProcessing, children: isProcessing ? "Resuming..." : "Resume" }),
1384
- canCancel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "destructive", onClick: () => setShowCancel(true), children: "Cancel" }),
1385
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handleManageViaPortal, children: "Manage via Portal" })
1381
+ onChangePlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "default", onClick: () => onChangePlan(subscription), children: "Change Plan" }),
1382
+ canPause && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handlePause, disabled: isProcessing, children: isProcessing ? "Pausing..." : "Pause" }),
1383
+ canResume && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handleResume, disabled: isProcessing, children: isProcessing ? "Resuming..." : "Resume" }),
1384
+ canCancel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "destructive", onClick: () => setShowCancel(true), children: "Cancel" }),
1385
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handleManageViaPortal, children: "Manage via Portal" })
1386
1386
  ] })
1387
1387
  ] })
1388
1388
  ] }) }),
@@ -1429,36 +1429,36 @@ function SubscriptionsList({ subscriptions, onSubscriptionsChange, onChangePlan
1429
1429
  setSelectedSub(subscription);
1430
1430
  }, "handleRowClick");
1431
1431
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1432
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border rounded-lg overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Table, { children: [
1433
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TableRow, { children: [
1434
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Status" }),
1435
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Plan" }),
1436
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Period" }),
1437
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { className: "text-right", children: "Amount" }),
1438
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { className: "text-right", children: "Actions" })
1432
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border rounded-lg overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Table, { children: [
1433
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TableRow, { children: [
1434
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Status" }),
1435
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Plan" }),
1436
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Period" }),
1437
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { className: "text-right", children: "Amount" }),
1438
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { className: "text-right", children: "Actions" })
1439
1439
  ] }) }),
1440
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableBody, { children: subscriptions.map((subscription) => {
1440
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableBody, { children: subscriptions.map((subscription) => {
1441
1441
  const price = subscription.price;
1442
1442
  const amount = _optionalChain([price, 'optionalAccess', _42 => _42.unitAmount]) ? formatCurrency(price.unitAmount, price.currency) : "0";
1443
1443
  const period = `${formatDate3(subscription.currentPeriodStart)} - ${formatDate3(subscription.currentPeriodEnd)}`;
1444
1444
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1445
- _chunkQPWHMXE2js.TableRow,
1445
+ _chunkGRMFGTY3js.TableRow,
1446
1446
  {
1447
1447
  onClick: () => handleRowClick(subscription),
1448
1448
  className: "cursor-pointer hover:bg-muted/50",
1449
1449
  children: [
1450
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1450
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1451
1451
  SubscriptionStatusBadge,
1452
1452
  {
1453
1453
  status: subscription.status,
1454
1454
  cancelAtPeriodEnd: subscription.cancelAtPeriodEnd
1455
1455
  }
1456
1456
  ) }),
1457
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "font-medium", children: formatPlanName3(price) }),
1458
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-muted-foreground text-sm", children: period }),
1459
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-right font-medium", children: amount }),
1460
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-right", children: (subscription.status === "active" /* ACTIVE */ || subscription.status === "trialing" /* TRIALING */) && onChangePlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1461
- _chunkQPWHMXE2js.Button,
1457
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "font-medium", children: formatPlanName3(price) }),
1458
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-muted-foreground text-sm", children: period }),
1459
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-right font-medium", children: amount }),
1460
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-right", children: (subscription.status === "active" /* ACTIVE */ || subscription.status === "trialing" /* TRIALING */) && onChangePlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1461
+ _chunkGRMFGTY3js.Button,
1462
1462
  {
1463
1463
  size: "sm",
1464
1464
  variant: "outline",
@@ -1526,7 +1526,7 @@ function SubscriptionsContainer({ onOpenWizard, hasActiveRecurringSubscription }
1526
1526
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-8 w-8" }),
1527
1527
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-3xl font-bold", children: "Subscriptions" })
1528
1528
  ] }),
1529
- subscriptions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => _optionalChain([onOpenWizard, 'optionalCall', _43 => _43()]), children: hasActiveRecurringSubscription ? "Purchase Add-ons" : "Subscribe to a Plan" })
1529
+ subscriptions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => _optionalChain([onOpenWizard, 'optionalCall', _43 => _43()]), children: hasActiveRecurringSubscription ? "Purchase Add-ons" : "Subscribe to a Plan" })
1530
1530
  ] }),
1531
1531
  criticalSubscriptions.map((subscription) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BillingAlertBanner, { subscription }, subscription.id)),
1532
1532
  subscriptions.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-center justify-center py-12 space-y-4", children: [
@@ -1534,7 +1534,7 @@ function SubscriptionsContainer({ onOpenWizard, hasActiveRecurringSubscription }
1534
1534
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center", children: [
1535
1535
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-xl font-semibold mb-2", children: "No Active Subscriptions" }),
1536
1536
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mb-6", children: "Choose a subscription plan to get started with our services." }),
1537
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => _optionalChain([onOpenWizard, 'optionalCall', _44 => _44()]), children: "Subscribe to a Plan" })
1537
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => _optionalChain([onOpenWizard, 'optionalCall', _44 => _44()]), children: "Subscribe to a Plan" })
1538
1538
  ] })
1539
1539
  ] }),
1540
1540
  subscriptions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1555,9 +1555,9 @@ function IntervalToggle({ value, onChange, hasMonthly, hasYearly }) {
1555
1555
  if (!hasMonthly || !hasYearly) {
1556
1556
  return null;
1557
1557
  }
1558
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Tabs, { value, onValueChange: (v) => onChange(v), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TabsList, { children: [
1559
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "month", children: "Monthly" }),
1560
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TabsTrigger, { value: "year", children: "Yearly" })
1558
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Tabs, { value, onValueChange: (v) => onChange(v), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TabsList, { children: [
1559
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "month", children: "Monthly" }),
1560
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TabsTrigger, { value: "year", children: "Yearly" })
1561
1561
  ] }) });
1562
1562
  }
1563
1563
  _chunk7QVYU63Ejs.__name.call(void 0, IntervalToggle, "IntervalToggle");
@@ -1589,7 +1589,7 @@ function PricingCard({
1589
1589
  }
1590
1590
  }, "handleClick");
1591
1591
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1592
- _chunkQPWHMXE2js.Card,
1592
+ _chunkGRMFGTY3js.Card,
1593
1593
  {
1594
1594
  role: "radio",
1595
1595
  "aria-checked": isSelected,
@@ -1607,9 +1607,9 @@ function PricingCard({
1607
1607
  isLoading && "pointer-events-none"
1608
1608
  ),
1609
1609
  children: [
1610
- isCurrentPlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Badge, { variant: "secondary", className: "absolute top-2 right-2", children: "Current" }),
1611
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "pb-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-lg", children: description }) }),
1612
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { className: "pb-4 grow", children: [
1610
+ isCurrentPlan && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Badge, { variant: "secondary", className: "absolute top-2 right-2", children: "Current" }),
1611
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "pb-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-lg", children: description }) }),
1612
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { className: "pb-4 grow", children: [
1613
1613
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mb-4", children: [
1614
1614
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-3xl font-bold", children: formattedPrice }),
1615
1615
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground ml-1", children: interval })
@@ -1619,8 +1619,8 @@ function PricingCard({
1619
1619
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-muted-foreground", children: feature })
1620
1620
  ] }, index)) })
1621
1621
  ] }),
1622
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardFooter, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1623
- _chunkQPWHMXE2js.Button,
1622
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardFooter, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1623
+ _chunkGRMFGTY3js.Button,
1624
1624
  {
1625
1625
  variant: isCurrentPlan ? "secondary" : isSelected ? "default" : "outline",
1626
1626
  className: "w-full",
@@ -1748,15 +1748,15 @@ function ProductPricingList({
1748
1748
  _chunk7QVYU63Ejs.__name.call(void 0, ProductPricingList, "ProductPricingList");
1749
1749
  function ProductPricingListSkeleton() {
1750
1750
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-6", children: [1, 2].map((rowIndex) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-3", children: [
1751
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-32" }),
1751
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-32" }),
1752
1752
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4", children: [1, 2, 3].map((cardIndex) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-4 rounded-lg border animate-pulse space-y-3", children: [
1753
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-6 w-24" }),
1754
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-8 w-32" }),
1753
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-6 w-24" }),
1754
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-8 w-32" }),
1755
1755
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
1756
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-full" }),
1757
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-4 w-3/4" })
1756
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-full" }),
1757
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-4 w-3/4" })
1758
1758
  ] }),
1759
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Skeleton, { className: "h-10 w-full" })
1759
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Skeleton, { className: "h-10 w-full" })
1760
1760
  ] }, cardIndex)) })
1761
1761
  ] }, rowIndex)) });
1762
1762
  }
@@ -1811,8 +1811,8 @@ function SubscriptionConfirmation({ price, isLoading, onConfirm, onCancel }) {
1811
1811
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: feature })
1812
1812
  ] }, index)) }),
1813
1813
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-end gap-3 pt-2 border-t border-accent/30", children: [
1814
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: onCancel, disabled: isLoading, children: "Cancel" }),
1815
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: onConfirm, disabled: isLoading, children: isLoading ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1814
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: onCancel, disabled: isLoading, children: "Cancel" }),
1815
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: onConfirm, disabled: isLoading, children: isLoading ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1816
1816
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-4 w-4 animate-spin mr-2" }),
1817
1817
  "Processing..."
1818
1818
  ] }) : "Subscribe" })
@@ -2142,7 +2142,7 @@ function WizardStepPlanSelection({
2142
2142
  onSelectPrice: handleSelectPrice
2143
2143
  }
2144
2144
  ),
2145
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-end pt-4 border-t", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: onNext, disabled: !selectedPrice || isProcessing, children: isProcessing ? "Loading..." : "Next: Review" }) })
2145
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-end pt-4 border-t", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: onNext, disabled: !selectedPrice || isProcessing, children: isProcessing ? "Loading..." : "Next: Review" }) })
2146
2146
  ] });
2147
2147
  }
2148
2148
  _chunk7QVYU63Ejs.__name.call(void 0, WizardStepPlanSelection, "WizardStepPlanSelection");
@@ -2203,7 +2203,7 @@ function PromoCodeInput({
2203
2203
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-green-600", children: formatDiscount(appliedCode) })
2204
2204
  ] }),
2205
2205
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2206
- _chunkQPWHMXE2js.Button,
2206
+ _chunkGRMFGTY3js.Button,
2207
2207
  {
2208
2208
  variant: "ghost",
2209
2209
  size: "sm",
@@ -2220,7 +2220,7 @@ function PromoCodeInput({
2220
2220
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
2221
2221
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2", children: [
2222
2222
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2223
- _chunkQPWHMXE2js.Input,
2223
+ _chunkGRMFGTY3js.Input,
2224
2224
  {
2225
2225
  placeholder: "Enter promo code",
2226
2226
  value: code,
@@ -2230,7 +2230,7 @@ function PromoCodeInput({
2230
2230
  className: "flex-1"
2231
2231
  }
2232
2232
  ),
2233
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: handleApply, disabled: disabled || isValidating || !code.trim(), children: isValidating ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-4 w-4 animate-spin" }) : "Apply" })
2233
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: handleApply, disabled: disabled || isValidating || !code.trim(), children: isValidating ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-4 w-4 animate-spin" }) : "Apply" })
2234
2234
  ] }),
2235
2235
  error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-red-500", children: error })
2236
2236
  ] });
@@ -2354,15 +2354,15 @@ function WizardStepReview({
2354
2354
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h4", { className: "font-medium", children: "Payment Method" }),
2355
2355
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-muted-foreground", children: hasPaymentMethod ? "A payment method is on file" : "No payment method on file" })
2356
2356
  ] }),
2357
- !hasPaymentMethod && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: onAddPaymentMethod, children: "Add Payment Method" })
2357
+ !hasPaymentMethod && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: onAddPaymentMethod, children: "Add Payment Method" })
2358
2358
  ] }) }),
2359
- error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Alert, { variant: "destructive", children: [
2359
+ error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Alert, { variant: "destructive", children: [
2360
2360
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertCircle, { className: "h-4 w-4" }),
2361
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDescription, { children: error })
2361
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDescription, { children: error })
2362
2362
  ] }),
2363
2363
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-between pt-4 border-t", children: [
2364
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", onClick: onBack, disabled: isProcessing, children: "Back" }),
2365
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: hasPaymentMethod ? onConfirm : onAddPaymentMethod, disabled: isProcessing, children: isProcessing ? "Processing..." : hasPaymentMethod ? isChangingPlan ? "Confirm Plan Change" : "Subscribe Now" : "Add Payment Method" })
2364
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", onClick: onBack, disabled: isProcessing, children: "Back" }),
2365
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: hasPaymentMethod ? onConfirm : onAddPaymentMethod, disabled: isProcessing, children: isProcessing ? "Processing..." : hasPaymentMethod ? isChangingPlan ? "Confirm Plan Change" : "Subscribe Now" : "Add Payment Method" })
2366
2366
  ] })
2367
2367
  ] });
2368
2368
  }
@@ -2415,10 +2415,10 @@ function SubscriptionWizard({
2415
2415
  const isChangePlanMode = !!subscription;
2416
2416
  const dialogTitle = subscription ? "Change Subscription Plan" : isPurchasingAddons ? "Purchase Add-ons" : "Subscribe to a Plan";
2417
2417
  const dialogDescription = subscription ? "Select a new plan for your subscription" : isPurchasingAddons ? "Select one-time products to purchase" : "Choose a subscription plan to get started";
2418
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-2xl", children: [
2419
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
2420
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: dialogTitle }),
2421
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: dialogDescription })
2418
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-2xl", children: [
2419
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
2420
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: dialogTitle }),
2421
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: dialogDescription })
2422
2422
  ] }),
2423
2423
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WizardProgressIndicator, { currentStep: state.step }),
2424
2424
  state.step === "plan-selection" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -2501,15 +2501,15 @@ function UsageSummaryCard({ meter, summary }) {
2501
2501
  const progressWidth = percentage !== null ? Math.min(percentage, 100) : 0;
2502
2502
  const displayName = meter.displayName || meter.eventName;
2503
2503
  const hasLimit = limit !== null && limit !== void 0;
2504
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
2505
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "flex flex-row items-center gap-x-3 pb-3", children: [
2504
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
2505
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "flex flex-row items-center gap-x-3 pb-3", children: [
2506
2506
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-blue-100 text-blue-600", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Activity, { className: "h-5 w-5" }) }),
2507
2507
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
2508
2508
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold", children: displayName }),
2509
2509
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs text-gray-500", children: meter.id })
2510
2510
  ] })
2511
2511
  ] }),
2512
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardContent, { className: "flex flex-col gap-y-4", children: [
2512
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardContent, { className: "flex flex-col gap-y-4", children: [
2513
2513
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
2514
2514
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-3xl font-bold", children: currentUsage.toLocaleString() }),
2515
2515
  hasLimit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-sm text-gray-500", children: [
@@ -2637,21 +2637,21 @@ function UsageHistoryTable({ usageRecords }) {
2637
2637
  }
2638
2638
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-4", children: [
2639
2639
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-xl font-semibold", children: "Usage History" }),
2640
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-clip rounded-lg border", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Table, { children: [
2641
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TableRow, { children: [
2642
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Date & Time" }),
2643
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Meter Event" }),
2644
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { className: "text-right", children: "Quantity" }),
2645
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableHead, { children: "Event ID" })
2640
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-clip rounded-lg border", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Table, { children: [
2641
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHeader, { className: "bg-muted", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TableRow, { children: [
2642
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Date & Time" }),
2643
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Meter Event" }),
2644
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { className: "text-right", children: "Quantity" }),
2645
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableHead, { children: "Event ID" })
2646
2646
  ] }) }),
2647
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableBody, { children: usageRecords.map((record) => {
2647
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableBody, { children: usageRecords.map((record) => {
2648
2648
  const dateTime = formatDateTime(record.timestamp);
2649
2649
  const quantity = record.quantity.toLocaleString();
2650
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.TableRow, { children: [
2651
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "font-medium", children: dateTime }),
2652
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-muted-foreground", children: record.meterEventName }),
2653
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-right font-medium", children: quantity }),
2654
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.TableCell, { className: "text-muted-foreground text-sm font-mono", children: record.stripeEventId })
2650
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.TableRow, { children: [
2651
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "font-medium", children: dateTime }),
2652
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-muted-foreground", children: record.meterEventName }),
2653
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-right font-medium", children: quantity }),
2654
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.TableCell, { className: "text-muted-foreground text-sm font-mono", children: record.stripeEventId })
2655
2655
  ] }, record.id);
2656
2656
  }) })
2657
2657
  ] }) })
@@ -2662,8 +2662,8 @@ _chunk7QVYU63Ejs.__name.call(void 0, UsageHistoryTable, "UsageHistoryTable");
2662
2662
  // src/features/billing/components/modals/BillingDetailModal.tsx
2663
2663
 
2664
2664
  function BillingDetailModal({ open, onOpenChange, title, children, className }) {
2665
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: _nullishCoalesce(className, () => ( "max-w-4xl max-h-[90vh] overflow-y-auto")), children: [
2666
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: title }) }),
2665
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: _nullishCoalesce(className, () => ( "max-w-4xl max-h-[90vh] overflow-y-auto")), children: [
2666
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: title }) }),
2667
2667
  children
2668
2668
  ] }) });
2669
2669
  }
@@ -2680,7 +2680,7 @@ function BillingAlertBanner({ subscription, onUpdatePayment, onAddPayment }) {
2680
2680
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-red-900", children: "Payment Failed" }),
2681
2681
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-red-700 mt-1", children: "Your last payment failed. Please update your payment method to avoid service interruption." })
2682
2682
  ] }),
2683
- onUpdatePayment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", size: "sm", onClick: onUpdatePayment, className: "border-red-300 text-red-700", children: "Update Payment Method" })
2683
+ onUpdatePayment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", size: "sm", onClick: onUpdatePayment, className: "border-red-300 text-red-700", children: "Update Payment Method" })
2684
2684
  ] });
2685
2685
  }
2686
2686
  if (subscription.status === "trialing" /* TRIALING */ && subscription.trialEnd) {
@@ -2700,7 +2700,7 @@ function BillingAlertBanner({ subscription, onUpdatePayment, onAddPayment }) {
2700
2700
  ". Add a payment method to continue your subscription."
2701
2701
  ] })
2702
2702
  ] }),
2703
- onAddPayment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", size: "sm", onClick: onAddPayment, className: "border-yellow-300 text-yellow-700", children: "Add Payment Method" })
2703
+ onAddPayment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", size: "sm", onClick: onAddPayment, className: "border-yellow-300 text-yellow-700", children: "Add Payment Method" })
2704
2704
  ] });
2705
2705
  }
2706
2706
  }
@@ -2924,18 +2924,18 @@ function BillingDashboardContainer() {
2924
2924
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wallet, { className: "h-8 w-8" }),
2925
2925
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-3xl font-bold", children: "Billing" })
2926
2926
  ] }),
2927
- isInitialLoading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-8 w-8 animate-spin text-muted-foreground" }) }) }),
2928
- noCustomerExists && !isInitialLoading && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Card, { children: [
2929
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.CardHeader, { className: "text-center", children: [
2927
+ isInitialLoading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-8 w-8 animate-spin text-muted-foreground" }) }) }),
2928
+ noCustomerExists && !isInitialLoading && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Card, { children: [
2929
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.CardHeader, { className: "text-center", children: [
2930
2930
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CreditCard, { className: "h-8 w-8 text-primary" }) }),
2931
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardTitle, { children: "Set Up Billing" }),
2932
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardDescription, { children: "Your company doesn't have a billing account yet. Set one up to manage subscriptions, payment methods, and view invoices." })
2931
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardTitle, { children: "Set Up Billing" }),
2932
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardDescription, { children: "Your company doesn't have a billing account yet. Set one up to manage subscriptions, payment methods, and view invoices." })
2933
2933
  ] }),
2934
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { className: "flex justify-center pb-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: handleCreateCustomer, disabled: creatingCustomer, size: "lg", children: creatingCustomer ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2934
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { className: "flex justify-center pb-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: handleCreateCustomer, disabled: creatingCustomer, size: "lg", children: creatingCustomer ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2935
2935
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
2936
2936
  "Setting up..."
2937
2937
  ] }) : "Set Up Billing Account" }) }),
2938
- errors.customer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CardContent, { className: "pt-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-center text-sm text-destructive", children: errors.customer }) })
2938
+ errors.customer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CardContent, { className: "pt-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-center text-sm text-destructive", children: errors.customer }) })
2939
2939
  ] }),
2940
2940
  !noCustomerExists && !isInitialLoading && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2941
2941
  criticalSubscriptions.map((subscription) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -3251,10 +3251,10 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3251
3251
  { id: "licensed", text: "Licensed (per unit)" },
3252
3252
  { id: "metered", text: "Metered (usage-based)" }
3253
3253
  ];
3254
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-2xl", children: [
3255
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
3256
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: isEditMode ? "Edit Price" : "Create Price" }),
3257
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: isEditMode ? "Update the price details. Note: Only nickname and active status can be changed." : "Create a new price for this product" })
3254
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-2xl", children: [
3255
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
3256
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: isEditMode ? "Edit Price" : "Create Price" }),
3257
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: isEditMode ? "Update the price details. Note: Only nickname and active status can be changed." : "Create a new price for this product" })
3258
3258
  ] }),
3259
3259
  isEditMode && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4 flex gap-x-3", children: [
3260
3260
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertCircle, { className: "h-5 w-5 text-blue-600 flex-shrink-0 mt-0.5" }),
@@ -3263,10 +3263,10 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3263
3263
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { children: "Due to Stripe's architecture, only the nickname and active status can be modified after creation. To change amount, currency, or billing interval, create a new price." })
3264
3264
  ] })
3265
3265
  ] }),
3266
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
3266
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
3267
3267
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-2 gap-x-4", children: [
3268
3268
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3269
- _chunkQPWHMXE2js.FormInput,
3269
+ _chunkGRMFGTY3js.FormInput,
3270
3270
  {
3271
3271
  form,
3272
3272
  id: "unitAmount",
@@ -3276,10 +3276,10 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3276
3276
  isRequired: true
3277
3277
  }
3278
3278
  ),
3279
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.FormSelect, { form, id: "currency", name: "Currency", values: currencyOptions, disabled: isEditMode })
3279
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.FormSelect, { form, id: "currency", name: "Currency", values: currencyOptions, disabled: isEditMode })
3280
3280
  ] }),
3281
3281
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3282
- _chunkQPWHMXE2js.FormSelect,
3282
+ _chunkGRMFGTY3js.FormSelect,
3283
3283
  {
3284
3284
  form,
3285
3285
  id: "interval",
@@ -3290,7 +3290,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3290
3290
  ),
3291
3291
  isRecurring && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-2 gap-x-4", children: [
3292
3292
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3293
- _chunkQPWHMXE2js.FormInput,
3293
+ _chunkGRMFGTY3js.FormInput,
3294
3294
  {
3295
3295
  form,
3296
3296
  id: "intervalCount",
@@ -3301,7 +3301,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3301
3301
  }
3302
3302
  ),
3303
3303
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3304
- _chunkQPWHMXE2js.FormSelect,
3304
+ _chunkGRMFGTY3js.FormSelect,
3305
3305
  {
3306
3306
  form,
3307
3307
  id: "usageType",
@@ -3312,7 +3312,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3312
3312
  )
3313
3313
  ] }),
3314
3314
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3315
- _chunkQPWHMXE2js.FormInput,
3315
+ _chunkGRMFGTY3js.FormInput,
3316
3316
  {
3317
3317
  form,
3318
3318
  id: "nickname",
@@ -3321,7 +3321,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3321
3321
  }
3322
3322
  ),
3323
3323
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3324
- _chunkQPWHMXE2js.FormTextarea,
3324
+ _chunkGRMFGTY3js.FormTextarea,
3325
3325
  {
3326
3326
  form,
3327
3327
  id: "description",
@@ -3330,13 +3330,13 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3330
3330
  className: "min-h-24"
3331
3331
  }
3332
3332
  ),
3333
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.FormInput, { form, id: "token", name: "Token (optional)", placeholder: "Enter token value" }),
3333
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.FormInput, { form, id: "token", name: "Token (optional)", placeholder: "Enter token value" }),
3334
3334
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
3335
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Label, { children: "Features (optional)" }),
3335
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Label, { children: "Features (optional)" }),
3336
3336
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
3337
3337
  form.watch("features").map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2", children: [
3338
3338
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3339
- _chunkQPWHMXE2js.Input,
3339
+ _chunkGRMFGTY3js.Input,
3340
3340
  {
3341
3341
  ...form.register(`features.${index}`),
3342
3342
  placeholder: `Feature ${index + 1}`,
@@ -3344,7 +3344,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3344
3344
  }
3345
3345
  ),
3346
3346
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3347
- _chunkQPWHMXE2js.Button,
3347
+ _chunkGRMFGTY3js.Button,
3348
3348
  {
3349
3349
  type: "button",
3350
3350
  variant: "outline",
@@ -3361,7 +3361,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3361
3361
  )
3362
3362
  ] }, index)),
3363
3363
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3364
- _chunkQPWHMXE2js.Button,
3364
+ _chunkGRMFGTY3js.Button,
3365
3365
  {
3366
3366
  type: "button",
3367
3367
  variant: "outline",
@@ -3380,7 +3380,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3380
3380
  ] })
3381
3381
  ] }),
3382
3382
  isRecurring && allFeatures.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
3383
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Label, { children: "Platform Features" }),
3383
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Label, { children: "Platform Features" }),
3384
3384
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border rounded-md p-4 space-y-2 max-h-48 overflow-y-auto", children: allFeatures.map((feature) => {
3385
3385
  const isCore = feature.isCore;
3386
3386
  const isChecked = form.watch("featureIds").includes(feature.id);
@@ -3422,9 +3422,9 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3422
3422
  ] }, feature.id);
3423
3423
  }) })
3424
3424
  ] }),
3425
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.FormCheckbox, { form, id: "active", name: "Active" }),
3425
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.FormCheckbox, { form, id: "active", name: "Active" }),
3426
3426
  isRecurring && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3427
- _chunkQPWHMXE2js.FormCheckbox,
3427
+ _chunkGRMFGTY3js.FormCheckbox,
3428
3428
  {
3429
3429
  form,
3430
3430
  id: "isTrial",
@@ -3432,7 +3432,7 @@ function PriceEditor({ productId, price, open, onOpenChange, onSuccess }) {
3432
3432
  description: "Mark this as the trial subscription plan (only one price should be marked as trial)"
3433
3433
  }
3434
3434
  ),
3435
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CommonEditorButtons, { isEdit: isEditMode, form, disabled: isSubmitting, setOpen: onOpenChange })
3435
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CommonEditorButtons, { isEdit: isEditMode, form, disabled: isSubmitting, setOpen: onOpenChange })
3436
3436
  ] }) })
3437
3437
  ] }) });
3438
3438
  }
@@ -3518,12 +3518,12 @@ function PricesList({ productId, onPricesChange }) {
3518
3518
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
3519
3519
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between mb-4", children: [
3520
3520
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h4", { className: "text-lg font-semibold", children: "Prices" }),
3521
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { size: "sm", onClick: () => setShowCreatePrice(true), children: "Add Price" })
3521
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { size: "sm", onClick: () => setShowCreatePrice(true), children: "Add Price" })
3522
3522
  ] }),
3523
3523
  prices.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-background flex flex-col items-center justify-center gap-y-3 rounded-lg border border-dashed p-8", children: [
3524
3524
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.DollarSign, { className: "text-muted-foreground h-12 w-12" }),
3525
3525
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: "No prices yet. Add a price to enable subscriptions." }),
3526
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { size: "sm", onClick: () => setShowCreatePrice(true), children: "Add Price" })
3526
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { size: "sm", onClick: () => setShowCreatePrice(true), children: "Add Price" })
3527
3527
  ] }),
3528
3528
  prices.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: prices.map((price) => {
3529
3529
  const isArchiving = archivingPriceId === price.id;
@@ -3532,9 +3532,9 @@ function PricesList({ productId, onPricesChange }) {
3532
3532
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start justify-between mb-3", children: [
3533
3533
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.DollarSign, { className: "h-5 w-5 text-primary" }),
3534
3534
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-1", children: [
3535
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "ghost", size: "sm", onClick: () => setEditingPrice(price), className: "h-8 w-8 p-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Edit, { className: "h-4 w-4" }) }),
3535
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "ghost", size: "sm", onClick: () => setEditingPrice(price), className: "h-8 w-8 p-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Edit, { className: "h-4 w-4" }) }),
3536
3536
  price.active ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3537
- _chunkQPWHMXE2js.Button,
3537
+ _chunkGRMFGTY3js.Button,
3538
3538
  {
3539
3539
  variant: "ghost",
3540
3540
  size: "sm",
@@ -3544,7 +3544,7 @@ function PricesList({ productId, onPricesChange }) {
3544
3544
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Archive, { className: "h-4 w-4" })
3545
3545
  }
3546
3546
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3547
- _chunkQPWHMXE2js.Button,
3547
+ _chunkGRMFGTY3js.Button,
3548
3548
  {
3549
3549
  variant: "ghost",
3550
3550
  size: "sm",
@@ -3595,20 +3595,20 @@ function PricesList({ productId, onPricesChange }) {
3595
3595
  }
3596
3596
  }
3597
3597
  ),
3598
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialog, { open: !!priceToArchive, onOpenChange: (open) => !open && setPriceToArchive(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogContent, { children: [
3599
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogHeader, { children: [
3600
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogTitle, { children: "Archive Price" }),
3601
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogDescription, { children: [
3598
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialog, { open: !!priceToArchive, onOpenChange: (open) => !open && setPriceToArchive(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogContent, { children: [
3599
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogHeader, { children: [
3600
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogTitle, { children: "Archive Price" }),
3601
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogDescription, { children: [
3602
3602
  "Are you sure you want to archive the price for",
3603
3603
  " ",
3604
3604
  priceToArchive && `${formatCurrency(priceToArchive.unitAmount, priceToArchive.currency)} ${formatInterval2(priceToArchive)}`,
3605
3605
  "? This will prevent new subscriptions but existing ones will continue."
3606
3606
  ] })
3607
3607
  ] }),
3608
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogFooter, { children: [
3609
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogCancel, { disabled: !!archivingPriceId, children: "Cancel" }),
3608
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogFooter, { children: [
3609
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogCancel, { disabled: !!archivingPriceId, children: "Cancel" }),
3610
3610
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3611
- _chunkQPWHMXE2js.AlertDialogAction,
3611
+ _chunkGRMFGTY3js.AlertDialogAction,
3612
3612
  {
3613
3613
  onClick: handleArchive,
3614
3614
  disabled: !!archivingPriceId,
@@ -3618,20 +3618,20 @@ function PricesList({ productId, onPricesChange }) {
3618
3618
  )
3619
3619
  ] })
3620
3620
  ] }) }),
3621
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialog, { open: !!priceToReactivate, onOpenChange: (open) => !open && setPriceToReactivate(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogContent, { children: [
3622
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogHeader, { children: [
3623
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogTitle, { children: "Reactivate Price" }),
3624
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogDescription, { children: [
3621
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialog, { open: !!priceToReactivate, onOpenChange: (open) => !open && setPriceToReactivate(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogContent, { children: [
3622
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogHeader, { children: [
3623
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogTitle, { children: "Reactivate Price" }),
3624
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogDescription, { children: [
3625
3625
  "Are you sure you want to reactivate the price for",
3626
3626
  " ",
3627
3627
  priceToReactivate && `${formatCurrency(priceToReactivate.unitAmount, priceToReactivate.currency)} ${formatInterval2(priceToReactivate)}`,
3628
3628
  "? This will allow new subscriptions again."
3629
3629
  ] })
3630
3630
  ] }),
3631
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogFooter, { children: [
3632
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogCancel, { disabled: !!reactivatingPriceId, children: "Cancel" }),
3631
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogFooter, { children: [
3632
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogCancel, { disabled: !!reactivatingPriceId, children: "Cancel" }),
3633
3633
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3634
- _chunkQPWHMXE2js.AlertDialogAction,
3634
+ _chunkGRMFGTY3js.AlertDialogAction,
3635
3635
  {
3636
3636
  onClick: handleReactivate,
3637
3637
  disabled: !!reactivatingPriceId,
@@ -3697,15 +3697,15 @@ function ProductEditor({ product, open, onOpenChange, onSuccess }) {
3697
3697
  setIsSubmitting(false);
3698
3698
  }
3699
3699
  }, "onSubmit");
3700
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogContent, { className: "max-w-2xl", children: [
3701
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.DialogHeader, { children: [
3702
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogTitle, { children: product ? "Edit Product" : "Create Product" }),
3703
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.DialogDescription, { children: product ? `Update the details for ${product.name}` : "Create a new product to offer to your customers" })
3700
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogContent, { className: "max-w-2xl", children: [
3701
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.DialogHeader, { children: [
3702
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogTitle, { children: product ? "Edit Product" : "Create Product" }),
3703
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.DialogDescription, { children: product ? `Update the details for ${product.name}` : "Create a new product to offer to your customers" })
3704
3704
  ] }),
3705
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
3706
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.FormInput, { form, id: "name", name: "Product Name", placeholder: "Enter product name", isRequired: true }),
3705
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Form, { ...form, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: form.handleSubmit(onSubmit), className: "flex flex-col gap-y-4", children: [
3706
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.FormInput, { form, id: "name", name: "Product Name", placeholder: "Enter product name", isRequired: true }),
3707
3707
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3708
- _chunkQPWHMXE2js.FormTextarea,
3708
+ _chunkGRMFGTY3js.FormTextarea,
3709
3709
  {
3710
3710
  form,
3711
3711
  id: "description",
@@ -3714,8 +3714,8 @@ function ProductEditor({ product, open, onOpenChange, onSuccess }) {
3714
3714
  className: "min-h-32"
3715
3715
  }
3716
3716
  ),
3717
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.FormCheckbox, { form, id: "active", name: "Active" }),
3718
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.CommonEditorButtons, { isEdit: !!product, form, disabled: isSubmitting, setOpen: onOpenChange })
3717
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.FormCheckbox, { form, id: "active", name: "Active" }),
3718
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.CommonEditorButtons, { isEdit: !!product, form, disabled: isSubmitting, setOpen: onOpenChange })
3719
3719
  ] }) })
3720
3720
  ] }) });
3721
3721
  }
@@ -3782,12 +3782,12 @@ function ProductsList({ products, onProductsChange }) {
3782
3782
  ] })
3783
3783
  ] }),
3784
3784
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
3785
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.Button, { variant: "outline", size: "sm", onClick: () => setEditingProduct(product), children: [
3785
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.Button, { variant: "outline", size: "sm", onClick: () => setEditingProduct(product), children: [
3786
3786
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Edit, { className: "h-4 w-4 mr-1" }),
3787
3787
  "Edit"
3788
3788
  ] }),
3789
3789
  product.active ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3790
- _chunkQPWHMXE2js.Button,
3790
+ _chunkGRMFGTY3js.Button,
3791
3791
  {
3792
3792
  variant: "outline",
3793
3793
  size: "sm",
@@ -3799,7 +3799,7 @@ function ProductsList({ products, onProductsChange }) {
3799
3799
  ]
3800
3800
  }
3801
3801
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3802
- _chunkQPWHMXE2js.Button,
3802
+ _chunkGRMFGTY3js.Button,
3803
3803
  {
3804
3804
  variant: "outline",
3805
3805
  size: "sm",
@@ -3811,7 +3811,7 @@ function ProductsList({ products, onProductsChange }) {
3811
3811
  ]
3812
3812
  }
3813
3813
  ),
3814
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { variant: "ghost", size: "sm", onClick: () => toggleExpand(product.id), children: isExpanded ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronUp, { className: "h-5 w-5" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown, { className: "h-5 w-5" }) })
3814
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { variant: "ghost", size: "sm", onClick: () => toggleExpand(product.id), children: isExpanded ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronUp, { className: "h-5 w-5" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown, { className: "h-5 w-5" }) })
3815
3815
  ] })
3816
3816
  ] }),
3817
3817
  isExpanded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-t bg-muted/30 p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PricesList, { productId: product.id, onPricesChange: onProductsChange }) })
@@ -3829,19 +3829,19 @@ function ProductsList({ products, onProductsChange }) {
3829
3829
  }
3830
3830
  }
3831
3831
  ),
3832
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialog, { open: !!productToArchive, onOpenChange: (open) => !open && setProductToArchive(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogContent, { children: [
3833
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogHeader, { children: [
3834
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogTitle, { children: "Archive Product" }),
3835
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogDescription, { children: [
3832
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialog, { open: !!productToArchive, onOpenChange: (open) => !open && setProductToArchive(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogContent, { children: [
3833
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogHeader, { children: [
3834
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogTitle, { children: "Archive Product" }),
3835
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogDescription, { children: [
3836
3836
  'Are you sure you want to archive "',
3837
3837
  _optionalChain([productToArchive, 'optionalAccess', _165 => _165.name]),
3838
3838
  '"? This will deactivate it and it will no longer be available for new subscriptions.'
3839
3839
  ] })
3840
3840
  ] }),
3841
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogFooter, { children: [
3842
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogCancel, { disabled: !!archivingProductId, children: "Cancel" }),
3841
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogFooter, { children: [
3842
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogCancel, { disabled: !!archivingProductId, children: "Cancel" }),
3843
3843
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3844
- _chunkQPWHMXE2js.AlertDialogAction,
3844
+ _chunkGRMFGTY3js.AlertDialogAction,
3845
3845
  {
3846
3846
  onClick: handleArchive,
3847
3847
  disabled: !!archivingProductId,
@@ -3851,19 +3851,19 @@ function ProductsList({ products, onProductsChange }) {
3851
3851
  )
3852
3852
  ] })
3853
3853
  ] }) }),
3854
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialog, { open: !!productToReactivate, onOpenChange: (open) => !open && setProductToReactivate(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogContent, { children: [
3855
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogHeader, { children: [
3856
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogTitle, { children: "Reactivate Product" }),
3857
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogDescription, { children: [
3854
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialog, { open: !!productToReactivate, onOpenChange: (open) => !open && setProductToReactivate(null), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogContent, { children: [
3855
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogHeader, { children: [
3856
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogTitle, { children: "Reactivate Product" }),
3857
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogDescription, { children: [
3858
3858
  'Are you sure you want to reactivate "',
3859
3859
  _optionalChain([productToReactivate, 'optionalAccess', _166 => _166.name]),
3860
3860
  '"? This will make it available for new subscriptions again.'
3861
3861
  ] })
3862
3862
  ] }),
3863
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkQPWHMXE2js.AlertDialogFooter, { children: [
3864
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.AlertDialogCancel, { disabled: !!reactivatingProductId, children: "Cancel" }),
3863
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGRMFGTY3js.AlertDialogFooter, { children: [
3864
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.AlertDialogCancel, { disabled: !!reactivatingProductId, children: "Cancel" }),
3865
3865
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3866
- _chunkQPWHMXE2js.AlertDialogAction,
3866
+ _chunkGRMFGTY3js.AlertDialogAction,
3867
3867
  {
3868
3868
  onClick: handleReactivate,
3869
3869
  disabled: !!reactivatingProductId,
@@ -3880,7 +3880,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, ProductsList, "ProductsList");
3880
3880
  // src/features/billing/stripe-product/components/containers/ProductsAdminContainer.tsx
3881
3881
 
3882
3882
  function ProductsAdminContainer() {
3883
- const { hasRole } = _chunkQPWHMXE2js.useCurrentUserContext.call(void 0, );
3883
+ const { hasRole } = _chunkGRMFGTY3js.useCurrentUserContext.call(void 0, );
3884
3884
  const [products, setProducts] = _react.useState.call(void 0, []);
3885
3885
  const [loading, setLoading] = _react.useState.call(void 0, true);
3886
3886
  const [showCreateProduct, setShowCreateProduct] = _react.useState.call(void 0, false);
@@ -3910,14 +3910,14 @@ function ProductsAdminContainer() {
3910
3910
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Package, { className: "h-8 w-8" }),
3911
3911
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-3xl font-bold", children: "Product & Price Management" })
3912
3912
  ] }),
3913
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => setShowCreateProduct(true), children: "Create Product" })
3913
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => setShowCreateProduct(true), children: "Create Product" })
3914
3914
  ] }),
3915
3915
  products.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-muted/50 flex flex-col items-center justify-center gap-y-4 rounded-lg border-2 border-dashed p-12", children: [
3916
3916
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Package, { className: "text-muted-foreground h-16 w-16" }),
3917
3917
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center", children: [
3918
3918
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "mb-2 text-xl font-semibold", children: "No products yet" }),
3919
3919
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mb-4", children: "Create your first product to start offering subscriptions to your customers." }),
3920
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQPWHMXE2js.Button, { onClick: () => setShowCreateProduct(true), children: "Create Your First Product" })
3920
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGRMFGTY3js.Button, { onClick: () => setShowCreateProduct(true), children: "Create Your First Product" })
3921
3921
  ] })
3922
3922
  ] }),
3923
3923
  products.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProductsList, { products, onProductsChange: loadProducts }),