@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,91 +1,191 @@
1
- import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import { Card as m, CardHeader as u, CardTitle as p, CardContent as h, Label as d, Input as n, Textarea as f, Button as v } from "@nextblock-cms/ui";
3
- import { minorUnitAmountToMajor as y, getCurrencyMinorUnitFactor as N } from "@nextblock-cms/utils";
4
- import { ProductScopePicker as x } from "./ProductScopePicker.es.js";
5
- function c(i) {
6
- if (!i)
1
+ import { jsxDEV as e } from "react/jsx-dev-runtime";
2
+ import { Card as u, CardHeader as d, CardTitle as a, CardContent as p, Label as i, Input as n, Textarea as b, Button as N } from "@nextblock-cms/ui";
3
+ import { minorUnitAmountToMajor as x, getCurrencyMinorUnitFactor as f } from "@nextblock-cms/utils";
4
+ import { ProductScopePicker as h } from "./ProductScopePicker.es.js";
5
+ function c(o) {
6
+ if (!o)
7
7
  return "";
8
- const a = new Date(i);
9
- return Number.isNaN(a.getTime()) ? "" : a.toISOString().slice(0, 16);
8
+ const r = new Date(o);
9
+ return Number.isNaN(r.getTime()) ? "" : r.toISOString().slice(0, 16);
10
10
  }
11
- function g(i, a) {
12
- const r = N(a) === 1 ? 0 : 2;
13
- return i.toFixed(r);
11
+ function C(o, r) {
12
+ const s = f(r) === 1 ? 0 : 2;
13
+ return o.toFixed(s);
14
14
  }
15
- function b(i, a) {
16
- return i?.discount_amount ? i.discount_type === "fixed" ? g(
17
- y(i.discount_amount, a),
18
- a
19
- ) : i.discount_amount : 10;
15
+ function k(o, r) {
16
+ return o?.discount_amount ? o.discount_type === "fixed" ? C(
17
+ x(o.discount_amount, r),
18
+ r
19
+ ) : o.discount_amount : 10;
20
20
  }
21
- function V({
22
- action: i,
23
- products: a,
24
- coupon: r,
25
- selectedProductIds: s = [],
26
- submitLabel: o,
27
- currencyCode: l = "USD"
21
+ function j({
22
+ action: o,
23
+ products: r,
24
+ coupon: s,
25
+ selectedProductIds: l = [],
26
+ submitLabel: t,
27
+ currencyCode: m = "USD"
28
28
  }) {
29
- return /* @__PURE__ */ t("form", { action: i, children: [
30
- /* @__PURE__ */ e("input", { type: "hidden", name: "currency_code", value: l }),
31
- /* @__PURE__ */ t(m, { children: [
32
- /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(p, { children: r?.id ? "Edit Coupon" : "Create Coupon" }) }),
33
- /* @__PURE__ */ t(h, { className: "space-y-6", children: [
34
- /* @__PURE__ */ t("div", { className: "grid gap-4 md:grid-cols-2", children: [
35
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
36
- /* @__PURE__ */ e(d, { htmlFor: "coupon-code", children: "Code" }),
29
+ return /* @__PURE__ */ e("form", { action: o, children: [
30
+ /* @__PURE__ */ e("input", { type: "hidden", name: "currency_code", value: m }, void 0, !1, {
31
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
32
+ lineNumber: 71,
33
+ columnNumber: 7
34
+ }, this),
35
+ /* @__PURE__ */ e(u, { children: [
36
+ /* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(a, { children: s?.id ? "Edit Coupon" : "Create Coupon" }, void 0, !1, {
37
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
38
+ lineNumber: 74,
39
+ columnNumber: 11
40
+ }, this) }, void 0, !1, {
41
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
42
+ lineNumber: 73,
43
+ columnNumber: 9
44
+ }, this),
45
+ /* @__PURE__ */ e(p, { className: "space-y-6", children: [
46
+ /* @__PURE__ */ e("div", { className: "grid gap-4 md:grid-cols-2", children: [
47
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
48
+ /* @__PURE__ */ e(i, { htmlFor: "coupon-code", children: "Code" }, void 0, !1, {
49
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
50
+ lineNumber: 79,
51
+ columnNumber: 15
52
+ }, this),
37
53
  /* @__PURE__ */ e(
38
54
  n,
39
55
  {
40
56
  id: "coupon-code",
41
57
  name: "code",
42
- defaultValue: r?.code || "",
58
+ defaultValue: s?.code || "",
43
59
  className: "uppercase",
44
60
  required: !0
45
- }
61
+ },
62
+ void 0,
63
+ !1,
64
+ {
65
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
66
+ lineNumber: 80,
67
+ columnNumber: 15
68
+ },
69
+ this
46
70
  )
47
- ] }),
48
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
49
- /* @__PURE__ */ e(d, { htmlFor: "coupon-name", children: "Name" }),
50
- /* @__PURE__ */ e(n, { id: "coupon-name", name: "name", defaultValue: r?.name || "", required: !0 })
51
- ] })
52
- ] }),
53
- /* @__PURE__ */ t("div", { className: "grid gap-4 md:grid-cols-3", children: [
54
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
55
- /* @__PURE__ */ e(d, { htmlFor: "provider-scope", children: "Provider scope" }),
56
- /* @__PURE__ */ t(
71
+ ] }, void 0, !0, {
72
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
73
+ lineNumber: 78,
74
+ columnNumber: 13
75
+ }, this),
76
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
77
+ /* @__PURE__ */ e(i, { htmlFor: "coupon-name", children: "Name" }, void 0, !1, {
78
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
79
+ lineNumber: 89,
80
+ columnNumber: 15
81
+ }, this),
82
+ /* @__PURE__ */ e(n, { id: "coupon-name", name: "name", defaultValue: s?.name || "", required: !0 }, void 0, !1, {
83
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
84
+ lineNumber: 90,
85
+ columnNumber: 15
86
+ }, this)
87
+ ] }, void 0, !0, {
88
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
89
+ lineNumber: 88,
90
+ columnNumber: 13
91
+ }, this)
92
+ ] }, void 0, !0, {
93
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
94
+ lineNumber: 77,
95
+ columnNumber: 11
96
+ }, this),
97
+ /* @__PURE__ */ e("div", { className: "grid gap-4 md:grid-cols-3", children: [
98
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
99
+ /* @__PURE__ */ e(i, { htmlFor: "provider-scope", children: "Provider scope" }, void 0, !1, {
100
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
101
+ lineNumber: 96,
102
+ columnNumber: 15
103
+ }, this),
104
+ /* @__PURE__ */ e(
57
105
  "select",
58
106
  {
59
107
  id: "provider-scope",
60
108
  name: "provider_scope",
61
- defaultValue: r?.provider_scope || "all",
109
+ defaultValue: s?.provider_scope || "all",
62
110
  className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
63
111
  children: [
64
- /* @__PURE__ */ e("option", { value: "all", children: "Stripe + Freemius" }),
65
- /* @__PURE__ */ e("option", { value: "stripe", children: "Stripe only" }),
66
- /* @__PURE__ */ e("option", { value: "freemius", children: "Freemius only" })
112
+ /* @__PURE__ */ e("option", { value: "all", children: "Stripe + Freemius" }, void 0, !1, {
113
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
114
+ lineNumber: 103,
115
+ columnNumber: 17
116
+ }, this),
117
+ /* @__PURE__ */ e("option", { value: "stripe", children: "Stripe only" }, void 0, !1, {
118
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
119
+ lineNumber: 104,
120
+ columnNumber: 17
121
+ }, this),
122
+ /* @__PURE__ */ e("option", { value: "freemius", children: "Freemius only" }, void 0, !1, {
123
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
124
+ lineNumber: 105,
125
+ columnNumber: 17
126
+ }, this)
67
127
  ]
68
- }
128
+ },
129
+ void 0,
130
+ !0,
131
+ {
132
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
133
+ lineNumber: 97,
134
+ columnNumber: 15
135
+ },
136
+ this
69
137
  )
70
- ] }),
71
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
72
- /* @__PURE__ */ e(d, { htmlFor: "discount-type", children: "Discount type" }),
73
- /* @__PURE__ */ t(
138
+ ] }, void 0, !0, {
139
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
140
+ lineNumber: 95,
141
+ columnNumber: 13
142
+ }, this),
143
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
144
+ /* @__PURE__ */ e(i, { htmlFor: "discount-type", children: "Discount type" }, void 0, !1, {
145
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
146
+ lineNumber: 109,
147
+ columnNumber: 15
148
+ }, this),
149
+ /* @__PURE__ */ e(
74
150
  "select",
75
151
  {
76
152
  id: "discount-type",
77
153
  name: "discount_type",
78
- defaultValue: r?.discount_type || "percent",
154
+ defaultValue: s?.discount_type || "percent",
79
155
  className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
80
156
  children: [
81
- /* @__PURE__ */ e("option", { value: "percent", children: "Percent" }),
82
- /* @__PURE__ */ e("option", { value: "fixed", children: "Fixed amount" })
157
+ /* @__PURE__ */ e("option", { value: "percent", children: "Percent" }, void 0, !1, {
158
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
159
+ lineNumber: 116,
160
+ columnNumber: 17
161
+ }, this),
162
+ /* @__PURE__ */ e("option", { value: "fixed", children: "Fixed amount" }, void 0, !1, {
163
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
164
+ lineNumber: 117,
165
+ columnNumber: 17
166
+ }, this)
83
167
  ]
84
- }
168
+ },
169
+ void 0,
170
+ !0,
171
+ {
172
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
173
+ lineNumber: 110,
174
+ columnNumber: 15
175
+ },
176
+ this
85
177
  )
86
- ] }),
87
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
88
- /* @__PURE__ */ e(d, { htmlFor: "discount-amount", children: "Amount" }),
178
+ ] }, void 0, !0, {
179
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
180
+ lineNumber: 108,
181
+ columnNumber: 13
182
+ }, this),
183
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
184
+ /* @__PURE__ */ e(i, { htmlFor: "discount-amount", children: "Amount" }, void 0, !1, {
185
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
186
+ lineNumber: 121,
187
+ columnNumber: 15
188
+ }, this),
89
189
  /* @__PURE__ */ e(
90
190
  n,
91
191
  {
@@ -94,40 +194,96 @@ function V({
94
194
  type: "number",
95
195
  min: "0.01",
96
196
  step: "0.01",
97
- defaultValue: b(r, l),
197
+ defaultValue: k(s, m),
98
198
  required: !0
99
- }
199
+ },
200
+ void 0,
201
+ !1,
202
+ {
203
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
204
+ lineNumber: 122,
205
+ columnNumber: 15
206
+ },
207
+ this
100
208
  ),
101
- /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: "Percent coupons use 1-100. Fixed coupons use regular amounts, for example $10.00." })
102
- ] })
103
- ] }),
104
- /* @__PURE__ */ t("div", { className: "grid gap-4 md:grid-cols-3", children: [
105
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
106
- /* @__PURE__ */ e(d, { htmlFor: "starts-at", children: "Starts at" }),
209
+ /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: "Percent coupons use 1-100. Fixed coupons use regular amounts, for example $10.00." }, void 0, !1, {
210
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
211
+ lineNumber: 131,
212
+ columnNumber: 15
213
+ }, this)
214
+ ] }, void 0, !0, {
215
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
216
+ lineNumber: 120,
217
+ columnNumber: 13
218
+ }, this)
219
+ ] }, void 0, !0, {
220
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
221
+ lineNumber: 94,
222
+ columnNumber: 11
223
+ }, this),
224
+ /* @__PURE__ */ e("div", { className: "grid gap-4 md:grid-cols-3", children: [
225
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
226
+ /* @__PURE__ */ e(i, { htmlFor: "starts-at", children: "Starts at" }, void 0, !1, {
227
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
228
+ lineNumber: 139,
229
+ columnNumber: 15
230
+ }, this),
107
231
  /* @__PURE__ */ e(
108
232
  n,
109
233
  {
110
234
  id: "starts-at",
111
235
  name: "starts_at",
112
236
  type: "datetime-local",
113
- defaultValue: c(r?.starts_at)
114
- }
237
+ defaultValue: c(s?.starts_at)
238
+ },
239
+ void 0,
240
+ !1,
241
+ {
242
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
243
+ lineNumber: 140,
244
+ columnNumber: 15
245
+ },
246
+ this
115
247
  )
116
- ] }),
117
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
118
- /* @__PURE__ */ e(d, { htmlFor: "ends-at", children: "Ends at" }),
248
+ ] }, void 0, !0, {
249
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
250
+ lineNumber: 138,
251
+ columnNumber: 13
252
+ }, this),
253
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
254
+ /* @__PURE__ */ e(i, { htmlFor: "ends-at", children: "Ends at" }, void 0, !1, {
255
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
256
+ lineNumber: 148,
257
+ columnNumber: 15
258
+ }, this),
119
259
  /* @__PURE__ */ e(
120
260
  n,
121
261
  {
122
262
  id: "ends-at",
123
263
  name: "ends_at",
124
264
  type: "datetime-local",
125
- defaultValue: c(r?.ends_at)
126
- }
265
+ defaultValue: c(s?.ends_at)
266
+ },
267
+ void 0,
268
+ !1,
269
+ {
270
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
271
+ lineNumber: 149,
272
+ columnNumber: 15
273
+ },
274
+ this
127
275
  )
128
- ] }),
129
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
130
- /* @__PURE__ */ e(d, { htmlFor: "redemption-limit", children: "Redemption limit" }),
276
+ ] }, void 0, !0, {
277
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
278
+ lineNumber: 147,
279
+ columnNumber: 13
280
+ }, this),
281
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
282
+ /* @__PURE__ */ e(i, { htmlFor: "redemption-limit", children: "Redemption limit" }, void 0, !1, {
283
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
284
+ lineNumber: 157,
285
+ columnNumber: 15
286
+ }, this),
131
287
  /* @__PURE__ */ e(
132
288
  n,
133
289
  {
@@ -135,26 +291,62 @@ function V({
135
291
  name: "redemption_limit",
136
292
  type: "number",
137
293
  min: "1",
138
- defaultValue: r?.redemption_limit || ""
139
- }
294
+ defaultValue: s?.redemption_limit || ""
295
+ },
296
+ void 0,
297
+ !1,
298
+ {
299
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
300
+ lineNumber: 158,
301
+ columnNumber: 15
302
+ },
303
+ this
140
304
  )
141
- ] })
142
- ] }),
143
- /* @__PURE__ */ t("div", { className: "space-y-2", children: [
144
- /* @__PURE__ */ e(d, { htmlFor: "internal-note", children: "Internal note" }),
305
+ ] }, void 0, !0, {
306
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
307
+ lineNumber: 156,
308
+ columnNumber: 13
309
+ }, this)
310
+ ] }, void 0, !0, {
311
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
312
+ lineNumber: 137,
313
+ columnNumber: 11
314
+ }, this),
315
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
316
+ /* @__PURE__ */ e(i, { htmlFor: "internal-note", children: "Internal note" }, void 0, !1, {
317
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
318
+ lineNumber: 169,
319
+ columnNumber: 13
320
+ }, this),
145
321
  /* @__PURE__ */ e(
146
- f,
322
+ b,
147
323
  {
148
324
  id: "internal-note",
149
325
  name: "internal_note",
150
- defaultValue: r?.internal_note || "",
326
+ defaultValue: s?.internal_note || "",
151
327
  rows: 3
152
- }
328
+ },
329
+ void 0,
330
+ !1,
331
+ {
332
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
333
+ lineNumber: 170,
334
+ columnNumber: 13
335
+ },
336
+ this
153
337
  )
154
- ] }),
155
- /* @__PURE__ */ t("div", { className: "rounded-lg border bg-muted/20 p-4", children: [
156
- /* @__PURE__ */ e("input", { type: "hidden", name: "is_active", value: "false" }),
157
- /* @__PURE__ */ t("label", { htmlFor: "coupon-active", className: "flex cursor-pointer items-start gap-3", children: [
338
+ ] }, void 0, !0, {
339
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
340
+ lineNumber: 168,
341
+ columnNumber: 11
342
+ }, this),
343
+ /* @__PURE__ */ e("div", { className: "rounded-lg border bg-muted/20 p-4", children: [
344
+ /* @__PURE__ */ e("input", { type: "hidden", name: "is_active", value: "false" }, void 0, !1, {
345
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
346
+ lineNumber: 179,
347
+ columnNumber: 13
348
+ }, this),
349
+ /* @__PURE__ */ e("label", { htmlFor: "coupon-active", className: "flex cursor-pointer items-start gap-3", children: [
158
350
  /* @__PURE__ */ e(
159
351
  "input",
160
352
  {
@@ -162,28 +354,96 @@ function V({
162
354
  name: "is_active",
163
355
  type: "checkbox",
164
356
  value: "true",
165
- defaultChecked: r?.is_active ?? !0,
357
+ defaultChecked: s?.is_active ?? !0,
166
358
  className: "mt-0.5 h-4 w-4 rounded border-slate-300 text-primary focus:ring-primary"
167
- }
359
+ },
360
+ void 0,
361
+ !1,
362
+ {
363
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
364
+ lineNumber: 181,
365
+ columnNumber: 15
366
+ },
367
+ this
168
368
  ),
169
- /* @__PURE__ */ t("span", { children: [
170
- /* @__PURE__ */ e("span", { className: "block text-sm font-medium", children: "Active" }),
171
- /* @__PURE__ */ e("span", { className: "block text-sm text-muted-foreground", children: "Active coupons can be applied by shoppers during cart and checkout." })
172
- ] })
173
- ] })
174
- ] }),
175
- /* @__PURE__ */ t("div", { className: "space-y-3", children: [
176
- /* @__PURE__ */ t("div", { children: [
177
- /* @__PURE__ */ e("h3", { className: "font-semibold", children: "Product scope" }),
178
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Leave every product unchecked to apply this coupon to all products in the selected provider scope." })
179
- ] }),
180
- /* @__PURE__ */ e(x, { products: a, selectedProductIds: s })
181
- ] }),
182
- /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ e(v, { type: "submit", children: o }) })
183
- ] })
184
- ] })
185
- ] });
369
+ /* @__PURE__ */ e("span", { children: [
370
+ /* @__PURE__ */ e("span", { className: "block text-sm font-medium", children: "Active" }, void 0, !1, {
371
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
372
+ lineNumber: 190,
373
+ columnNumber: 17
374
+ }, this),
375
+ /* @__PURE__ */ e("span", { className: "block text-sm text-muted-foreground", children: "Active coupons can be applied by shoppers during cart and checkout." }, void 0, !1, {
376
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
377
+ lineNumber: 191,
378
+ columnNumber: 17
379
+ }, this)
380
+ ] }, void 0, !0, {
381
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
382
+ lineNumber: 189,
383
+ columnNumber: 15
384
+ }, this)
385
+ ] }, void 0, !0, {
386
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
387
+ lineNumber: 180,
388
+ columnNumber: 13
389
+ }, this)
390
+ ] }, void 0, !0, {
391
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
392
+ lineNumber: 178,
393
+ columnNumber: 11
394
+ }, this),
395
+ /* @__PURE__ */ e("div", { className: "space-y-3", children: [
396
+ /* @__PURE__ */ e("div", { children: [
397
+ /* @__PURE__ */ e("h3", { className: "font-semibold", children: "Product scope" }, void 0, !1, {
398
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
399
+ lineNumber: 200,
400
+ columnNumber: 15
401
+ }, this),
402
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Leave every product unchecked to apply this coupon to all products in the selected provider scope." }, void 0, !1, {
403
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
404
+ lineNumber: 201,
405
+ columnNumber: 15
406
+ }, this)
407
+ ] }, void 0, !0, {
408
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
409
+ lineNumber: 199,
410
+ columnNumber: 13
411
+ }, this),
412
+ /* @__PURE__ */ e(h, { products: r, selectedProductIds: l }, void 0, !1, {
413
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
414
+ lineNumber: 205,
415
+ columnNumber: 13
416
+ }, this)
417
+ ] }, void 0, !0, {
418
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
419
+ lineNumber: 198,
420
+ columnNumber: 11
421
+ }, this),
422
+ /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ e(N, { type: "submit", children: t }, void 0, !1, {
423
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
424
+ lineNumber: 209,
425
+ columnNumber: 13
426
+ }, this) }, void 0, !1, {
427
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
428
+ lineNumber: 208,
429
+ columnNumber: 11
430
+ }, this)
431
+ ] }, void 0, !0, {
432
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
433
+ lineNumber: 76,
434
+ columnNumber: 9
435
+ }, this)
436
+ ] }, void 0, !0, {
437
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
438
+ lineNumber: 72,
439
+ columnNumber: 7
440
+ }, this)
441
+ ] }, void 0, !0, {
442
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponEditorForm.tsx",
443
+ lineNumber: 70,
444
+ columnNumber: 5
445
+ }, this);
186
446
  }
187
447
  export {
188
- V as CouponEditorForm
448
+ j as CouponEditorForm
189
449
  };
@@ -1,5 +1,5 @@
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(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),p=require("next/link"),n=require("@nextblock-cms/ui"),b=require("@nextblock-cms/db/server"),u=require("lucide-react"),x=require("@nextblock-cms/utils"),t=require("./actions.cjs.js"),N=require("./CreateCouponDialog.cjs.js"),f=require("./product-options.cjs.js");function g(o,c){return o.discount_type==="percent"?`${o.discount_amount}%`:x.formatPrice(o.discount_amount,c)}function C(o,c){return c?o==="synced"||o==="not_required"?"default":"secondary":"outline"}function h(o,c){const i=new Set;for(const l of o||[]){const r=l.product_id;r&&i.add(c.get(r)||r)}return i.size}function k(o,c){const i=h(o,c);return i===0?"All eligible products":`${i} scoped SKU${i===1?"":"s"}`}async function D({searchParams:o}){const c=b.getServiceRoleSupabaseClient();let i=c.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});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;
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:l},{data:r},{data:m}]=await Promise.all([i,c.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}),c.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((r||[]).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/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/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/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/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/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:153,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:146,columnNumber:13},this),e.jsxDEV(n.Button,{type:"submit",variant:"outline",children:"Filter"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:139,columnNumber:11},this),e.jsxDEV(N.CreateCouponDialog,{action:t.createCouponAction,products:f.normalizeCouponProductOptions(r),currencyCode:a},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:138,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:131,columnNumber:7},this),e.jsxDEV(n.Card,{children:[e.jsxDEV(n.CardHeader,{children:[e.jsxDEV(n.CardTitle,{children:"All Coupons"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:167,columnNumber:11},this),e.jsxDEV(n.CardDescription,{children:"Freemius sync runs when a coupon is created, updated, toggled, or manually resynced."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:168,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:166,columnNumber:9},this),e.jsxDEV(n.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/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/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/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/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/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:182,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:175,columnNumber:15},this),e.jsxDEV("tbody",{className:"divide-y",children:l?.length?l.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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:197,columnNumber:27},this),e.jsxDEV(n.Badge,{variant:s.is_active?"default":"outline",children:s.is_active?"Active":"Inactive"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:198,columnNumber:27},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:202,columnNumber:25},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/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/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:206,columnNumber:25},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/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/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/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(n.Badge,{variant:C(s.freemius_sync_status,s.is_active),children:s.freemius_sync_status},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:222,columnNumber:27},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/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(n.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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:230,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/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(n.Button,{type:"submit",variant:"outline",size:"sm",children:s.is_active?"Disable":"Enable"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:236,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/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(n.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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:251,columnNumber:31},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:244,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/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(n.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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:265,columnNumber:31},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:258,columnNumber:29},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:254,columnNumber:27},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:228,columnNumber:25},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:227,columnNumber:23},this)]},s.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/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/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:188,columnNumber:21},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:187,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:185,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:174,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:173,columnNumber:11},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:165,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/pages/cms/coupons/CouponsPage.tsx",lineNumber:130,columnNumber:5},this)}exports.CouponsPage=D;