@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 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("next/link"),o=require("lucide-react"),u=require("@nextblock-cms/ui"),l=require("@nextblock-cms/db/server"),d=require("../actions.cjs.js"),t=require("../server-actions.cjs.js"),m=require("./components/AttributeManager.cjs.js");async function A(){const[a,i]=await Promise.all([d.getGlobalProductAttributes(),l.getActiveLanguagesServerSide()]),n=(a||[]).map(r=>({id:r.id,name:r.name,name_translations:r.name_translations||{},slug:r.slug,terms:(r.product_attribute_terms||[]).map(s=>({...s,value_translations:s.value_translations||{}}))}));return e.jsxs("div",{className:"space-y-8 w-full max-w-[1200px] mx-auto px-6 py-8",children:[e.jsx("div",{className:"flex flex-wrap items-center justify-between gap-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(u.Button,{variant:"outline",size:"icon",asChild:!0,children:e.jsx(c,{href:"/cms/products",children:e.jsx(o.ArrowLeft,{className:"h-4 w-4"})})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Global Attribute Management"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Define reusable attributes and terms for variation-based physical products."})]})]})}),e.jsx(m.AttributeManager,{attributes:n,createAttributeAction:t.createProductAttributeAction,deleteAttributeAction:t.deleteProductAttributeAction,createTermAction:t.createProductAttributeTermAction,deleteTermAction:t.deleteProductAttributeTermAction,reorderTermsAction:t.reorderProductAttributeTermsAction,updateTranslationsAction:t.updateProductAttributeTranslationsAction,languages:i})]})}exports.AttributeManagementPage=A;
|
|
@@ -1,92 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { ArrowLeft as
|
|
4
|
-
import { Button as
|
|
5
|
-
import { getActiveLanguagesServerSide as
|
|
6
|
-
import { getGlobalProductAttributes as
|
|
7
|
-
import { updateProductAttributeTranslationsAction as
|
|
8
|
-
import { AttributeManager as
|
|
9
|
-
async function
|
|
10
|
-
const [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
]),
|
|
14
|
-
id:
|
|
15
|
-
name:
|
|
16
|
-
name_translations:
|
|
17
|
-
slug:
|
|
18
|
-
terms: (
|
|
19
|
-
...
|
|
20
|
-
value_translations:
|
|
1
|
+
import { jsxs as r, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import s from "next/link";
|
|
3
|
+
import { ArrowLeft as c } from "lucide-react";
|
|
4
|
+
import { Button as l } from "@nextblock-cms/ui";
|
|
5
|
+
import { getActiveLanguagesServerSide as m } from "@nextblock-cms/db/server";
|
|
6
|
+
import { getGlobalProductAttributes as u } from "../actions.es.js";
|
|
7
|
+
import { updateProductAttributeTranslationsAction as d, reorderProductAttributeTermsAction as A, deleteProductAttributeTermAction as p, createProductAttributeTermAction as f, deleteProductAttributeAction as b, createProductAttributeAction as g } from "../server-actions.es.js";
|
|
8
|
+
import { AttributeManager as x } from "./components/AttributeManager.es.js";
|
|
9
|
+
async function j() {
|
|
10
|
+
const [i, o] = await Promise.all([
|
|
11
|
+
u(),
|
|
12
|
+
m()
|
|
13
|
+
]), n = (i || []).map((e) => ({
|
|
14
|
+
id: e.id,
|
|
15
|
+
name: e.name,
|
|
16
|
+
name_translations: e.name_translations || {},
|
|
17
|
+
slug: e.slug,
|
|
18
|
+
terms: (e.product_attribute_terms || []).map((a) => ({
|
|
19
|
+
...a,
|
|
20
|
+
value_translations: a.value_translations || {}
|
|
21
21
|
}))
|
|
22
22
|
}));
|
|
23
|
-
return /* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
/* @__PURE__ */
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}, this) }, void 0, !1, {
|
|
34
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
35
|
-
lineNumber: 37,
|
|
36
|
-
columnNumber: 11
|
|
37
|
-
}, this),
|
|
38
|
-
/* @__PURE__ */ e("div", { children: [
|
|
39
|
-
/* @__PURE__ */ e("h1", { className: "text-2xl font-bold", children: "Global Attribute Management" }, void 0, !1, {
|
|
40
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
41
|
-
lineNumber: 43,
|
|
42
|
-
columnNumber: 13
|
|
43
|
-
}, this),
|
|
44
|
-
/* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Define reusable attributes and terms for variation-based physical products." }, void 0, !1, {
|
|
45
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
46
|
-
lineNumber: 44,
|
|
47
|
-
columnNumber: 13
|
|
48
|
-
}, this)
|
|
49
|
-
] }, void 0, !0, {
|
|
50
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
51
|
-
lineNumber: 42,
|
|
52
|
-
columnNumber: 11
|
|
53
|
-
}, this)
|
|
54
|
-
] }, void 0, !0, {
|
|
55
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
56
|
-
lineNumber: 36,
|
|
57
|
-
columnNumber: 9
|
|
58
|
-
}, this) }, void 0, !1, {
|
|
59
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
60
|
-
lineNumber: 35,
|
|
61
|
-
columnNumber: 7
|
|
62
|
-
}, this),
|
|
63
|
-
/* @__PURE__ */ e(
|
|
64
|
-
f,
|
|
23
|
+
return /* @__PURE__ */ r("div", { className: "space-y-8 w-full max-w-[1200px] mx-auto px-6 py-8", children: [
|
|
24
|
+
/* @__PURE__ */ t("div", { className: "flex flex-wrap items-center justify-between gap-4", children: /* @__PURE__ */ r("div", { className: "flex items-center gap-3", children: [
|
|
25
|
+
/* @__PURE__ */ t(l, { variant: "outline", size: "icon", asChild: !0, children: /* @__PURE__ */ t(s, { href: "/cms/products", children: /* @__PURE__ */ t(c, { className: "h-4 w-4" }) }) }),
|
|
26
|
+
/* @__PURE__ */ r("div", { children: [
|
|
27
|
+
/* @__PURE__ */ t("h1", { className: "text-2xl font-bold", children: "Global Attribute Management" }),
|
|
28
|
+
/* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground", children: "Define reusable attributes and terms for variation-based physical products." })
|
|
29
|
+
] })
|
|
30
|
+
] }) }),
|
|
31
|
+
/* @__PURE__ */ t(
|
|
32
|
+
x,
|
|
65
33
|
{
|
|
66
|
-
attributes:
|
|
34
|
+
attributes: n,
|
|
67
35
|
createAttributeAction: g,
|
|
68
|
-
deleteAttributeAction:
|
|
69
|
-
createTermAction:
|
|
70
|
-
deleteTermAction:
|
|
71
|
-
reorderTermsAction:
|
|
72
|
-
updateTranslationsAction:
|
|
73
|
-
languages:
|
|
74
|
-
}
|
|
75
|
-
void 0,
|
|
76
|
-
!1,
|
|
77
|
-
{
|
|
78
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
79
|
-
lineNumber: 51,
|
|
80
|
-
columnNumber: 7
|
|
81
|
-
},
|
|
82
|
-
this
|
|
36
|
+
deleteAttributeAction: b,
|
|
37
|
+
createTermAction: f,
|
|
38
|
+
deleteTermAction: p,
|
|
39
|
+
reorderTermsAction: A,
|
|
40
|
+
updateTranslationsAction: d,
|
|
41
|
+
languages: o
|
|
42
|
+
}
|
|
83
43
|
)
|
|
84
|
-
] }
|
|
85
|
-
fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/AttributeManagementPage.tsx",
|
|
86
|
-
lineNumber: 34,
|
|
87
|
-
columnNumber: 5
|
|
88
|
-
}, this);
|
|
44
|
+
] });
|
|
89
45
|
}
|
|
90
46
|
export {
|
|
91
|
-
|
|
47
|
+
j as AttributeManagementPage
|
|
92
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-dev-runtime"),c=require("react"),O=require("next/navigation"),i=require("@nextblock-cms/ui"),l=require("lucide-react");function G({attributes:m,languages:U,createAttributeAction:E,deleteAttributeAction:H,createTermAction:V,deleteTermAction:y,reorderTermsAction:w,updateTranslationsAction:T}){const a=O.useRouter(),[d,x]=c.useState(""),[g,h]=c.useState(null),[S,f]=c.useState(null),[v,D]=c.useState(null),[j,k]=c.useState(null),[u,A]=c.useState({}),[C,I]=c.useState(()=>m.reduce((e,t)=>(e[t.id]=t.name_translations||{},e),{})),[B,$]=c.useState(()=>m.reduce((e,t)=>{for(const r of t.terms)e[r.id]=r.value_translations||{};return e},{})),b=U.filter(e=>!e.is_default),F=async e=>{e.preventDefault();const t=await E({name:d});if(!t.success){alert(t.error||"Failed to create attribute.");return}x(""),a.refresh()},P=async(e,t)=>{e.preventDefault(),h(t);const r=await V({attributeId:t,value:u[t]||""});if(h(null),!r.success){alert(r.error||"Failed to create term.");return}A(n=>({...n,[t]:""})),a.refresh()},q=async e=>{if(!window.confirm("Delete this attribute and all of its terms?"))return;const r=await H(e);if(!r.success){alert(r.error||"Failed to delete attribute.");return}a.refresh()},z=async e=>{f(e);const t=await y(e);if(f(null),!t.success){alert(t.error||"Failed to delete term.");return}a.refresh()},M=async(e,t,r)=>{const n=e.terms.findIndex(p=>p.id===t),o=n+r;if(n===-1||o<0||o>=e.terms.length)return;const N=[...e.terms],[_]=N.splice(n,1);N.splice(o,0,_),D(e.id);const R=await w({attributeId:e.id,orderedTermIds:N.map(p=>p.id)});if(D(null),!R.success){alert(R.error||"Failed to reorder terms.");return}a.refresh()},L=async e=>{k(e.id);const t=await T({attributeId:e.id,nameTranslations:C[e.id]||{},termTranslations:e.terms.map(r=>({termId:r.id,valueTranslations:B[r.id]||{}}))});if(k(null),!t.success){alert(t.error||"Failed to save translations.");return}a.refresh()};return s.jsxDEV("div",{className:"space-y-6",children:[s.jsxDEV("form",{onSubmit:F,className:"rounded-lg border bg-card p-6 shadow-sm",children:s.jsxDEV("div",{className:"flex flex-wrap items-end gap-4",children:[s.jsxDEV("div",{className:"flex-1 min-w-[220px] space-y-2",children:[s.jsxDEV(i.Label,{htmlFor:"attribute-name",children:"New Attribute"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:186,columnNumber:13},this),s.jsxDEV(i.Input,{id:"attribute-name",value:d,onChange:e=>x(e.target.value),placeholder:"Material, Size, Color..."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:187,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:185,columnNumber:11},this),s.jsxDEV(i.Button,{type:"submit",disabled:!d.trim(),children:[s.jsxDEV(l.Plus,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:195,columnNumber:13},this),"Create Attribute"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:194,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:184,columnNumber:9},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:183,columnNumber:7},this),m.length===0?s.jsxDEV("div",{className:"rounded-lg border border-dashed p-6 text-sm text-muted-foreground",children:"No global attributes have been created yet."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:202,columnNumber:9},this):s.jsxDEV("div",{className:"grid gap-6",children:m.map(e=>s.jsxDEV("div",{className:"rounded-lg border bg-card p-6 shadow-sm",children:[s.jsxDEV("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[s.jsxDEV("div",{children:[s.jsxDEV("h2",{className:"text-lg font-semibold",children:e.name},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:211,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:e.slug},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:212,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:210,columnNumber:17},this),s.jsxDEV(i.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>q(e.id),className:"text-muted-foreground hover:text-destructive",children:s.jsxDEV(l.Trash2,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:221,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:214,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:209,columnNumber:15},this),s.jsxDEV("div",{className:"mt-4 space-y-2",children:e.terms.map((t,r)=>s.jsxDEV("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-lg border bg-muted/20 px-3 py-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(i.Badge,{variant:"secondary",className:"py-1.5",children:t.value},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:232,columnNumber:23},this),s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:["Position ",r+1]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:235,columnNumber:23},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:231,columnNumber:21},this),s.jsxDEV("div",{className:"flex items-center gap-1",children:[s.jsxDEV(i.Button,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>M(e,t.id,-1),disabled:r===0||v===e.id,children:s.jsxDEV(l.ChevronUp,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:246,columnNumber:25},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:238,columnNumber:23},this),s.jsxDEV(i.Button,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>M(e,t.id,1),disabled:r===e.terms.length-1||v===e.id,children:s.jsxDEV(l.ChevronDown,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:259,columnNumber:25},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:248,columnNumber:23},this),s.jsxDEV(i.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>z(t.id),className:"h-8 w-8 text-muted-foreground hover:text-destructive",disabled:S===t.id,children:s.jsxDEV(l.Trash2,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:269,columnNumber:25},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:261,columnNumber:23},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:237,columnNumber:21},this)]},t.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:227,columnNumber:19},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:225,columnNumber:15},this),s.jsxDEV("form",{onSubmit:t=>P(t,e.id),className:"mt-6 flex flex-wrap items-end gap-3",children:[s.jsxDEV("div",{className:"flex-1 min-w-[220px] space-y-2",children:[s.jsxDEV(i.Label,{htmlFor:`term-input-${e.id}`,children:"Add Term"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:281,columnNumber:19},this),s.jsxDEV(i.Input,{id:`term-input-${e.id}`,value:u[e.id]||"",onChange:t=>A(r=>({...r,[e.id]:t.target.value})),placeholder:`Add a term for ${e.name}`},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:282,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:280,columnNumber:17},this),s.jsxDEV(i.Button,{type:"submit",variant:"outline",disabled:!u[e.id]?.trim()||g===e.id,children:[s.jsxDEV(l.Plus,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:299,columnNumber:19},this),g===e.id?"Saving...":"Add Term"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:294,columnNumber:17},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:276,columnNumber:15},this),b.length>0&&s.jsxDEV("div",{className:"mt-6 border-t pt-6 space-y-4",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"font-medium",children:"Translations"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:308,columnNumber:23},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Translate the attribute label and each term for every active site language."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:309,columnNumber:23},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:307,columnNumber:21},this),s.jsxDEV(i.Button,{type:"button",variant:"outline",onClick:()=>L(e),disabled:j===e.id,children:j===e.id?"Saving...":"Save Translations"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:313,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:306,columnNumber:19},this),s.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2",children:b.map(t=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(i.Label,{htmlFor:`attribute-translation-${e.id}-${t.code}`,children:["Attribute Name (",t.name,")"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:326,columnNumber:25},this),s.jsxDEV(i.Input,{id:`attribute-translation-${e.id}-${t.code}`,value:C[e.id]?.[t.code]||"",onChange:r=>I(n=>({...n,[e.id]:{...n[e.id]||{},[t.code]:r.target.value}})),placeholder:e.name},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:329,columnNumber:25},this)]},`${e.id}-${t.code}`,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:325,columnNumber:23},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:323,columnNumber:19},this),s.jsxDEV("div",{className:"space-y-3",children:e.terms.map(t=>s.jsxDEV("div",{className:"rounded-lg border p-4 space-y-3",children:[s.jsxDEV("div",{children:[s.jsxDEV("p",{className:"font-medium",children:t.value},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:351,columnNumber:27},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Translate this term for each language."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:352,columnNumber:27},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:350,columnNumber:25},this),s.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2",children:b.map(r=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(i.Label,{htmlFor:`term-translation-${t.id}-${r.code}`,children:r.name},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:357,columnNumber:31},this),s.jsxDEV(i.Input,{id:`term-translation-${t.id}-${r.code}`,value:B[t.id]?.[r.code]||"",onChange:n=>$(o=>({...o,[t.id]:{...o[t.id]||{},[r.code]:n.target.value}})),placeholder:t.value},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:360,columnNumber:31},this)]},`${t.id}-${r.code}`,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:356,columnNumber:29},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:354,columnNumber:25},this)]},`translations-${t.id}`,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:349,columnNumber:23},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:347,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:305,columnNumber:17},this)]},e.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:208,columnNumber:13},this))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:206,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/attributes/components/AttributeManager.tsx",lineNumber:182,columnNumber:5},this)}exports.AttributeManager=G;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),d=require("react"),H=require("next/navigation"),t=require("@nextblock-cms/ui"),c=require("lucide-react");function J({attributes:o,languages:C,createAttributeAction:F,deleteAttributeAction:B,createTermAction:D,deleteTermAction:P,reorderTermsAction:k,updateTranslationsAction:q}){const i=H.useRouter(),[m,v]=d.useState(""),[f,j]=d.useState(null),[z,g]=d.useState(null),[N,y]=d.useState(null),[w,T]=d.useState(null),[h,b]=d.useState({}),[A,L]=d.useState(()=>o.reduce((e,n)=>(e[n.id]=n.name_translations||{},e),{})),[S,M]=d.useState(()=>o.reduce((e,n)=>{for(const r of n.terms)e[r.id]=r.value_translations||{};return e},{})),u=C.filter(e=>!e.is_default),R=async e=>{e.preventDefault();const n=await F({name:m});if(!n.success){alert(n.error||"Failed to create attribute.");return}v(""),i.refresh()},_=async(e,n)=>{e.preventDefault(),j(n);const r=await D({attributeId:n,value:h[n]||""});if(j(null),!r.success){alert(r.error||"Failed to create term.");return}b(a=>({...a,[n]:""})),i.refresh()},O=async e=>{if(!window.confirm("Delete this attribute and all of its terms?"))return;const r=await B(e);if(!r.success){alert(r.error||"Failed to delete attribute.");return}i.refresh()},U=async e=>{g(e);const n=await P(e);if(g(null),!n.success){alert(n.error||"Failed to delete term.");return}i.refresh()},I=async(e,n,r)=>{const a=e.terms.findIndex(p=>p.id===n),l=a+r;if(a===-1||l<0||l>=e.terms.length)return;const x=[...e.terms],[G]=x.splice(a,1);x.splice(l,0,G),y(e.id);const $=await k({attributeId:e.id,orderedTermIds:x.map(p=>p.id)});if(y(null),!$.success){alert($.error||"Failed to reorder terms.");return}i.refresh()},E=async e=>{T(e.id);const n=await q({attributeId:e.id,nameTranslations:A[e.id]||{},termTranslations:e.terms.map(r=>({termId:r.id,valueTranslations:S[r.id]||{}}))});if(T(null),!n.success){alert(n.error||"Failed to save translations.");return}i.refresh()};return s.jsxs("div",{className:"space-y-6",children:[s.jsx("form",{onSubmit:R,className:"rounded-lg border bg-card p-6 shadow-sm",children:s.jsxs("div",{className:"flex flex-wrap items-end gap-4",children:[s.jsxs("div",{className:"flex-1 min-w-[220px] space-y-2",children:[s.jsx(t.Label,{htmlFor:"attribute-name",children:"New Attribute"}),s.jsx(t.Input,{id:"attribute-name",value:m,onChange:e=>v(e.target.value),placeholder:"Material, Size, Color..."})]}),s.jsxs(t.Button,{type:"submit",disabled:!m.trim(),children:[s.jsx(c.Plus,{className:"mr-2 h-4 w-4"}),"Create Attribute"]})]})}),o.length===0?s.jsx("div",{className:"rounded-lg border border-dashed p-6 text-sm text-muted-foreground",children:"No global attributes have been created yet."}):s.jsx("div",{className:"grid gap-6",children:o.map(e=>s.jsxs("div",{className:"rounded-lg border bg-card p-6 shadow-sm",children:[s.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"text-lg font-semibold",children:e.name}),s.jsx("p",{className:"text-sm text-muted-foreground",children:e.slug})]}),s.jsx(t.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>O(e.id),className:"text-muted-foreground hover:text-destructive",children:s.jsx(c.Trash2,{className:"h-4 w-4"})})]}),s.jsx("div",{className:"mt-4 space-y-2",children:e.terms.map((n,r)=>s.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-lg border bg-muted/20 px-3 py-2",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(t.Badge,{variant:"secondary",className:"py-1.5",children:n.value}),s.jsxs("span",{className:"text-xs text-muted-foreground",children:["Position ",r+1]})]}),s.jsxs("div",{className:"flex items-center gap-1",children:[s.jsx(t.Button,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>I(e,n.id,-1),disabled:r===0||N===e.id,children:s.jsx(c.ChevronUp,{className:"h-4 w-4"})}),s.jsx(t.Button,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>I(e,n.id,1),disabled:r===e.terms.length-1||N===e.id,children:s.jsx(c.ChevronDown,{className:"h-4 w-4"})}),s.jsx(t.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>U(n.id),className:"h-8 w-8 text-muted-foreground hover:text-destructive",disabled:z===n.id,children:s.jsx(c.Trash2,{className:"h-4 w-4"})})]})]},n.id))}),s.jsxs("form",{onSubmit:n=>_(n,e.id),className:"mt-6 flex flex-wrap items-end gap-3",children:[s.jsxs("div",{className:"flex-1 min-w-[220px] space-y-2",children:[s.jsx(t.Label,{htmlFor:`term-input-${e.id}`,children:"Add Term"}),s.jsx(t.Input,{id:`term-input-${e.id}`,value:h[e.id]||"",onChange:n=>b(r=>({...r,[e.id]:n.target.value})),placeholder:`Add a term for ${e.name}`})]}),s.jsxs(t.Button,{type:"submit",variant:"outline",disabled:!h[e.id]?.trim()||f===e.id,children:[s.jsx(c.Plus,{className:"mr-2 h-4 w-4"}),f===e.id?"Saving...":"Add Term"]})]}),u.length>0&&s.jsxs("div",{className:"mt-6 border-t pt-6 space-y-4",children:[s.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("h3",{className:"font-medium",children:"Translations"}),s.jsx("p",{className:"text-sm text-muted-foreground",children:"Translate the attribute label and each term for every active site language."})]}),s.jsx(t.Button,{type:"button",variant:"outline",onClick:()=>E(e),disabled:w===e.id,children:w===e.id?"Saving...":"Save Translations"})]}),s.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:u.map(n=>s.jsxs("div",{className:"space-y-2",children:[s.jsxs(t.Label,{htmlFor:`attribute-translation-${e.id}-${n.code}`,children:["Attribute Name (",n.name,")"]}),s.jsx(t.Input,{id:`attribute-translation-${e.id}-${n.code}`,value:A[e.id]?.[n.code]||"",onChange:r=>L(a=>({...a,[e.id]:{...a[e.id]||{},[n.code]:r.target.value}})),placeholder:e.name})]},`${e.id}-${n.code}`))}),s.jsx("div",{className:"space-y-3",children:e.terms.map(n=>s.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-medium",children:n.value}),s.jsx("p",{className:"text-xs text-muted-foreground",children:"Translate this term for each language."})]}),s.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:u.map(r=>s.jsxs("div",{className:"space-y-2",children:[s.jsx(t.Label,{htmlFor:`term-translation-${n.id}-${r.code}`,children:r.name}),s.jsx(t.Input,{id:`term-translation-${n.id}-${r.code}`,value:S[n.id]?.[r.code]||"",onChange:a=>M(l=>({...l,[n.id]:{...l[n.id]||{},[r.code]:a.target.value}})),placeholder:n.value})]},`${n.id}-${r.code}`))})]},`translations-${n.id}`))})]})]},e.id))})]})}exports.AttributeManager=J;
|