@nextblock-cms/ecom 0.19.0 → 0.19.2

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 (144) hide show
  1. package/index.cjs.js +1 -1
  2. package/index.es.js +26 -25
  3. package/lib/CurrencyProvider.cjs.js +1 -1
  4. package/lib/CurrencyProvider.es.js +41 -45
  5. package/lib/PaymentReadinessProvider.cjs.js +1 -1
  6. package/lib/PaymentReadinessProvider.es.js +15 -19
  7. package/lib/cart-store.cjs.js +1 -1
  8. package/lib/cart-store.d.ts +4 -0
  9. package/lib/cart-store.es.js +77 -69
  10. package/lib/components/AccountNavigationMenu.cjs.js +1 -1
  11. package/lib/components/AccountNavigationMenu.es.js +44 -62
  12. package/lib/components/AddToCartButton.cjs.js +1 -1
  13. package/lib/components/AddToCartButton.es.js +50 -78
  14. package/lib/components/Cart.cjs.js +1 -1
  15. package/lib/components/Cart.es.js +154 -381
  16. package/lib/components/CartDrawer.cjs.js +1 -1
  17. package/lib/components/CartDrawer.es.js +143 -297
  18. package/lib/components/CartIcon.cjs.js +1 -1
  19. package/lib/components/CartIcon.es.js +21 -47
  20. package/lib/components/Checkout.cjs.js +1 -1
  21. package/lib/components/Checkout.es.js +814 -1614
  22. package/lib/components/CouponForm.cjs.js +1 -1
  23. package/lib/components/CouponForm.es.js +104 -155
  24. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  25. package/lib/components/CurrencySwitcher.es.js +14 -33
  26. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  27. package/lib/components/CustomerProfileForm.es.js +264 -672
  28. package/lib/components/FeaturedProduct.cjs.js +1 -1
  29. package/lib/components/FeaturedProduct.es.js +46 -125
  30. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  31. package/lib/components/FreemiusLicensePanel.es.js +45 -125
  32. package/lib/components/InvoiceDocument.cjs.js +1 -1
  33. package/lib/components/InvoiceDocument.es.js +148 -487
  34. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  35. package/lib/components/InvoiceViewerShell.d.ts +4 -1
  36. package/lib/components/InvoiceViewerShell.es.js +59 -142
  37. package/lib/components/ProductCard.cjs.js +1 -1
  38. package/lib/components/ProductCard.d.ts +3 -1
  39. package/lib/components/ProductCard.es.js +128 -242
  40. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  41. package/lib/components/ProductDetailsLayout.es.js +311 -652
  42. package/lib/components/ProductGallery.cjs.js +1 -1
  43. package/lib/components/ProductGallery.d.ts +2 -0
  44. package/lib/components/ProductGallery.es.js +37 -66
  45. package/lib/components/ProductGrid.cjs.js +1 -1
  46. package/lib/components/ProductGrid.es.js +23 -32
  47. package/lib/components/ShippingEstimator.cjs.js +1 -1
  48. package/lib/components/ShippingEstimator.es.js +118 -231
  49. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  50. package/lib/components/SimpleTiptapRenderer.es.js +111 -294
  51. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  52. package/lib/components/SubscriptionSelector.es.js +120 -181
  53. package/lib/invoice.cjs.js +1 -1
  54. package/lib/invoice.d.ts +1 -1
  55. package/lib/invoice.es.js +6 -5
  56. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  57. package/lib/pages/cms/coupons/CouponEditorForm.es.js +115 -375
  58. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  59. package/lib/pages/cms/coupons/CouponsPage.es.js +116 -368
  60. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  61. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +26 -62
  62. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  63. package/lib/pages/cms/coupons/EditCouponPage.es.js +35 -71
  64. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  65. package/lib/pages/cms/coupons/ProductScopePicker.es.js +72 -167
  66. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  67. package/lib/pages/cms/orders/ExportReportsDialog.es.js +87 -247
  68. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  69. package/lib/pages/cms/orders/OrderDetailPage.es.js +95 -283
  70. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  71. package/lib/pages/cms/orders/OrderPrintButton.es.js +9 -21
  72. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  73. package/lib/pages/cms/orders/OrderStatusForm.es.js +46 -106
  74. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  75. package/lib/pages/cms/orders/OrdersPage.es.js +78 -257
  76. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  77. package/lib/pages/cms/payments/PaymentsClient.es.js +192 -580
  78. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  79. package/lib/pages/cms/payments/PaymentsPage.es.js +14 -22
  80. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  81. package/lib/pages/cms/products/ProductsPage.es.js +47 -87
  82. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  83. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +97 -177
  84. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  85. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +40 -84
  86. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  87. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +192 -455
  88. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  89. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +28 -72
  90. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  91. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +183 -490
  92. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  93. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +69 -177
  94. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  95. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +102 -213
  96. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  97. package/lib/pages/cms/products/components/DeleteProductButton.es.js +25 -45
  98. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  99. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +58 -202
  100. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  101. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +89 -235
  102. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  103. package/lib/pages/cms/products/components/ProductForm.es.js +526 -1110
  104. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  105. package/lib/pages/cms/products/components/ProductMediaManager.es.js +63 -154
  106. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  107. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +213 -544
  108. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  109. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +91 -207
  110. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  111. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +16 -28
  112. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  113. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +25 -37
  114. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  115. package/lib/pages/cms/products/components/VariationsEditor.es.js +261 -492
  116. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  117. package/lib/pages/cms/products/inventory/InventoryPage.es.js +12 -32
  118. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  119. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +145 -365
  120. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  121. package/lib/pages/cms/products/new/NewProductPage.es.js +30 -42
  122. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  123. package/lib/pages/cms/shipping/ShippingPage.es.js +155 -507
  124. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  125. package/lib/pages/cms/shipping/components/RateForm.es.js +334 -717
  126. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  127. package/lib/pages/cms/shipping/components/ZoneForm.es.js +158 -392
  128. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  129. package/lib/pages/cms/taxes/TaxesPage.es.js +119 -447
  130. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  131. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +52 -156
  132. package/lib/product-context.cjs.js +1 -1
  133. package/lib/product-context.es.js +10 -14
  134. package/lib/trials.cjs.js +1 -1
  135. package/lib/trials.d.ts +10 -3
  136. package/lib/trials.es.js +28 -21
  137. package/lib/types.d.ts +2 -0
  138. package/lib/use-price-formatter.cjs.js +1 -0
  139. package/lib/use-price-formatter.d.ts +11 -0
  140. package/lib/use-price-formatter.es.js +13 -0
  141. package/lib/variation-utils.cjs.js +1 -1
  142. package/lib/variation-utils.d.ts +10 -0
  143. package/lib/variation-utils.es.js +139 -123
  144. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),p=require("next/link"),c=require("@nextblock-cms/ui"),N=require("@nextblock-cms/db/server"),u=require("lucide-react"),b=require("@nextblock-cms/utils"),t=require("./actions.cjs.js"),x=require("./CreateCouponDialog.cjs.js"),f=require("./product-options.cjs.js");function g(o,r){return o.discount_type==="percent"?`${o.discount_amount}%`:b.formatPrice(o.discount_amount,r)}function C(o,r){return r?o==="synced"||o==="not_required"?"default":"secondary":"outline"}function h(o,r){const i=new Set;for(const n of o||[]){const l=n.product_id;l&&i.add(r.get(l)||l)}return i.size}function k(o,r){const i=h(o,r);return i===0?"All eligible products":`${i} scoped SKU${i===1?"":"s"}`}async function D({searchParams:o}){const r=N.getServiceRoleSupabaseClient();let i=r.from("coupons").select(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("next/link"),r=require("@nextblock-cms/ui"),p=require("@nextblock-cms/db/server"),u=require("lucide-react"),h=require("@nextblock-cms/utils"),d=require("./actions.cjs.js"),f=require("./CreateCouponDialog.cjs.js"),j=require("./product-options.cjs.js");function y(t,n){return t.discount_type==="percent"?`${t.discount_amount}%`:h.formatPrice(t.discount_amount,n)}function g(t,n){return n?t==="synced"||t==="not_required"?"default":"secondary":"outline"}function v(t,n){const i=new Set;for(const c of t||[]){const a=c.product_id;a&&i.add(n.get(a)||a)}return i.size}function _(t,n){const i=v(t,n);return i===0?"All eligible products":`${i} scoped SKU${i===1?"":"s"}`}async function N({searchParams:t}){const n=p.getServiceRoleSupabaseClient();let i=n.from("coupons").select(`
2
2
  *,
3
3
  coupon_products(product_id),
4
4
  coupon_freemius_mappings(sync_status, sync_error)
5
- `).order("created_at",{ascending:!1});o?.q&&(i=i.or(`code.ilike.%${o.q}%,name.ilike.%${o.q}%`)),o?.status==="active"?i=i.eq("is_active",!0):o?.status==="inactive"&&(i=i.eq("is_active",!1));const[{data:n},{data:l},{data:m}]=await Promise.all([i,r.from("products").select("id, title, sku, payment_provider, freemius_product_id, language:languages(code, name), product_media(sort_order, media(file_path, object_key))").order("title",{ascending:!0}),r.from("currencies").select("code, is_default").eq("is_active",!0)]),a=m?.find(s=>s.is_default)?.code||m?.[0]?.code||"USD",d=new Map((l||[]).map(s=>[s.id,s.sku?.trim().toUpperCase()||s.id]));return e.jsxDEV("div",{className:"mx-auto w-full max-w-7xl space-y-6 px-6 py-8",children:[e.jsxDEV("div",{className:"flex flex-col gap-4 md:flex-row md:items-end md:justify-between",children:[e.jsxDEV("div",{children:[e.jsxDEV("h1",{className:"text-3xl font-bold tracking-tight",children:"Coupons"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:133,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Create provider-aware discounts for Stripe checkout and Freemius licenses."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:132,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsxDEV("form",{className:"flex gap-2",action:"/cms/coupons",children:[e.jsxDEV("input",{name:"q",placeholder:"Search coupons",defaultValue:o?.q||"",className:"h-10 rounded-md border border-input bg-background px-3 py-2 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:140,columnNumber:13},this),e.jsxDEV("select",{name:"status",defaultValue:o?.status||"all",className:"h-10 rounded-md border border-input bg-background px-3 py-2 text-sm",children:[e.jsxDEV("option",{value:"all",children:"All"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:151,columnNumber:15},this),e.jsxDEV("option",{value:"active",children:"Active"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:152,columnNumber:15},this),e.jsxDEV("option",{value:"inactive",children:"Inactive"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:153,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:146,columnNumber:13},this),e.jsxDEV(c.Button,{type:"submit",variant:"outline",children:"Filter"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:139,columnNumber:11},this),e.jsxDEV(x.CreateCouponDialog,{action:t.createCouponAction,products:f.normalizeCouponProductOptions(l),currencyCode:a},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:138,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:131,columnNumber:7},this),e.jsxDEV(c.Card,{children:[e.jsxDEV(c.CardHeader,{children:[e.jsxDEV(c.CardTitle,{children:"All Coupons"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:167,columnNumber:11},this),e.jsxDEV(c.CardDescription,{children:"Freemius sync runs when a coupon is created, updated, toggled, or manually resynced."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:168,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:166,columnNumber:9},this),e.jsxDEV(c.CardContent,{children:e.jsxDEV("div",{className:"overflow-hidden rounded-lg border",children:e.jsxDEV("table",{className:"w-full text-left text-sm",children:[e.jsxDEV("thead",{className:"border-b bg-muted/40 text-xs uppercase text-muted-foreground",children:e.jsxDEV("tr",{children:[e.jsxDEV("th",{className:"px-4 py-3",children:"Code"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:177,columnNumber:19},this),e.jsxDEV("th",{className:"px-4 py-3",children:"Scope"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:178,columnNumber:19},this),e.jsxDEV("th",{className:"px-4 py-3",children:"Discount"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:179,columnNumber:19},this),e.jsxDEV("th",{className:"px-4 py-3",children:"Usage"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:180,columnNumber:19},this),e.jsxDEV("th",{className:"px-4 py-3",children:"Sync"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:181,columnNumber:19},this),e.jsxDEV("th",{className:"px-4 py-3 text-right",children:"Actions"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:182,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:175,columnNumber:15},this),e.jsxDEV("tbody",{className:"divide-y",children:n?.length?n.map(s=>e.jsxDEV("tr",{className:"align-top",children:[e.jsxDEV("td",{className:"px-4 py-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"font-mono font-semibold",children:s.code},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:197,columnNumber:27},this),e.jsxDEV(c.Badge,{variant:s.is_active?"default":"outline",children:s.is_active?"Active":"Inactive"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:198,columnNumber:27},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:196,columnNumber:25},this),e.jsxDEV("p",{className:"mt-1 text-xs text-muted-foreground",children:s.name},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:202,columnNumber:25},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:195,columnNumber:23},this),e.jsxDEV("td",{className:"px-4 py-3",children:[e.jsxDEV("span",{className:"capitalize",children:s.provider_scope},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:205,columnNumber:25},this),e.jsxDEV("p",{className:"mt-1 text-xs text-muted-foreground",children:k(s.coupon_products,d)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:206,columnNumber:25},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:204,columnNumber:23},this),e.jsxDEV("td",{className:"px-4 py-3 font-medium",children:g(s,a)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:210,columnNumber:23},this),e.jsxDEV("td",{className:"px-4 py-3",children:[s.redemptions_count||0,s.redemption_limit?` / ${s.redemption_limit}`:""]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:213,columnNumber:23},this),e.jsxDEV("td",{className:"px-4 py-3",children:[e.jsxDEV(c.Badge,{variant:C(s.freemius_sync_status,s.is_active),children:s.freemius_sync_status},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:218,columnNumber:25},this),s.freemius_sync_error?e.jsxDEV("p",{className:"mt-1 max-w-[220px] text-xs text-destructive",children:s.freemius_sync_error},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:222,columnNumber:27},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:217,columnNumber:23},this),e.jsxDEV("td",{className:"px-4 py-3",children:e.jsxDEV("div",{className:"flex justify-end gap-1",children:[e.jsxDEV(c.Button,{asChild:!0,variant:"outline",size:"sm",children:e.jsxDEV(p,{href:`/cms/coupons/${s.id}/edit`,children:"Edit"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:230,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:229,columnNumber:27},this),e.jsxDEV("form",{action:async()=>{"use server";await t.toggleCouponActiveAction(s.id,!s.is_active)},children:e.jsxDEV(c.Button,{type:"submit",variant:"outline",size:"sm",children:s.is_active?"Disable":"Enable"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:236,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:232,columnNumber:27},this),e.jsxDEV("form",{action:async()=>{"use server";await t.syncCouponAction(s.id)},children:e.jsxDEV(c.Button,{type:"submit",variant:"ghost",size:"icon",title:"Resync Freemius","aria-label":`Resync Freemius coupon ${s.code}`,children:e.jsxDEV(u.RefreshCw,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:251,columnNumber:31},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:244,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:240,columnNumber:27},this),e.jsxDEV("form",{action:async()=>{"use server";await t.deleteCouponAction(s.id)},children:e.jsxDEV(c.Button,{type:"submit",variant:"ghost",size:"icon",className:"text-destructive","aria-label":`Delete coupon ${s.code}`,children:e.jsxDEV(u.Trash2,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:265,columnNumber:31},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:258,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:254,columnNumber:27},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:228,columnNumber:25},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:227,columnNumber:23},this)]},s.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:194,columnNumber:21},this)):e.jsxDEV("tr",{children:e.jsxDEV("td",{colSpan:6,className:"px-4 py-10 text-center text-muted-foreground",children:"No coupons yet."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:188,columnNumber:21},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:187,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:185,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:174,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:173,columnNumber:11},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:165,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:130,columnNumber:5},this)}exports.CouponsPage=D;
5
+ `).order("created_at",{ascending:!1});t?.q&&(i=i.or(`code.ilike.%${t.q}%,name.ilike.%${t.q}%`)),t?.status==="active"?i=i.eq("is_active",!0):t?.status==="inactive"&&(i=i.eq("is_active",!1));const[{data:c},{data:a},{data:l}]=await Promise.all([i,n.from("products").select("id, title, sku, payment_provider, freemius_product_id, language:languages(code, name), product_media(sort_order, media(file_path, object_key))").order("title",{ascending:!0}),n.from("currencies").select("code, is_default").eq("is_active",!0)]),o=l?.find(s=>s.is_default)?.code||l?.[0]?.code||"USD",x=new Map((a||[]).map(s=>[s.id,s.sku?.trim().toUpperCase()||s.id]));return e.jsxs("div",{className:"mx-auto w-full max-w-7xl space-y-6 px-6 py-8",children:[e.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-end md:justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Coupons"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Create provider-aware discounts for Stripe checkout and Freemius licenses."})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsxs("form",{className:"flex gap-2",action:"/cms/coupons",children:[e.jsx("input",{name:"q",placeholder:"Search coupons",defaultValue:t?.q||"",className:"h-10 rounded-md border border-input bg-background px-3 py-2 text-sm"}),e.jsxs("select",{name:"status",defaultValue:t?.status||"all",className:"h-10 rounded-md border border-input bg-background px-3 py-2 text-sm",children:[e.jsx("option",{value:"all",children:"All"}),e.jsx("option",{value:"active",children:"Active"}),e.jsx("option",{value:"inactive",children:"Inactive"})]}),e.jsx(r.Button,{type:"submit",variant:"outline",children:"Filter"})]}),e.jsx(f.CreateCouponDialog,{action:d.createCouponAction,products:j.normalizeCouponProductOptions(a),currencyCode:o})]})]}),e.jsxs(r.Card,{children:[e.jsxs(r.CardHeader,{children:[e.jsx(r.CardTitle,{children:"All Coupons"}),e.jsx(r.CardDescription,{children:"Freemius sync runs when a coupon is created, updated, toggled, or manually resynced."})]}),e.jsx(r.CardContent,{children:e.jsx("div",{className:"overflow-hidden rounded-lg border",children:e.jsxs("table",{className:"w-full text-left text-sm",children:[e.jsx("thead",{className:"border-b bg-muted/40 text-xs uppercase text-muted-foreground",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-4 py-3",children:"Code"}),e.jsx("th",{className:"px-4 py-3",children:"Scope"}),e.jsx("th",{className:"px-4 py-3",children:"Discount"}),e.jsx("th",{className:"px-4 py-3",children:"Usage"}),e.jsx("th",{className:"px-4 py-3",children:"Sync"}),e.jsx("th",{className:"px-4 py-3 text-right",children:"Actions"})]})}),e.jsx("tbody",{className:"divide-y",children:c?.length?c.map(s=>e.jsxs("tr",{className:"align-top",children:[e.jsxs("td",{className:"px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono font-semibold",children:s.code}),e.jsx(r.Badge,{variant:s.is_active?"default":"outline",children:s.is_active?"Active":"Inactive"})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:s.name})]}),e.jsxs("td",{className:"px-4 py-3",children:[e.jsx("span",{className:"capitalize",children:s.provider_scope}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:_(s.coupon_products,x)})]}),e.jsx("td",{className:"px-4 py-3 font-medium",children:y(s,o)}),e.jsxs("td",{className:"px-4 py-3",children:[s.redemptions_count||0,s.redemption_limit?` / ${s.redemption_limit}`:""]}),e.jsxs("td",{className:"px-4 py-3",children:[e.jsx(r.Badge,{variant:g(s.freemius_sync_status,s.is_active),children:s.freemius_sync_status}),s.freemius_sync_error?e.jsx("p",{className:"mt-1 max-w-[220px] text-xs text-destructive",children:s.freemius_sync_error}):null]}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex justify-end gap-1",children:[e.jsx(r.Button,{asChild:!0,variant:"outline",size:"sm",children:e.jsx(m,{href:`/cms/coupons/${s.id}/edit`,children:"Edit"})}),e.jsx("form",{action:async()=>{"use server";await d.toggleCouponActiveAction(s.id,!s.is_active)},children:e.jsx(r.Button,{type:"submit",variant:"outline",size:"sm",children:s.is_active?"Disable":"Enable"})}),e.jsx("form",{action:async()=>{"use server";await d.syncCouponAction(s.id)},children:e.jsx(r.Button,{type:"submit",variant:"ghost",size:"icon",title:"Resync Freemius","aria-label":`Resync Freemius coupon ${s.code}`,children:e.jsx(u.RefreshCw,{className:"h-4 w-4"})})}),e.jsx("form",{action:async()=>{"use server";await d.deleteCouponAction(s.id)},children:e.jsx(r.Button,{type:"submit",variant:"ghost",size:"icon",className:"text-destructive","aria-label":`Delete coupon ${s.code}`,children:e.jsx(u.Trash2,{className:"h-4 w-4"})})})]})})]},s.id)):e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"px-4 py-10 text-center text-muted-foreground",children:"No coupons yet."})})})]})})})]})]})}exports.CouponsPage=N;
@@ -1,423 +1,171 @@
1
- import { jsxDEV as e } from "react/jsx-dev-runtime";
2
- import d from "next/link";
3
- import { Button as l, Card as p, CardHeader as N, CardTitle as b, CardDescription as f, CardContent as x, Badge as a } from "@nextblock-cms/ui";
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import p from "next/link";
3
+ import { Button as n, Card as f, CardHeader as h, CardTitle as x, CardDescription as y, CardContent as v, Badge as m } from "@nextblock-cms/ui";
4
4
  import { getServiceRoleSupabaseClient as g } from "@nextblock-cms/db/server";
5
- import { RefreshCw as C, Trash2 as h } from "lucide-react";
6
- import { formatPrice as k } from "@nextblock-cms/utils";
7
- import { createCouponAction as v, toggleCouponActiveAction as D, syncCouponAction as j, deleteCouponAction as R } from "./actions.es.js";
8
- import { CreateCouponDialog as U } from "./CreateCouponDialog.es.js";
9
- import { normalizeCouponProductOptions as B } from "./product-options.es.js";
10
- function H(o, c) {
11
- return o.discount_type === "percent" ? `${o.discount_amount}%` : k(o.discount_amount, c);
5
+ import { RefreshCw as _, Trash2 as N } from "lucide-react";
6
+ import { formatPrice as b } from "@nextblock-cms/utils";
7
+ import { createCouponAction as C, toggleCouponActiveAction as w, syncCouponAction as S, deleteCouponAction as k } from "./actions.es.js";
8
+ import { CreateCouponDialog as A } from "./CreateCouponDialog.es.js";
9
+ import { normalizeCouponProductOptions as q } from "./product-options.es.js";
10
+ function $(i, a) {
11
+ return i.discount_type === "percent" ? `${i.discount_amount}%` : b(i.discount_amount, a);
12
12
  }
13
- function P(o, c) {
14
- return c ? o === "synced" || o === "not_required" ? "default" : "secondary" : "outline";
13
+ function z(i, a) {
14
+ return a ? i === "synced" || i === "not_required" ? "default" : "secondary" : "outline";
15
15
  }
16
- function y(o, c) {
17
- const i = /* @__PURE__ */ new Set();
18
- for (const n of o || []) {
19
- const r = n.product_id;
20
- r && i.add(c.get(r) || r);
16
+ function D(i, a) {
17
+ const s = /* @__PURE__ */ new Set();
18
+ for (const d of i || []) {
19
+ const c = d.product_id;
20
+ c && s.add(a.get(c) || c);
21
21
  }
22
- return i.size;
22
+ return s.size;
23
23
  }
24
- function _(o, c) {
25
- const i = y(o, c);
26
- return i === 0 ? "All eligible products" : `${i} scoped SKU${i === 1 ? "" : "s"}`;
24
+ function j(i, a) {
25
+ const s = D(i, a);
26
+ return s === 0 ? "All eligible products" : `${s} scoped SKU${s === 1 ? "" : "s"}`;
27
27
  }
28
- async function E({
29
- searchParams: o
28
+ async function H({
29
+ searchParams: i
30
30
  }) {
31
- const c = g();
32
- let i = c.from("coupons").select(
31
+ const a = g();
32
+ let s = a.from("coupons").select(
33
33
  `
34
34
  *,
35
35
  coupon_products(product_id),
36
36
  coupon_freemius_mappings(sync_status, sync_error)
37
37
  `
38
38
  ).order("created_at", { ascending: !1 });
39
- o?.q && (i = i.or(`code.ilike.%${o.q}%,name.ilike.%${o.q}%`)), o?.status === "active" ? i = i.eq("is_active", !0) : o?.status === "inactive" && (i = i.eq("is_active", !1));
40
- const [{ data: n }, { data: r }, { data: t }] = await Promise.all([
41
- i,
42
- c.from("products").select(
39
+ i?.q && (s = s.or(`code.ilike.%${i.q}%,name.ilike.%${i.q}%`)), i?.status === "active" ? s = s.eq("is_active", !0) : i?.status === "inactive" && (s = s.eq("is_active", !1));
40
+ const [{ data: d }, { data: c }, { data: l }] = await Promise.all([
41
+ s,
42
+ a.from("products").select(
43
43
  "id, title, sku, payment_provider, freemius_product_id, language:languages(code, name), product_media(sort_order, media(file_path, object_key))"
44
44
  ).order("title", { ascending: !0 }),
45
- c.from("currencies").select("code, is_default").eq("is_active", !0)
46
- ]), m = t?.find((s) => s.is_default)?.code || t?.[0]?.code || "USD", u = new Map(
47
- (r || []).map((s) => [
48
- s.id,
49
- s.sku?.trim().toUpperCase() || s.id
45
+ a.from("currencies").select("code, is_default").eq("is_active", !0)
46
+ ]), o = l?.find((t) => t.is_default)?.code || l?.[0]?.code || "USD", u = new Map(
47
+ (c || []).map((t) => [
48
+ t.id,
49
+ t.sku?.trim().toUpperCase() || t.id
50
50
  ])
51
51
  );
52
- return /* @__PURE__ */ e("div", { className: "mx-auto w-full max-w-7xl space-y-6 px-6 py-8", children: [
53
- /* @__PURE__ */ e("div", { className: "flex flex-col gap-4 md:flex-row md:items-end md:justify-between", children: [
54
- /* @__PURE__ */ e("div", { children: [
55
- /* @__PURE__ */ e("h1", { className: "text-3xl font-bold tracking-tight", children: "Coupons" }, void 0, !1, {
56
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
57
- lineNumber: 133,
58
- columnNumber: 11
59
- }, this),
60
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Create provider-aware discounts for Stripe checkout and Freemius licenses." }, void 0, !1, {
61
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
62
- lineNumber: 134,
63
- columnNumber: 11
64
- }, this)
65
- ] }, void 0, !0, {
66
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
67
- lineNumber: 132,
68
- columnNumber: 9
69
- }, this),
70
- /* @__PURE__ */ e("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [
71
- /* @__PURE__ */ e("form", { className: "flex gap-2", action: "/cms/coupons", children: [
52
+ return /* @__PURE__ */ r("div", { className: "mx-auto w-full max-w-7xl space-y-6 px-6 py-8", children: [
53
+ /* @__PURE__ */ r("div", { className: "flex flex-col gap-4 md:flex-row md:items-end md:justify-between", children: [
54
+ /* @__PURE__ */ r("div", { children: [
55
+ /* @__PURE__ */ e("h1", { className: "text-3xl font-bold tracking-tight", children: "Coupons" }),
56
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Create provider-aware discounts for Stripe checkout and Freemius licenses." })
57
+ ] }),
58
+ /* @__PURE__ */ r("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center", children: [
59
+ /* @__PURE__ */ r("form", { className: "flex gap-2", action: "/cms/coupons", children: [
72
60
  /* @__PURE__ */ e(
73
61
  "input",
74
62
  {
75
63
  name: "q",
76
64
  placeholder: "Search coupons",
77
- defaultValue: o?.q || "",
65
+ defaultValue: i?.q || "",
78
66
  className: "h-10 rounded-md border border-input bg-background px-3 py-2 text-sm"
79
- },
80
- void 0,
81
- !1,
82
- {
83
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
84
- lineNumber: 140,
85
- columnNumber: 13
86
- },
87
- this
67
+ }
88
68
  ),
89
- /* @__PURE__ */ e(
69
+ /* @__PURE__ */ r(
90
70
  "select",
91
71
  {
92
72
  name: "status",
93
- defaultValue: o?.status || "all",
73
+ defaultValue: i?.status || "all",
94
74
  className: "h-10 rounded-md border border-input bg-background px-3 py-2 text-sm",
95
75
  children: [
96
- /* @__PURE__ */ e("option", { value: "all", children: "All" }, void 0, !1, {
97
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
98
- lineNumber: 151,
99
- columnNumber: 15
100
- }, this),
101
- /* @__PURE__ */ e("option", { value: "active", children: "Active" }, void 0, !1, {
102
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
103
- lineNumber: 152,
104
- columnNumber: 15
105
- }, this),
106
- /* @__PURE__ */ e("option", { value: "inactive", children: "Inactive" }, void 0, !1, {
107
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
108
- lineNumber: 153,
109
- columnNumber: 15
110
- }, this)
76
+ /* @__PURE__ */ e("option", { value: "all", children: "All" }),
77
+ /* @__PURE__ */ e("option", { value: "active", children: "Active" }),
78
+ /* @__PURE__ */ e("option", { value: "inactive", children: "Inactive" })
111
79
  ]
112
- },
113
- void 0,
114
- !0,
115
- {
116
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
117
- lineNumber: 146,
118
- columnNumber: 13
119
- },
120
- this
80
+ }
121
81
  ),
122
- /* @__PURE__ */ e(l, { type: "submit", variant: "outline", children: "Filter" }, void 0, !1, {
123
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
124
- lineNumber: 155,
125
- columnNumber: 13
126
- }, this)
127
- ] }, void 0, !0, {
128
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
129
- lineNumber: 139,
130
- columnNumber: 11
131
- }, this),
82
+ /* @__PURE__ */ e(n, { type: "submit", variant: "outline", children: "Filter" })
83
+ ] }),
132
84
  /* @__PURE__ */ e(
133
- U,
85
+ A,
134
86
  {
135
- action: v,
136
- products: B(r),
137
- currencyCode: m
138
- },
139
- void 0,
140
- !1,
141
- {
142
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
143
- lineNumber: 157,
144
- columnNumber: 11
145
- },
146
- this
87
+ action: C,
88
+ products: q(c),
89
+ currencyCode: o
90
+ }
147
91
  )
148
- ] }, void 0, !0, {
149
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
150
- lineNumber: 138,
151
- columnNumber: 9
152
- }, this)
153
- ] }, void 0, !0, {
154
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
155
- lineNumber: 131,
156
- columnNumber: 7
157
- }, this),
158
- /* @__PURE__ */ e(p, { children: [
159
- /* @__PURE__ */ e(N, { children: [
160
- /* @__PURE__ */ e(b, { children: "All Coupons" }, void 0, !1, {
161
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
162
- lineNumber: 167,
163
- columnNumber: 11
164
- }, this),
165
- /* @__PURE__ */ e(f, { children: "Freemius sync runs when a coupon is created, updated, toggled, or manually resynced." }, void 0, !1, {
166
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
167
- lineNumber: 168,
168
- columnNumber: 11
169
- }, this)
170
- ] }, void 0, !0, {
171
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
172
- lineNumber: 166,
173
- columnNumber: 9
174
- }, this),
175
- /* @__PURE__ */ e(x, { children: /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-lg border", children: /* @__PURE__ */ e("table", { className: "w-full text-left text-sm", children: [
176
- /* @__PURE__ */ e("thead", { className: "border-b bg-muted/40 text-xs uppercase text-muted-foreground", children: /* @__PURE__ */ e("tr", { children: [
177
- /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Code" }, void 0, !1, {
178
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
179
- lineNumber: 177,
180
- columnNumber: 19
181
- }, this),
182
- /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Scope" }, void 0, !1, {
183
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
184
- lineNumber: 178,
185
- columnNumber: 19
186
- }, this),
187
- /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Discount" }, void 0, !1, {
188
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
189
- lineNumber: 179,
190
- columnNumber: 19
191
- }, this),
192
- /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Usage" }, void 0, !1, {
193
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
194
- lineNumber: 180,
195
- columnNumber: 19
196
- }, this),
197
- /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Sync" }, void 0, !1, {
198
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
199
- lineNumber: 181,
200
- columnNumber: 19
201
- }, this),
202
- /* @__PURE__ */ e("th", { className: "px-4 py-3 text-right", children: "Actions" }, void 0, !1, {
203
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
204
- lineNumber: 182,
205
- columnNumber: 19
206
- }, this)
207
- ] }, void 0, !0, {
208
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
209
- lineNumber: 176,
210
- columnNumber: 17
211
- }, this) }, void 0, !1, {
212
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
213
- lineNumber: 175,
214
- columnNumber: 15
215
- }, this),
216
- /* @__PURE__ */ e("tbody", { className: "divide-y", children: n?.length ? n.map((s) => /* @__PURE__ */ e("tr", { className: "align-top", children: [
217
- /* @__PURE__ */ e("td", { className: "px-4 py-3", children: [
218
- /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: [
219
- /* @__PURE__ */ e("span", { className: "font-mono font-semibold", children: s.code }, void 0, !1, {
220
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
221
- lineNumber: 197,
222
- columnNumber: 27
223
- }, this),
224
- /* @__PURE__ */ e(a, { variant: s.is_active ? "default" : "outline", children: s.is_active ? "Active" : "Inactive" }, void 0, !1, {
225
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
226
- lineNumber: 198,
227
- columnNumber: 27
228
- }, this)
229
- ] }, void 0, !0, {
230
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
231
- lineNumber: 196,
232
- columnNumber: 25
233
- }, this),
234
- /* @__PURE__ */ e("p", { className: "mt-1 text-xs text-muted-foreground", children: s.name }, void 0, !1, {
235
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
236
- lineNumber: 202,
237
- columnNumber: 25
238
- }, this)
239
- ] }, void 0, !0, {
240
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
241
- lineNumber: 195,
242
- columnNumber: 23
243
- }, this),
244
- /* @__PURE__ */ e("td", { className: "px-4 py-3", children: [
245
- /* @__PURE__ */ e("span", { className: "capitalize", children: s.provider_scope }, void 0, !1, {
246
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
247
- lineNumber: 205,
248
- columnNumber: 25
249
- }, this),
250
- /* @__PURE__ */ e("p", { className: "mt-1 text-xs text-muted-foreground", children: _(s.coupon_products, u) }, void 0, !1, {
251
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
252
- lineNumber: 206,
253
- columnNumber: 25
254
- }, this)
255
- ] }, void 0, !0, {
256
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
257
- lineNumber: 204,
258
- columnNumber: 23
259
- }, this),
260
- /* @__PURE__ */ e("td", { className: "px-4 py-3 font-medium", children: H(s, m) }, void 0, !1, {
261
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
262
- lineNumber: 210,
263
- columnNumber: 23
264
- }, this),
265
- /* @__PURE__ */ e("td", { className: "px-4 py-3", children: [
266
- s.redemptions_count || 0,
267
- s.redemption_limit ? ` / ${s.redemption_limit}` : ""
268
- ] }, void 0, !0, {
269
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
270
- lineNumber: 213,
271
- columnNumber: 23
272
- }, this),
273
- /* @__PURE__ */ e("td", { className: "px-4 py-3", children: [
274
- /* @__PURE__ */ e(a, { variant: P(s.freemius_sync_status, s.is_active), children: s.freemius_sync_status }, void 0, !1, {
275
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
276
- lineNumber: 218,
277
- columnNumber: 25
278
- }, this),
279
- s.freemius_sync_error ? /* @__PURE__ */ e("p", { className: "mt-1 max-w-[220px] text-xs text-destructive", children: s.freemius_sync_error }, void 0, !1, {
280
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
281
- lineNumber: 222,
282
- columnNumber: 27
283
- }, this) : null
284
- ] }, void 0, !0, {
285
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
286
- lineNumber: 217,
287
- columnNumber: 23
288
- }, this),
289
- /* @__PURE__ */ e("td", { className: "px-4 py-3", children: /* @__PURE__ */ e("div", { className: "flex justify-end gap-1", children: [
290
- /* @__PURE__ */ e(l, { asChild: !0, variant: "outline", size: "sm", children: /* @__PURE__ */ e(d, { href: `/cms/coupons/${s.id}/edit`, children: "Edit" }, void 0, !1, {
291
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
292
- lineNumber: 230,
293
- columnNumber: 29
294
- }, this) }, void 0, !1, {
295
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
296
- lineNumber: 229,
297
- columnNumber: 27
298
- }, this),
92
+ ] })
93
+ ] }),
94
+ /* @__PURE__ */ r(f, { children: [
95
+ /* @__PURE__ */ r(h, { children: [
96
+ /* @__PURE__ */ e(x, { children: "All Coupons" }),
97
+ /* @__PURE__ */ e(y, { children: "Freemius sync runs when a coupon is created, updated, toggled, or manually resynced." })
98
+ ] }),
99
+ /* @__PURE__ */ e(v, { children: /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-lg border", children: /* @__PURE__ */ r("table", { className: "w-full text-left text-sm", children: [
100
+ /* @__PURE__ */ e("thead", { className: "border-b bg-muted/40 text-xs uppercase text-muted-foreground", children: /* @__PURE__ */ r("tr", { children: [
101
+ /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Code" }),
102
+ /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Scope" }),
103
+ /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Discount" }),
104
+ /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Usage" }),
105
+ /* @__PURE__ */ e("th", { className: "px-4 py-3", children: "Sync" }),
106
+ /* @__PURE__ */ e("th", { className: "px-4 py-3 text-right", children: "Actions" })
107
+ ] }) }),
108
+ /* @__PURE__ */ e("tbody", { className: "divide-y", children: d?.length ? d.map((t) => /* @__PURE__ */ r("tr", { className: "align-top", children: [
109
+ /* @__PURE__ */ r("td", { className: "px-4 py-3", children: [
110
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
111
+ /* @__PURE__ */ e("span", { className: "font-mono font-semibold", children: t.code }),
112
+ /* @__PURE__ */ e(m, { variant: t.is_active ? "default" : "outline", children: t.is_active ? "Active" : "Inactive" })
113
+ ] }),
114
+ /* @__PURE__ */ e("p", { className: "mt-1 text-xs text-muted-foreground", children: t.name })
115
+ ] }),
116
+ /* @__PURE__ */ r("td", { className: "px-4 py-3", children: [
117
+ /* @__PURE__ */ e("span", { className: "capitalize", children: t.provider_scope }),
118
+ /* @__PURE__ */ e("p", { className: "mt-1 text-xs text-muted-foreground", children: j(t.coupon_products, u) })
119
+ ] }),
120
+ /* @__PURE__ */ e("td", { className: "px-4 py-3 font-medium", children: $(t, o) }),
121
+ /* @__PURE__ */ r("td", { className: "px-4 py-3", children: [
122
+ t.redemptions_count || 0,
123
+ t.redemption_limit ? ` / ${t.redemption_limit}` : ""
124
+ ] }),
125
+ /* @__PURE__ */ r("td", { className: "px-4 py-3", children: [
126
+ /* @__PURE__ */ e(m, { variant: z(t.freemius_sync_status, t.is_active), children: t.freemius_sync_status }),
127
+ t.freemius_sync_error ? /* @__PURE__ */ e("p", { className: "mt-1 max-w-[220px] text-xs text-destructive", children: t.freemius_sync_error }) : null
128
+ ] }),
129
+ /* @__PURE__ */ e("td", { className: "px-4 py-3", children: /* @__PURE__ */ r("div", { className: "flex justify-end gap-1", children: [
130
+ /* @__PURE__ */ e(n, { asChild: !0, variant: "outline", size: "sm", children: /* @__PURE__ */ e(p, { href: `/cms/coupons/${t.id}/edit`, children: "Edit" }) }),
299
131
  /* @__PURE__ */ e("form", { action: async () => {
300
132
  "use server";
301
- await D(s.id, !s.is_active);
302
- }, children: /* @__PURE__ */ e(l, { type: "submit", variant: "outline", size: "sm", children: s.is_active ? "Disable" : "Enable" }, void 0, !1, {
303
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
304
- lineNumber: 236,
305
- columnNumber: 29
306
- }, this) }, void 0, !1, {
307
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
308
- lineNumber: 232,
309
- columnNumber: 27
310
- }, this),
133
+ await w(t.id, !t.is_active);
134
+ }, children: /* @__PURE__ */ e(n, { type: "submit", variant: "outline", size: "sm", children: t.is_active ? "Disable" : "Enable" }) }),
311
135
  /* @__PURE__ */ e("form", { action: async () => {
312
136
  "use server";
313
- await j(s.id);
137
+ await S(t.id);
314
138
  }, children: /* @__PURE__ */ e(
315
- l,
139
+ n,
316
140
  {
317
141
  type: "submit",
318
142
  variant: "ghost",
319
143
  size: "icon",
320
144
  title: "Resync Freemius",
321
- "aria-label": `Resync Freemius coupon ${s.code}`,
322
- children: /* @__PURE__ */ e(C, { className: "h-4 w-4" }, void 0, !1, {
323
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
324
- lineNumber: 251,
325
- columnNumber: 31
326
- }, this)
327
- },
328
- void 0,
329
- !1,
330
- {
331
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
332
- lineNumber: 244,
333
- columnNumber: 29
334
- },
335
- this
336
- ) }, void 0, !1, {
337
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
338
- lineNumber: 240,
339
- columnNumber: 27
340
- }, this),
145
+ "aria-label": `Resync Freemius coupon ${t.code}`,
146
+ children: /* @__PURE__ */ e(_, { className: "h-4 w-4" })
147
+ }
148
+ ) }),
341
149
  /* @__PURE__ */ e("form", { action: async () => {
342
150
  "use server";
343
- await R(s.id);
151
+ await k(t.id);
344
152
  }, children: /* @__PURE__ */ e(
345
- l,
153
+ n,
346
154
  {
347
155
  type: "submit",
348
156
  variant: "ghost",
349
157
  size: "icon",
350
158
  className: "text-destructive",
351
- "aria-label": `Delete coupon ${s.code}`,
352
- children: /* @__PURE__ */ e(h, { className: "h-4 w-4" }, void 0, !1, {
353
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
354
- lineNumber: 265,
355
- columnNumber: 31
356
- }, this)
357
- },
358
- void 0,
359
- !1,
360
- {
361
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
362
- lineNumber: 258,
363
- columnNumber: 29
364
- },
365
- this
366
- ) }, void 0, !1, {
367
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
368
- lineNumber: 254,
369
- columnNumber: 27
370
- }, this)
371
- ] }, void 0, !0, {
372
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
373
- lineNumber: 228,
374
- columnNumber: 25
375
- }, this) }, void 0, !1, {
376
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
377
- lineNumber: 227,
378
- columnNumber: 23
379
- }, this)
380
- ] }, s.id, !0, {
381
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
382
- lineNumber: 194,
383
- columnNumber: 21
384
- }, this)) : /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { colSpan: 6, className: "px-4 py-10 text-center text-muted-foreground", children: "No coupons yet." }, void 0, !1, {
385
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
386
- lineNumber: 188,
387
- columnNumber: 21
388
- }, this) }, void 0, !1, {
389
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
390
- lineNumber: 187,
391
- columnNumber: 19
392
- }, this) }, void 0, !1, {
393
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
394
- lineNumber: 185,
395
- columnNumber: 15
396
- }, this)
397
- ] }, void 0, !0, {
398
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
399
- lineNumber: 174,
400
- columnNumber: 13
401
- }, this) }, void 0, !1, {
402
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
403
- lineNumber: 173,
404
- columnNumber: 11
405
- }, this) }, void 0, !1, {
406
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
407
- lineNumber: 172,
408
- columnNumber: 9
409
- }, this)
410
- ] }, void 0, !0, {
411
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
412
- lineNumber: 165,
413
- columnNumber: 7
414
- }, this)
415
- ] }, void 0, !0, {
416
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",
417
- lineNumber: 130,
418
- columnNumber: 5
419
- }, this);
159
+ "aria-label": `Delete coupon ${t.code}`,
160
+ children: /* @__PURE__ */ e(N, { className: "h-4 w-4" })
161
+ }
162
+ ) })
163
+ ] }) })
164
+ ] }, t.id)) : /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { colSpan: 6, className: "px-4 py-10 text-center text-muted-foreground", children: "No coupons yet." }) }) })
165
+ ] }) }) })
166
+ ] })
167
+ ] });
420
168
  }
421
169
  export {
422
- E as CouponsPage
170
+ H as CouponsPage
423
171
  };