@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 r=require("react/jsx-dev-runtime"),w=require("next/link"),x=require("react"),p=require("@nextblock-cms/ui"),f=require("../../../../variation-utils.cjs.js"),G=require("./CurrencyPriceFields.cjs.js"),Q=require("./SaleScheduleFields.cjs.js"),g=require("../../../../currency.cjs.js"),V=require("../product-price-sync.cjs.js"),j=require("@nextblock-cms/utils"),T=process.env.NEXT_PUBLIC_R2_BASE_URL||"",q=process.env.NEXT_PUBLIC_SUPABASE_URL||"",W=c=>c.startsWith("http")?c:T?`${T.replace(/\/+$/,"")}/${c.replace(/^\/+/,"")}`:q?`${q.replace(/\/+$/,"")}/storage/v1/object/public/media/${c.replace(/^\/+/,"")}`:c;function F(c,a="USD"){return new Intl.NumberFormat("en-US",{style:"currency",currency:a}).format(c)}function J(c){return Object.entries(c).filter(([,a])=>a.length>0).map(([a,k])=>({attribute_id:a,term_ids:k}))}function Y({globalAttributes:c,currentLanguageCode:a,baseSku:k,basePrice:R,basePrices:v,baseSalePrice:H,baseSalePrices:S,currencies:n,availableVariantImages:E=[],initialVariationAttributes:D,initialVariants:P,onChange:M}){const[h,L]=x.useState(()=>D&&D.length>0?D.reduce((e,t)=>(e[t.attribute_id]=t.term_ids,e),{}):f.extractSelectedTermsByAttribute(P||[])),[b,N]=x.useState(V.sanitizeVariantDraftsForStoreManagedCurrencies(P||[],n)),_=x.useMemo(()=>c.map(e=>({attribute_id:e.id,attribute_name:f.resolveAttributeName(e,a),terms:e.terms.filter(t=>(h[e.id]||[]).includes(t.id)).map(t=>({...t,value:f.resolveTermValue(t,a)}))})).filter(e=>e.terms.length>0),[a,c,h]);x.useEffect(()=>{if(_.length===0){N([]);return}N(e=>V.sanitizeVariantDraftsForStoreManagedCurrencies(f.generateVariantDrafts({baseSku:k,basePrice:R,basePrices:g.normalizePriceMap(v),baseSalePrice:H,baseSalePrices:g.normalizeSalePriceMap(S),selectedAttributes:_,previousVariants:e}),n))},[R,v,H,S,k,n,_]),x.useEffect(()=>{M({variationAttributes:J(h),variants:b})},[M,h,b]);const z=b.reduce((e,t)=>e+(t.stock_quantity||0),0),C=n.find(e=>e.is_default)??n[0],U=x.useMemo(()=>V.getStoreManagedPriceCurrencyCodes(n),[n]),I=(e,t)=>{L(s=>{const i=new Set(s[e]||[]);return i.has(t)?i.delete(t):i.add(t),{...s,[e]:[...i]}})},y=(e,t,s)=>{N(i=>i.map(o=>{if(o.combination_key!==e)return o;if(t==="sku")return{...o,sku:s};if(t==="upc")return{...o,upc:s};if(t==="sale_price"&&s==="")return{...o,sale_price:null};if(t==="prices"||t==="sale_prices")return o;const m=s===""?0:Number(s);return{...o,[t]:Number.isFinite(m)?m:0}}))},K=(e,t,s)=>{N(i=>i.map(o=>o.combination_key===e?{...o,[t]:s}:o))},A=(e,t,s,i)=>{const o=n.find(m=>m.is_default)??n[0];N(m=>m.map(d=>{if(d.combination_key!==e)return d;const u={...s==="prices"?d.prices:d.sale_prices,[t]:i};return{...d,[s]:u,...t===o?.code?s==="prices"?{price:i??0}:{sale_price:i}:{}}}))},O=e=>{const t=n.find(i=>i.is_default)??n[0],s=new Set(U);t&&N(i=>i.map(o=>{if(o.combination_key!==e)return o;const m=n.reduce((u,l)=>{if(l.code!==t.code&&s.has(l.code))return u;const B=g.convertMinorUnitAmount({amount:j.majorUnitAmountToMinor(o.price,t.code),fromCurrencyCode:t.code,toCurrencyCode:l.code,currencies:n,applyRounding:!0});return u[l.code]=j.minorUnitAmountToMajor(B,l.code),u},{}),d=n.reduce((u,l)=>{if(l.code!==t.code&&s.has(l.code))return u;if(typeof o.sale_price!="number")return u[l.code]=null,u;const B=g.convertMinorUnitAmount({amount:j.majorUnitAmountToMinor(o.sale_price,t.code),fromCurrencyCode:t.code,toCurrencyCode:l.code,currencies:n,applyRounding:!0});return u[l.code]=j.minorUnitAmountToMajor(B,l.code),u},{});return{...o,prices:m,sale_prices:d}}))},X=(e,t)=>{const s=E.find(m=>m.media_id===t);if(!s)return;const i=s.file_path,o=W(i);N(m=>m.map(d=>d.combination_key===e?{...d,main_media_id:s.media_id,main_image_url:o}:d))},$=e=>{N(t=>t.map(s=>s.combination_key===e?{...s,main_media_id:null,main_image_url:null}:s))};return c.length===0?r.jsxDEV("div",{className:"rounded-lg border border-dashed p-6 text-sm text-muted-foreground",children:["No global attributes have been created yet. Create them first in"," ",r.jsxDEV(w,{href:"/cms/products/attributes",className:"font-medium text-primary underline-offset-4 hover:underline",children:"Attribute Management"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:402,columnNumber:9},this),"."]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:400,columnNumber:7},this):r.jsxDEV("div",{className:"space-y-3",children:[r.jsxDEV("div",{className:"space-y-2",children:[r.jsxDEV("div",{className:"flex items-center justify-between gap-3",children:[r.jsxDEV("div",{className:"flex items-center gap-3",children:[r.jsxDEV("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Attributes"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:416,columnNumber:13},this),r.jsxDEV(p.Badge,{variant:"outline",className:"text-[10px] px-1.5 h-4",children:[b.length," variants"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:417,columnNumber:13},this),r.jsxDEV(p.Badge,{variant:"secondary",className:"text-[10px] px-1.5 h-4",children:["Stock: ",z]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:418,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:415,columnNumber:11},this),r.jsxDEV(p.Button,{asChild:!0,variant:"outline",size:"sm",className:"h-7 text-xs px-3",children:r.jsxDEV(w,{href:"/cms/products/attributes",children:"Manage"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:421,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:420,columnNumber:11},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:414,columnNumber:9},this),r.jsxDEV("div",{className:"grid gap-2 lg:grid-cols-2",children:c.map(e=>{const t=h[e.id]||[];return r.jsxDEV("div",{className:"flex items-center gap-3 rounded border p-2.5",children:[r.jsxDEV("div",{className:"shrink-0 w-[100px]",children:[r.jsxDEV("span",{className:"text-sm font-bold block leading-tight",children:f.resolveAttributeName(e,a)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:432,columnNumber:19},this),r.jsxDEV("span",{className:"text-[10px] text-muted-foreground leading-none",children:[t.length," selected"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:433,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:431,columnNumber:17},this),r.jsxDEV("div",{className:"flex flex-wrap gap-1.5 flex-1",children:e.terms.map(s=>{const i=t.includes(s.id);return r.jsxDEV("button",{type:"button",onClick:()=>I(e.id,s.id),className:`rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${i?"border-primary bg-primary/10 text-primary":"border-border bg-background text-foreground hover:border-primary/40"}`,children:f.resolveTermValue(s,a)},s.id,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:440,columnNumber:23},this)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:435,columnNumber:17},this)]},e.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:430,columnNumber:15},this)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:425,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:413,columnNumber:7},this),b.length===0?r.jsxDEV("div",{className:"rounded border border-dashed p-3 text-xs text-muted-foreground text-center",children:"Select terms above to generate variations."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:463,columnNumber:9},this):r.jsxDEV("div",{className:"space-y-2",children:b.map(e=>{const t=V.resolveEditorCurrencyPriceMaps({currencies:n,prices:e.prices||{},salePrices:e.sale_prices||{},fallbackPrice:e.price,fallbackSalePrice:e.sale_price});return r.jsxDEV("div",{className:"rounded border p-3 space-y-2",children:[r.jsxDEV("div",{className:"flex items-center justify-between gap-3",children:[r.jsxDEV("div",{className:"flex items-center gap-2",children:[r.jsxDEV("span",{className:"text-sm font-bold",children:e.label},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:482,columnNumber:21},this),r.jsxDEV("span",{className:"text-xs text-muted-foreground",children:e.selected_options.map(s=>`${s.attribute_name}: ${s.term_value}`).join(" · ")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:483,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:481,columnNumber:19},this),r.jsxDEV("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[r.jsxDEV("span",{children:["Reg: ",F(e.price,C?.code||"USD")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:490,columnNumber:21},this),r.jsxDEV("span",{children:["Sale:"," ",e.sale_price!==null&&e.sale_price!==void 0?F(e.sale_price,C?.code||"USD"):"—"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:491,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:489,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:480,columnNumber:17},this),r.jsxDEV("div",{className:"grid grid-cols-3 gap-2.5",children:[r.jsxDEV("div",{className:"flex items-center gap-2",children:[r.jsxDEV(p.Label,{htmlFor:`variant-sku-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"SKU"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:503,columnNumber:21},this),r.jsxDEV(p.Input,{id:`variant-sku-${e.combination_key}`,value:e.sku,onChange:s=>y(e.combination_key,"sku",s.target.value),placeholder:"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/VariationsEditor.tsx",lineNumber:504,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:502,columnNumber:19},this),r.jsxDEV("div",{className:"flex items-center gap-2",children:[r.jsxDEV(p.Label,{htmlFor:`variant-upc-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"UPC"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:515,columnNumber:21},this),r.jsxDEV(p.Input,{id:`variant-upc-${e.combination_key}`,value:e.upc??"",onChange:s=>y(e.combination_key,"upc",s.target.value),placeholder:"—",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/VariationsEditor.tsx",lineNumber:516,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:514,columnNumber:19},this),r.jsxDEV("div",{className:"flex items-center gap-2",children:[r.jsxDEV(p.Label,{htmlFor:`variant-stock-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"Qty"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:527,columnNumber:21},this),r.jsxDEV(p.Input,{id:`variant-stock-${e.combination_key}`,type:"number",min:"0",value:e.stock_quantity,onChange:s=>y(e.combination_key,"stock_quantity",s.target.value),className:"h-8 text-sm font-mono w-20"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:528,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:526,columnNumber:19},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:501,columnNumber:17},this),r.jsxDEV(G.CurrencyPriceFields,{idPrefix:`variant-${e.combination_key}`,currencies:n,prices:t.prices,salePrices:t.salePrices,managedCurrencyCodes:U,onPriceChange:(s,i)=>A(e.combination_key,s,"prices",i),onSalePriceChange:(s,i)=>A(e.combination_key,s,"sale_prices",i),onAutoFill:()=>O(e.combination_key),helperText:U.length>0?`Store-managed currencies derive from ${C?.code||"the base currency"}.`:void 0,trailing:r.jsxDEV(Q.SaleScheduleFields,{idPrefix:`variant-${e.combination_key}`,startAt:e.sale_start_at,endAt:e.sale_end_at,onChange:(s,i)=>K(e.combination_key,s,i),bare:!0},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:575,columnNumber:21},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:546,columnNumber:17},this),r.jsxDEV("div",{className:"flex items-center gap-3 pt-1.5 border-t border-muted/30",children:[e.main_image_url&&r.jsxDEV("div",{className:"h-9 w-9 overflow-hidden rounded border bg-background shrink-0",children:r.jsxDEV("img",{src:e.main_image_url,alt:`${e.label} image`,className:"h-full w-full object-cover"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:591,columnNumber:23},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:590,columnNumber:21},this),r.jsxDEV("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"Image"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:598,columnNumber:19},this),E.length>0?r.jsxDEV("select",{className:"flex h-8 rounded-md border border-input bg-background px-2 py-1 text-sm min-w-[180px]",value:e.main_media_id??"",onChange:s=>{if(!s.target.value){$(e.combination_key);return}X(e.combination_key,s.target.value)},children:[r.jsxDEV("option",{value:"",children:"Use parent image"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:611,columnNumber:23},this),E.map((s,i)=>r.jsxDEV("option",{value:s.media_id,children:s.alt?.trim()||`Gallery image ${i+1}`},s.media_id,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:613,columnNumber:25},this))]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:600,columnNumber:21},this):r.jsxDEV("span",{className:"text-xs text-muted-foreground",children:"Add gallery images first."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:619,columnNumber:21},this),e.main_media_id&&r.jsxDEV(p.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs px-2 text-muted-foreground hover:text-destructive",onClick:()=>$(e.combination_key),children:"Remove"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:622,columnNumber:21},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:588,columnNumber:17},this)]},e.combination_key,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:478,columnNumber:15},this)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:467,columnNumber:9},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/pages/cms/products/components/VariationsEditor.tsx",lineNumber:411,columnNumber:5},this)}exports.VariationsEditor=Y;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),R=require("next/link"),f=require("react"),p=require("@nextblock-cms/ui"),g=require("../../../../variation-utils.cjs.js"),Q=require("./CurrencyPriceFields.cjs.js"),W=require("./SaleScheduleFields.cjs.js"),y=require("../../../../currency.cjs.js"),j=require("../product-price-sync.cjs.js"),k=require("@nextblock-cms/utils"),E=process.env.NEXT_PUBLIC_R2_BASE_URL||"",D=process.env.NEXT_PUBLIC_SUPABASE_URL||"",H=c=>c.startsWith("http")?c:E?`${E.replace(/\/+$/,"")}/${c.replace(/^\/+/,"")}`:D?`${D.replace(/\/+$/,"")}/storage/v1/object/public/media/${c.replace(/^\/+/,"")}`:c;function L(c,a="USD"){return new Intl.NumberFormat("en-US",{style:"currency",currency:a}).format(c)}function J(c){return Object.entries(c).filter(([,a])=>a.length>0).map(([a,b])=>({attribute_id:a,term_ids:b}))}function Y({globalAttributes:c,currentLanguageCode:a,baseSku:b,basePrice:$,basePrices:w,baseSalePrice:T,baseSalePrices:B,currencies:o,availableVariantImages:N=[],initialVariationAttributes:C,initialVariants:V,onChange:q}){const[_,z]=f.useState(()=>C&&C.length>0?C.reduce((e,r)=>(e[r.attribute_id]=r.term_ids,e),{}):g.extractSelectedTermsByAttribute(V||[])),[h,x]=f.useState(j.sanitizeVariantDraftsForStoreManagedCurrencies(V||[],o)),S=f.useMemo(()=>c.map(e=>({attribute_id:e.id,attribute_name:g.resolveAttributeName(e,a),terms:e.terms.filter(r=>(_[e.id]||[]).includes(r.id)).map(r=>({...r,value:g.resolveTermValue(r,a)}))})).filter(e=>e.terms.length>0),[a,c,_]);f.useEffect(()=>{if(S.length===0){x([]);return}x(e=>j.sanitizeVariantDraftsForStoreManagedCurrencies(g.generateVariantDrafts({baseSku:b,basePrice:$,basePrices:y.normalizePriceMap(w),baseSalePrice:T,baseSalePrices:y.normalizeSalePriceMap(B),selectedAttributes:S,previousVariants:e}),o))},[$,w,T,B,b,o,S]),f.useEffect(()=>{q({variationAttributes:J(_),variants:h})},[q,_,h]);const I=h.reduce((e,r)=>e+(r.stock_quantity||0),0),P=o.find(e=>e.is_default)??o[0],U=f.useMemo(()=>j.getStoreManagedPriceCurrencyCodes(o),[o]),K=(e,r)=>{z(t=>{const n=new Set(t[e]||[]);return n.has(r)?n.delete(r):n.add(r),{...t,[e]:[...n]}})},M=(e,r,t)=>{x(n=>n.map(i=>{if(i.combination_key!==e)return i;if(r==="sku")return{...i,sku:t};if(r==="upc")return{...i,upc:t};if(r==="sale_price"&&t==="")return{...i,sale_price:null};if(r==="prices"||r==="sale_prices")return i;const d=t===""?0:Number(t);return{...i,[r]:Number.isFinite(d)?d:0}}))},O=(e,r,t)=>{x(n=>n.map(i=>i.combination_key===e?{...i,[r]:t}:i))},F=(e,r,t,n)=>{const i=o.find(d=>d.is_default)??o[0];x(d=>d.map(m=>{if(m.combination_key!==e)return m;const u={...t==="prices"?m.prices:m.sale_prices,[r]:n};return{...m,[t]:u,...r===i?.code?t==="prices"?{price:n??0}:{sale_price:n}:{}}}))},X=e=>{const r=o.find(n=>n.is_default)??o[0],t=new Set(U);r&&x(n=>n.map(i=>{if(i.combination_key!==e)return i;const d=o.reduce((u,l)=>{if(l.code!==r.code&&t.has(l.code))return u;const A=y.convertMinorUnitAmount({amount:k.majorUnitAmountToMinor(i.price,r.code),fromCurrencyCode:r.code,toCurrencyCode:l.code,currencies:o,applyRounding:!0});return u[l.code]=k.minorUnitAmountToMajor(A,l.code),u},{}),m=o.reduce((u,l)=>{if(l.code!==r.code&&t.has(l.code))return u;if(typeof i.sale_price!="number")return u[l.code]=null,u;const A=y.convertMinorUnitAmount({amount:k.majorUnitAmountToMinor(i.sale_price,r.code),fromCurrencyCode:r.code,toCurrencyCode:l.code,currencies:o,applyRounding:!0});return u[l.code]=k.minorUnitAmountToMajor(A,l.code),u},{});return{...i,prices:d,sale_prices:m}}))},G=(e,r)=>{const t=N.find(d=>d.media_id===r);if(!t)return;const n=t.file_path,i=H(n);x(d=>d.map(m=>m.combination_key===e?{...m,main_media_id:t.media_id,main_image_url:i}:m))},v=e=>{x(r=>r.map(t=>t.combination_key===e?{...t,main_media_id:null,main_image_url:null}:t))};return c.length===0?s.jsxs("div",{className:"rounded-lg border border-dashed p-6 text-sm text-muted-foreground",children:["No global attributes have been created yet. Create them first in"," ",s.jsx(R,{href:"/cms/products/attributes",className:"font-medium text-primary underline-offset-4 hover:underline",children:"Attribute Management"}),"."]}):s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider leading-none",children:"Attributes"}),s.jsxs(p.Badge,{variant:"outline",className:"text-[10px] px-1.5 h-4",children:[h.length," variants"]}),s.jsxs(p.Badge,{variant:"secondary",className:"text-[10px] px-1.5 h-4",children:["Stock: ",I]})]}),s.jsx(p.Button,{asChild:!0,variant:"outline",size:"sm",className:"h-7 text-xs px-3",children:s.jsx(R,{href:"/cms/products/attributes",children:"Manage"})})]}),s.jsx("div",{className:"grid gap-2 lg:grid-cols-2",children:c.map(e=>{const r=_[e.id]||[];return s.jsxs("div",{className:"flex items-center gap-3 rounded border p-2.5",children:[s.jsxs("div",{className:"shrink-0 w-[100px]",children:[s.jsx("span",{className:"text-sm font-bold block leading-tight",children:g.resolveAttributeName(e,a)}),s.jsxs("span",{className:"text-[10px] text-muted-foreground leading-none",children:[r.length," selected"]})]}),s.jsx("div",{className:"flex flex-wrap gap-1.5 flex-1",children:e.terms.map(t=>{const n=r.includes(t.id);return s.jsx("button",{type:"button",onClick:()=>K(e.id,t.id),className:`rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${n?"border-primary bg-primary/10 text-primary":"border-border bg-background text-foreground hover:border-primary/40"}`,children:g.resolveTermValue(t,a)},t.id)})})]},e.id)})})]}),h.length===0?s.jsx("div",{className:"rounded border border-dashed p-3 text-xs text-muted-foreground text-center",children:"Select terms above to generate variations."}):s.jsx("div",{className:"space-y-2",children:h.map(e=>{const r=j.resolveEditorCurrencyPriceMaps({currencies:o,prices:e.prices||{},salePrices:e.sale_prices||{},fallbackPrice:e.price,fallbackSalePrice:e.sale_price});return s.jsxs("div",{className:"rounded border p-3 space-y-2",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-sm font-bold",children:e.label}),s.jsx("span",{className:"text-xs text-muted-foreground",children:e.selected_options.map(t=>`${t.attribute_name}: ${t.term_value}`).join(" · ")})]}),s.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[s.jsxs("span",{children:["Reg: ",L(e.price,P?.code||"USD")]}),s.jsxs("span",{children:["Sale:"," ",e.sale_price!==null&&e.sale_price!==void 0?L(e.sale_price,P?.code||"USD"):"—"]})]})]}),s.jsxs("div",{className:"grid grid-cols-3 gap-2.5",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(p.Label,{htmlFor:`variant-sku-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"SKU"}),s.jsx(p.Input,{id:`variant-sku-${e.combination_key}`,value:e.sku,onChange:t=>M(e.combination_key,"sku",t.target.value),placeholder:"SKU",className:"h-8 text-sm font-mono"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(p.Label,{htmlFor:`variant-upc-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"UPC"}),s.jsx(p.Input,{id:`variant-upc-${e.combination_key}`,value:e.upc??"",onChange:t=>M(e.combination_key,"upc",t.target.value),placeholder:"—",className:"h-8 text-sm font-mono"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(p.Label,{htmlFor:`variant-stock-${e.combination_key}`,className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"Qty"}),s.jsx(p.Input,{id:`variant-stock-${e.combination_key}`,type:"number",min:"0",value:e.stock_quantity,onChange:t=>M(e.combination_key,"stock_quantity",t.target.value),className:"h-8 text-sm font-mono w-20"})]})]}),s.jsx(Q.CurrencyPriceFields,{idPrefix:`variant-${e.combination_key}`,currencies:o,prices:r.prices,salePrices:r.salePrices,managedCurrencyCodes:U,onPriceChange:(t,n)=>F(e.combination_key,t,"prices",n),onSalePriceChange:(t,n)=>F(e.combination_key,t,"sale_prices",n),onAutoFill:()=>X(e.combination_key),helperText:U.length>0?`Store-managed currencies derive from ${P?.code||"the base currency"}.`:void 0,trailing:s.jsx(W.SaleScheduleFields,{idPrefix:`variant-${e.combination_key}`,startAt:e.sale_start_at,endAt:e.sale_end_at,onChange:(t,n)=>O(e.combination_key,t,n),bare:!0})}),s.jsxs("div",{className:"flex items-center gap-3 pt-1.5 border-t border-muted/30",children:[e.main_image_url&&s.jsx("div",{className:"h-9 w-9 overflow-hidden rounded border bg-background shrink-0",children:s.jsx("img",{src:e.main_image_url,alt:`${e.label} image`,className:"h-full w-full object-cover"})}),s.jsx("span",{className:"text-xs uppercase font-bold text-muted-foreground tracking-wider shrink-0",children:"Image"}),N.length>0?s.jsxs("select",{className:"flex h-8 rounded-md border border-input bg-background px-2 py-1 text-sm min-w-[180px]",value:e.main_media_id??"",onChange:t=>{if(!t.target.value){v(e.combination_key);return}G(e.combination_key,t.target.value)},children:[s.jsx("option",{value:"",children:"Use parent image"}),N.map((t,n)=>s.jsx("option",{value:t.media_id,children:t.alt?.trim()||`Gallery image ${n+1}`},t.media_id))]}):s.jsx("span",{className:"text-xs text-muted-foreground",children:"Add gallery images first."}),e.main_media_id&&s.jsx(p.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs px-2 text-muted-foreground hover:text-destructive",onClick:()=>v(e.combination_key),children:"Remove"})]})]},e.combination_key)})})]})}exports.VariationsEditor=Y;
|