@nextblock-cms/ecom 0.13.4 → 0.13.6

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 (123) hide show
  1. package/lib/CurrencyProvider.cjs.js +1 -1
  2. package/lib/CurrencyProvider.es.js +31 -27
  3. package/lib/components/AccountNavigationMenu.cjs.js +1 -1
  4. package/lib/components/AccountNavigationMenu.es.js +53 -26
  5. package/lib/components/AddToCartButton.cjs.js +1 -1
  6. package/lib/components/AddToCartButton.es.js +49 -25
  7. package/lib/components/Cart.cjs.js +1 -1
  8. package/lib/components/Cart.es.js +367 -115
  9. package/lib/components/CartDrawer.cjs.js +1 -1
  10. package/lib/components/CartDrawer.es.js +272 -88
  11. package/lib/components/CartIcon.cjs.js +1 -1
  12. package/lib/components/CartIcon.es.js +44 -16
  13. package/lib/components/Checkout.cjs.js +1 -1
  14. package/lib/components/Checkout.es.js +1601 -694
  15. package/lib/components/CouponForm.cjs.js +1 -1
  16. package/lib/components/CouponForm.es.js +160 -96
  17. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  18. package/lib/components/CurrencySwitcher.es.js +32 -12
  19. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  20. package/lib/components/CustomerProfileForm.es.js +666 -250
  21. package/lib/components/FeaturedProduct.cjs.js +1 -1
  22. package/lib/components/FeaturedProduct.es.js +126 -42
  23. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  24. package/lib/components/FreemiusLicensePanel.es.js +125 -45
  25. package/lib/components/InvoiceDocument.cjs.js +1 -1
  26. package/lib/components/InvoiceDocument.es.js +485 -146
  27. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  28. package/lib/components/InvoiceViewerShell.es.js +142 -54
  29. package/lib/components/ProductCard.cjs.js +1 -1
  30. package/lib/components/ProductCard.es.js +224 -81
  31. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  32. package/lib/components/ProductDetailsLayout.es.js +629 -275
  33. package/lib/components/ProductGallery.cjs.js +1 -1
  34. package/lib/components/ProductGallery.es.js +64 -21
  35. package/lib/components/ProductGrid.cjs.js +1 -1
  36. package/lib/components/ProductGrid.es.js +28 -12
  37. package/lib/components/ShippingEstimator.cjs.js +1 -1
  38. package/lib/components/ShippingEstimator.es.js +226 -90
  39. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  40. package/lib/components/SimpleTiptapRenderer.es.js +286 -93
  41. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  42. package/lib/components/SubscriptionSelector.es.js +168 -92
  43. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  44. package/lib/pages/cms/coupons/CouponEditorForm.es.js +370 -110
  45. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  46. package/lib/pages/cms/coupons/CouponsPage.es.js +368 -116
  47. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  48. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +61 -25
  49. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  50. package/lib/pages/cms/coupons/EditCouponPage.es.js +71 -35
  51. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  52. package/lib/pages/cms/coupons/ProductScopePicker.es.js +167 -72
  53. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  54. package/lib/pages/cms/orders/ExportReportsDialog.es.js +247 -87
  55. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  56. package/lib/pages/cms/orders/OrderDetailPage.es.js +283 -95
  57. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  58. package/lib/pages/cms/orders/OrderPrintButton.es.js +21 -9
  59. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  60. package/lib/pages/cms/orders/OrderStatusForm.es.js +106 -46
  61. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  62. package/lib/pages/cms/orders/OrdersPage.es.js +257 -78
  63. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  64. package/lib/pages/cms/payments/PaymentsClient.es.js +551 -155
  65. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  66. package/lib/pages/cms/payments/PaymentsPage.es.js +24 -16
  67. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  68. package/lib/pages/cms/products/ProductsPage.es.js +77 -37
  69. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  70. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +176 -96
  71. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  72. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +85 -41
  73. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  74. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +455 -192
  75. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  76. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +72 -28
  77. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  78. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +490 -183
  79. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  80. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +175 -67
  81. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  82. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +211 -100
  83. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  84. package/lib/pages/cms/products/components/DeleteProductButton.es.js +45 -25
  85. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  86. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +202 -58
  87. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  88. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +234 -88
  89. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  90. package/lib/pages/cms/products/components/ProductForm.es.js +1199 -551
  91. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  92. package/lib/pages/cms/products/components/ProductMediaManager.es.js +154 -63
  93. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  94. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +391 -144
  95. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  96. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +203 -87
  97. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  98. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +30 -18
  99. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  100. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +35 -23
  101. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  102. package/lib/pages/cms/products/components/VariationsEditor.es.js +492 -261
  103. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  104. package/lib/pages/cms/products/inventory/InventoryPage.es.js +33 -13
  105. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  106. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +365 -145
  107. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  108. package/lib/pages/cms/products/new/NewProductPage.es.js +46 -34
  109. package/lib/pages/cms/products/server-actions.cjs.js +1 -1
  110. package/lib/pages/cms/products/server-actions.es.js +163 -139
  111. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  112. package/lib/pages/cms/shipping/ShippingPage.es.js +507 -155
  113. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  114. package/lib/pages/cms/shipping/components/RateForm.es.js +717 -334
  115. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  116. package/lib/pages/cms/shipping/components/ZoneForm.es.js +392 -158
  117. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  118. package/lib/pages/cms/taxes/TaxesPage.es.js +448 -120
  119. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  120. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +159 -55
  121. package/lib/product-context.cjs.js +1 -1
  122. package/lib/product-context.es.js +14 -10
  123. package/package.json +4 -4
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),f=require("react"),k=require("next/navigation"),r=require("@nextblock-cms/ui"),b=require("lucide-react"),N=require("react-dom");function C({initialEnabledProviders:s,configStatus:i,credentials:t,saveAction:a,saveCredentialsAction:d}){const o=k.useRouter(),[h,p]=f.useTransition(),[c,j]=f.useState(s),m=i?.stripe?.hasKeys,u=i?.freemius?.hasKeys;function g(){const n=new FormData;n.set("stripe_enabled",c.stripe?"true":"false"),n.set("freemius_enabled",c.freemius?"true":"false"),p(async()=>{await a(n),o.refresh()})}return e.jsxs("div",{className:"space-y-6 max-w-3xl p-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Payment Settings"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Enter your provider API keys, then enable the providers your store needs. Physical products use Stripe and digital products use Freemius."})]}),e.jsx(S,{credentials:t,saveAction:d}),e.jsx("div",{className:"space-y-6",children:e.jsxs(r.Card,{children:[e.jsxs(r.CardHeader,{children:[e.jsx(r.CardTitle,{children:"Payment Providers"}),e.jsx(r.CardDescription,{children:"You can run both providers at the same time. Each product picks its provider from its product type."})]}),e.jsxs(r.CardContent,{className:"space-y-6",children:[e.jsx(v,{id:"stripe-enabled",label:"Stripe for Physical Products",description:"Use Stripe Checkout for physical merchandise and other shippable goods.",checked:c.stripe,disabled:!m,onCheckedChange:n=>j(x=>({...x,stripe:n})),ready:m,children:m?e.jsxs("div",{className:"mt-2 text-sm text-green-600 flex items-center gap-2",children:[e.jsx(b.CheckCircle2,{className:"w-4 h-4"}),e.jsx("span",{children:"Ready to process physical product checkout"})]}):e.jsx(y,{provider:"Stripe",missingKeys:i.stripe.missing,docsUrl:"https://dashboard.stripe.com/apikeys",docsLabel:"Stripe Dashboard -> Developers -> API Keys"})}),e.jsx(v,{id:"freemius-enabled",label:"Freemius for Digital Products",description:"Use Freemius for software licenses, SaaS plans, and other digital products.",checked:c.freemius,disabled:!u,onCheckedChange:n=>j(x=>({...x,freemius:n})),ready:u,children:u?e.jsxs("div",{className:"mt-2 text-sm text-green-600 flex items-center gap-2",children:[e.jsx(b.CheckCircle2,{className:"w-4 h-4"}),e.jsx("span",{children:"Ready to process digital product checkout"})]}):e.jsx(y,{provider:"Freemius",missingKeys:i.freemius.missing,docsUrl:"https://dashboard.freemius.com/",docsLabel:"Freemius Dashboard -> Developers -> Credentials"})}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsx(r.Button,{type:"button",disabled:h,onClick:g,children:h?"Saving...":"Save Changes"})})]})]})})]})}function w(){const{pending:s}=N.useFormStatus();return e.jsx(r.Button,{type:"submit",disabled:s,children:s?"Saving...":"Save Changes"})}function l({id:s,label:i,type:t="text",defaultValue:a,placeholder:d,hint:o}){return e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(r.Label,{htmlFor:s,children:i}),e.jsx(r.Input,{id:s,name:s,type:t,defaultValue:a,placeholder:d,autoComplete:t==="password"?"new-password":"off"}),o&&e.jsx("p",{className:"text-xs text-muted-foreground",children:o})]})}function S({credentials:s,saveAction:i}){const t="•••••••• (stored — leave blank to keep)";return e.jsxs(r.Card,{children:[e.jsxs(r.CardHeader,{children:[e.jsx(r.CardTitle,{children:"Provider API Keys"}),e.jsxs(r.CardDescription,{children:["Keys are encrypted at rest and used DB-first (these override any ",e.jsx("code",{children:".env"})," ","values). Leave a secret blank to keep the stored value."]})]}),e.jsx(r.CardContent,{children:e.jsxs("form",{action:i,className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Stripe (physical products)"}),e.jsxs("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground space-y-1.5",children:[e.jsxs("p",{children:["In the Stripe Dashboard (Developers → Webhooks → Add endpoint), set the endpoint URL to ",e.jsx("code",{children:"https://your-domain/api/webhooks/stripe"}),", then paste that endpoint's signing secret below."]}),e.jsxs("p",{children:["For local testing, forward events with the Stripe CLI:"," ",e.jsx("code",{children:"stripe listen --forward-to localhost:4200/api/webhooks/stripe"})," ","(or ",e.jsx("code",{children:"npm run stripe"}),"). Use the ",e.jsx("code",{children:"whsec_…"})," secret it prints on startup as the signing secret below — it differs from a Dashboard endpoint's."]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsx(l,{id:"stripe_publishableKey",label:"Publishable key",defaultValue:s.stripe.publishableKey,placeholder:"pk_live_…"}),e.jsx(l,{id:"stripe_secretKey",label:"Secret key",type:"password",placeholder:s.stripe.hasSecretKey?t:"sk_live_…"}),e.jsx(l,{id:"stripe_webhookSecret",label:"Webhook signing secret",type:"password",placeholder:s.stripe.hasWebhookSecret?t:"whsec_…"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Freemius (digital products)"}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsx(l,{id:"freemius_developerId",label:"Developer ID",defaultValue:s.freemius.developerId}),e.jsx(l,{id:"freemius_productId",label:"Product ID",defaultValue:s.freemius.productId}),e.jsx(l,{id:"freemius_publicKey",label:"Public key",defaultValue:s.freemius.publicKey,placeholder:"pk_…"}),e.jsx(l,{id:"freemius_secretKey",label:"Secret key",type:"password",placeholder:s.freemius.hasSecretKey?t:"sk_…"}),e.jsx(l,{id:"freemius_apiKey",label:"API key",type:"password",placeholder:s.freemius.hasApiKey?t:"API key"})]})]}),s.envFallbackActive&&e.jsx("p",{className:"text-xs text-amber-700",children:"Stripe keys are currently read from environment variables. Saving here moves them into the database and takes precedence."}),e.jsx("div",{className:"flex justify-end",children:e.jsx(w,{})})]})})]})}function v({id:s,label:i,description:t,checked:a,disabled:d,ready:o,onCheckedChange:h,children:p}){return e.jsx("div",{className:"rounded-md border p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(r.Checkbox,{id:s,checked:a,disabled:d,onCheckedChange:c=>h(!!c),className:"mt-1"}),e.jsxs("div",{className:"grid gap-1.5 leading-none w-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 flex-wrap",children:[e.jsx(r.Label,{htmlFor:s,className:"font-semibold text-base cursor-pointer",children:i}),e.jsx("span",{className:`text-xs font-medium ${a?"text-foreground":"text-muted-foreground"}`,children:a?"Enabled":"Disabled"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t}),!o&&e.jsx("p",{className:"text-xs text-amber-700",children:"This provider cannot be enabled until all required environment variables are present."}),p]})]})})}function y({provider:s,missingKeys:i,docsUrl:t,docsLabel:a}){return e.jsxs("div",{className:"mt-3 text-sm p-4 rounded-md border border-destructive/20 bg-destructive/5 text-foreground",children:[e.jsxs("div",{className:"flex items-center gap-2 font-semibold text-destructive mb-2",children:[e.jsx(b.AlertCircle,{className:"w-4 h-4"}),e.jsx("span",{children:"Configuration Required"})]}),e.jsxs("p",{className:"mb-2",children:["The ",s," integration still needs the following:"]}),e.jsx("ul",{className:"list-disc list-inside bg-white/50 dark:bg-black/20 p-2 rounded mb-3 text-xs",children:i.map(d=>e.jsx("li",{children:d},d))}),e.jsx("p",{className:"mb-2",children:e.jsx("strong",{children:"How to fix:"})}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 ml-1 mb-3",children:[e.jsxs("li",{children:["Get your API keys from"," ",e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"underline font-medium hover:text-destructive/80",children:a}),"."]}),e.jsxs("li",{children:["Enter them in the ",e.jsx("strong",{children:"Provider API Keys"})," section above and save."]}),e.jsx("li",{children:"This provider can then be enabled."})]})]})}exports.PaymentsClient=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),y=require("react"),D=require("next/navigation"),i=require("@nextblock-cms/ui"),N=require("lucide-react"),j=require("react-dom");function v({initialEnabledProviders:s,configStatus:n,credentials:t,saveAction:r,saveCredentialsAction:l}){const c=D.useRouter(),[d,b]=y.useTransition(),[o,h]=y.useState(s),u=n?.stripe?.hasKeys,p=n?.freemius?.hasKeys;function C(){const a=new FormData;a.set("stripe_enabled",o.stripe?"true":"false"),a.set("freemius_enabled",o.freemius?"true":"false"),b(async()=>{await r(a),c.refresh()})}return e.jsxDEV("div",{className:"space-y-6 max-w-3xl p-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("h1",{className:"text-3xl font-bold tracking-tight",children:"Payment Settings"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:71,columnNumber:9},this),e.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Enter your provider API keys, then enable the providers your store needs. Physical products use Stripe and digital products use Freemius."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:72,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:70,columnNumber:7},this),e.jsxDEV(P,{credentials:t,saveAction:l},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:78,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:e.jsxDEV(i.Card,{children:[e.jsxDEV(i.CardHeader,{children:[e.jsxDEV(i.CardTitle,{children:"Payment Providers"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:83,columnNumber:11},this),e.jsxDEV(i.CardDescription,{children:"You can run both providers at the same time. Each product picks its provider from its product type."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:84,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:82,columnNumber:9},this),e.jsxDEV(i.CardContent,{className:"space-y-6",children:[e.jsxDEV(f,{id:"stripe-enabled",label:"Stripe for Physical Products",description:"Use Stripe Checkout for physical merchandise and other shippable goods.",checked:o.stripe,disabled:!u,onCheckedChange:a=>h(x=>({...x,stripe:a})),ready:u,children:u?e.jsxDEV("div",{className:"mt-2 text-sm text-green-600 flex items-center gap-2",children:[e.jsxDEV(N.CheckCircle2,{className:"w-4 h-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:113,columnNumber:17},this),e.jsxDEV("span",{children:"Ready to process physical product checkout"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:114,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:112,columnNumber:15},this):e.jsxDEV(k,{provider:"Stripe",missingKeys:n.stripe.missing,docsUrl:"https://dashboard.stripe.com/apikeys",docsLabel:"Stripe Dashboard -> Developers -> API Keys"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:105,columnNumber:15},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:90,columnNumber:11},this),e.jsxDEV(f,{id:"freemius-enabled",label:"Freemius for Digital Products",description:"Use Freemius for software licenses, SaaS plans, and other digital products.",checked:o.freemius,disabled:!p,onCheckedChange:a=>h(x=>({...x,freemius:a})),ready:p,children:p?e.jsxDEV("div",{className:"mt-2 text-sm text-green-600 flex items-center gap-2",children:[e.jsxDEV(N.CheckCircle2,{className:"w-4 h-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:142,columnNumber:17},this),e.jsxDEV("span",{children:"Ready to process digital product checkout"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:143,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:141,columnNumber:15},this):e.jsxDEV(k,{provider:"Freemius",missingKeys:n.freemius.missing,docsUrl:"https://dashboard.freemius.com/",docsLabel:"Freemius Dashboard -> Developers -> Credentials"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:134,columnNumber:15},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:119,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end pt-4",children:e.jsxDEV(i.Button,{type:"button",disabled:d,onClick:C,children:d?"Saving...":"Save Changes"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:149,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:89,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:81,columnNumber:7},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:80,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:69,columnNumber:5},this)}function g(){const{pending:s}=j.useFormStatus();return e.jsxDEV(i.Button,{type:"submit",disabled:s,children:s?"Saving...":"Save Changes"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:163,columnNumber:10},this)}function m({id:s,label:n,type:t="text",defaultValue:r,placeholder:l,hint:c}){return e.jsxDEV("div",{className:"space-y-1.5",children:[e.jsxDEV(i.Label,{htmlFor:s,children:n},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:183,columnNumber:7},this),e.jsxDEV(i.Input,{id:s,name:s,type:t,defaultValue:r,placeholder:l,autoComplete:t==="password"?"new-password":"off"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:184,columnNumber:7},this),c&&e.jsxDEV("p",{className:"text-xs text-muted-foreground",children:c},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:192,columnNumber:16},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:182,columnNumber:5},this)}function P({credentials:s,saveAction:n}){const t="•••••••• (stored — leave blank to keep)";return e.jsxDEV(i.Card,{children:[e.jsxDEV(i.CardHeader,{children:[e.jsxDEV(i.CardTitle,{children:"Provider API Keys"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:209,columnNumber:9},this),e.jsxDEV(i.CardDescription,{children:["Keys are encrypted at rest and used DB-first (these override any ",e.jsxDEV("code",{children:".env"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:211,columnNumber:76},this)," ","values). Leave a secret blank to keep the stored value."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:210,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:208,columnNumber:7},this),e.jsxDEV(i.CardContent,{children:e.jsxDEV("form",{action:n,className:"space-y-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("h3",{className:"text-sm font-semibold",children:"Stripe (physical products)"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:218,columnNumber:13},this),e.jsxDEV("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground space-y-1.5",children:[e.jsxDEV("p",{children:["In the Stripe Dashboard (Developers → Webhooks → Add endpoint), set the endpoint URL to ",e.jsxDEV("code",{children:"https://your-domain/api/webhooks/stripe"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:222,columnNumber:33},this),", then paste that endpoint's signing secret below."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:220,columnNumber:15},this),e.jsxDEV("p",{children:["For local testing, forward events with the Stripe CLI:"," ",e.jsxDEV("code",{children:"stripe listen --forward-to localhost:4200/api/webhooks/stripe"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:227,columnNumber:17},this)," ","(or ",e.jsxDEV("code",{children:"npm run stripe"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:228,columnNumber:21},this),"). Use the ",e.jsxDEV("code",{children:"whsec_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:228,columnNumber:59},this)," secret it prints on startup as the signing secret below — it differs from a Dashboard endpoint's."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:225,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:219,columnNumber:13},this),e.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxDEV(m,{id:"stripe_publishableKey",label:"Publishable key",defaultValue:s.stripe.publishableKey,placeholder:"pk_live_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:233,columnNumber:15},this),e.jsxDEV(m,{id:"stripe_secretKey",label:"Secret key",type:"password",placeholder:s.stripe.hasSecretKey?t:"sk_live_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:239,columnNumber:15},this),e.jsxDEV(m,{id:"stripe_webhookSecret",label:"Webhook signing secret",type:"password",placeholder:s.stripe.hasWebhookSecret?t:"whsec_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:245,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:232,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:217,columnNumber:11},this),e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("h3",{className:"text-sm font-semibold",children:"Freemius (digital products)"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:255,columnNumber:13},this),e.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxDEV(m,{id:"freemius_developerId",label:"Developer ID",defaultValue:s.freemius.developerId},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:257,columnNumber:15},this),e.jsxDEV(m,{id:"freemius_productId",label:"Product ID",defaultValue:s.freemius.productId},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:262,columnNumber:15},this),e.jsxDEV(m,{id:"freemius_publicKey",label:"Public key",defaultValue:s.freemius.publicKey,placeholder:"pk_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:267,columnNumber:15},this),e.jsxDEV(m,{id:"freemius_secretKey",label:"Secret key",type:"password",placeholder:s.freemius.hasSecretKey?t:"sk_…"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:273,columnNumber:15},this),e.jsxDEV(m,{id:"freemius_apiKey",label:"API key",type:"password",placeholder:s.freemius.hasApiKey?t:"API key"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:279,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:256,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:254,columnNumber:11},this),s.envFallbackActive&&e.jsxDEV("p",{className:"text-xs text-amber-700",children:"Stripe keys are currently read from environment variables. Saving here moves them into the database and takes precedence."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:289,columnNumber:13},this),e.jsxDEV("div",{className:"flex justify-end",children:e.jsxDEV(g,{},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:296,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:295,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:216,columnNumber:9},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:215,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:207,columnNumber:5},this)}function f({id:s,label:n,description:t,checked:r,disabled:l,ready:c,onCheckedChange:d,children:b}){return e.jsxDEV("div",{className:"rounded-md border p-4",children:e.jsxDEV("div",{className:"flex items-start gap-3",children:[e.jsxDEV(i.Checkbox,{id:s,checked:r,disabled:l,onCheckedChange:o=>d(!!o),className:"mt-1"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:326,columnNumber:9},this),e.jsxDEV("div",{className:"grid gap-1.5 leading-none w-full",children:[e.jsxDEV("div",{className:"flex items-center justify-between gap-3 flex-wrap",children:[e.jsxDEV(i.Label,{htmlFor:s,className:"font-semibold text-base cursor-pointer",children:n},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:335,columnNumber:13},this),e.jsxDEV("span",{className:`text-xs font-medium ${r?"text-foreground":"text-muted-foreground"}`,children:r?"Enabled":"Disabled"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:338,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:334,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-muted-foreground",children:t},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:346,columnNumber:11},this),!c&&e.jsxDEV("p",{className:"text-xs text-amber-700",children:"This provider cannot be enabled until all required environment variables are present."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:348,columnNumber:13},this),b]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:333,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:325,columnNumber:7},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:324,columnNumber:5},this)}function k({provider:s,missingKeys:n,docsUrl:t,docsLabel:r}){return e.jsxDEV("div",{className:"mt-3 text-sm p-4 rounded-md border border-destructive/20 bg-destructive/5 text-foreground",children:[e.jsxDEV("div",{className:"flex items-center gap-2 font-semibold text-destructive mb-2",children:[e.jsxDEV(N.AlertCircle,{className:"w-4 h-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:373,columnNumber:9},this),e.jsxDEV("span",{children:"Configuration Required"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:374,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:372,columnNumber:7},this),e.jsxDEV("p",{className:"mb-2",children:["The ",s," integration still needs the following:"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:376,columnNumber:7},this),e.jsxDEV("ul",{className:"list-disc list-inside bg-white/50 dark:bg-black/20 p-2 rounded mb-3 text-xs",children:n.map(l=>e.jsxDEV("li",{children:l},l,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:379,columnNumber:11},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:377,columnNumber:7},this),e.jsxDEV("p",{className:"mb-2",children:e.jsxDEV("strong",{children:"How to fix:"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:383,columnNumber:9},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:382,columnNumber:7},this),e.jsxDEV("ol",{className:"list-decimal list-inside space-y-1 ml-1 mb-3",children:[e.jsxDEV("li",{children:["Get your API keys from"," ",e.jsxDEV("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"underline font-medium hover:text-destructive/80",children:r},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:388,columnNumber:11},this),"."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:386,columnNumber:9},this),e.jsxDEV("li",{children:["Enter them in the ",e.jsxDEV("strong",{children:"Provider API Keys"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:398,columnNumber:31},this)," section above and save."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:398,columnNumber:9},this),e.jsxDEV("li",{children:"This provider can then be enabled."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:399,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:385,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/payments/PaymentsClient.tsx",lineNumber:371,columnNumber:5},this)}exports.PaymentsClient=v;