@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.
- package/index.cjs.js +1 -1
- package/index.es.js +26 -25
- package/lib/CurrencyProvider.cjs.js +1 -1
- package/lib/CurrencyProvider.es.js +41 -45
- package/lib/PaymentReadinessProvider.cjs.js +1 -1
- package/lib/PaymentReadinessProvider.es.js +15 -19
- package/lib/cart-store.cjs.js +1 -1
- package/lib/cart-store.d.ts +4 -0
- package/lib/cart-store.es.js +77 -69
- package/lib/components/AccountNavigationMenu.cjs.js +1 -1
- package/lib/components/AccountNavigationMenu.es.js +44 -62
- package/lib/components/AddToCartButton.cjs.js +1 -1
- package/lib/components/AddToCartButton.es.js +50 -78
- package/lib/components/Cart.cjs.js +1 -1
- package/lib/components/Cart.es.js +154 -381
- package/lib/components/CartDrawer.cjs.js +1 -1
- package/lib/components/CartDrawer.es.js +143 -297
- package/lib/components/CartIcon.cjs.js +1 -1
- package/lib/components/CartIcon.es.js +21 -47
- package/lib/components/Checkout.cjs.js +1 -1
- package/lib/components/Checkout.es.js +814 -1614
- package/lib/components/CouponForm.cjs.js +1 -1
- package/lib/components/CouponForm.es.js +104 -155
- package/lib/components/CurrencySwitcher.cjs.js +1 -1
- package/lib/components/CurrencySwitcher.es.js +14 -33
- package/lib/components/CustomerProfileForm.cjs.js +1 -1
- package/lib/components/CustomerProfileForm.es.js +264 -672
- package/lib/components/FeaturedProduct.cjs.js +1 -1
- package/lib/components/FeaturedProduct.es.js +46 -125
- package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
- package/lib/components/FreemiusLicensePanel.es.js +45 -125
- package/lib/components/InvoiceDocument.cjs.js +1 -1
- package/lib/components/InvoiceDocument.es.js +148 -487
- package/lib/components/InvoiceViewerShell.cjs.js +2 -2
- package/lib/components/InvoiceViewerShell.d.ts +4 -1
- package/lib/components/InvoiceViewerShell.es.js +59 -142
- package/lib/components/ProductCard.cjs.js +1 -1
- package/lib/components/ProductCard.d.ts +3 -1
- package/lib/components/ProductCard.es.js +128 -242
- package/lib/components/ProductDetailsLayout.cjs.js +1 -1
- package/lib/components/ProductDetailsLayout.es.js +311 -652
- package/lib/components/ProductGallery.cjs.js +1 -1
- package/lib/components/ProductGallery.d.ts +2 -0
- package/lib/components/ProductGallery.es.js +37 -66
- package/lib/components/ProductGrid.cjs.js +1 -1
- package/lib/components/ProductGrid.es.js +23 -32
- package/lib/components/ShippingEstimator.cjs.js +1 -1
- package/lib/components/ShippingEstimator.es.js +118 -231
- package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
- package/lib/components/SimpleTiptapRenderer.es.js +111 -294
- package/lib/components/SubscriptionSelector.cjs.js +1 -1
- package/lib/components/SubscriptionSelector.es.js +120 -181
- package/lib/invoice.cjs.js +1 -1
- package/lib/invoice.d.ts +1 -1
- package/lib/invoice.es.js +6 -5
- package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
- package/lib/pages/cms/coupons/CouponEditorForm.es.js +115 -375
- package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
- package/lib/pages/cms/coupons/CouponsPage.es.js +116 -368
- package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
- package/lib/pages/cms/coupons/CreateCouponDialog.es.js +26 -62
- package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
- package/lib/pages/cms/coupons/EditCouponPage.es.js +35 -71
- package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
- package/lib/pages/cms/coupons/ProductScopePicker.es.js +72 -167
- package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
- package/lib/pages/cms/orders/ExportReportsDialog.es.js +87 -247
- package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
- package/lib/pages/cms/orders/OrderDetailPage.es.js +95 -283
- package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
- package/lib/pages/cms/orders/OrderPrintButton.es.js +9 -21
- package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
- package/lib/pages/cms/orders/OrderStatusForm.es.js +46 -106
- package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
- package/lib/pages/cms/orders/OrdersPage.es.js +78 -257
- package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
- package/lib/pages/cms/payments/PaymentsClient.es.js +192 -580
- package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
- package/lib/pages/cms/payments/PaymentsPage.es.js +14 -22
- package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
- package/lib/pages/cms/products/ProductsPage.es.js +47 -87
- package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
- package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +97 -177
- package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
- package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +40 -84
- package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
- package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +192 -455
- package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
- package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +28 -72
- package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
- package/lib/pages/cms/products/categories/components/CategoryManager.es.js +183 -490
- package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
- package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +69 -177
- package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
- package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +102 -213
- package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
- package/lib/pages/cms/products/components/DeleteProductButton.es.js +25 -45
- package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
- package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +58 -202
- package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
- package/lib/pages/cms/products/components/ProductCategorySelector.es.js +89 -235
- package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
- package/lib/pages/cms/products/components/ProductForm.es.js +526 -1110
- package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
- package/lib/pages/cms/products/components/ProductMediaManager.es.js +63 -154
- package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
- package/lib/pages/cms/products/components/ProductsBulkTable.es.js +213 -544
- package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
- package/lib/pages/cms/products/components/SaleScheduleFields.es.js +91 -207
- package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
- package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +16 -28
- package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
- package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +25 -37
- package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
- package/lib/pages/cms/products/components/VariationsEditor.es.js +261 -492
- package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
- package/lib/pages/cms/products/inventory/InventoryPage.es.js +12 -32
- package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
- package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +145 -365
- package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
- package/lib/pages/cms/products/new/NewProductPage.es.js +30 -42
- package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
- package/lib/pages/cms/shipping/ShippingPage.es.js +155 -507
- package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
- package/lib/pages/cms/shipping/components/RateForm.es.js +334 -717
- package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
- package/lib/pages/cms/shipping/components/ZoneForm.es.js +158 -392
- package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
- package/lib/pages/cms/taxes/TaxesPage.es.js +119 -447
- package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
- package/lib/pages/cms/taxes/components/TaxRateForm.es.js +52 -156
- package/lib/product-context.cjs.js +1 -1
- package/lib/product-context.es.js +10 -14
- package/lib/trials.cjs.js +1 -1
- package/lib/trials.d.ts +10 -3
- package/lib/trials.es.js +28 -21
- package/lib/types.d.ts +2 -0
- package/lib/use-price-formatter.cjs.js +1 -0
- package/lib/use-price-formatter.d.ts +11 -0
- package/lib/use-price-formatter.es.js +13 -0
- package/lib/variation-utils.cjs.js +1 -1
- package/lib/variation-utils.d.ts +10 -0
- package/lib/variation-utils.es.js +139 -123
- package/package.json +4 -4
|
@@ -1,306 +1,160 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import {
|
|
3
|
-
import { useState as
|
|
4
|
-
import { X as
|
|
5
|
-
import { cn as
|
|
6
|
-
import { Badge as
|
|
7
|
-
import { createCategoryAction as
|
|
8
|
-
import { toast as
|
|
9
|
-
function
|
|
2
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import { useState as c, useEffect as P, useMemo as u } from "react";
|
|
4
|
+
import { X as $, ChevronsUpDown as O, Search as Q, Loader2 as T, Check as q } from "lucide-react";
|
|
5
|
+
import { cn as A } from "@nextblock-cms/utils";
|
|
6
|
+
import { Badge as B, Popover as R, PopoverTrigger as z, Button as w, PopoverContent as D, Input as E, Checkbox as F } from "@nextblock-cms/ui";
|
|
7
|
+
import { createCategoryAction as M } from "../server-actions.es.js";
|
|
8
|
+
import { toast as h } from "sonner";
|
|
9
|
+
function W({
|
|
10
10
|
categories: m = [],
|
|
11
11
|
selectedIds: o = [],
|
|
12
|
-
onChange:
|
|
13
|
-
placeholder:
|
|
12
|
+
onChange: d,
|
|
13
|
+
placeholder: N = "Select categories..."
|
|
14
14
|
}) {
|
|
15
|
-
const [
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const [f, C] = c(!1), [l, p] = c(""), [n, g] = c(m), [x, b] = c(!1);
|
|
16
|
+
P(() => {
|
|
17
|
+
g(m);
|
|
18
18
|
}, [m]);
|
|
19
|
-
const
|
|
20
|
-
if (!l) return
|
|
19
|
+
const y = u(() => n.filter((e) => o.includes(e.id)), [n, o]), v = u(() => {
|
|
20
|
+
if (!l) return n;
|
|
21
21
|
const e = l.toLowerCase();
|
|
22
|
-
return
|
|
23
|
-
(
|
|
22
|
+
return n.filter(
|
|
23
|
+
(t) => t.name.toLowerCase().includes(e) || t.slug.toLowerCase().includes(e)
|
|
24
24
|
);
|
|
25
|
-
}, [
|
|
26
|
-
if (!
|
|
27
|
-
const e =
|
|
28
|
-
return !
|
|
29
|
-
}, [
|
|
30
|
-
if (
|
|
31
|
-
|
|
25
|
+
}, [n, l]), s = l.trim(), k = u(() => {
|
|
26
|
+
if (!s) return !1;
|
|
27
|
+
const e = s.toLowerCase();
|
|
28
|
+
return !n.some((t) => t.name.toLowerCase() === e);
|
|
29
|
+
}, [n, s]), L = async () => {
|
|
30
|
+
if (s) {
|
|
31
|
+
b(!0);
|
|
32
32
|
try {
|
|
33
|
-
const e = await
|
|
33
|
+
const e = await M({ name: s });
|
|
34
34
|
if (e.success && e.category) {
|
|
35
|
-
const
|
|
35
|
+
const t = {
|
|
36
36
|
id: e.category.id,
|
|
37
37
|
name: e.category.name,
|
|
38
38
|
slug: e.category.slug
|
|
39
39
|
};
|
|
40
|
-
|
|
40
|
+
g((i) => [...i, t]), d([...o, t.id]), p(""), h.success(`Category "${t.name}" created successfully.`);
|
|
41
41
|
} else
|
|
42
|
-
|
|
42
|
+
h.error(e.error || "Failed to create category.");
|
|
43
43
|
} catch (e) {
|
|
44
|
-
|
|
44
|
+
h.error(e.message || "An error occurred while creating category.");
|
|
45
45
|
} finally {
|
|
46
|
-
|
|
46
|
+
b(!1);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}, j = (e) => {
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
|
|
50
|
+
const t = o.includes(e) ? o.filter((i) => i !== e) : [...o, e];
|
|
51
|
+
d(t);
|
|
52
|
+
}, S = (e, t) => {
|
|
53
|
+
t.stopPropagation(), d(o.filter((i) => i !== e));
|
|
54
54
|
};
|
|
55
|
-
return /* @__PURE__ */
|
|
56
|
-
/* @__PURE__ */
|
|
57
|
-
|
|
58
|
-
lineNumber: 108,
|
|
59
|
-
columnNumber: 11
|
|
60
|
-
}, this) : x.map((e) => /* @__PURE__ */ s(
|
|
61
|
-
$,
|
|
55
|
+
return /* @__PURE__ */ a("div", { className: "space-y-2", children: [
|
|
56
|
+
/* @__PURE__ */ r("div", { className: "flex flex-wrap gap-1.5 min-h-[32px] p-1 border rounded-md bg-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2", children: y.length === 0 ? /* @__PURE__ */ r("span", { className: "text-xs text-muted-foreground self-center px-2 py-1 select-none", children: "No categories selected." }) : y.map((e) => /* @__PURE__ */ a(
|
|
57
|
+
B,
|
|
62
58
|
{
|
|
63
59
|
variant: "secondary",
|
|
64
60
|
className: "pl-2 pr-1.5 py-0.5 text-xs flex items-center gap-1 bg-amber-500/10 text-amber-800 dark:text-amber-300 border border-amber-500/20 rounded-full",
|
|
65
61
|
children: [
|
|
66
62
|
e.name,
|
|
67
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ r(
|
|
68
64
|
"button",
|
|
69
65
|
{
|
|
70
66
|
type: "button",
|
|
71
|
-
onClick: (
|
|
67
|
+
onClick: (t) => S(e.id, t),
|
|
72
68
|
className: "rounded-full p-0.5 text-muted-foreground hover:bg-amber-500/20 hover:text-amber-950 dark:hover:text-amber-50 transition-colors cursor-pointer",
|
|
73
69
|
"aria-label": `Remove ${e.name}`,
|
|
74
|
-
children: /* @__PURE__ */
|
|
75
|
-
|
|
76
|
-
lineNumber: 125,
|
|
77
|
-
columnNumber: 17
|
|
78
|
-
}, this)
|
|
79
|
-
},
|
|
80
|
-
void 0,
|
|
81
|
-
!1,
|
|
82
|
-
{
|
|
83
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
84
|
-
lineNumber: 119,
|
|
85
|
-
columnNumber: 15
|
|
86
|
-
},
|
|
87
|
-
this
|
|
70
|
+
children: /* @__PURE__ */ r($, { className: "h-3 w-3" })
|
|
71
|
+
}
|
|
88
72
|
)
|
|
89
73
|
]
|
|
90
74
|
},
|
|
91
|
-
e.id
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
columnNumber: 13
|
|
97
|
-
},
|
|
98
|
-
this
|
|
99
|
-
)) }, void 0, !1, {
|
|
100
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
101
|
-
lineNumber: 106,
|
|
102
|
-
columnNumber: 7
|
|
103
|
-
}, this),
|
|
104
|
-
/* @__PURE__ */ s(O, { open: p, onOpenChange: y, children: [
|
|
105
|
-
/* @__PURE__ */ s(Q, { asChild: !0, children: /* @__PURE__ */ s(
|
|
106
|
-
C,
|
|
75
|
+
e.id
|
|
76
|
+
)) }),
|
|
77
|
+
/* @__PURE__ */ a(R, { open: f, onOpenChange: C, children: [
|
|
78
|
+
/* @__PURE__ */ r(z, { asChild: !0, children: /* @__PURE__ */ a(
|
|
79
|
+
w,
|
|
107
80
|
{
|
|
108
81
|
variant: "outline",
|
|
109
82
|
role: "combobox",
|
|
110
|
-
"aria-expanded":
|
|
83
|
+
"aria-expanded": f,
|
|
111
84
|
className: "w-full justify-between h-8 text-xs font-normal",
|
|
112
85
|
children: [
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
-
|
|
115
|
-
lineNumber: 140,
|
|
116
|
-
columnNumber: 13
|
|
117
|
-
}, this),
|
|
118
|
-
/* @__PURE__ */ s(R, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" }, void 0, !1, {
|
|
119
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
120
|
-
lineNumber: 145,
|
|
121
|
-
columnNumber: 13
|
|
122
|
-
}, this)
|
|
86
|
+
/* @__PURE__ */ r("span", { className: "truncate", children: o.length > 0 ? `${o.length} categor${o.length === 1 ? "y" : "ies"} selected` : N }),
|
|
87
|
+
/* @__PURE__ */ r(O, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
|
|
123
88
|
]
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
{
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
},
|
|
132
|
-
this
|
|
133
|
-
) }, void 0, !1, {
|
|
134
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
135
|
-
lineNumber: 133,
|
|
136
|
-
columnNumber: 9
|
|
137
|
-
}, this),
|
|
138
|
-
/* @__PURE__ */ s(T, { className: "w-[--radix-popover-trigger-width] p-0", align: "start", children: [
|
|
139
|
-
/* @__PURE__ */ s("div", { className: "flex items-center border-b px-3", children: [
|
|
140
|
-
/* @__PURE__ */ s(w, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }, void 0, !1, {
|
|
141
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
142
|
-
lineNumber: 150,
|
|
143
|
-
columnNumber: 13
|
|
144
|
-
}, this),
|
|
145
|
-
/* @__PURE__ */ s(
|
|
146
|
-
q,
|
|
89
|
+
}
|
|
90
|
+
) }),
|
|
91
|
+
/* @__PURE__ */ a(D, { className: "w-(--radix-popover-trigger-width) p-0", align: "start", children: [
|
|
92
|
+
/* @__PURE__ */ a("div", { className: "flex items-center border-b px-3", children: [
|
|
93
|
+
/* @__PURE__ */ r(Q, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
94
|
+
/* @__PURE__ */ r(
|
|
95
|
+
E,
|
|
147
96
|
{
|
|
148
97
|
className: "flex h-9 w-full rounded-md bg-transparent py-2 text-xs outline-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
149
98
|
placeholder: "Search categories...",
|
|
150
99
|
value: l,
|
|
151
|
-
onChange: (e) =>
|
|
152
|
-
}
|
|
153
|
-
void 0,
|
|
154
|
-
!1,
|
|
155
|
-
{
|
|
156
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
157
|
-
lineNumber: 151,
|
|
158
|
-
columnNumber: 13
|
|
159
|
-
},
|
|
160
|
-
this
|
|
100
|
+
onChange: (e) => p(e.target.value)
|
|
101
|
+
}
|
|
161
102
|
)
|
|
162
|
-
] },
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
columnNumber: 11
|
|
166
|
-
}, this),
|
|
167
|
-
v && /* @__PURE__ */ s("div", { className: "border-b border-border/50 p-1", children: /* @__PURE__ */ s(
|
|
168
|
-
C,
|
|
103
|
+
] }),
|
|
104
|
+
k && /* @__PURE__ */ r("div", { className: "border-b border-border/50 p-1", children: /* @__PURE__ */ a(
|
|
105
|
+
w,
|
|
169
106
|
{
|
|
170
107
|
type: "button",
|
|
171
108
|
variant: "ghost",
|
|
172
109
|
size: "sm",
|
|
173
110
|
className: "w-full justify-start text-xs h-8 text-amber-600 dark:text-amber-400 hover:text-amber-700 hover:bg-amber-500/10 cursor-pointer",
|
|
174
|
-
onClick:
|
|
175
|
-
disabled:
|
|
111
|
+
onClick: L,
|
|
112
|
+
disabled: x,
|
|
176
113
|
children: [
|
|
177
|
-
|
|
178
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
179
|
-
lineNumber: 169,
|
|
180
|
-
columnNumber: 19
|
|
181
|
-
}, this) : /* @__PURE__ */ s("span", { className: "font-bold mr-1.5", children: "+" }, void 0, !1, {
|
|
182
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
183
|
-
lineNumber: 171,
|
|
184
|
-
columnNumber: 19
|
|
185
|
-
}, this),
|
|
114
|
+
x ? /* @__PURE__ */ r(T, { className: "mr-2 h-3 w-3 animate-spin" }) : /* @__PURE__ */ r("span", { className: "font-bold mr-1.5", children: "+" }),
|
|
186
115
|
'Create category "',
|
|
187
|
-
|
|
116
|
+
s,
|
|
188
117
|
'"'
|
|
189
118
|
]
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
lineNumber: 160,
|
|
196
|
-
columnNumber: 15
|
|
197
|
-
},
|
|
198
|
-
this
|
|
199
|
-
) }, void 0, !1, {
|
|
200
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
201
|
-
lineNumber: 159,
|
|
202
|
-
columnNumber: 13
|
|
203
|
-
}, this),
|
|
204
|
-
/* @__PURE__ */ s("div", { className: "max-h-60 overflow-y-auto p-1", children: h.length === 0 ? /* @__PURE__ */ s("p", { className: "py-4 text-center text-xs text-muted-foreground", children: "No categories found." }, void 0, !1, {
|
|
205
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
206
|
-
lineNumber: 179,
|
|
207
|
-
columnNumber: 15
|
|
208
|
-
}, this) : /* @__PURE__ */ s("div", { className: "flex flex-col gap-0.5", children: h.map((e) => {
|
|
209
|
-
const r = o.includes(e.id);
|
|
210
|
-
return /* @__PURE__ */ s(
|
|
119
|
+
}
|
|
120
|
+
) }),
|
|
121
|
+
/* @__PURE__ */ r("div", { className: "max-h-60 overflow-y-auto p-1", children: v.length === 0 ? /* @__PURE__ */ r("p", { className: "py-4 text-center text-xs text-muted-foreground", children: "No categories found." }) : /* @__PURE__ */ r("div", { className: "flex flex-col gap-0.5", children: v.map((e) => {
|
|
122
|
+
const t = o.includes(e.id);
|
|
123
|
+
return /* @__PURE__ */ a(
|
|
211
124
|
"div",
|
|
212
125
|
{
|
|
213
126
|
onClick: () => j(e.id),
|
|
214
|
-
className:
|
|
127
|
+
className: A(
|
|
215
128
|
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-xs outline-none hover:bg-accent hover:text-accent-foreground text-left transition-colors",
|
|
216
|
-
|
|
129
|
+
t && "bg-accent/40 font-medium"
|
|
217
130
|
),
|
|
218
131
|
children: [
|
|
219
|
-
/* @__PURE__ */
|
|
220
|
-
|
|
132
|
+
/* @__PURE__ */ r("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center pointer-events-none", children: /* @__PURE__ */ r(
|
|
133
|
+
F,
|
|
221
134
|
{
|
|
222
|
-
checked:
|
|
135
|
+
checked: t,
|
|
223
136
|
tabIndex: -1,
|
|
224
137
|
"aria-label": `Toggle ${e.name}`,
|
|
225
138
|
className: "h-3.5 w-3.5"
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
{
|
|
230
|
-
|
|
231
|
-
lineNumber: 196,
|
|
232
|
-
columnNumber: 25
|
|
233
|
-
},
|
|
234
|
-
this
|
|
235
|
-
) }, void 0, !1, {
|
|
236
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
237
|
-
lineNumber: 195,
|
|
238
|
-
columnNumber: 23
|
|
239
|
-
}, this),
|
|
240
|
-
/* @__PURE__ */ s("span", { className: "flex flex-col", children: [
|
|
241
|
-
/* @__PURE__ */ s("span", { children: e.name }, void 0, !1, {
|
|
242
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
243
|
-
lineNumber: 204,
|
|
244
|
-
columnNumber: 25
|
|
245
|
-
}, this),
|
|
246
|
-
/* @__PURE__ */ s("span", { className: "font-mono text-[9px] text-muted-foreground leading-none", children: [
|
|
139
|
+
}
|
|
140
|
+
) }),
|
|
141
|
+
/* @__PURE__ */ a("span", { className: "flex flex-col", children: [
|
|
142
|
+
/* @__PURE__ */ r("span", { children: e.name }),
|
|
143
|
+
/* @__PURE__ */ a("span", { className: "font-mono text-[9px] text-muted-foreground leading-none", children: [
|
|
247
144
|
"/",
|
|
248
145
|
e.slug
|
|
249
|
-
] }
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
columnNumber: 25
|
|
253
|
-
}, this)
|
|
254
|
-
] }, void 0, !0, {
|
|
255
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
256
|
-
lineNumber: 203,
|
|
257
|
-
columnNumber: 23
|
|
258
|
-
}, this),
|
|
259
|
-
r && /* @__PURE__ */ s("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ s(H, { className: "h-3.5 w-3.5 text-primary" }, void 0, !1, {
|
|
260
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
261
|
-
lineNumber: 211,
|
|
262
|
-
columnNumber: 27
|
|
263
|
-
}, this) }, void 0, !1, {
|
|
264
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
265
|
-
lineNumber: 210,
|
|
266
|
-
columnNumber: 25
|
|
267
|
-
}, this)
|
|
146
|
+
] })
|
|
147
|
+
] }),
|
|
148
|
+
t && /* @__PURE__ */ r("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ r(q, { className: "h-3.5 w-3.5 text-primary" }) })
|
|
268
149
|
]
|
|
269
150
|
},
|
|
270
|
-
e.id
|
|
271
|
-
!0,
|
|
272
|
-
{
|
|
273
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
274
|
-
lineNumber: 187,
|
|
275
|
-
columnNumber: 21
|
|
276
|
-
},
|
|
277
|
-
this
|
|
151
|
+
e.id
|
|
278
152
|
);
|
|
279
|
-
}) }
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}, this) }, void 0, !1, {
|
|
284
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
285
|
-
lineNumber: 177,
|
|
286
|
-
columnNumber: 11
|
|
287
|
-
}, this)
|
|
288
|
-
] }, void 0, !0, {
|
|
289
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
290
|
-
lineNumber: 148,
|
|
291
|
-
columnNumber: 9
|
|
292
|
-
}, this)
|
|
293
|
-
] }, void 0, !0, {
|
|
294
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
295
|
-
lineNumber: 132,
|
|
296
|
-
columnNumber: 7
|
|
297
|
-
}, this)
|
|
298
|
-
] }, void 0, !0, {
|
|
299
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductCategorySelector.tsx",
|
|
300
|
-
lineNumber: 105,
|
|
301
|
-
columnNumber: 5
|
|
302
|
-
}, this);
|
|
153
|
+
}) }) })
|
|
154
|
+
] })
|
|
155
|
+
] })
|
|
156
|
+
] });
|
|
303
157
|
}
|
|
304
158
|
export {
|
|
305
|
-
|
|
159
|
+
W as ProductCategorySelector
|
|
306
160
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),l=require("react"),ze=require("@hookform/resolvers/zod"),q=require("lucide-react"),t=require("@nextblock-cms/ui"),Le=require("../../../../product-schema.cjs.js"),Ke=require("react-hook-form"),$e=require("./ProductMediaManager.cjs.js"),Je=require("./SyncFreemiusPricingButton.cjs.js"),Xe=require("./VariationsEditor.cjs.js"),Pe=require("./CurrencyPriceFields.cjs.js"),Ce=require("./SaleScheduleFields.cjs.js"),Ye=require("./ProductCategorySelector.cjs.js"),O=require("../product-price-sync.cjs.js"),Qe=require("../../../../types.cjs.js"),Fe=require("../../../../currency.cjs.js"),T=require("@nextblock-cms/utils");function A({title:s,description:o,action:g,children:p,hideHeader:P}){return e.jsxDEV("section",{className:"rounded-lg border bg-card p-3 shadow-sm space-y-3",children:[!P&&e.jsxDEV("div",{className:"flex items-start justify-between gap-4 flex-wrap border-b border-muted/50 pb-2 mb-1",children:[e.jsxDEV("div",{className:"space-y-0.5",children:[e.jsxDEV("h2",{className:"text-sm font-bold tracking-tight",children:s},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:127,columnNumber:13},this),o?e.jsxDEV("p",{className:"text-[11px] text-muted-foreground leading-none",children:o},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:129,columnNumber:15},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:126,columnNumber:11},this),g]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:125,columnNumber:9},this),e.jsxDEV("div",{className:P?"":"pt-1",children:p},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:135,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:123,columnNumber:5},this)}function We(s,o,g){const p=o?Number.parseInt(o,10):void 0;return s?.language_id||(Number.isFinite(p)?p:void 0)||g.find(P=>P.is_default)?.id||g[0]?.id||1}function ye(s,o,g,p,P){const y=(p.find(k=>k.is_default)??p[0])?.code||"USD",U=s?.prices&&Object.keys(s.prices).length>0?s.prices:{[y]:typeof s?.price=="number"?s.price/100:0},H=s?.sale_prices&&Object.keys(s.sale_prices).length>0?s.sale_prices:typeof s?.sale_price=="number"?{[y]:s.sale_price/100}:{},S=s?.product_type||"",V=s?.payment_provider||(s?.product_type?Qe.derivePaymentProviderFromProductType(s.product_type):"stripe");return{...O.sanitizeProductFormValuesForStoreManagedCurrencies({product_type:S||"physical",payment_provider:V,title:s?.title||"",slug:s?.slug||"",sku:s?.sku||"",upc:s?.upc||"",is_taxable:s?.is_taxable??!0,price:typeof s?.price=="number"?s.price/100:0,prices:U,sale_price:typeof s?.sale_price=="number"?s.sale_price/100:null,sale_prices:H,stock:s?.stock||0,meta_title:s?.meta_title||"",meta_description:s?.meta_description||"",custom_canonical:s?.custom_canonical||"",short_description:s?.short_description||"",description_json:s?.description_json||{type:"doc",content:[{type:"paragraph"}]},freemius_product_id:s?.freemius_product_id||"",freemius_plan_id:s?.freemius_plan_id||"",trial_period_days:s?.trial_period_days??0,trial_requires_payment_method:s?.trial_requires_payment_method??!1,status:s?.status||"draft",language_id:We(s,o,g),translation_group_id:s?.translation_group_id||P||void 0,product_media:s?.product_media?.map(k=>({media_id:k.media_id}))||[],category_ids:s?.category_ids||[],variation_attributes:s?.variation_attributes||[],variants:s?.variants?.map(k=>({...k,prices:k.prices||{},sale_prices:k.sale_prices||{}}))||[]},p),product_type:S,payment_provider:V}}function Ve(s){return s?s.map(o=>({id:o.id||o.media_id,media_id:o.media_id,file_path:o.media?.file_path||o.media?.object_key||"",alt:o.media?.alt_text||"",sort_order:o.sort_order??0})).sort((o,g)=>o.sort_order-g.sort_order):[]}function Ze(s){return s.map(o=>({media_id:o.media_id}))}function Ge(s){return s.map(o=>({media_id:o.media_id,file_path:o.file_path,alt:o.alt}))}const es=s=>s.toString().toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"");function ss({initialData:s,isEdit:o=!1,mediaPickerNode:g,availableLanguagesProp:p,globalAttributesProp:P,currenciesProp:z,translationGroupId:y,targetLanguageId:U,freemiusDashboardNode:H,enabledProviders:S,configStatus:V,createAction:L,updateAction:k,availableCategoriesProp:Re=[],hasOpenDraft:Ee=!1,onSeoChange:re}){const[w,K]=l.useState(!1),[$,J]=l.useState(()=>!!s?.variants?.length),a=l.useMemo(()=>z.filter(r=>r.is_active!==!1).sort((r,i)=>r.is_default!==i.is_default?r.is_default?-1:1:r.code.localeCompare(i.code)),[z]),m=l.useMemo(()=>a.find(r=>r.is_default)??a[0],[a]),M=l.useMemo(()=>O.getStoreManagedPriceCurrencyCodes(a),[a]),oe=Ke.useForm({resolver:ze.zodResolver(Le.productSchema),defaultValues:ye(s,U,p,a,y)}),{register:n,handleSubmit:X,setValue:c,reset:te,watch:d,setError:Y,formState:{errors:N,dirtyFields:ce}}=oe,ie=l.useRef(!0),Q=l.useRef(null),[Ue,W]=l.useState(!1),[le,Z]=l.useState(null),[me,Be]=l.useState(null),R=d(),ne=oe.formState.isDirty,de=R.title,ae=R.meta_title,ue=R.meta_description;l.useEffect(()=>{re?.({title:de,meta_title:ae,meta_description:ue})},[de,ae,ue,re]),l.useEffect(()=>{if(!o)return;if(ie.current){ie.current=!1,Q.current=JSON.stringify(R);return}if(!ne)return;const r=JSON.stringify(R);if(r===Q.current)return;const i=setTimeout(()=>{w||(Q.current=r,X(_e)())},400);return()=>clearTimeout(i)},[R,o,ne,w,X]);const pe=d("title"),B=d("product_type"),b=B==="digital"?"freemius":B==="physical"?"stripe":void 0,j=B==="physical",Ne=B==="digital",be=b?S[b]:!1,xe=b?V[b].hasKeys:!1,He=!!d("freemius_product_id"),fe=Number(d("trial_period_days")||0),he=!!d("trial_requires_payment_method"),Se=d("variants")||[],C=d("price"),E=d("sale_price"),v=d("prices")||{},F=d("sale_prices")||{},D=(Se?.length||0)>0,we=d("language_id"),Me=p.find(r=>r.id===we)?.code||p.find(r=>r.is_default)?.code||p[0]?.code,I=l.useMemo(()=>O.resolveEditorCurrencyPriceMaps({currencies:a,prices:v,salePrices:F,fallbackPrice:C,fallbackSalePrice:E}),[C,E,a,v,F]),Ie=l.useMemo(()=>s?.variants?.map(r=>({...r,prices:r.prices||{},sale_prices:r.sale_prices||{}})),[s?.variants]);l.useEffect(()=>{if(ce.title&&!o){const r=es(pe);c("slug",r,{shouldValidate:!0})}},[pe,ce.title,c,o]);const[G,ge]=l.useState(()=>Ve(s?.product_media)),[ee,ke]=l.useState(new Set);l.useEffect(()=>{te(ye(s,U,p,a,y)),ge(Ve(s?.product_media)),ke(new Set),J(!!s?.variants?.length)},[p,a,s,te,U,y]);const qe=r=>{const i=new Set(r.map(h=>h.id)),u=G.filter(h=>!i.has(h.id)),x=new Set(ee);u.forEach(h=>{h.media_id&&x.add(h.media_id)}),ke(x),ge(r),c("product_media",Ze(r),{shouldDirty:!0}),c("explicitly_removed_media_ids",Array.from(x),{shouldDirty:!0})};l.useEffect(()=>{c("explicitly_removed_media_ids",Array.from(ee))},[ee,c]),l.useEffect(()=>{D&&J(!0)},[D]),l.useEffect(()=>{n("is_taxable"),n("price"),n("sale_price"),n("payment_provider"),n("trial_requires_payment_method")},[n]),l.useEffect(()=>{if(!Ne){c("trial_period_days",0,{shouldDirty:!1,shouldValidate:!0}),c("trial_requires_payment_method",!1,{shouldDirty:!1,shouldValidate:!0});return}fe<=0&&c("trial_requires_payment_method",!1,{shouldDirty:!1,shouldValidate:!0})},[Ne,c,fe]),l.useEffect(()=>{b&&c("payment_provider",b,{shouldDirty:!1,shouldValidate:!0})},[b,c]),l.useEffect(()=>{m&&v[m.code]===void 0&&c("prices",{...v,[m.code]:C||0},{shouldDirty:!1})},[C,m,v,c]);const je=l.useCallback((r,i)=>{const u={...v,[r]:i};c("prices",u,{shouldDirty:!0,shouldValidate:!0}),r===m?.code&&c("price",i,{shouldDirty:!0,shouldValidate:!0})},[m?.code,v,c]),ve=l.useCallback((r,i)=>{const u={...F,[r]:i};c("sale_prices",u,{shouldDirty:!0,shouldValidate:!0}),r===m?.code&&c("sale_price",i,{shouldDirty:!0,shouldValidate:!0})},[m?.code,F,c]),De=l.useCallback(()=>{if(!m)return;const r=new Set(M),i=v[m.code]??C??0,u=F[m.code]??E??null,x=a.reduce((_,f)=>{if(f.code!==m.code&&r.has(f.code))return _;const se=Fe.convertMinorUnitAmount({amount:T.majorUnitAmountToMinor(i,m.code),fromCurrencyCode:m.code,toCurrencyCode:f.code,currencies:a,applyRounding:!0});return _[f.code]=T.minorUnitAmountToMajor(se,f.code),_},{}),h=a.reduce((_,f)=>{if(f.code!==m.code&&r.has(f.code))return _;if(typeof u!="number")return(f.code===m.code||!r.has(f.code))&&(_[f.code]=null),_;const se=Fe.convertMinorUnitAmount({amount:T.majorUnitAmountToMinor(u,m.code),fromCurrencyCode:m.code,toCurrencyCode:f.code,currencies:a,applyRounding:!0});return _[f.code]=T.minorUnitAmountToMajor(se,f.code),_},{});c("prices",x,{shouldDirty:!0,shouldValidate:!0}),c("sale_prices",h,{shouldDirty:!0,shouldValidate:!0}),c("price",x[m.code]??i,{shouldDirty:!0,shouldValidate:!0}),c("sale_price",h[m.code]??null,{shouldDirty:!0,shouldValidate:!0})},[a,m,v,F,c,M,C,E]),Te=l.useCallback(({variationAttributes:r,variants:i})=>{c("variation_attributes",r,{shouldDirty:!0}),c("variants",i,{shouldDirty:!0,shouldValidate:!0})},[c]),_e=async r=>{K(!0),W(!0),Z(null);try{if(!b){const h="Select whether this product is physical or digital before saving.";Y("product_type",{type:"manual",message:h}),o?Z(h):alert(h),K(!1),W(!1);return}const i=j?0:Math.max(0,Number(r.trial_period_days||0)),u={...r,product_type:r.product_type,payment_provider:b,freemius_product_id:j?"":r.freemius_product_id,freemius_plan_id:j?"":r.freemius_plan_id,trial_period_days:i,trial_requires_payment_method:!j&&i>0?r.trial_requires_payment_method:!1,upc:j?r.upc:null,is_taxable:j?r.is_taxable:!1,variation_attributes:j?r.variation_attributes:[],variants:j?r.variants:[]},x=O.sanitizeProductFormValuesForStoreManagedCurrencies(u,a);if(o&&k)await k(x),Be(new Date);else if(L)await L(x);else throw new Error("Product form action is not configured.")}catch(i){if(console.error(i),i.message==="NEXT_REDIRECT")return;let u=i.message||"An error occurred while saving.";if(i.code==="23505"){const x=i.message?.toLowerCase()||"";x.includes("products_slug_key")||x.includes("slug")?(u="This slug is already in use. Please choose another one.",Y("slug",{type:"manual",message:u})):(x.includes("products_sku_key")||x.includes("sku"))&&(u="This SKU is already in use.",Y("sku",{type:"manual",message:u}))}o?Z(u):alert(u)}finally{K(!1),W(!1)}},Ae=D?"bg-muted/60 text-muted-foreground opacity-70":"",Oe=Ge(G);return e.jsxDEV("form",{onSubmit:X(_e),className:"space-y-2.5 pb-4",children:[e.jsxDEV("input",{type:"hidden",...n("translation_group_id")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:819,columnNumber:7},this),e.jsxDEV("input",{type:"hidden",...n("payment_provider")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:820,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-2.5 w-full",children:[e.jsxDEV("div",{className:"rounded-lg border bg-card p-2.5 px-4 shadow-sm flex items-center justify-between gap-3 flex-wrap",children:[e.jsxDEV("div",{className:"flex items-center gap-6",children:[e.jsxDEV("div",{className:"flex h-9 items-center gap-2",children:[e.jsxDEV("span",{className:"text-sm font-bold whitespace-nowrap leading-none pt-0.5",children:"Product Type"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:826,columnNumber:15},this),N.product_type&&e.jsxDEV(q.AlertCircle,{className:"h-4 w-4 text-destructive"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:828,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:825,columnNumber:13},this),e.jsxDEV("div",{className:"flex h-9 items-center",children:e.jsxDEV(t.Select,{onValueChange:r=>c("product_type",r,{shouldDirty:!0,shouldValidate:!0}),value:B||void 0,children:[e.jsxDEV(t.SelectTrigger,{className:"w-[160px] h-9 text-xs",children:e.jsxDEV(t.SelectValue,{placeholder:"Select Type"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:843,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:842,columnNumber:17},this),e.jsxDEV(t.SelectContent,{children:[e.jsxDEV(t.SelectItem,{value:"physical",children:"Physical Product"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:846,columnNumber:19},this),e.jsxDEV(t.SelectItem,{value:"digital",children:"Digital Product"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:847,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:845,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:833,columnNumber:15},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:832,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:824,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-6",children:[e.jsxDEV("div",{className:"flex h-9 items-center gap-3",children:[e.jsxDEV("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider leading-none",children:"Payment Provider"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:855,columnNumber:15},this),e.jsxDEV(t.Badge,{variant:"outline",className:"text-xs py-1 font-bold bg-muted/30 leading-none",children:b?b==="stripe"?"Stripe":"Freemius":"—"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:856,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:854,columnNumber:13},this),b&&e.jsxDEV("div",{className:"flex h-9 items-center gap-2",children:be&&xe?e.jsxDEV("span",{className:"flex items-center gap-1.5 text-emerald-600 text-[10px] font-bold bg-emerald-50 px-2 py-1 rounded-full border border-emerald-100 uppercase leading-none",children:[e.jsxDEV(q.CheckCircle2,{className:"h-3 w-3"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:869,columnNumber:21},this),"Ready"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:868,columnNumber:19},this):e.jsxDEV("span",{className:"flex items-center gap-1.5 text-amber-600 text-[10px] font-bold bg-amber-50 px-2 py-1 rounded-full border border-amber-100 uppercase leading-none",children:[e.jsxDEV(q.AlertCircle,{className:"h-3 w-3"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:874,columnNumber:21},this),be?"Keys Missing":"Disabled"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:873,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:866,columnNumber:15},this),!xe&&b&&V[b].missing.length>0&&e.jsxDEV("a",{href:"/cms/payments",className:"hidden xl:flex h-9 items-center gap-1 text-[10px] text-muted-foreground bg-muted/50 px-2 py-1 rounded border border-dashed leading-none hover:text-foreground hover:border-solid",children:[e.jsxDEV(q.Info,{className:"h-3 w-3"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:886,columnNumber:17},this),"Missing: ",V[b].missing.join(", ")," — set up payments"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:882,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:853,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:823,columnNumber:9},this),e.jsxDEV(A,{title:"Product Information",hideHeader:!0,children:[o&&e.jsxDEV("div",{className:"flex items-center justify-between text-xs text-muted-foreground pb-2 border-b border-border/40 mb-2.5",children:[e.jsxDEV("span",{className:"font-semibold text-[11px] uppercase tracking-wider text-muted-foreground/80",children:"Product Settings"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:899,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 min-h-[16px]",children:Ue?e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"relative flex h-2 w-2",children:[e.jsxDEV("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:904,columnNumber:23},this),e.jsxDEV("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-amber-500"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:905,columnNumber:23},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:903,columnNumber:21},this),e.jsxDEV("span",{className:"text-amber-600 dark:text-amber-400 font-medium",children:"Autosaving settings..."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:907,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:902,columnNumber:19},this):le?e.jsxDEV("span",{className:"text-red-500 font-medium",children:["Error saving settings: ",le]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:910,columnNumber:19},this):me?e.jsxDEV("span",{className:"text-emerald-600 dark:text-emerald-400 font-medium",children:["Settings autosaved at ",me.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:912,columnNumber:19},this):e.jsxDEV("span",{className:"text-muted-foreground/60",children:"Settings autosave in draft mode"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:916,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:900,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:898,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-2.5",children:[e.jsxDEV("div",{className:"col-span-2 space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"title",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Title"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:923,columnNumber:15},this),e.jsxDEV(t.Input,{id:"title",placeholder:"Product title",...n("title"),className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:924,columnNumber:15},this),N.title&&e.jsxDEV("p",{className:"text-destructive text-[11px] leading-none",children:N.title.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:925,columnNumber:32},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:922,columnNumber:13},this),e.jsxDEV("div",{className:"col-span-2 space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"slug",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Slug"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:928,columnNumber:15},this),e.jsxDEV(t.Input,{id:"slug",placeholder:"product-slug",...n("slug"),className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:929,columnNumber:15},this),N.slug&&e.jsxDEV("p",{className:"text-destructive text-[11px] leading-none",children:N.slug.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:930,columnNumber:31},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:927,columnNumber:13},this),e.jsxDEV("div",{className:"col-span-1 space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"sku",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"SKU"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:933,columnNumber:15},this),e.jsxDEV(t.Input,{id:"sku",placeholder:"SKU",...n("sku"),className:"h-8 text-sm font-mono"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:934,columnNumber:15},this),N.sku&&e.jsxDEV("p",{className:"text-destructive text-[11px] leading-none",children:N.sku.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:935,columnNumber:30},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:932,columnNumber:13},this),e.jsxDEV("div",{className:"col-span-1 space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"upc_ean",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"UPC / EAN"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:938,columnNumber:15},this),e.jsxDEV(t.Input,{id:"upc_ean",placeholder:"000000000",...n("upc"),className:"h-8 text-sm font-mono",readOnly:D},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:939,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:937,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:921,columnNumber:11},this),e.jsxDEV("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-12 gap-2.5 mt-2",children:[e.jsxDEV("div",{className:`${o?"lg:col-span-3":"lg:col-span-4"} col-span-2 space-y-1`,children:[e.jsxDEV(t.Label,{htmlFor:"meta_title",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Meta Title"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:944,columnNumber:15},this),e.jsxDEV(t.Input,{id:"meta_title",...n("meta_title"),placeholder:"SEO page title (50-60 chars)",className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:945,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:943,columnNumber:13},this),e.jsxDEV("div",{className:"lg:col-span-4 col-span-2 space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"meta_description",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Meta Description"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:948,columnNumber:15},this),e.jsxDEV(t.Input,{id:"meta_description",...n("meta_description"),placeholder:"SEO description (150-160 chars)",className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:949,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:947,columnNumber:13},this),e.jsxDEV("div",{className:`${o?"lg:col-span-3":"lg:col-span-4"} col-span-2 space-y-1`,children:[e.jsxDEV(t.Label,{htmlFor:"custom_canonical",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Canonical URL (optional)"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:952,columnNumber:15},this),e.jsxDEV(t.Input,{id:"custom_canonical",...n("custom_canonical"),placeholder:"Blank = self-referencing. Absolute https://… URL or /relative path to override.",className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:953,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:951,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:942,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:893,columnNumber:9},this),e.jsxDEV(A,{title:"Product Categories",description:"Assign this product to one or more categories.",children:e.jsxDEV(Ye.ProductCategorySelector,{categories:Re,selectedIds:d("category_ids")||[],onChange:r=>c("category_ids",r,{shouldDirty:!0,shouldValidate:!0})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:965,columnNumber:11},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:961,columnNumber:9},this),e.jsxDEV("section",{className:"rounded-lg border bg-card p-3 shadow-sm space-y-3",children:[j&&e.jsxDEV("div",{className:"flex items-center justify-between gap-4 flex-wrap border-b border-muted/50 pb-2",children:[e.jsxDEV("div",{className:"flex items-center gap-4",children:e.jsxDEV("div",{className:"space-y-0.5",children:[e.jsxDEV("h2",{className:"text-sm font-bold tracking-tight",children:"Pricing & Inventory"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:977,columnNumber:19},this),e.jsxDEV("p",{className:"text-[11px] text-muted-foreground leading-none",children:"Manage simple or variant pricing."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:978,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:976,columnNumber:17},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:975,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2 bg-muted/40 rounded-md px-2.5 py-1.5",children:[e.jsxDEV("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Stock"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:983,columnNumber:21},this),e.jsxDEV(t.Input,{id:"stock",type:"number",min:"0",...n("stock",{valueAsNumber:!0}),placeholder:"0",readOnly:D,className:`${Ae} h-8 w-20 text-sm text-center font-mono bg-background`},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:984,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:982,columnNumber:19},this),D?e.jsxDEV(t.Badge,{variant:"secondary",className:"text-[11px] py-0 px-2 h-5",children:"Variant pricing"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:995,columnNumber:19},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:981,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:974,columnNumber:13},this),j?e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("div",{className:"w-full",children:[e.jsxDEV(Pe.CurrencyPriceFields,{idPrefix:"product",currencies:a,prices:I.prices,salePrices:I.salePrices,managedCurrencyCodes:M,onPriceChange:je,onSalePriceChange:ve,onAutoFill:De,readOnly:D,helperText:D?"Parent prices stay as a fallback, but active variants define the live shopper price.":void 0,trailing:e.jsxDEV(Ce.SaleScheduleFields,{idPrefix:"product",startAt:d("sale_start_at"),endAt:d("sale_end_at"),onChange:(r,i)=>c(r,i,{shouldDirty:!0,shouldValidate:!0}),error:N.sale_end_at?.message,bare:!0},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1019,columnNumber:21},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1003,columnNumber:17},this),N.price&&e.jsxDEV("p",{className:"text-destructive text-sm mt-1",children:N.price.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1032,columnNumber:19},this),N.sale_price&&e.jsxDEV("p",{className:"text-destructive text-sm mt-1",children:N.sale_price.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1035,columnNumber:19},this),N.stock&&e.jsxDEV("p",{className:"text-destructive text-[10px] font-medium leading-none mt-1",children:N.stock.message},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1038,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1002,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center justify-between gap-3 rounded border border-dashed p-2.5 bg-muted/5",children:[e.jsxDEV("span",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:D?"Variations Active":"Variations"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1043,columnNumber:17},this),e.jsxDEV(t.Button,{type:"button",variant:$?"outline":"default",onClick:()=>J(r=>!r),size:"sm",className:"h-7 text-xs px-3",children:$?"Hide":"Manage"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1044,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1042,columnNumber:15},this),$&&e.jsxDEV("div",{className:"border-t pt-3",children:e.jsxDEV(Xe.VariationsEditor,{globalAttributes:P,currentLanguageCode:Me,baseSku:d("sku")||"",basePrice:C||0,basePrices:v,baseSalePrice:typeof E=="number"?E:null,baseSalePrices:F,currencies:a,availableVariantImages:Oe,initialVariationAttributes:s?.variation_attributes,initialVariants:Ie,onChange:Te},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1057,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1056,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1001,columnNumber:13},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-end gap-4 w-full",children:[e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV(t.Label,{htmlFor:"freemius_product_id",className:"text-[11px] uppercase tracking-wider text-muted-foreground font-bold mb-1.5 block",children:"Freemius Product ID"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1081,columnNumber:19},this),e.jsxDEV(t.Input,{id:"freemius_product_id",...n("freemius_product_id"),className:"h-9"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1082,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1080,columnNumber:17},this),e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV(t.Label,{htmlFor:"freemius_plan_id",className:"text-[11px] uppercase tracking-wider text-muted-foreground font-bold mb-1.5 block",children:"Freemius Plan ID"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1085,columnNumber:19},this),e.jsxDEV(t.Input,{id:"freemius_plan_id",...n("freemius_plan_id"),className:"h-9"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1086,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1084,columnNumber:17},this),He?e.jsxDEV(Je.SyncFreemiusPricingButton,{productId:d("freemius_product_id"),hasOpenDraft:Ee},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1089,columnNumber:19},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1079,columnNumber:15},this),e.jsxDEV("div",{className:"bg-muted/10 border rounded-md overflow-hidden",children:[e.jsxDEV("div",{className:"flex flex-wrap items-center gap-6 bg-muted/20 border-b p-2.5 px-4",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-[11px] font-bold uppercase tracking-wider text-muted-foreground",children:"Free Trial"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1099,columnNumber:21},this),e.jsxDEV(t.Badge,{variant:"outline",className:"font-mono text-xs shadow-sm bg-background",children:[String(d("trial_period_days")||0)," Days"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1100,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1098,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-[11px] font-bold uppercase tracking-wider text-muted-foreground",children:"Card Required"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1103,columnNumber:21},this),e.jsxDEV(t.Badge,{variant:he?"default":"secondary",className:"text-xs shadow-sm",children:he?"Yes":"No"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1104,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1102,columnNumber:19},this),e.jsxDEV("span",{className:"text-[10px] text-muted-foreground ml-auto",children:"Managed in Freemius dashboard"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1108,columnNumber:19},this),e.jsxDEV("input",{type:"hidden",...n("trial_period_days",{valueAsNumber:!0})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1112,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1097,columnNumber:17},this),e.jsxDEV("div",{className:"w-full p-4 pt-3 space-y-2",children:[e.jsxDEV(Pe.CurrencyPriceFields,{idPrefix:"product",currencies:a,prices:I.prices,salePrices:I.salePrices,managedCurrencyCodes:M,onPriceChange:je,onSalePriceChange:ve,onAutoFill:De,readOnly:!0,trailing:e.jsxDEV(Ce.SaleScheduleFields,{idPrefix:"product",startAt:d("sale_start_at"),endAt:d("sale_end_at"),onChange:(r,i)=>c(r,i,{shouldDirty:!0,shouldValidate:!0}),error:N.sale_end_at?.message,bare:!0},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1127,columnNumber:23},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1116,columnNumber:19},this),e.jsxDEV("p",{className:"text-[10px] leading-snug text-muted-foreground",children:"Scheduling a sale on a Freemius product generates a time-bounded Freemius coupon so the discount is enforced at Freemius checkout."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1139,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1115,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1096,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1078,columnNumber:15},this),H&&e.jsxDEV("div",{className:"pt-2 border-t",children:H},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1147,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1077,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:972,columnNumber:9},this),e.jsxDEV(A,{title:"Product Description",hideHeader:!0,children:e.jsxDEV("div",{className:"space-y-2",children:e.jsxDEV("div",{className:"space-y-1",children:[e.jsxDEV(t.Label,{htmlFor:"short_description",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Short Description"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1158,columnNumber:15},this),e.jsxDEV(t.Input,{id:"short_description",...n("short_description"),placeholder:"Brief summary for product cards...",className:"h-8 text-sm"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1159,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1157,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1156,columnNumber:11},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1155,columnNumber:9},this),e.jsxDEV(A,{title:"Media Gallery",description:"Drag to reorder. First image is the hero.",children:[e.jsxDEV($e.ProductMediaManager,{initialMedia:G,onUpdate:qe,mediaPickerNode:g},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1165,columnNumber:11},this),e.jsxDEV("input",{type:"hidden",...n("product_media")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1170,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1164,columnNumber:9},this),!o&&e.jsxDEV("div",{className:"rounded-lg border bg-card p-3 px-4 shadow-sm flex items-center justify-between gap-3 flex-wrap",children:[e.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"New products start as a draft. Publish it from the top bar once it's ready."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1175,columnNumber:13},this),e.jsxDEV(t.Button,{disabled:w,type:"submit",size:"sm",className:"h-8 text-sm px-5",children:w?"Saving...":"Save Changes"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1178,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:1174,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:822,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/ProductForm.tsx",lineNumber:817,columnNumber:5},this)}exports.ProductForm=ss;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("react"),Ke=require("@hookform/resolvers/zod"),B=require("lucide-react"),a=require("@nextblock-cms/ui"),$e=require("../../../../product-schema.cjs.js"),He=require("react-hook-form"),Je=require("./ProductMediaManager.cjs.js"),Xe=require("./SyncFreemiusPricingButton.cjs.js"),Ye=require("./VariationsEditor.cjs.js"),Pe=require("./CurrencyPriceFields.cjs.js"),we=require("./SaleScheduleFields.cjs.js"),Qe=require("./ProductCategorySelector.cjs.js"),L=require("../product-price-sync.cjs.js"),We=require("../../../../types.cjs.js"),Ce=require("../../../../currency.cjs.js"),O=require("@nextblock-cms/utils");function z({title:s,description:r,action:y,children:m,hideHeader:P}){return e.jsxs("section",{className:"rounded-lg border bg-card p-3 shadow-sm space-y-3",children:[!P&&e.jsxs("div",{className:"flex items-start justify-between gap-4 flex-wrap border-b border-muted/50 pb-2 mb-1",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h2",{className:"text-sm font-bold tracking-tight",children:s}),r?e.jsx("p",{className:"text-[11px] text-muted-foreground leading-none",children:r}):null]}),y]}),e.jsx("div",{className:P?"":"pt-1",children:m})]})}function Ze(s,r,y){const m=r?Number.parseInt(r,10):void 0;return s?.language_id||(Number.isFinite(m)?m:void 0)||y.find(P=>P.is_default)?.id||y[0]?.id||1}function ke(s,r,y,m,P){const k=(m.find(b=>b.is_default)??m[0])?.code||"USD",I=s?.prices&&Object.keys(s.prices).length>0?s.prices:{[k]:typeof s?.price=="number"?s.price/100:0},T=s?.sale_prices&&Object.keys(s.sale_prices).length>0?s.sale_prices:typeof s?.sale_price=="number"?{[k]:s.sale_price/100}:{},A=s?.product_type||"",F=s?.payment_provider||(s?.product_type?We.derivePaymentProviderFromProductType(s.product_type):"stripe");return{...L.sanitizeProductFormValuesForStoreManagedCurrencies({product_type:A||"physical",payment_provider:F,title:s?.title||"",slug:s?.slug||"",sku:s?.sku||"",upc:s?.upc||"",is_taxable:s?.is_taxable??!0,price:typeof s?.price=="number"?s.price/100:0,prices:I,sale_price:typeof s?.sale_price=="number"?s.sale_price/100:null,sale_prices:T,stock:s?.stock||0,meta_title:s?.meta_title||"",meta_description:s?.meta_description||"",custom_canonical:s?.custom_canonical||"",short_description:s?.short_description||"",description_json:s?.description_json||{type:"doc",content:[{type:"paragraph"}]},freemius_product_id:s?.freemius_product_id||"",freemius_plan_id:s?.freemius_plan_id||"",trial_period_days:s?.trial_period_days??0,trial_requires_payment_method:s?.trial_requires_payment_method??!1,status:s?.status||"draft",language_id:Ze(s,r,y),translation_group_id:s?.translation_group_id||P||void 0,product_media:s?.product_media?.map(b=>({media_id:b.media_id}))||[],category_ids:s?.category_ids||[],variation_attributes:s?.variation_attributes||[],variants:s?.variants?.map(b=>({...b,prices:b.prices||{},sale_prices:b.sale_prices||{}}))||[]},m),product_type:A,payment_provider:F}}function Fe(s){return s?s.map(r=>({id:r.id||r.media_id,media_id:r.media_id,file_path:r.media?.file_path||r.media?.object_key||"",alt:r.media?.alt_text||"",sort_order:r.sort_order??0})).sort((r,y)=>r.sort_order-y.sort_order):[]}function Ge(s){return s.map(r=>({media_id:r.media_id}))}function De(s){return s.map(r=>({media_id:r.media_id,file_path:r.file_path,alt:r.alt}))}const es=s=>s.toString().toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"");function ss({initialData:s,isEdit:r=!1,mediaPickerNode:y,availableLanguagesProp:m,globalAttributesProp:P,currenciesProp:K,translationGroupId:k,targetLanguageId:I,freemiusDashboardNode:T,enabledProviders:A,configStatus:F,createAction:$,updateAction:b,availableCategoriesProp:Me=[],hasOpenDraft:Ve=!1,onSeoChange:te}){const[R,H]=o.useState(!1),[J,X]=o.useState(()=>!!s?.variants?.length),u=o.useMemo(()=>K.filter(t=>t.is_active!==!1).sort((t,d)=>t.is_default!==d.is_default?t.is_default?-1:1:t.code.localeCompare(d.code)),[K]),n=o.useMemo(()=>u.find(t=>t.is_default)??u[0],[u]),E=o.useMemo(()=>L.getStoreManagedPriceCurrencyCodes(u),[u]),re=He.useForm({resolver:Ke.zodResolver($e.productSchema),defaultValues:ke(s,I,m,u,k)}),{register:c,handleSubmit:Y,setValue:i,reset:ae,watch:l,setError:Q,formState:{errors:x,dirtyFields:ie}}=re,de=o.useRef(!0),W=o.useRef(null),[Ie,Z]=o.useState(!1),[oe,G]=o.useState(null),[ne,qe]=o.useState(null),M=l(),ce=re.formState.isDirty,le=M.title,ue=M.meta_title,pe=M.meta_description;o.useEffect(()=>{te?.({title:le,meta_title:ue,meta_description:pe})},[le,ue,pe,te]),o.useEffect(()=>{if(!r)return;if(de.current){de.current=!1,W.current=JSON.stringify(M);return}if(!ce)return;const t=JSON.stringify(M);if(t===W.current)return;const d=setTimeout(()=>{R||(W.current=t,Y(Se)())},400);return()=>clearTimeout(d)},[M,r,ce,R,Y]);const me=l("title"),q=l("product_type"),h=q==="digital"?"freemius":q==="physical"?"stripe":void 0,j=q==="physical",xe=q==="digital",he=h?A[h]:!1,fe=h?F[h].hasKeys:!1,Te=!!l("freemius_product_id"),ge=Number(l("trial_period_days")||0),_e=!!l("trial_requires_payment_method"),Ae=l("variants")||[],w=l("price"),V=l("sale_price"),v=l("prices")||{},C=l("sale_prices")||{},N=(Ae?.length||0)>0,Re=l("language_id"),Ee=m.find(t=>t.id===Re)?.code||m.find(t=>t.is_default)?.code||m[0]?.code,U=o.useMemo(()=>L.resolveEditorCurrencyPriceMaps({currencies:u,prices:v,salePrices:C,fallbackPrice:w,fallbackSalePrice:V}),[w,V,u,v,C]),Ue=o.useMemo(()=>s?.variants?.map(t=>({...t,prices:t.prices||{},sale_prices:t.sale_prices||{}})),[s?.variants]);o.useEffect(()=>{if(ie.title&&!r){const t=es(me);i("slug",t,{shouldValidate:!0})}},[me,ie.title,i,r]);const[D,ye]=o.useState(()=>Fe(s?.product_media)),[ee,be]=o.useState(new Set);o.useEffect(()=>{ae(ke(s,I,m,u,k)),ye(Fe(s?.product_media)),be(new Set),X(!!s?.variants?.length)},[m,u,s,ae,I,k]);const Be=t=>{const d=new Set(t.map(_=>_.id)),p=D.filter(_=>!d.has(_.id)),f=new Set(ee);p.forEach(_=>{_.media_id&&f.add(_.media_id)}),be(f),ye(t),i("product_media",Ge(t),{shouldDirty:!0}),i("explicitly_removed_media_ids",Array.from(f),{shouldDirty:!0})};o.useEffect(()=>{i("explicitly_removed_media_ids",Array.from(ee))},[ee,i]),o.useEffect(()=>{N&&X(!0)},[N]),o.useEffect(()=>{c("is_taxable"),c("price"),c("sale_price"),c("payment_provider"),c("trial_requires_payment_method")},[c]),o.useEffect(()=>{if(!xe){i("trial_period_days",0,{shouldDirty:!1,shouldValidate:!0}),i("trial_requires_payment_method",!1,{shouldDirty:!1,shouldValidate:!0});return}ge<=0&&i("trial_requires_payment_method",!1,{shouldDirty:!1,shouldValidate:!0})},[xe,i,ge]),o.useEffect(()=>{h&&i("payment_provider",h,{shouldDirty:!1,shouldValidate:!0})},[h,i]),o.useEffect(()=>{n&&v[n.code]===void 0&&i("prices",{...v,[n.code]:w||0},{shouldDirty:!1})},[w,n,v,i]);const je=o.useCallback((t,d)=>{const p={...v,[t]:d};i("prices",p,{shouldDirty:!0,shouldValidate:!0}),t===n?.code&&i("price",d,{shouldDirty:!0,shouldValidate:!0})},[n?.code,v,i]),ve=o.useCallback((t,d)=>{const p={...C,[t]:d};i("sale_prices",p,{shouldDirty:!0,shouldValidate:!0}),t===n?.code&&i("sale_price",d,{shouldDirty:!0,shouldValidate:!0})},[n?.code,C,i]),Ne=o.useCallback(()=>{if(!n)return;const t=new Set(E),d=v[n.code]??w??0,p=C[n.code]??V??null,f=u.reduce((S,g)=>{if(g.code!==n.code&&t.has(g.code))return S;const se=Ce.convertMinorUnitAmount({amount:O.majorUnitAmountToMinor(d,n.code),fromCurrencyCode:n.code,toCurrencyCode:g.code,currencies:u,applyRounding:!0});return S[g.code]=O.minorUnitAmountToMajor(se,g.code),S},{}),_=u.reduce((S,g)=>{if(g.code!==n.code&&t.has(g.code))return S;if(typeof p!="number")return(g.code===n.code||!t.has(g.code))&&(S[g.code]=null),S;const se=Ce.convertMinorUnitAmount({amount:O.majorUnitAmountToMinor(p,n.code),fromCurrencyCode:n.code,toCurrencyCode:g.code,currencies:u,applyRounding:!0});return S[g.code]=O.minorUnitAmountToMajor(se,g.code),S},{});i("prices",f,{shouldDirty:!0,shouldValidate:!0}),i("sale_prices",_,{shouldDirty:!0,shouldValidate:!0}),i("price",f[n.code]??d,{shouldDirty:!0,shouldValidate:!0}),i("sale_price",_[n.code]??null,{shouldDirty:!0,shouldValidate:!0})},[u,n,v,C,i,E,w,V]),Oe=o.useCallback(({variationAttributes:t,variants:d})=>{i("variation_attributes",t,{shouldDirty:!0}),i("variants",d,{shouldDirty:!0,shouldValidate:!0})},[i]),Se=async t=>{H(!0),Z(!0),G(null);try{if(!h){const _="Select whether this product is physical or digital before saving.";Q("product_type",{type:"manual",message:_}),r?G(_):alert(_),H(!1),Z(!1);return}const d=j?0:Math.max(0,Number(t.trial_period_days||0)),p={...t,product_type:t.product_type,payment_provider:h,freemius_product_id:j?"":t.freemius_product_id,freemius_plan_id:j?"":t.freemius_plan_id,trial_period_days:d,trial_requires_payment_method:!j&&d>0?t.trial_requires_payment_method:!1,upc:j?t.upc:null,is_taxable:j?t.is_taxable:!1,variation_attributes:j?t.variation_attributes:[],variants:j?t.variants:[]},f=L.sanitizeProductFormValuesForStoreManagedCurrencies(p,u);if(r&&b)await b(f),qe(new Date);else if($)await $(f);else throw new Error("Product form action is not configured.")}catch(d){if(console.error(d),d.message==="NEXT_REDIRECT")return;let p=d.message||"An error occurred while saving.";if(d.code==="23505"){const f=d.message?.toLowerCase()||"";f.includes("products_slug_key")||f.includes("slug")?(p="This slug is already in use. Please choose another one.",Q("slug",{type:"manual",message:p})):(f.includes("products_sku_key")||f.includes("sku"))&&(p="This SKU is already in use.",Q("sku",{type:"manual",message:p}))}r?G(p):alert(p)}finally{H(!1),Z(!1)}},ze=N?"bg-muted/60 text-muted-foreground opacity-70":"",Le=De(D);return e.jsxs("form",{onSubmit:Y(Se),className:"space-y-2.5 pb-4",children:[e.jsx("input",{type:"hidden",...c("translation_group_id")}),e.jsx("input",{type:"hidden",...c("payment_provider")}),e.jsxs("div",{className:"space-y-2.5 w-full",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-2.5 px-4 shadow-sm flex items-center justify-between gap-3 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex h-9 items-center gap-2",children:[e.jsx("span",{className:"text-sm font-bold whitespace-nowrap leading-none pt-0.5",children:"Product Type"}),x.product_type&&e.jsx(B.AlertCircle,{className:"h-4 w-4 text-destructive"})]}),e.jsx("div",{className:"flex h-9 items-center",children:e.jsxs(a.Select,{onValueChange:t=>i("product_type",t,{shouldDirty:!0,shouldValidate:!0}),value:q||void 0,children:[e.jsx(a.SelectTrigger,{className:"w-[160px] h-9 text-xs",children:e.jsx(a.SelectValue,{placeholder:"Select Type"})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"physical",children:"Physical Product"}),e.jsx(a.SelectItem,{value:"digital",children:"Digital Product"})]})]})})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex h-9 items-center gap-3",children:[e.jsx("span",{className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider leading-none",children:"Payment Provider"}),e.jsx(a.Badge,{variant:"outline",className:"text-xs py-1 font-bold bg-muted/30 leading-none",children:h?h==="stripe"?"Stripe":"Freemius":"—"})]}),h&&e.jsx("div",{className:"flex h-9 items-center gap-2",children:he&&fe?e.jsxs("span",{className:"flex items-center gap-1.5 text-emerald-600 text-[10px] font-bold bg-emerald-50 px-2 py-1 rounded-full border border-emerald-100 uppercase leading-none",children:[e.jsx(B.CheckCircle2,{className:"h-3 w-3"}),"Ready"]}):e.jsxs("span",{className:"flex items-center gap-1.5 text-amber-600 text-[10px] font-bold bg-amber-50 px-2 py-1 rounded-full border border-amber-100 uppercase leading-none",children:[e.jsx(B.AlertCircle,{className:"h-3 w-3"}),he?"Keys Missing":"Disabled"]})}),!fe&&h&&F[h].missing.length>0&&e.jsxs("a",{href:"/cms/payments",className:"hidden xl:flex h-9 items-center gap-1 text-[10px] text-muted-foreground bg-muted/50 px-2 py-1 rounded border border-dashed leading-none hover:text-foreground hover:border-solid",children:[e.jsx(B.Info,{className:"h-3 w-3"}),"Missing: ",F[h].missing.join(", ")," — set up payments"]})]})]}),e.jsxs(z,{title:"Product Information",hideHeader:!0,children:[r&&e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground pb-2 border-b border-border/40 mb-2.5",children:[e.jsx("span",{className:"font-semibold text-[11px] uppercase tracking-wider text-muted-foreground/80",children:"Product Settings"}),e.jsx("div",{className:"flex items-center gap-1.5 min-h-[16px]",children:Ie?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative flex h-2 w-2",children:[e.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-amber-500"})]}),e.jsx("span",{className:"text-amber-600 dark:text-amber-400 font-medium",children:"Autosaving settings..."})]}):oe?e.jsxs("span",{className:"text-red-500 font-medium",children:["Error saving settings: ",oe]}):ne?e.jsxs("span",{className:"text-emerald-600 dark:text-emerald-400 font-medium",children:["Settings autosaved at ",ne.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})]}):e.jsx("span",{className:"text-muted-foreground/60",children:"Settings autosave in draft mode"})})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-2.5",children:[e.jsxs("div",{className:"col-span-2 space-y-1",children:[e.jsx(a.Label,{htmlFor:"title",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Title"}),e.jsx(a.Input,{id:"title",placeholder:"Product title",...c("title"),className:"h-8 text-sm"}),x.title&&e.jsx("p",{className:"text-destructive text-[11px] leading-none",children:x.title.message})]}),e.jsxs("div",{className:"col-span-2 space-y-1",children:[e.jsx(a.Label,{htmlFor:"slug",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Slug"}),e.jsx(a.Input,{id:"slug",placeholder:"product-slug",...c("slug"),className:"h-8 text-sm"}),x.slug&&e.jsx("p",{className:"text-destructive text-[11px] leading-none",children:x.slug.message})]}),e.jsxs("div",{className:"col-span-1 space-y-1",children:[e.jsx(a.Label,{htmlFor:"sku",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"SKU"}),e.jsx(a.Input,{id:"sku",placeholder:"SKU",...c("sku"),className:"h-8 text-sm font-mono"}),x.sku&&e.jsx("p",{className:"text-destructive text-[11px] leading-none",children:x.sku.message})]}),e.jsxs("div",{className:"col-span-1 space-y-1",children:[e.jsx(a.Label,{htmlFor:"upc_ean",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"UPC / EAN"}),e.jsx(a.Input,{id:"upc_ean",placeholder:"000000000",...c("upc"),className:"h-8 text-sm font-mono",readOnly:N})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-12 gap-2.5 mt-2",children:[e.jsxs("div",{className:`${r?"lg:col-span-3":"lg:col-span-4"} col-span-2 space-y-1`,children:[e.jsx(a.Label,{htmlFor:"meta_title",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Meta Title"}),e.jsx(a.Input,{id:"meta_title",...c("meta_title"),placeholder:"SEO page title (50-60 chars)",className:"h-8 text-sm"})]}),e.jsxs("div",{className:"lg:col-span-4 col-span-2 space-y-1",children:[e.jsx(a.Label,{htmlFor:"meta_description",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Meta Description"}),e.jsx(a.Input,{id:"meta_description",...c("meta_description"),placeholder:"SEO description (150-160 chars)",className:"h-8 text-sm"})]}),e.jsxs("div",{className:`${r?"lg:col-span-3":"lg:col-span-4"} col-span-2 space-y-1`,children:[e.jsx(a.Label,{htmlFor:"custom_canonical",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Canonical URL (optional)"}),e.jsx(a.Input,{id:"custom_canonical",...c("custom_canonical"),placeholder:"Blank = self-referencing. Absolute https://… URL or /relative path to override.",className:"h-8 text-sm"})]})]})]}),e.jsx(z,{title:"Product Categories",description:"Assign this product to one or more categories.",children:e.jsx(Qe.ProductCategorySelector,{categories:Me,selectedIds:l("category_ids")||[],onChange:t=>i("category_ids",t,{shouldDirty:!0,shouldValidate:!0})})}),e.jsxs("section",{className:"rounded-lg border bg-card p-3 shadow-sm space-y-3",children:[j&&e.jsxs("div",{className:"flex items-center justify-between gap-4 flex-wrap border-b border-muted/50 pb-2",children:[e.jsx("div",{className:"flex items-center gap-4",children:e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h2",{className:"text-sm font-bold tracking-tight",children:"Pricing & Inventory"}),e.jsx("p",{className:"text-[11px] text-muted-foreground leading-none",children:"Manage simple or variant pricing."})]})}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 bg-muted/40 rounded-md px-2.5 py-1.5",children:[e.jsx("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Stock"}),e.jsx(a.Input,{id:"stock",type:"number",min:"0",...c("stock",{valueAsNumber:!0}),placeholder:"0",readOnly:N,className:`${ze} h-8 w-20 text-sm text-center font-mono bg-background`})]}),N?e.jsx(a.Badge,{variant:"secondary",className:"text-[11px] py-0 px-2 h-5",children:"Variant pricing"}):null]})]}),j?e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"w-full",children:[e.jsx(Pe.CurrencyPriceFields,{idPrefix:"product",currencies:u,prices:U.prices,salePrices:U.salePrices,managedCurrencyCodes:E,onPriceChange:je,onSalePriceChange:ve,onAutoFill:Ne,readOnly:N,helperText:N?"Parent prices stay as a fallback, but active variants define the live shopper price.":void 0,trailing:e.jsx(we.SaleScheduleFields,{idPrefix:"product",startAt:l("sale_start_at"),endAt:l("sale_end_at"),onChange:(t,d)=>i(t,d,{shouldDirty:!0,shouldValidate:!0}),error:x.sale_end_at?.message,bare:!0})}),x.price&&e.jsx("p",{className:"text-destructive text-sm mt-1",children:x.price.message}),x.sale_price&&e.jsx("p",{className:"text-destructive text-sm mt-1",children:x.sale_price.message}),x.stock&&e.jsx("p",{className:"text-destructive text-[10px] font-medium leading-none mt-1",children:x.stock.message})]}),e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded border border-dashed p-2.5 bg-muted/5",children:[e.jsx("span",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:N?"Variations Active":"Variations"}),e.jsx(a.Button,{type:"button",variant:J?"outline":"default",onClick:()=>X(t=>!t),size:"sm",className:"h-7 text-xs px-3",children:J?"Hide":"Manage"})]}),J&&e.jsx("div",{className:"border-t pt-3",children:e.jsx(Ye.VariationsEditor,{globalAttributes:P,currentLanguageCode:Ee,baseSku:l("sku")||"",basePrice:w||0,basePrices:v,baseSalePrice:typeof V=="number"?V:null,baseSalePrices:C,currencies:u,availableVariantImages:Le,initialVariationAttributes:s?.variation_attributes,initialVariants:Ue,onChange:Oe})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-end gap-4 w-full",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx(a.Label,{htmlFor:"freemius_product_id",className:"text-[11px] uppercase tracking-wider text-muted-foreground font-bold mb-1.5 block",children:"Freemius Product ID"}),e.jsx(a.Input,{id:"freemius_product_id",...c("freemius_product_id"),className:"h-9"})]}),e.jsxs("div",{className:"flex-1",children:[e.jsx(a.Label,{htmlFor:"freemius_plan_id",className:"text-[11px] uppercase tracking-wider text-muted-foreground font-bold mb-1.5 block",children:"Freemius Plan ID"}),e.jsx(a.Input,{id:"freemius_plan_id",...c("freemius_plan_id"),className:"h-9"})]}),Te?e.jsx(Xe.SyncFreemiusPricingButton,{productId:l("freemius_product_id"),hasOpenDraft:Ve}):null]}),e.jsxs("div",{className:"bg-muted/10 border rounded-md overflow-hidden",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-6 bg-muted/20 border-b p-2.5 px-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[11px] font-bold uppercase tracking-wider text-muted-foreground",children:"Free Trial"}),e.jsxs(a.Badge,{variant:"outline",className:"font-mono text-xs shadow-sm bg-background",children:[String(l("trial_period_days")||0)," Days"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[11px] font-bold uppercase tracking-wider text-muted-foreground",children:"Card Required"}),e.jsx(a.Badge,{variant:_e?"default":"secondary",className:"text-xs shadow-sm",children:_e?"Yes":"No"})]}),e.jsx("span",{className:"text-[10px] text-muted-foreground ml-auto",children:"Managed in Freemius dashboard"}),e.jsx("input",{type:"hidden",...c("trial_period_days",{valueAsNumber:!0})})]}),e.jsxs("div",{className:"w-full p-4 pt-3 space-y-2",children:[e.jsx(Pe.CurrencyPriceFields,{idPrefix:"product",currencies:u,prices:U.prices,salePrices:U.salePrices,managedCurrencyCodes:E,onPriceChange:je,onSalePriceChange:ve,onAutoFill:Ne,readOnly:!0,trailing:e.jsx(we.SaleScheduleFields,{idPrefix:"product",startAt:l("sale_start_at"),endAt:l("sale_end_at"),onChange:(t,d)=>i(t,d,{shouldDirty:!0,shouldValidate:!0}),error:x.sale_end_at?.message,bare:!0})}),e.jsx("p",{className:"text-[10px] leading-snug text-muted-foreground",children:"Scheduling a sale on a Freemius product generates a time-bounded Freemius coupon so the discount is enforced at Freemius checkout."})]})]})]}),T&&e.jsx("div",{className:"pt-2 border-t",children:T})]})]}),e.jsx(z,{title:"Product Description",hideHeader:!0,children:e.jsx("div",{className:"space-y-2",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx(a.Label,{htmlFor:"short_description",className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Short Description"}),e.jsx(a.Input,{id:"short_description",...c("short_description"),placeholder:"Brief summary for product cards...",className:"h-8 text-sm"})]})})}),e.jsxs(z,{title:"Media Gallery",description:"Drag to reorder. First image is the hero.",children:[e.jsx(Je.ProductMediaManager,{initialMedia:D,onUpdate:Be,mediaPickerNode:y}),e.jsx("input",{type:"hidden",...c("product_media")})]}),!r&&e.jsxs("div",{className:"rounded-lg border bg-card p-3 px-4 shadow-sm flex items-center justify-between gap-3 flex-wrap",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"New products start as a draft. Publish it from the top bar once it's ready."}),e.jsx(a.Button,{disabled:R,type:"submit",size:"sm",className:"h-8 text-sm px-5",children:R?"Saving...":"Save Changes"})]})]})]})}exports.ProductForm=ss;
|