@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,16 +1,16 @@
1
1
  'use client';
2
- import { jsxDEV as e } from "react/jsx-dev-runtime";
3
- import { useState as k, useTransition as w, useRef as K, useMemo as L } from "react";
4
- import { Input as I, Button as f, Table as P, TableHeader as V, TableRow as h, TableHead as u, TableBody as $, TableCell as a, Badge as C } from "@nextblock-cms/ui";
5
- import { Search as F, Upload as z, Download as A, RotateCcw as _, Save as E } from "lucide-react";
6
- import { toast as v } from "sonner";
7
- import { importInventoryCsvAction as q, updateInventoryQuantityAction as O } from "./actions.es.js";
8
- function Q(i) {
9
- const c = String(i ?? "");
10
- return /[",\n]/.test(c) ? `"${c.replace(/"/g, '""')}"` : c;
2
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
3
+ import { useState as v, useTransition as V, useRef as $, useMemo as B } from "react";
4
+ import { Input as j, Button as b, Table as D, TableHeader as F, TableRow as x, TableHead as p, TableBody as z, TableCell as u, Badge as w } from "@nextblock-cms/ui";
5
+ import { Search as A, Upload as _, Download as q, RotateCcw as E, Save as H } from "lucide-react";
6
+ import { toast as m } from "sonner";
7
+ import { importInventoryCsvAction as O, updateInventoryQuantityAction as Q } from "./actions.es.js";
8
+ function M(c) {
9
+ const i = String(c ?? "");
10
+ return /[",\n]/.test(i) ? `"${i.replace(/"/g, '""')}"` : i;
11
11
  }
12
- function M(i) {
13
- const c = [
12
+ function G(c) {
13
+ const i = [
14
14
  "sku",
15
15
  "stock",
16
16
  "usage_type",
@@ -18,417 +18,197 @@ function M(i) {
18
18
  "languages",
19
19
  "statuses",
20
20
  "parent_product_skus"
21
- ], y = i.map((o) => [
22
- o.sku,
23
- o.stock,
24
- o.usageType,
25
- o.productTitles.join("|"),
26
- o.languages.join("|"),
27
- o.statuses.join("|"),
28
- o.parentProductSkus.join("|")
21
+ ], k = c.map((l) => [
22
+ l.sku,
23
+ l.stock,
24
+ l.usageType,
25
+ l.productTitles.join("|"),
26
+ l.languages.join("|"),
27
+ l.statuses.join("|"),
28
+ l.parentProductSkus.join("|")
29
29
  ]);
30
- return [c, ...y].map((o) => o.map((d) => Q(d)).join(",")).join(`
30
+ return [i, ...k].map((l) => l.map((h) => M(h)).join(",")).join(`
31
31
  `);
32
32
  }
33
- function G(i) {
34
- return i.usageType === "mixed" ? "Shared SKU" : i.usageType === "variant" ? `Variant SKU ${i.sku}` : "Simple Product";
33
+ function J(c) {
34
+ return c.usageType === "mixed" ? "Shared SKU" : c.usageType === "variant" ? `Variant SKU ${c.sku}` : "Simple Product";
35
35
  }
36
- function J(i) {
37
- return i.usageType === "variant" ? "secondary" : "outline";
36
+ function W(c) {
37
+ return c.usageType === "variant" ? "secondary" : "outline";
38
38
  }
39
- function ne({ initialItems: i }) {
40
- const [c, y] = k(i), [o, d] = k(
41
- () => i.reduce((s, n) => (s[n.key] = String(n.stock), s), {})
42
- ), [x, U] = k(""), [N, g] = w(), [R, b] = k(null), T = K(null), j = L(() => {
43
- const s = x.trim().toLowerCase();
44
- return s ? c.filter((n) => n.sku.toLowerCase().includes(s) || n.productTitles.join(" ").toLowerCase().includes(s) || n.parentProductSkus.join(" ").toLowerCase().includes(s) || n.languages.join(" ").toLowerCase().includes(s)) : c;
45
- }, [c, x]), B = () => {
46
- const s = M(c), n = new Blob([s], { type: "text/csv;charset=utf-8;" }), t = URL.createObjectURL(n), l = document.createElement("a");
47
- l.href = t, l.download = "inventory-export.csv", l.click(), URL.revokeObjectURL(t);
48
- }, D = (s) => {
49
- const n = o[s.key] ?? String(s.stock), t = Number.parseInt(n, 10);
50
- if (!Number.isFinite(t) || t < 0) {
51
- v.error("Stock must be a non-negative whole number.");
39
+ function re({ initialItems: c }) {
40
+ const [i, k] = v(c), [l, h] = v(
41
+ () => c.reduce((e, n) => (e[n.key] = String(n.stock), e), {})
42
+ ), [S, I] = v(""), [y, N] = V(), [U, g] = v(null), C = $(null), T = B(() => {
43
+ const e = S.trim().toLowerCase();
44
+ return e ? i.filter((n) => n.sku.toLowerCase().includes(e) || n.productTitles.join(" ").toLowerCase().includes(e) || n.parentProductSkus.join(" ").toLowerCase().includes(e) || n.languages.join(" ").toLowerCase().includes(e)) : i;
45
+ }, [i, S]), K = () => {
46
+ const e = G(i), n = new Blob([e], { type: "text/csv;charset=utf-8;" }), s = URL.createObjectURL(n), o = document.createElement("a");
47
+ o.href = s, o.download = "inventory-export.csv", o.click(), URL.revokeObjectURL(s);
48
+ }, L = (e) => {
49
+ const n = l[e.key] ?? String(e.stock), s = Number.parseInt(n, 10);
50
+ if (!Number.isFinite(s) || s < 0) {
51
+ m.error("Stock must be a non-negative whole number.");
52
52
  return;
53
53
  }
54
- b(s.key), g(async () => {
55
- const l = await O({
56
- sku: s.sku,
57
- stock: t
54
+ g(e.key), N(async () => {
55
+ const o = await Q({
56
+ sku: e.sku,
57
+ stock: s
58
58
  });
59
- if (!l.success) {
60
- v.error(l.error || "Failed to update inventory."), b(null);
59
+ if (!o.success) {
60
+ m.error(o.error || "Failed to update inventory."), g(null);
61
61
  return;
62
62
  }
63
- const m = typeof l.stock == "number" ? l.stock : t;
64
- y(
63
+ const d = typeof o.stock == "number" ? o.stock : s;
64
+ k(
65
65
  (r) => r.map(
66
- (p) => p.key === s.key ? {
67
- ...p,
68
- stock: m
69
- } : p
66
+ (f) => f.key === e.key ? {
67
+ ...f,
68
+ stock: d
69
+ } : f
70
70
  )
71
- ), d((r) => ({
71
+ ), h((r) => ({
72
72
  ...r,
73
- [s.key]: String(m)
74
- })), b(null), v.success(`Inventory updated for ${s.sku}.`);
73
+ [e.key]: String(d)
74
+ })), g(null), m.success(`Inventory updated for ${e.sku}.`);
75
75
  });
76
- }, H = () => {
77
- T.current?.click();
78
- }, S = async (s) => {
79
- const n = await s.text();
80
- b("import"), g(async () => {
81
- const t = await q(n);
82
- if (!t.success) {
83
- v.error(t.error || "Failed to import inventory CSV."), b(null);
76
+ }, P = () => {
77
+ C.current?.click();
78
+ }, R = async (e) => {
79
+ const n = await e.text();
80
+ g("import"), N(async () => {
81
+ const s = await O(n);
82
+ if (!s.success) {
83
+ m.error(s.error || "Failed to import inventory CSV."), g(null);
84
84
  return;
85
85
  }
86
- const l = t.items || [];
87
- y(l), d(
88
- l.reduce((m, r) => (m[r.key] = String(r.stock), m), {})
89
- ), b(null), v.success(`Imported ${t.updatedCount || 0} inventory updates.`);
86
+ const o = s.items || [];
87
+ k(o), h(
88
+ o.reduce((d, r) => (d[r.key] = String(r.stock), d), {})
89
+ ), g(null), m.success(`Imported ${s.updatedCount || 0} inventory updates.`);
90
90
  });
91
91
  };
92
- return /* @__PURE__ */ e("div", { className: "space-y-4", children: [
93
- /* @__PURE__ */ e("div", { className: "flex flex-col gap-3 rounded-xl border bg-card p-4", children: [
94
- /* @__PURE__ */ e("div", { className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between", children: [
95
- /* @__PURE__ */ e("div", { className: "relative w-full lg:max-w-md", children: [
96
- /* @__PURE__ */ e(F, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }, void 0, !1, {
97
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
98
- lineNumber: 203,
99
- columnNumber: 13
100
- }, this),
101
- /* @__PURE__ */ e(
102
- I,
92
+ return /* @__PURE__ */ a("div", { className: "space-y-4", children: [
93
+ /* @__PURE__ */ a("div", { className: "flex flex-col gap-3 rounded-xl border bg-card p-4", children: [
94
+ /* @__PURE__ */ a("div", { className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between", children: [
95
+ /* @__PURE__ */ a("div", { className: "relative w-full lg:max-w-md", children: [
96
+ /* @__PURE__ */ t(A, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
97
+ /* @__PURE__ */ t(
98
+ j,
103
99
  {
104
- value: x,
105
- onChange: (s) => U(s.target.value),
100
+ value: S,
101
+ onChange: (e) => I(e.target.value),
106
102
  placeholder: "Search by SKU, product title, parent SKU, or language...",
107
103
  className: "pl-9"
108
- },
109
- void 0,
110
- !1,
111
- {
112
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
113
- lineNumber: 204,
114
- columnNumber: 13
115
- },
116
- this
104
+ }
117
105
  )
118
- ] }, void 0, !0, {
119
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
120
- lineNumber: 202,
121
- columnNumber: 11
122
- }, this),
123
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2", children: [
124
- /* @__PURE__ */ e(
106
+ ] }),
107
+ /* @__PURE__ */ a("div", { className: "flex flex-wrap gap-2", children: [
108
+ /* @__PURE__ */ t(
125
109
  "input",
126
110
  {
127
- ref: T,
111
+ ref: C,
128
112
  type: "file",
129
113
  accept: ".csv,text/csv",
130
114
  className: "hidden",
131
- onChange: (s) => {
132
- const n = s.target.files?.[0];
133
- n && S(n), s.currentTarget.value = "";
115
+ onChange: (e) => {
116
+ const n = e.target.files?.[0];
117
+ n && R(n), e.currentTarget.value = "";
134
118
  }
135
- },
136
- void 0,
137
- !1,
138
- {
139
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
140
- lineNumber: 213,
141
- columnNumber: 13
142
- },
143
- this
119
+ }
144
120
  ),
145
- /* @__PURE__ */ e(f, { type: "button", variant: "outline", onClick: H, disabled: N, children: [
146
- /* @__PURE__ */ e(z, { className: "mr-2 h-4 w-4" }, void 0, !1, {
147
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
148
- lineNumber: 227,
149
- columnNumber: 15
150
- }, this),
121
+ /* @__PURE__ */ a(b, { type: "button", variant: "outline", onClick: P, disabled: y, children: [
122
+ /* @__PURE__ */ t(_, { className: "mr-2 h-4 w-4" }),
151
123
  "Import CSV"
152
- ] }, void 0, !0, {
153
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
154
- lineNumber: 226,
155
- columnNumber: 13
156
- }, this),
157
- /* @__PURE__ */ e(f, { type: "button", variant: "outline", onClick: B, disabled: N, children: [
158
- /* @__PURE__ */ e(A, { className: "mr-2 h-4 w-4" }, void 0, !1, {
159
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
160
- lineNumber: 231,
161
- columnNumber: 15
162
- }, this),
124
+ ] }),
125
+ /* @__PURE__ */ a(b, { type: "button", variant: "outline", onClick: K, disabled: y, children: [
126
+ /* @__PURE__ */ t(q, { className: "mr-2 h-4 w-4" }),
163
127
  "Export CSV"
164
- ] }, void 0, !0, {
165
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
166
- lineNumber: 230,
167
- columnNumber: 13
168
- }, this)
169
- ] }, void 0, !0, {
170
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
171
- lineNumber: 212,
172
- columnNumber: 11
173
- }, this)
174
- ] }, void 0, !0, {
175
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
176
- lineNumber: 201,
177
- columnNumber: 9
178
- }, this),
179
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Inventory is keyed by sellable SKU. Any product or variant using the same SKU shares the same quantity, and CSV imports can update those shared SKU quantities in bulk." }, void 0, !1, {
180
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
181
- lineNumber: 237,
182
- columnNumber: 9
183
- }, this)
184
- ] }, void 0, !0, {
185
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
186
- lineNumber: 200,
187
- columnNumber: 7
188
- }, this),
189
- /* @__PURE__ */ e("div", { className: "rounded-xl border bg-card", children: /* @__PURE__ */ e(P, { children: [
190
- /* @__PURE__ */ e(V, { children: /* @__PURE__ */ e(h, { children: [
191
- /* @__PURE__ */ e(u, { children: "SKU" }, void 0, !1, {
192
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
193
- lineNumber: 247,
194
- columnNumber: 15
195
- }, this),
196
- /* @__PURE__ */ e(u, { children: "Usage" }, void 0, !1, {
197
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
198
- lineNumber: 248,
199
- columnNumber: 15
200
- }, this),
201
- /* @__PURE__ */ e(u, { children: "Linked Products" }, void 0, !1, {
202
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
203
- lineNumber: 249,
204
- columnNumber: 15
205
- }, this),
206
- /* @__PURE__ */ e(u, { children: "Languages" }, void 0, !1, {
207
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
208
- lineNumber: 250,
209
- columnNumber: 15
210
- }, this),
211
- /* @__PURE__ */ e(u, { children: "Status" }, void 0, !1, {
212
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
213
- lineNumber: 251,
214
- columnNumber: 15
215
- }, this),
216
- /* @__PURE__ */ e(u, { className: "w-[160px]", children: "Quantity" }, void 0, !1, {
217
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
218
- lineNumber: 252,
219
- columnNumber: 15
220
- }, this),
221
- /* @__PURE__ */ e(u, { className: "text-right", children: "Actions" }, void 0, !1, {
222
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
223
- lineNumber: 253,
224
- columnNumber: 15
225
- }, this)
226
- ] }, void 0, !0, {
227
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
228
- lineNumber: 246,
229
- columnNumber: 13
230
- }, this) }, void 0, !1, {
231
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
232
- lineNumber: 245,
233
- columnNumber: 11
234
- }, this),
235
- /* @__PURE__ */ e($, { children: j.length > 0 ? j.map((s) => {
236
- const n = o[s.key] ?? String(s.stock), t = Number.parseInt(n, 10), l = Number.isFinite(t) && t !== s.stock, m = R === s.key;
237
- return /* @__PURE__ */ e(h, { children: [
238
- /* @__PURE__ */ e(a, { className: "font-mono text-sm", children: s.sku }, void 0, !1, {
239
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
240
- lineNumber: 266,
241
- columnNumber: 21
242
- }, this),
243
- /* @__PURE__ */ e(a, { children: /* @__PURE__ */ e(C, { variant: J(s), children: G(s) }, void 0, !1, {
244
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
245
- lineNumber: 268,
246
- columnNumber: 23
247
- }, this) }, void 0, !1, {
248
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
249
- lineNumber: 267,
250
- columnNumber: 21
251
- }, this),
252
- /* @__PURE__ */ e(a, { children: /* @__PURE__ */ e("div", { className: "space-y-1", children: [
253
- /* @__PURE__ */ e("p", { className: "font-medium", children: s.productTitles.join(", ") }, void 0, !1, {
254
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
255
- lineNumber: 274,
256
- columnNumber: 25
257
- }, this),
258
- s.usageType !== "product" ? /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: [
128
+ ] })
129
+ ] })
130
+ ] }),
131
+ /* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground", children: "Inventory is keyed by sellable SKU. Any product or variant using the same SKU shares the same quantity, and CSV imports can update those shared SKU quantities in bulk." })
132
+ ] }),
133
+ /* @__PURE__ */ t("div", { className: "rounded-xl border bg-card", children: /* @__PURE__ */ a(D, { children: [
134
+ /* @__PURE__ */ t(F, { children: /* @__PURE__ */ a(x, { children: [
135
+ /* @__PURE__ */ t(p, { children: "SKU" }),
136
+ /* @__PURE__ */ t(p, { children: "Usage" }),
137
+ /* @__PURE__ */ t(p, { children: "Linked Products" }),
138
+ /* @__PURE__ */ t(p, { children: "Languages" }),
139
+ /* @__PURE__ */ t(p, { children: "Status" }),
140
+ /* @__PURE__ */ t(p, { className: "w-[160px]", children: "Quantity" }),
141
+ /* @__PURE__ */ t(p, { className: "text-right", children: "Actions" })
142
+ ] }) }),
143
+ /* @__PURE__ */ t(z, { children: T.length > 0 ? T.map((e) => {
144
+ const n = l[e.key] ?? String(e.stock), s = Number.parseInt(n, 10), o = Number.isFinite(s) && s !== e.stock, d = U === e.key;
145
+ return /* @__PURE__ */ a(x, { children: [
146
+ /* @__PURE__ */ t(u, { className: "font-mono text-sm", children: e.sku }),
147
+ /* @__PURE__ */ t(u, { children: /* @__PURE__ */ t(w, { variant: W(e), children: J(e) }) }),
148
+ /* @__PURE__ */ t(u, { children: /* @__PURE__ */ a("div", { className: "space-y-1", children: [
149
+ /* @__PURE__ */ t("p", { className: "font-medium", children: e.productTitles.join(", ") }),
150
+ e.usageType !== "product" ? /* @__PURE__ */ a("p", { className: "text-xs text-muted-foreground", children: [
259
151
  "Parent SKU",
260
- s.parentProductSkus.length > 1 ? "s" : "",
152
+ e.parentProductSkus.length > 1 ? "s" : "",
261
153
  ":",
262
154
  " ",
263
- /* @__PURE__ */ e("span", { className: "font-mono", children: s.parentProductSkus.join(", ") }, void 0, !1, {
264
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
265
- lineNumber: 278,
266
- columnNumber: 29
267
- }, this)
268
- ] }, void 0, !0, {
269
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
270
- lineNumber: 276,
271
- columnNumber: 27
272
- }, this) : null
273
- ] }, void 0, !0, {
274
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
275
- lineNumber: 273,
276
- columnNumber: 23
277
- }, this) }, void 0, !1, {
278
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
279
- lineNumber: 272,
280
- columnNumber: 21
281
- }, this),
282
- /* @__PURE__ */ e(a, { children: /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: s.languages.map((r) => /* @__PURE__ */ e(C, { variant: "outline", children: r }, `${s.key}:${r}`, !1, {
283
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
284
- lineNumber: 286,
285
- columnNumber: 27
286
- }, this)) }, void 0, !1, {
287
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
288
- lineNumber: 284,
289
- columnNumber: 23
290
- }, this) }, void 0, !1, {
291
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
292
- lineNumber: 283,
293
- columnNumber: 21
294
- }, this),
295
- /* @__PURE__ */ e(a, { children: /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: s.statuses.map((r) => /* @__PURE__ */ e(C, { variant: "outline", children: r }, `${s.key}:${r}`, !1, {
296
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
297
- lineNumber: 295,
298
- columnNumber: 27
299
- }, this)) }, void 0, !1, {
300
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
301
- lineNumber: 293,
302
- columnNumber: 23
303
- }, this) }, void 0, !1, {
304
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
305
- lineNumber: 292,
306
- columnNumber: 21
307
- }, this),
308
- /* @__PURE__ */ e(a, { children: /* @__PURE__ */ e(
309
- I,
155
+ /* @__PURE__ */ t("span", { className: "font-mono", children: e.parentProductSkus.join(", ") })
156
+ ] }) : null
157
+ ] }) }),
158
+ /* @__PURE__ */ t(u, { children: /* @__PURE__ */ t("div", { className: "flex flex-wrap gap-1", children: e.languages.map((r) => /* @__PURE__ */ t(w, { variant: "outline", children: r }, `${e.key}:${r}`)) }) }),
159
+ /* @__PURE__ */ t(u, { children: /* @__PURE__ */ t("div", { className: "flex flex-wrap gap-1", children: e.statuses.map((r) => /* @__PURE__ */ t(w, { variant: "outline", children: r }, `${e.key}:${r}`)) }) }),
160
+ /* @__PURE__ */ t(u, { children: /* @__PURE__ */ t(
161
+ j,
310
162
  {
311
163
  type: "number",
312
164
  min: 0,
313
165
  step: 1,
314
166
  value: n,
315
- disabled: N,
316
- onChange: (r) => d((p) => ({
317
- ...p,
318
- [s.key]: r.target.value
167
+ disabled: y,
168
+ onChange: (r) => h((f) => ({
169
+ ...f,
170
+ [e.key]: r.target.value
319
171
  })),
320
172
  className: "w-28"
321
- },
322
- void 0,
323
- !1,
324
- {
325
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
326
- lineNumber: 302,
327
- columnNumber: 23
328
- },
329
- this
330
- ) }, void 0, !1, {
331
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
332
- lineNumber: 301,
333
- columnNumber: 21
334
- }, this),
335
- /* @__PURE__ */ e(a, { className: "text-right", children: /* @__PURE__ */ e("div", { className: "flex justify-end gap-2", children: [
336
- /* @__PURE__ */ e(
337
- f,
173
+ }
174
+ ) }),
175
+ /* @__PURE__ */ t(u, { className: "text-right", children: /* @__PURE__ */ a("div", { className: "flex justify-end gap-2", children: [
176
+ /* @__PURE__ */ a(
177
+ b,
338
178
  {
339
179
  type: "button",
340
180
  size: "sm",
341
181
  variant: "ghost",
342
- disabled: !l || N,
343
- onClick: () => d((r) => ({
182
+ disabled: !o || y,
183
+ onClick: () => h((r) => ({
344
184
  ...r,
345
- [s.key]: String(s.stock)
185
+ [e.key]: String(e.stock)
346
186
  })),
347
187
  children: [
348
- /* @__PURE__ */ e(_, { className: "mr-2 h-4 w-4" }, void 0, !1, {
349
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
350
- lineNumber: 331,
351
- columnNumber: 27
352
- }, this),
188
+ /* @__PURE__ */ t(E, { className: "mr-2 h-4 w-4" }),
353
189
  "Reset"
354
190
  ]
355
- },
356
- void 0,
357
- !0,
358
- {
359
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
360
- lineNumber: 319,
361
- columnNumber: 25
362
- },
363
- this
191
+ }
364
192
  ),
365
- /* @__PURE__ */ e(
366
- f,
193
+ /* @__PURE__ */ a(
194
+ b,
367
195
  {
368
196
  type: "button",
369
197
  size: "sm",
370
- disabled: !l || N,
371
- onClick: () => D(s),
198
+ disabled: !o || y,
199
+ onClick: () => L(e),
372
200
  children: [
373
- /* @__PURE__ */ e(E, { className: "mr-2 h-4 w-4" }, void 0, !1, {
374
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
375
- lineNumber: 340,
376
- columnNumber: 27
377
- }, this),
378
- m ? "Saving..." : "Save"
201
+ /* @__PURE__ */ t(H, { className: "mr-2 h-4 w-4" }),
202
+ d ? "Saving..." : "Save"
379
203
  ]
380
- },
381
- void 0,
382
- !0,
383
- {
384
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
385
- lineNumber: 334,
386
- columnNumber: 25
387
- },
388
- this
204
+ }
389
205
  )
390
- ] }, void 0, !0, {
391
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
392
- lineNumber: 318,
393
- columnNumber: 23
394
- }, this) }, void 0, !1, {
395
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
396
- lineNumber: 317,
397
- columnNumber: 21
398
- }, this)
399
- ] }, s.key, !0, {
400
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
401
- lineNumber: 265,
402
- columnNumber: 19
403
- }, this);
404
- }) : /* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(a, { colSpan: 7, className: "py-10 text-center text-muted-foreground", children: "No inventory rows matched your search." }, void 0, !1, {
405
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
406
- lineNumber: 350,
407
- columnNumber: 17
408
- }, this) }, void 0, !1, {
409
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
410
- lineNumber: 349,
411
- columnNumber: 15
412
- }, this) }, void 0, !1, {
413
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
414
- lineNumber: 256,
415
- columnNumber: 11
416
- }, this)
417
- ] }, void 0, !0, {
418
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
419
- lineNumber: 244,
420
- columnNumber: 9
421
- }, this) }, void 0, !1, {
422
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
423
- lineNumber: 243,
424
- columnNumber: 7
425
- }, this)
426
- ] }, void 0, !0, {
427
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/inventory/InventoryTableClient.tsx",
428
- lineNumber: 199,
429
- columnNumber: 5
430
- }, this);
206
+ ] }) })
207
+ ] }, e.key);
208
+ }) : /* @__PURE__ */ t(x, { children: /* @__PURE__ */ t(u, { colSpan: 7, className: "py-10 text-center text-muted-foreground", children: "No inventory rows matched your search." }) }) })
209
+ ] }) })
210
+ ] });
431
211
  }
432
212
  export {
433
- ne as InventoryTableClient
213
+ re as InventoryTableClient
434
214
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-dev-runtime"),x=require("../components/ProductForm.cjs.js"),j=require("../actions.cjs.js"),A=require("../../../../variation-utils.cjs.js"),h=require("../server-actions.cjs.js"),u=require("../../payments/queries.cjs.js"),w=require("@nextblock-cms/db/server"),a=require("@nextblock-cms/utils"),R=require("../../../../currency.cjs.js");async function y({mediaPickerNode:d,availableLanguagesProp:i,translationGroupId:l,targetLanguageId:o,initialData:s}){const[m,_,p,b]=await Promise.all([u.getEnabledPaymentProviders(),u.getStoreConfigStatus(),j.getGlobalProductAttributes(),w.getServiceRoleSupabaseClient().from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active",!0).order("code",{ascending:!0}).then(e=>e.data||[])]),g=(b||[]).map(e=>R.normalizeCurrencyRecord(e)),f=(p||[]).map(e=>({id:e.id,name:e.name,name_translations:e.name_translations||{},slug:e.slug,terms:(e.product_attribute_terms||[]).map(r=>({...r,value_translations:r.value_translations||{}}))})),P=i.find(e=>e.id===s?.language_id)?.code||i.find(e=>e.id===(o?parseInt(o,10):void 0))?.code||i.find(e=>e.is_default)?.code,{attributes:N,variants:q}=A.mapRawVariantRelations(s?.product_variants||[],P),v=s&&{...s,variation_attributes:s.variation_attributes||N.map(e=>({attribute_id:e.id,term_ids:e.terms.map(r=>r.id)})),variants:s.variants||q.map(e=>({...e,upc:e.upc??null,price:e.price/100,prices:Object.entries(e.prices||{}).reduce((r,[t,n])=>(r[t]=a.minorUnitAmountToMajor(n,t),r),{}),sale_price:typeof e.sale_price=="number"?e.sale_price/100:null,sale_prices:Object.entries(e.sale_prices||{}).reduce((r,[t,n])=>(r[t]=typeof n=="number"?a.minorUnitAmountToMajor(n,t):null,r),{}),main_media_id:e.main_media_id??null,main_image_url:e.image_url??null}))};return c.jsxDEV("div",{className:"p-8",children:c.jsxDEV(x.ProductForm,{mediaPickerNode:d,availableLanguagesProp:i,globalAttributesProp:f,currenciesProp:g,translationGroupId:l,targetLanguageId:o,initialData:v,enabledProviders:m,configStatus:_,createAction:h.createProductAction},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/new/NewProductPage.tsx",lineNumber:104,columnNumber:7},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/new/NewProductPage.tsx",lineNumber:103,columnNumber:5},this)}exports.NewProductPage=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),v=require("../components/ProductForm.cjs.js"),y=require("../actions.cjs.js"),h=require("../../../../variation-utils.cjs.js"),x=require("../server-actions.cjs.js"),u=require("../../payments/queries.cjs.js"),R=require("@nextblock-cms/db/server"),a=require("@nextblock-cms/utils"),S=require("../../../../currency.cjs.js");async function w({mediaPickerNode:d,availableLanguagesProp:s,translationGroupId:l,targetLanguageId:o,initialData:t}){const[_,m,p,b]=await Promise.all([u.getEnabledPaymentProviders(),u.getStoreConfigStatus(),y.getGlobalProductAttributes(),R.getServiceRoleSupabaseClient().from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active",!0).order("code",{ascending:!0}).then(e=>e.data||[])]),g=(b||[]).map(e=>S.normalizeCurrencyRecord(e)),f=(p||[]).map(e=>({id:e.id,name:e.name,name_translations:e.name_translations||{},slug:e.slug,terms:(e.product_attribute_terms||[]).map(r=>({...r,value_translations:r.value_translations||{}}))})),P=s.find(e=>e.id===t?.language_id)?.code||s.find(e=>e.id===(o?parseInt(o,10):void 0))?.code||s.find(e=>e.is_default)?.code,{attributes:q,variants:A}=h.mapRawVariantRelations(t?.product_variants||[],P),j=t&&{...t,variation_attributes:t.variation_attributes||q.map(e=>({attribute_id:e.id,term_ids:e.terms.map(r=>r.id)})),variants:t.variants||A.map(e=>({...e,upc:e.upc??null,price:e.price/100,prices:Object.entries(e.prices||{}).reduce((r,[i,n])=>(r[i]=a.minorUnitAmountToMajor(n,i),r),{}),sale_price:typeof e.sale_price=="number"?e.sale_price/100:null,sale_prices:Object.entries(e.sale_prices||{}).reduce((r,[i,n])=>(r[i]=typeof n=="number"?a.minorUnitAmountToMajor(n,i):null,r),{}),main_media_id:e.main_media_id??null,main_image_url:e.image_url??null}))};return c.jsx("div",{className:"p-8",children:c.jsx(v.ProductForm,{mediaPickerNode:d,availableLanguagesProp:s,globalAttributesProp:f,currenciesProp:g,translationGroupId:l,targetLanguageId:o,initialData:j,enabledProviders:_,configStatus:m,createAction:x.createProductAction})})}exports.NewProductPage=w;