@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,395 +1,212 @@
1
- import { jsxDEV as s, Fragment as N } from "react/jsx-dev-runtime";
2
- import u from "react";
3
- const b = (e, l) => l.reduce((t, r) => {
1
+ import { jsx as e, jsxs as m, Fragment as b } from "react/jsx-runtime";
2
+ import h from "react";
3
+ const g = (t, a) => a.reduce((s, r) => {
4
4
  switch (r.type) {
5
5
  case "bold":
6
- return /* @__PURE__ */ s("strong", { children: t }, void 0, !1, {
7
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
8
- lineNumber: 26,
9
- columnNumber: 16
10
- }, void 0);
6
+ return /* @__PURE__ */ e("strong", { children: s });
11
7
  case "italic":
12
- return /* @__PURE__ */ s("em", { children: t }, void 0, !1, {
13
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
14
- lineNumber: 28,
15
- columnNumber: 16
16
- }, void 0);
8
+ return /* @__PURE__ */ e("em", { children: s });
17
9
  case "underline":
18
10
  case "u":
19
- return /* @__PURE__ */ s("u", { children: t }, void 0, !1, {
20
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
21
- lineNumber: 31,
22
- columnNumber: 16
23
- }, void 0);
11
+ return /* @__PURE__ */ e("u", { children: s });
24
12
  case "strike":
25
- return /* @__PURE__ */ s("s", { children: t }, void 0, !1, {
26
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
27
- lineNumber: 33,
28
- columnNumber: 16
29
- }, void 0);
13
+ return /* @__PURE__ */ e("s", { children: s });
30
14
  case "code":
31
- return /* @__PURE__ */ s("code", { className: "bg-muted px-1.5 py-0.5 rounded text-[0.875em] font-mono", children: t }, void 0, !1, {
32
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
33
- lineNumber: 36,
34
- columnNumber: 11
35
- }, void 0);
15
+ return /* @__PURE__ */ e("code", { className: "bg-muted px-1.5 py-0.5 rounded text-[0.875em] font-mono", children: s });
36
16
  case "link": {
37
- const n = r.attrs?.href || "#", i = r.attrs?.target || "_blank";
38
- return /* @__PURE__ */ s("a", { href: n, target: i, rel: "noopener noreferrer", className: "underline text-primary hover:text-primary/80", children: t }, void 0, !1, {
39
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
40
- lineNumber: 44,
41
- columnNumber: 11
42
- }, void 0);
17
+ const l = r.attrs?.href || "#", c = r.attrs?.target || "_blank";
18
+ return /* @__PURE__ */ e("a", { href: l, target: c, rel: "noopener noreferrer", className: "underline text-primary hover:text-primary/80", children: s });
43
19
  }
44
20
  case "highlight": {
45
- const n = r.attrs?.color;
46
- return /* @__PURE__ */ s("mark", { style: n ? { backgroundColor: n } : {}, className: n ? void 0 : "bg-yellow-200 dark:bg-yellow-800/50", children: t }, void 0, !1, {
47
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
48
- lineNumber: 52,
49
- columnNumber: 16
50
- }, void 0);
21
+ const l = r.attrs?.color;
22
+ return /* @__PURE__ */ e("mark", { style: l ? { backgroundColor: l } : {}, className: l ? void 0 : "bg-yellow-200 dark:bg-yellow-800/50", children: s });
51
23
  }
52
24
  case "subscript":
53
- return /* @__PURE__ */ s("sub", { children: t }, void 0, !1, {
54
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
55
- lineNumber: 55,
56
- columnNumber: 16
57
- }, void 0);
25
+ return /* @__PURE__ */ e("sub", { children: s });
58
26
  case "superscript":
59
- return /* @__PURE__ */ s("sup", { children: t }, void 0, !1, {
60
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
61
- lineNumber: 57,
62
- columnNumber: 16
63
- }, void 0);
27
+ return /* @__PURE__ */ e("sup", { children: s });
64
28
  case "textStyle": {
65
- const n = {};
66
- return r.attrs?.color && (n.color = r.attrs.color), r.attrs?.fontSize && (n.fontSize = r.attrs.fontSize), r.attrs?.fontFamily && (n.fontFamily = r.attrs.fontFamily), Object.keys(n).length > 0 ? /* @__PURE__ */ s("span", { style: n, children: t }, void 0, !1, {
67
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
68
- lineNumber: 63,
69
- columnNumber: 46
70
- }, void 0) : /* @__PURE__ */ s(N, { children: t }, void 0, !1, {
71
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
72
- lineNumber: 63,
73
- columnNumber: 83
74
- }, void 0);
29
+ const l = {};
30
+ return r.attrs?.color && (l.color = r.attrs.color), r.attrs?.fontSize && (l.fontSize = r.attrs.fontSize), r.attrs?.fontFamily && (l.fontFamily = r.attrs.fontFamily), Object.keys(l).length > 0 ? /* @__PURE__ */ e("span", { style: l, children: s }) : /* @__PURE__ */ e(b, { children: s });
75
31
  }
76
32
  default:
77
- return t;
33
+ return s;
78
34
  }
79
- }, e), f = ["h1", "h2", "h3", "h4", "h5", "h6"], k = (e, l, t, r) => {
80
- const n = Math.max(1, Math.min(6, e)), i = f[n - 1], o = r?.id;
81
- return u.createElement(i, { key: t, className: "font-bold my-4", id: o }, l);
82
- }, d = (e) => {
83
- const l = {}, t = {}, r = e?.colspan, n = e?.rowspan, i = e?.colwidth;
84
- return r && r > 1 && (l.colSpan = r), n && n > 1 && (l.rowSpan = n), i && Array.isArray(i) && i[0] && (t.minWidth = i[0]), Object.keys(t).length > 0 && (l.style = t), l;
85
- }, p = (e, l) => {
86
- if (e.type === "text") {
87
- const r = e.text ?? "";
88
- return /* @__PURE__ */ s(u.Fragment, { children: e.marks?.length ? b(r, e.marks) : r }, l, !1, {
89
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
90
- lineNumber: 110,
91
- columnNumber: 7
92
- }, void 0);
35
+ }, t), f = ["h1", "h2", "h3", "h4", "h5", "h6"], p = (t, a, s, r) => {
36
+ const l = Math.max(1, Math.min(6, t)), c = f[l - 1], o = r?.id;
37
+ return h.createElement(c, { key: s, className: "font-bold my-4", id: o }, a);
38
+ }, d = (t) => {
39
+ const a = {}, s = {}, r = t?.colspan, l = t?.rowspan, c = t?.colwidth;
40
+ return r && r > 1 && (a.colSpan = r), l && l > 1 && (a.rowSpan = l), c && Array.isArray(c) && c[0] && (s.minWidth = c[0]), Object.keys(s).length > 0 && (a.style = s), a;
41
+ }, y = (t, a) => {
42
+ if (t.type === "text") {
43
+ const r = t.text ?? "";
44
+ return /* @__PURE__ */ e(h.Fragment, { children: t.marks?.length ? g(r, t.marks) : r }, a);
93
45
  }
94
- const t = e.content?.map((r, n) => p(r, n)) ?? null;
95
- switch (e.type) {
46
+ const s = t.content?.map((r, l) => y(r, l)) ?? null;
47
+ switch (t.type) {
96
48
  // ── Document ────────────────────────────────────────────────
97
49
  case "doc":
98
- return /* @__PURE__ */ s("div", { children: t }, l, !1, {
99
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
100
- lineNumber: 121,
101
- columnNumber: 14
102
- }, void 0);
50
+ return /* @__PURE__ */ e("div", { children: s }, a);
103
51
  // ── Block-level text ────────────────────────────────────────
104
52
  case "paragraph": {
105
- if (!e.content?.length || e.content.every(
53
+ if (!t.content?.length || t.content.every(
106
54
  (o) => o.type === "text" && (!o.text || !o.text.trim())
107
55
  )) return null;
108
- const n = e.attrs?.textAlign, i = n ? { textAlign: n } : {};
109
- return /* @__PURE__ */ s("p", { className: "mb-4", style: Object.keys(i).length ? i : void 0, children: t }, l, !1, {
110
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
111
- lineNumber: 135,
112
- columnNumber: 14
113
- }, void 0);
56
+ const l = t.attrs?.textAlign, c = l ? { textAlign: l } : {};
57
+ return /* @__PURE__ */ e("p", { className: "mb-4", style: Object.keys(c).length ? c : void 0, children: s }, a);
114
58
  }
115
59
  case "heading":
116
- return k(
117
- e.attrs?.level || 1,
118
- t,
119
- l,
120
- e.attrs ?? void 0
60
+ return p(
61
+ t.attrs?.level || 1,
62
+ s,
63
+ a,
64
+ t.attrs ?? void 0
121
65
  );
122
66
  // ── Lists ───────────────────────────────────────────────────
123
67
  case "bulletList":
124
- return /* @__PURE__ */ s("ul", { className: "list-disc pl-5 mb-4", children: t }, l, !1, {
125
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
126
- lineNumber: 147,
127
- columnNumber: 14
128
- }, void 0);
68
+ return /* @__PURE__ */ e("ul", { className: "list-disc pl-5 mb-4", children: s }, a);
129
69
  case "orderedList": {
130
- const r = e.attrs?.start ?? 1;
131
- return /* @__PURE__ */ s("ol", { className: "list-decimal pl-5 mb-4", start: r !== 1 ? r : void 0, children: t }, l, !1, {
132
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
133
- lineNumber: 150,
134
- columnNumber: 14
135
- }, void 0);
70
+ const r = t.attrs?.start ?? 1;
71
+ return /* @__PURE__ */ e("ol", { className: "list-decimal pl-5 mb-4", start: r !== 1 ? r : void 0, children: s }, a);
136
72
  }
137
73
  case "listItem":
138
- return /* @__PURE__ */ s("li", { children: t }, l, !1, {
139
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
140
- lineNumber: 153,
141
- columnNumber: 14
142
- }, void 0);
74
+ return /* @__PURE__ */ e("li", { children: s }, a);
143
75
  case "taskList":
144
- return /* @__PURE__ */ s("ul", { className: "list-none pl-0 mb-4 space-y-1", children: t }, l, !1, {
145
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
146
- lineNumber: 155,
147
- columnNumber: 14
148
- }, void 0);
76
+ return /* @__PURE__ */ e("ul", { className: "list-none pl-0 mb-4 space-y-1", children: s }, a);
149
77
  case "taskItem": {
150
- const r = !!e.attrs?.checked;
151
- return /* @__PURE__ */ s("li", { className: "flex items-start gap-2", children: [
152
- /* @__PURE__ */ s("input", { type: "checkbox", checked: r, readOnly: !0, className: "mt-1.5 rounded" }, void 0, !1, {
153
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
154
- lineNumber: 160,
155
- columnNumber: 11
156
- }, void 0),
157
- /* @__PURE__ */ s("div", { className: r ? "line-through text-muted-foreground" : "", children: t }, void 0, !1, {
158
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
159
- lineNumber: 161,
160
- columnNumber: 11
161
- }, void 0)
162
- ] }, l, !0, {
163
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
164
- lineNumber: 159,
165
- columnNumber: 9
166
- }, void 0);
78
+ const r = !!t.attrs?.checked;
79
+ return /* @__PURE__ */ m("li", { className: "flex items-start gap-2", children: [
80
+ /* @__PURE__ */ e("input", { type: "checkbox", checked: r, readOnly: !0, className: "mt-1.5 rounded" }),
81
+ /* @__PURE__ */ e("div", { className: r ? "line-through text-muted-foreground" : "", children: s })
82
+ ] }, a);
167
83
  }
168
84
  // ── Quotes & code ───────────────────────────────────────────
169
85
  case "blockquote":
170
- return /* @__PURE__ */ s("blockquote", { className: "border-l-4 border-border pl-4 italic my-4", children: t }, l, !1, {
171
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
172
- lineNumber: 168,
173
- columnNumber: 14
174
- }, void 0);
86
+ return /* @__PURE__ */ e("blockquote", { className: "border-l-4 border-border pl-4 italic my-4", children: s }, a);
175
87
  case "codeBlock": {
176
- const r = e.attrs?.language;
177
- return /* @__PURE__ */ s("pre", { className: "bg-muted rounded-lg p-4 mb-4 overflow-x-auto", "data-language": r || void 0, children: /* @__PURE__ */ s("code", { className: "text-sm font-mono", children: t }, void 0, !1, {
178
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
179
- lineNumber: 173,
180
- columnNumber: 11
181
- }, void 0) }, l, !1, {
182
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
183
- lineNumber: 172,
184
- columnNumber: 9
185
- }, void 0);
88
+ const r = t.attrs?.language;
89
+ return /* @__PURE__ */ e("pre", { className: "bg-muted rounded-lg p-4 mb-4 overflow-x-auto", "data-language": r || void 0, children: /* @__PURE__ */ e("code", { className: "text-sm font-mono", children: s }) }, a);
186
90
  }
187
91
  // ── Inline / void ───────────────────────────────────────────
188
92
  case "horizontalRule":
189
- return /* @__PURE__ */ s("hr", { className: "my-6 border-border" }, l, !1, {
190
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
191
- lineNumber: 180,
192
- columnNumber: 14
193
- }, void 0);
93
+ return /* @__PURE__ */ e("hr", { className: "my-6 border-border" }, a);
194
94
  case "hardBreak":
195
- return /* @__PURE__ */ s("br", {}, l, !1, {
196
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
197
- lineNumber: 182,
198
- columnNumber: 14
199
- }, void 0);
95
+ return /* @__PURE__ */ e("br", {}, a);
200
96
  case "image": {
201
- const r = e.attrs?.src, n = e.attrs?.alt || "", i = e.attrs?.title, o = e.attrs?.width, c = e.attrs?.height, m = {};
202
- return o && (m.width = typeof o == "number" ? `${o}px` : o), c && (m.height = typeof c == "number" ? `${c}px` : c), /* @__PURE__ */ s(
97
+ const r = t.attrs?.src, l = t.attrs?.alt || "", c = t.attrs?.title, o = t.attrs?.width, n = t.attrs?.height, i = {};
98
+ return o && (i.width = typeof o == "number" ? `${o}px` : o), n && (i.height = typeof n == "number" ? `${n}px` : n), /* @__PURE__ */ e(
203
99
  "img",
204
100
  {
205
101
  src: r,
206
- alt: n,
207
- title: i,
208
- style: Object.keys(m).length ? m : void 0,
102
+ alt: l ?? "",
103
+ title: c,
104
+ width: typeof o == "number" ? o : void 0,
105
+ height: typeof n == "number" ? n : void 0,
106
+ loading: "lazy",
107
+ decoding: "async",
108
+ style: Object.keys(i).length ? i : void 0,
209
109
  className: "max-w-full h-auto rounded my-4"
210
110
  },
211
- l,
212
- !1,
213
- {
214
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
215
- lineNumber: 193,
216
- columnNumber: 9
217
- },
218
- void 0
111
+ a
219
112
  );
220
113
  }
221
114
  // ── Table ───────────────────────────────────────────────────
222
115
  case "table":
223
- return /* @__PURE__ */ s("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ s("table", { className: "w-full border-collapse border border-gray-300 dark:border-gray-700", style: { minWidth: 500 }, children: /* @__PURE__ */ s("tbody", { children: t }, void 0, !1, {
224
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
225
- lineNumber: 209,
226
- columnNumber: 13
227
- }, void 0) }, void 0, !1, {
228
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
229
- lineNumber: 208,
230
- columnNumber: 11
231
- }, void 0) }, l, !1, {
232
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
233
- lineNumber: 207,
234
- columnNumber: 9
235
- }, void 0);
116
+ return /* @__PURE__ */ e("div", { className: "overflow-x-auto my-4", children: /* @__PURE__ */ e("table", { className: "w-full border-collapse border border-gray-300 dark:border-gray-700", style: { minWidth: 500 }, children: /* @__PURE__ */ e("tbody", { children: s }) }) }, a);
236
117
  case "tableRow":
237
- return /* @__PURE__ */ s("tr", { className: "border-b border-gray-300 dark:border-gray-700", children: t }, l, !1, {
238
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
239
- lineNumber: 214,
240
- columnNumber: 14
241
- }, void 0);
118
+ return /* @__PURE__ */ e("tr", { className: "border-b border-gray-300 dark:border-gray-700", children: s }, a);
242
119
  case "tableHeader":
243
- return /* @__PURE__ */ s(
120
+ return /* @__PURE__ */ e(
244
121
  "th",
245
122
  {
246
- ...d(e.attrs ?? void 0),
123
+ ...d(t.attrs ?? void 0),
247
124
  className: "bg-gray-100 dark:bg-gray-800 font-bold p-3 text-left border border-gray-300 dark:border-gray-700",
248
- children: t
249
- },
250
- l,
251
- !1,
252
- {
253
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
254
- lineNumber: 217,
255
- columnNumber: 9
125
+ children: s
256
126
  },
257
- void 0
127
+ a
258
128
  );
259
129
  case "tableCell":
260
- return /* @__PURE__ */ s(
130
+ return /* @__PURE__ */ e(
261
131
  "td",
262
132
  {
263
- ...d(e.attrs ?? void 0),
133
+ ...d(t.attrs ?? void 0),
264
134
  className: "p-3 border border-gray-300 dark:border-gray-700",
265
- children: t
135
+ children: s
266
136
  },
267
- l,
268
- !1,
269
- {
270
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
271
- lineNumber: 227,
272
- columnNumber: 9
273
- },
274
- void 0
137
+ a
275
138
  );
276
139
  // ── Details / collapsible ───────────────────────────────────
277
140
  case "details":
278
- return /* @__PURE__ */ s("details", { className: "my-4 border rounded-lg overflow-hidden", children: t }, l, !1, {
279
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
280
- lineNumber: 238,
281
- columnNumber: 14
282
- }, void 0);
141
+ return /* @__PURE__ */ e("details", { className: "my-4 border rounded-lg overflow-hidden", children: s }, a);
283
142
  case "detailsSummary":
284
- return /* @__PURE__ */ s("summary", { className: "cursor-pointer p-3 font-semibold bg-muted/30 hover:bg-muted/50", children: t }, l, !1, {
285
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
286
- lineNumber: 240,
287
- columnNumber: 14
288
- }, void 0);
143
+ return /* @__PURE__ */ e("summary", { className: "cursor-pointer p-3 font-semibold bg-muted/30 hover:bg-muted/50", children: s }, a);
289
144
  case "detailsContent":
290
- return /* @__PURE__ */ s("div", { className: "p-3 border-t", children: t }, l, !1, {
291
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
292
- lineNumber: 242,
293
- columnNumber: 14
294
- }, void 0);
145
+ return /* @__PURE__ */ e("div", { className: "p-3 border-t", children: s }, a);
295
146
  // ── Embeds ──────────────────────────────────────────────────
296
147
  case "youtube": {
297
- const r = a(e.attrs?.src), n = e.attrs?.width || 640, i = e.attrs?.height || 480;
298
- return /* @__PURE__ */ s("div", { className: "relative my-4 overflow-hidden rounded-lg", style: { aspectRatio: `${n}/${i}`, maxWidth: n }, children: /* @__PURE__ */ s(
148
+ const r = u(t.attrs?.src), l = t.attrs?.width || 640, c = t.attrs?.height || 480;
149
+ return /* @__PURE__ */ e("div", { className: "relative my-4 overflow-hidden rounded-lg", style: { aspectRatio: `${l}/${c}`, maxWidth: l }, children: /* @__PURE__ */ e(
299
150
  "iframe",
300
151
  {
301
152
  src: r,
153
+ title: t.attrs?.title || "Embedded video",
302
154
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
303
155
  allowFullScreen: !0,
304
156
  loading: "lazy",
305
157
  className: "absolute inset-0 w-full h-full"
306
- },
307
- void 0,
308
- !1,
309
- {
310
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
311
- lineNumber: 251,
312
- columnNumber: 11
313
- },
314
- void 0
315
- ) }, l, !1, {
316
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
317
- lineNumber: 250,
318
- columnNumber: 9
319
- }, void 0);
158
+ }
159
+ ) }, a);
320
160
  }
321
161
  case "iframe": {
322
- const r = a(e.attrs?.src);
323
- return /* @__PURE__ */ s("div", { className: "my-4 overflow-hidden rounded-lg", style: { aspectRatio: "16/9" }, children: /* @__PURE__ */ s("iframe", { src: r, allowFullScreen: !0, loading: "lazy", className: "w-full h-full border-0" }, void 0, !1, {
324
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
325
- lineNumber: 265,
326
- columnNumber: 11
327
- }, void 0) }, l, !1, {
328
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
329
- lineNumber: 264,
330
- columnNumber: 9
331
- }, void 0);
162
+ const r = u(t.attrs?.src);
163
+ return /* @__PURE__ */ e("div", { className: "my-4 overflow-hidden rounded-lg", style: { aspectRatio: "16/9" }, children: /* @__PURE__ */ e(
164
+ "iframe",
165
+ {
166
+ src: r,
167
+ title: t.attrs?.title || "Embedded content",
168
+ allowFullScreen: !0,
169
+ loading: "lazy",
170
+ className: "w-full h-full border-0"
171
+ }
172
+ ) }, a);
332
173
  }
333
174
  // ── Mention ─────────────────────────────────────────────────
334
175
  case "mention": {
335
- const r = e.attrs?.label || e.attrs?.id || "";
336
- return /* @__PURE__ */ s("span", { className: "text-primary font-medium", children: [
176
+ const r = t.attrs?.label || t.attrs?.id || "";
177
+ return /* @__PURE__ */ m("span", { className: "text-primary font-medium", children: [
337
178
  "@",
338
179
  r
339
- ] }, l, !0, {
340
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
341
- lineNumber: 273,
342
- columnNumber: 14
343
- }, void 0);
180
+ ] }, a);
344
181
  }
345
182
  // ── Fallback ────────────────────────────────────────────────
346
183
  default:
347
- return /* @__PURE__ */ s("div", { children: t }, l, !1, {
348
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
349
- lineNumber: 279,
350
- columnNumber: 14
351
- }, void 0);
184
+ return /* @__PURE__ */ e("div", { children: s }, a);
352
185
  }
353
- }, a = (e) => e?.replace(
186
+ }, u = (t) => t?.replace(
354
187
  /(?:https?:)?\/\/(?:www\.|m\.|music\.)?youtube\.com\/embed\//gi,
355
188
  "https://www.youtube-nocookie.com/embed/"
356
- ), R = ({ content: e, className: l }) => {
357
- if (!e) return null;
358
- if (typeof e == "string") {
359
- if (e.trim().startsWith("{") || e.trim().startsWith("["))
189
+ ), v = ({ content: t, className: a }) => {
190
+ if (!t) return null;
191
+ if (typeof t == "string") {
192
+ if (t.trim().startsWith("{") || t.trim().startsWith("["))
360
193
  try {
361
- const r = JSON.parse(e);
362
- return /* @__PURE__ */ s(R, { content: r, className: l }, void 0, !1, {
363
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
364
- lineNumber: 307,
365
- columnNumber: 16
366
- }, void 0);
194
+ const r = JSON.parse(t);
195
+ return /* @__PURE__ */ e(v, { content: r, className: a });
367
196
  } catch {
368
197
  }
369
- return /* @__PURE__ */ s(
198
+ return /* @__PURE__ */ e(
370
199
  "div",
371
200
  {
372
- className: l,
373
- dangerouslySetInnerHTML: { __html: a(e) ?? e }
374
- },
375
- void 0,
376
- !1,
377
- {
378
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
379
- lineNumber: 314,
380
- columnNumber: 7
381
- },
382
- void 0
201
+ className: a,
202
+ dangerouslySetInnerHTML: { __html: u(t) ?? t }
203
+ }
383
204
  );
384
205
  }
385
- const t = e;
386
- return !t.content || !Array.isArray(t.content) ? null : /* @__PURE__ */ s("div", { className: l, children: t.content.map((r, n) => p(r, n)) }, void 0, !1, {
387
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SimpleTiptapRenderer.tsx",
388
- lineNumber: 326,
389
- columnNumber: 5
390
- }, void 0);
206
+ const s = t;
207
+ return !s.content || !Array.isArray(s.content) ? null : /* @__PURE__ */ e("div", { className: a, children: s.content.map((r, l) => y(r, l)) });
391
208
  };
392
209
  export {
393
- R as SimpleTiptapRenderer,
394
- a as toNoCookieEmbedSrc
210
+ v as SimpleTiptapRenderer,
211
+ u as toNoCookieEmbedSrc
395
212
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-dev-runtime"),p=require("react"),M=require("@nextblock-cms/ui/button"),k=require("@nextblock-cms/ui/Skeleton"),w=require("../use-cart.cjs.js"),A=require("lucide-react"),j=require("sonner"),P=require("../pages/cms/products/actions.cjs.js"),l=require("@nextblock-cms/utils"),T=require("../CurrencyProvider.cjs.js"),N=require("../currency.cjs.js"),$=require("../trials.cjs.js"),L=({product:e})=>{const x=w.useCart(s=>s),{t}=l.useTranslations(),{activeCurrencyCode:c,currencies:a,defaultCurrency:o}=T.useCurrency(),[v,D]=p.useState([]),[U,R]=p.useState(!0),[i,u]=p.useState("annual");if(p.useEffect(()=>{async function s(){try{if(!e.id)return;const m=await P.getPublicFreemiusPricing(e.id);D(m)}catch(m){console.error("Failed to load pricing:",m)}finally{R(!1)}}s()},[e.id]),!x)return r.jsxDEV(k.Skeleton,{className:"h-14 w-full"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:50,columnNumber:12},void 0);const{addItem:B}=x,d=v[0],n=d?.pricing?.[0],E=()=>{let s=e.price,m=e.freemius_plan_id;n&&(i==="monthly"&&n.monthly_price!=null&&(s=l.majorUnitAmountToMinor(n.monthly_price,o.code)),i==="annual"&&n.annual_price!=null&&(s=l.majorUnitAmountToMinor(n.annual_price,o.code)),i==="lifetime"&&n.lifetime_price!=null&&(s=l.majorUnitAmountToMinor(n.lifetime_price,o.code)));const h=a.reduce((S,C)=>(S[C.code]=N.convertMinorUnitAmount({amount:s,fromCurrencyCode:o.code,toCurrencyCode:C.code,currencies:a,applyRounding:!0}),S),{}),H=h[c]??s;d&&d.id&&(m=d.id);const{success:V,error:q}=B({id:e.id,product_id:e.id,title:e.title,price:H,prices:h,image_url:e.image_url,slug:e.slug,sku:e.sku,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:"digital",payment_provider:"freemius",provider:"freemius",billing_cycle:i,freemius_product_id:e.freemius_product_id,freemius_plan_id:m,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,is_taxable:e.is_taxable,currency_code:c});V?j.toast.success(t("ecommerce.added_to_cart_success",{item:e.title})):j.toast.error(q||t("ecommerce.added_to_cart_error"))};if(U)return r.jsxDEV(k.Skeleton,{className:"h-32 w-full"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:123,columnNumber:13},void 0);if(!d||!n)return r.jsxDEV("div",{className:"p-4 border border-dashed rounded-lg text-center text-muted-foreground",children:t("ecommerce.pricing_unavailable")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:128,columnNumber:9},void 0);const _=n.monthly_price!=null,g=n.annual_price!=null,y=n.lifetime_price!=null;i==="annual"&&!g&&(_?u("monthly"):y&&u("lifetime"));const f=$.getTrialSummary(e);let b=e.price;return i==="monthly"&&n.monthly_price!=null&&(b=N.convertMinorUnitAmount({amount:l.majorUnitAmountToMinor(n.monthly_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:a,applyRounding:!0})),i==="annual"&&n.annual_price!=null&&(b=N.convertMinorUnitAmount({amount:l.majorUnitAmountToMinor(n.annual_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:a,applyRounding:!0})),i==="lifetime"&&n.lifetime_price!=null&&(b=N.convertMinorUnitAmount({amount:l.majorUnitAmountToMinor(n.lifetime_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:a,applyRounding:!0})),r.jsxDEV("div",{className:"flex flex-col gap-4",children:[r.jsxDEV("div",{className:"flex bg-secondary/35 p-1 rounded-lg w-full max-w-sm mx-auto shadow-inner",children:[_&&r.jsxDEV("button",{onClick:()=>u("monthly"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-all ${i==="monthly"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:t("ecommerce.monthly")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:181,columnNumber:13},void 0),g&&r.jsxDEV("button",{onClick:()=>u("annual"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-all ${i==="annual"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:t("ecommerce.annual")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:193,columnNumber:13},void 0),y&&r.jsxDEV("button",{onClick:()=>u("lifetime"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-all ${i==="lifetime"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:t("ecommerce.lifetime")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:205,columnNumber:13},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:179,columnNumber:7},void 0),r.jsxDEV("div",{className:"text-center",children:[r.jsxDEV("span",{className:"text-3xl font-extrabold text-foreground",children:l.formatPrice(b,c)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:219,columnNumber:11},void 0),i!=="lifetime"&&r.jsxDEV("span",{className:"text-muted-foreground text-sm ml-1.5",children:["/ ",t(i==="annual"?"ecommerce.year":"ecommerce.month")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:223,columnNumber:15},void 0),f&&r.jsxDEV("div",{className:"mt-1 text-xs font-medium text-emerald-600 dark:text-emerald-400",children:[f.label,r.jsxDEV("span",{className:"mx-2 text-muted-foreground/50",children:"|"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:228,columnNumber:15},void 0),r.jsxDEV("span",{className:"text-muted-foreground",children:f.paymentRequirementLabel},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:229,columnNumber:15},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:226,columnNumber:13},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:218,columnNumber:7},void 0),r.jsxDEV(M.Button,{onClick:E,className:"w-full h-12 text-md font-bold shadow-md transition-all hover:shadow-lg active:scale-[0.98]",children:[r.jsxDEV(A.ShoppingCart,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:237,columnNumber:9},void 0),f?.label?`Start ${f.label}`:t("ecommerce.get_license")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:236,columnNumber:7},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/SubscriptionSelector.tsx",lineNumber:177,columnNumber:5},void 0)};exports.SubscriptionSelector=L;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),_=require("react"),$=require("@nextblock-cms/ui/button"),S=require("@nextblock-cms/ui/Skeleton"),L=require("../use-cart.cjs.js"),B=require("lucide-react"),q=require("sonner"),I=require("../pages/cms/products/actions.cjs.js"),a=require("@nextblock-cms/utils"),E=require("../use-price-formatter.cjs.js"),O=require("../CurrencyProvider.cjs.js"),y=require("../currency.cjs.js"),z=require("../trials.cjs.js"),D=({product:e})=>{const N=E.usePriceFormatter(),x=L.useCart(l=>l),{t:i}=a.useTranslations(),{activeCurrencyCode:c,currencies:m,defaultCurrency:o}=O.useCurrency(),[w,M]=_.useState([]),[P,k]=_.useState(!0),[n,d]=_.useState("annual");if(_.useEffect(()=>{async function l(){try{if(!e.id)return;const u=await I.getPublicFreemiusPricing(e.id);M(u)}catch(u){console.error("Failed to load pricing:",u)}finally{k(!1)}}l()},[e.id]),!x)return t.jsx(S.Skeleton,{className:"h-14 w-full"});const{addItem:A}=x,f=w[0],r=f?.pricing?.[0],T=()=>{let l=e.price,u=e.freemius_plan_id;r&&(n==="monthly"&&r.monthly_price!=null&&(l=a.majorUnitAmountToMinor(r.monthly_price,o.code)),n==="annual"&&r.annual_price!=null&&(l=a.majorUnitAmountToMinor(r.annual_price,o.code)),n==="lifetime"&&r.lifetime_price!=null&&(l=a.majorUnitAmountToMinor(r.lifetime_price,o.code)));const C=m.reduce((v,j)=>(v[j.code]=y.convertMinorUnitAmount({amount:l,fromCurrencyCode:o.code,toCurrencyCode:j.code,currencies:m,applyRounding:!0}),v),{}),U=C[c]??l;f&&f.id&&(u=f.id);const{success:R,error:F}=A({id:e.id,product_id:e.id,title:e.title,price:U,prices:C,image_url:e.image_url,slug:e.slug,sku:e.sku,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:"digital",payment_provider:"freemius",provider:"freemius",billing_cycle:n,freemius_product_id:e.freemius_product_id,freemius_plan_id:u,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,is_taxable:e.is_taxable,currency_code:c});R?q.toast.success(i("ecommerce.added_to_cart_success",{item:e.title})):q.toast.error(F||i("ecommerce.added_to_cart_error"))};if(P)return t.jsx(S.Skeleton,{className:"h-32 w-full"});if(!f||!r)return t.jsx("div",{className:"p-4 border border-dashed rounded-lg text-center text-muted-foreground",children:i("ecommerce.pricing_unavailable")});const b=r.monthly_price!=null,p=r.annual_price!=null,h=r.lifetime_price!=null;n==="annual"&&!p&&(b?d("monthly"):h&&d("lifetime"));const s=z.getTrialSummary(e,i);let g=e.price;return n==="monthly"&&r.monthly_price!=null&&(g=y.convertMinorUnitAmount({amount:a.majorUnitAmountToMinor(r.monthly_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:m,applyRounding:!0})),n==="annual"&&r.annual_price!=null&&(g=y.convertMinorUnitAmount({amount:a.majorUnitAmountToMinor(r.annual_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:m,applyRounding:!0})),n==="lifetime"&&r.lifetime_price!=null&&(g=y.convertMinorUnitAmount({amount:a.majorUnitAmountToMinor(r.lifetime_price,o.code),fromCurrencyCode:o.code,toCurrencyCode:c,currencies:m,applyRounding:!0})),t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{role:"group","aria-label":i("ecommerce.billing_cycle")==="ecommerce.billing_cycle"?"Billing cycle":i("ecommerce.billing_cycle"),className:"flex bg-secondary/35 p-1 rounded-lg w-full max-w-sm mx-auto shadow-inner",children:[b&&t.jsx("button",{type:"button","aria-pressed":n==="monthly",onClick:()=>d("monthly"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${n==="monthly"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:i("ecommerce.monthly")}),p&&t.jsx("button",{type:"button","aria-pressed":n==="annual",onClick:()=>d("annual"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${n==="annual"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:i("ecommerce.annual")}),h&&t.jsx("button",{type:"button","aria-pressed":n==="lifetime",onClick:()=>d("lifetime"),className:`flex-1 py-1.5 text-xs font-semibold rounded-md transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring ${n==="lifetime"?"bg-background shadow-sm text-foreground":"text-muted-foreground hover:text-foreground"}`,children:i("ecommerce.lifetime")})]}),t.jsxs("div",{className:"text-center",children:[t.jsx("span",{className:"text-3xl font-extrabold text-foreground tabular-nums",children:N(g,c)}),n!=="lifetime"&&t.jsxs("span",{className:"text-muted-foreground text-sm ml-1.5",children:["/ ",i(n==="annual"?"ecommerce.year":"ecommerce.month")]}),s&&t.jsxs("div",{className:"mt-1 text-xs font-medium text-emerald-600 dark:text-emerald-400",children:[s.label,t.jsx("span",{className:"mx-2 text-muted-foreground/50",children:"|"}),t.jsx("span",{className:"text-muted-foreground",children:s.paymentRequirementLabel})]})]}),t.jsxs($.Button,{onClick:T,className:"w-full h-12 text-base font-bold shadow-md transition-shadow hover:shadow-lg active:scale-[0.98]",children:[t.jsx(B.ShoppingCart,{className:"mr-2 h-4 w-4"}),s?.label?i("ecommerce.start_trial",{trial:s.label})==="ecommerce.start_trial"?`Start ${s.label}`:i("ecommerce.start_trial",{trial:s.label}):i("ecommerce.get_license")]})]})};exports.SubscriptionSelector=D;