@nextblock-cms/ecom 0.13.3 → 0.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/lib/CurrencyProvider.cjs.js +1 -1
  2. package/lib/CurrencyProvider.es.js +31 -27
  3. package/lib/components/AccountNavigationMenu.cjs.js +1 -1
  4. package/lib/components/AccountNavigationMenu.es.js +53 -26
  5. package/lib/components/AddToCartButton.cjs.js +1 -1
  6. package/lib/components/AddToCartButton.es.js +49 -25
  7. package/lib/components/Cart.cjs.js +1 -1
  8. package/lib/components/Cart.es.js +367 -115
  9. package/lib/components/CartDrawer.cjs.js +1 -1
  10. package/lib/components/CartDrawer.es.js +272 -88
  11. package/lib/components/CartIcon.cjs.js +1 -1
  12. package/lib/components/CartIcon.es.js +44 -16
  13. package/lib/components/Checkout.cjs.js +1 -1
  14. package/lib/components/Checkout.es.js +1601 -694
  15. package/lib/components/CouponForm.cjs.js +1 -1
  16. package/lib/components/CouponForm.es.js +160 -96
  17. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  18. package/lib/components/CurrencySwitcher.es.js +32 -12
  19. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  20. package/lib/components/CustomerProfileForm.es.js +666 -250
  21. package/lib/components/FeaturedProduct.cjs.js +1 -1
  22. package/lib/components/FeaturedProduct.es.js +126 -42
  23. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  24. package/lib/components/FreemiusLicensePanel.es.js +125 -45
  25. package/lib/components/InvoiceDocument.cjs.js +1 -1
  26. package/lib/components/InvoiceDocument.es.js +485 -146
  27. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  28. package/lib/components/InvoiceViewerShell.es.js +142 -54
  29. package/lib/components/ProductCard.cjs.js +1 -1
  30. package/lib/components/ProductCard.es.js +224 -81
  31. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  32. package/lib/components/ProductDetailsLayout.es.js +629 -275
  33. package/lib/components/ProductGallery.cjs.js +1 -1
  34. package/lib/components/ProductGallery.es.js +64 -21
  35. package/lib/components/ProductGrid.cjs.js +1 -1
  36. package/lib/components/ProductGrid.es.js +28 -12
  37. package/lib/components/ShippingEstimator.cjs.js +1 -1
  38. package/lib/components/ShippingEstimator.es.js +226 -90
  39. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  40. package/lib/components/SimpleTiptapRenderer.es.js +286 -93
  41. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  42. package/lib/components/SubscriptionSelector.es.js +168 -92
  43. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  44. package/lib/pages/cms/coupons/CouponEditorForm.es.js +370 -110
  45. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  46. package/lib/pages/cms/coupons/CouponsPage.es.js +368 -116
  47. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  48. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +61 -25
  49. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  50. package/lib/pages/cms/coupons/EditCouponPage.es.js +71 -35
  51. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  52. package/lib/pages/cms/coupons/ProductScopePicker.es.js +167 -72
  53. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  54. package/lib/pages/cms/orders/ExportReportsDialog.es.js +247 -87
  55. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  56. package/lib/pages/cms/orders/OrderDetailPage.es.js +283 -95
  57. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  58. package/lib/pages/cms/orders/OrderPrintButton.es.js +21 -9
  59. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  60. package/lib/pages/cms/orders/OrderStatusForm.es.js +106 -46
  61. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  62. package/lib/pages/cms/orders/OrdersPage.es.js +257 -78
  63. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  64. package/lib/pages/cms/payments/PaymentsClient.es.js +551 -155
  65. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  66. package/lib/pages/cms/payments/PaymentsPage.es.js +24 -16
  67. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  68. package/lib/pages/cms/products/ProductsPage.es.js +77 -37
  69. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  70. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +176 -96
  71. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  72. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +85 -41
  73. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  74. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +455 -192
  75. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  76. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +72 -28
  77. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  78. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +490 -183
  79. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  80. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +175 -67
  81. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  82. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +211 -100
  83. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  84. package/lib/pages/cms/products/components/DeleteProductButton.es.js +45 -25
  85. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  86. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +202 -58
  87. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  88. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +234 -88
  89. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  90. package/lib/pages/cms/products/components/ProductForm.es.js +1199 -551
  91. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  92. package/lib/pages/cms/products/components/ProductMediaManager.es.js +154 -63
  93. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  94. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +391 -144
  95. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  96. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +203 -87
  97. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  98. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +30 -18
  99. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  100. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +35 -23
  101. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  102. package/lib/pages/cms/products/components/VariationsEditor.es.js +492 -261
  103. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  104. package/lib/pages/cms/products/inventory/InventoryPage.es.js +33 -13
  105. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  106. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +365 -145
  107. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  108. package/lib/pages/cms/products/new/NewProductPage.es.js +46 -34
  109. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  110. package/lib/pages/cms/shipping/ShippingPage.es.js +507 -155
  111. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  112. package/lib/pages/cms/shipping/components/RateForm.es.js +717 -334
  113. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  114. package/lib/pages/cms/shipping/components/ZoneForm.es.js +392 -158
  115. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  116. package/lib/pages/cms/taxes/TaxesPage.es.js +448 -120
  117. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  118. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +159 -55
  119. package/lib/product-context.cjs.js +1 -1
  120. package/lib/product-context.es.js +14 -10
  121. package/package.json +4 -4
@@ -1,393 +1,747 @@
1
1
  'use client';
2
- import { jsxs as a, jsx as t, Fragment as Y } from "react/jsx-runtime";
3
- import Z, { useState as D, useEffect as T, useMemo as I } from "react";
4
- import { Download as ee, Package as te, ShieldCheck as re } from "lucide-react";
5
- import { Badge as A } from "@nextblock-cms/ui/badge";
6
- import { Button as se } from "@nextblock-cms/ui/button";
7
- import { Label as ae } from "@nextblock-cms/ui/label";
8
- import { Separator as ie } from "@nextblock-cms/ui/separator";
9
- import { useTranslations as ce, cn as le, formatPrice as F } from "@nextblock-cms/utils";
10
- import { useProduct as ne } from "../product-context.es.js";
11
- import { ProductGallery as oe } from "./ProductGallery.es.js";
12
- import { AddToCartButton as de } from "./AddToCartButton.es.js";
13
- import { SubscriptionSelector as me } from "./SubscriptionSelector.es.js";
14
- import { SimpleTiptapRenderer as pe } from "./SimpleTiptapRenderer.es.js";
15
- import { chooseInitialVariantSelections as M, normalizeSelectionsToAvailableVariants as J, findMatchingVariant as ue, resolveTranslatedText as fe, getAvailableTermIdsForAttribute as he } from "../variation-utils.es.js";
16
- import { useCurrency as ge } from "../CurrencyProvider.es.js";
17
- import { resolveEffectivePriceForCurrency as G } from "../currency.es.js";
18
- import { isDigitalProduct as xe } from "../types.es.js";
19
- import { getTrialSummary as ve } from "../trials.es.js";
20
- function V(d, g, w, e) {
21
- const l = {
2
+ import { jsxDEV as e, Fragment as Q } from "react/jsx-dev-runtime";
3
+ import Y, { useState as $, useEffect as w, useMemo as S } from "react";
4
+ import { Download as Z, Package as ee, ShieldCheck as se } from "lucide-react";
5
+ import { Badge as E } from "@nextblock-cms/ui/badge";
6
+ import { Button as te } from "@nextblock-cms/ui/button";
7
+ import { Label as re } from "@nextblock-cms/ui/label";
8
+ import { Separator as ne } from "@nextblock-cms/ui/separator";
9
+ import { useTranslations as oe, cn as ie, formatPrice as B } from "@nextblock-cms/utils";
10
+ import { useProduct as le } from "../product-context.es.js";
11
+ import { ProductGallery as ce } from "./ProductGallery.es.js";
12
+ import { AddToCartButton as ae } from "./AddToCartButton.es.js";
13
+ import { SubscriptionSelector as de } from "./SubscriptionSelector.es.js";
14
+ import { SimpleTiptapRenderer as me } from "./SimpleTiptapRenderer.es.js";
15
+ import { chooseInitialVariantSelections as F, normalizeSelectionsToAvailableVariants as M, findMatchingVariant as ue, resolveTranslatedText as be, getAvailableTermIdsForAttribute as pe } from "../variation-utils.es.js";
16
+ import { useCurrency as fe } from "../CurrencyProvider.es.js";
17
+ import { resolveEffectivePriceForCurrency as J } from "../currency.es.js";
18
+ import { isDigitalProduct as Ne } from "../types.es.js";
19
+ import { getTrialSummary as xe } from "../trials.es.js";
20
+ function R(a, f, g, s) {
21
+ const i = {
22
22
  kind: "product-field",
23
- field: g,
24
- input: w,
25
- label: e
26
- }, C = typeof window < "u" ? window.location.origin : process.env.NEXT_PUBLIC_URL || process.env.TARGET_URL || (process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : "") || "http://localhost:3000";
27
- let p = (typeof window < "u" ? window.location.origin : process.env.NEXT_PUBLIC_URL || process.env.TARGET_URL || (process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : "") || "http://localhost:3000").replace(/\/+$/, "");
23
+ field: f,
24
+ input: g,
25
+ label: s
26
+ }, L = typeof window < "u" ? window.location.origin : process.env.NEXT_PUBLIC_URL || process.env.TARGET_URL || (process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : "") || "http://localhost:3000";
27
+ let m = (typeof window < "u" ? window.location.origin : process.env.NEXT_PUBLIC_URL || process.env.TARGET_URL || (process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : "") || "http://localhost:3000").replace(/\/+$/, "");
28
28
  try {
29
- (p.startsWith("http://") || p.startsWith("https://")) && (p = new URL(p).hostname);
29
+ (m.startsWith("http://") || m.startsWith("https://")) && (m = new URL(m).hostname);
30
30
  } catch {
31
31
  }
32
- const k = process.env.NEXTBLOCK_VERCEL_PROJECT_ID || process.env.VERCEL_PROJECT_ID, S = process.env.NEXTBLOCK_VERCEL_WORKSPACE_ID || process.env.VERCEL_ORG_ID, _ = {
33
- origin: p,
34
- editUrl: `${C}/cms/products/${d.id}/edit`,
32
+ const y = process.env.NEXTBLOCK_VERCEL_PROJECT_ID || process.env.VERCEL_PROJECT_ID, P = process.env.NEXTBLOCK_VERCEL_WORKSPACE_ID || process.env.VERCEL_ORG_ID, k = {
33
+ origin: m,
34
+ editUrl: `${L}/cms/products/${a.id}/edit`,
35
35
  data: {
36
36
  parentType: "product",
37
- parentId: d.id,
38
- slug: d.slug,
39
- languageId: d.language_id,
37
+ parentId: a.id,
38
+ slug: a.slug,
39
+ languageId: a.language_id,
40
40
  draftId: null,
41
- target: l
41
+ target: i
42
42
  }
43
43
  };
44
- return k && (_.projectId = k), S && (_.workspaceId = S), {
45
- "data-vercel-edit-info": JSON.stringify(_),
46
- "data-vercel-edit-target": JSON.stringify(l),
47
- "data-nextblock-visual-edit": `product:${g}`
44
+ return y && (k.projectId = y), P && (k.workspaceId = P), {
45
+ "data-vercel-edit-info": JSON.stringify(k),
46
+ "data-vercel-edit-target": JSON.stringify(i),
47
+ "data-nextblock-visual-edit": `product:${f}`
48
48
  };
49
49
  }
50
- const je = ({
51
- visualEditingEnabled: d = !1,
52
- descriptionNode: g,
53
- reviewsNode: w
50
+ const Ae = ({
51
+ visualEditingEnabled: a = !1,
52
+ descriptionNode: f,
53
+ reviewsNode: g
54
54
  }) => {
55
- const e = ne(), { t: l, lang: C } = ce(), { activeCurrencyCode: u, currencies: p } = ge(), k = d ? V(
56
- e,
55
+ const s = le(), { t: i, lang: L } = oe(), { activeCurrencyCode: u, currencies: m } = fe(), y = a ? R(
56
+ s,
57
57
  "title",
58
58
  "plain-text",
59
59
  "Product title"
60
- ) : void 0, S = d ? V(
61
- e,
60
+ ) : void 0, P = a ? R(
61
+ s,
62
62
  "short_description",
63
63
  "plain-text",
64
64
  "Short description"
65
- ) : void 0, _ = d ? V(
66
- e,
65
+ ) : void 0, k = a ? R(
66
+ s,
67
67
  "description_json",
68
68
  "tiptap",
69
69
  "Product description"
70
- ) : void 0, x = (s, o, c) => {
71
- const B = l(s, c);
72
- return B === s ? o : B;
73
- }, L = e.images && e.images.length > 0 ? e.images : e.image_url ? [{ url: e.image_url, alt: e.title }] : [], v = e.custom_props?.provider === "freemius" || xe(e), O = ve(e), i = !v && !!(e.has_variants && e.attributes?.length && e.variants?.length), f = e.attributes || [], m = e.variants || [], [b, E] = D(() => M(f, m)), [P, R] = D(1);
74
- T(() => {
75
- R(1);
76
- }, [e.id]), T(() => {
77
- i && E(M(f, m));
78
- }, [f, i, e.id, m]);
79
- const h = I(() => i ? J(
80
- f,
81
- m,
82
- b
83
- ) : b, [f, i, b, m]);
84
- T(() => {
85
- JSON.stringify(h) !== JSON.stringify(b) && E(h);
86
- }, [h, b]);
87
- const r = I(() => i ? ue(m, h) : null, [i, h, m]), U = G({
88
- prices: e.prices,
89
- salePrices: e.sale_prices,
90
- fallbackPrice: e.price,
91
- fallbackSalePrice: e.sale_price,
92
- saleStartAt: e.sale_start_at,
93
- saleEndAt: e.sale_end_at,
94
- scheduledPrice: e.scheduled_price,
95
- scheduledPrices: e.scheduled_prices,
96
- scheduledPriceAt: e.scheduled_price_at,
70
+ ) : void 0, N = (r, c, o) => {
71
+ const O = i(r, o);
72
+ return O === r ? c : O;
73
+ }, _ = s.images && s.images.length > 0 ? s.images : s.image_url ? [{ url: s.image_url, alt: s.title }] : [], x = s.custom_props?.provider === "freemius" || Ne(s), T = xe(s), n = !x && !!(s.has_variants && s.attributes?.length && s.variants?.length), b = s.attributes || [], d = s.variants || [], [v, U] = $(() => F(b, d)), [C, j] = $(1);
74
+ w(() => {
75
+ j(1);
76
+ }, [s.id]), w(() => {
77
+ n && U(F(b, d));
78
+ }, [b, n, s.id, d]);
79
+ const p = S(() => n ? M(
80
+ b,
81
+ d,
82
+ v
83
+ ) : v, [b, n, v, d]);
84
+ w(() => {
85
+ JSON.stringify(p) !== JSON.stringify(v) && U(p);
86
+ }, [p, v]);
87
+ const t = S(() => n ? ue(d, p) : null, [n, p, d]), I = J({
88
+ prices: s.prices,
89
+ salePrices: s.sale_prices,
90
+ fallbackPrice: s.price,
91
+ fallbackSalePrice: s.sale_price,
92
+ saleStartAt: s.sale_start_at,
93
+ saleEndAt: s.sale_end_at,
94
+ scheduledPrice: s.scheduled_price,
95
+ scheduledPrices: s.scheduled_prices,
96
+ scheduledPriceAt: s.scheduled_price_at,
97
97
  currencyCode: u,
98
- currencies: p
99
- }), j = i && r ? G({
100
- prices: r.prices,
101
- salePrices: r.sale_prices,
102
- fallbackPrice: r.price,
103
- fallbackSalePrice: r.sale_price,
104
- saleStartAt: r.sale_start_at,
105
- saleEndAt: r.sale_end_at,
106
- scheduledPrice: r.scheduled_price,
107
- scheduledPrices: r.scheduled_prices,
108
- scheduledPriceAt: r.scheduled_price_at,
98
+ currencies: m
99
+ }), A = n && t ? J({
100
+ prices: t.prices,
101
+ salePrices: t.sale_prices,
102
+ fallbackPrice: t.price,
103
+ fallbackSalePrice: t.sale_price,
104
+ saleStartAt: t.sale_start_at,
105
+ saleEndAt: t.sale_end_at,
106
+ scheduledPrice: t.scheduled_price,
107
+ scheduledPrices: t.scheduled_prices,
108
+ scheduledPriceAt: t.scheduled_price_at,
109
109
  currencyCode: u,
110
- currencies: p
111
- }) : null, N = j?.price ?? U.price, y = j?.sale_price ?? U.sale_price, n = i ? r?.stock_quantity ?? 0 : e.stock ?? 0, K = I(() => {
112
- if (!r?.image_url)
113
- return L;
114
- const s = {
115
- url: r.image_url,
116
- alt: `${e.title} ${r.label}`
117
- }, o = L.filter(
118
- (c) => c.url !== r.image_url
110
+ currencies: m
111
+ }) : null, D = A?.price ?? I.price, h = A?.sale_price ?? I.sale_price, l = n ? t?.stock_quantity ?? 0 : s.stock ?? 0, G = S(() => {
112
+ if (!t?.image_url)
113
+ return _;
114
+ const r = {
115
+ url: t.image_url,
116
+ alt: `${s.title} ${t.label}`
117
+ }, c = _.filter(
118
+ (o) => o.url !== t.image_url
119
119
  );
120
- return [s, ...o];
121
- }, [L, e.title, r]), X = typeof y == "number" && N > 0 ? Math.round(
122
- (N - y) / N * 100
123
- ) : 0, q = i && r ? {
124
- ...e,
125
- sku: r.sku,
126
- price: r.price,
127
- prices: r.prices,
128
- sale_price: typeof r.sale_price == "number" ? r.sale_price : null,
129
- sale_prices: r.sale_prices,
130
- image_url: r.image_url || e.image_url,
131
- stock: r.stock_quantity,
132
- variant_id: r.id,
133
- variant_label: r.label,
134
- selected_options: r.selected_options,
120
+ return [r, ...c];
121
+ }, [_, s.title, t]), K = typeof h == "number" && D > 0 ? Math.round(
122
+ (D - h) / D * 100
123
+ ) : 0, X = n && t ? {
124
+ ...s,
125
+ sku: t.sku,
126
+ price: t.price,
127
+ prices: t.prices,
128
+ sale_price: typeof t.sale_price == "number" ? t.sale_price : null,
129
+ sale_prices: t.sale_prices,
130
+ image_url: t.image_url || s.image_url,
131
+ stock: t.stock_quantity,
132
+ variant_id: t.id,
133
+ variant_label: t.label,
134
+ selected_options: t.selected_options,
135
135
  currency_code: u
136
136
  } : {
137
- ...e,
137
+ ...s,
138
138
  currency_code: u
139
- }, z = (s, o) => {
140
- E(
141
- (c) => J(f, m, {
142
- ...c,
143
- [s]: o
139
+ }, q = (r, c) => {
140
+ U(
141
+ (o) => M(b, d, {
142
+ ...o,
143
+ [r]: c
144
144
  })
145
145
  );
146
- }, W = x(
146
+ }, z = N(
147
147
  "ecommerce.in_stock",
148
- `${n} in stock`,
149
- { count: String(n) }
150
- ), $ = x(
148
+ `${l} in stock`,
149
+ { count: String(l) }
150
+ ), V = N(
151
151
  "ecommerce.out_of_stock",
152
152
  "Out of stock"
153
- ), H = x(
153
+ ), W = N(
154
154
  "ecommerce.select_options",
155
155
  "Select Options"
156
- ), Q = x(
156
+ ), H = N(
157
157
  "ecommerce.variant_selection_required",
158
158
  "Select one term from every dropdown to resolve a variation."
159
159
  );
160
- return /* @__PURE__ */ a("div", { className: "w-full animate-in fade-in slide-in-from-bottom-4 duration-700 ease-out", children: [
161
- /* @__PURE__ */ t("div", { className: "container mx-auto px-4 md:px-6 py-12", children: /* @__PURE__ */ a("div", { className: "grid gap-12 lg:grid-cols-[2fr_3fr] items-start", children: [
162
- /* @__PURE__ */ t("div", { className: "w-full max-w-2xl mx-auto lg:max-w-none", children: /* @__PURE__ */ t(oe, { images: K, className: "w-full" }) }),
163
- /* @__PURE__ */ a("div", { className: "flex flex-col gap-4 pb-2 max-w-xl mx-auto lg:mx-0 lg:max-w-none", children: [
164
- /* @__PURE__ */ t("div", { className: "space-y-6", children: /* @__PURE__ */ a("div", { className: "space-y-4", children: [
165
- /* @__PURE__ */ t(
160
+ return /* @__PURE__ */ e("div", { className: "w-full animate-in fade-in slide-in-from-bottom-4 duration-700 ease-out", children: [
161
+ /* @__PURE__ */ e("div", { className: "container mx-auto px-4 md:px-6 py-12", children: /* @__PURE__ */ e("div", { className: "grid gap-12 lg:grid-cols-[2fr_3fr] items-start", children: [
162
+ /* @__PURE__ */ e("div", { className: "w-full max-w-2xl mx-auto lg:max-w-none", children: /* @__PURE__ */ e(ce, { images: G, className: "w-full" }, void 0, !1, {
163
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
164
+ lineNumber: 333,
165
+ columnNumber: 13
166
+ }, void 0) }, void 0, !1, {
167
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
168
+ lineNumber: 332,
169
+ columnNumber: 11
170
+ }, void 0),
171
+ /* @__PURE__ */ e("div", { className: "flex flex-col gap-4 pb-2 max-w-xl mx-auto lg:mx-0 lg:max-w-none", children: [
172
+ /* @__PURE__ */ e("div", { className: "space-y-6", children: /* @__PURE__ */ e("div", { className: "space-y-4", children: [
173
+ /* @__PURE__ */ e(
166
174
  "h1",
167
175
  {
168
176
  className: "text-3xl sm:text-4xl lg:text-5xl font-extrabold tracking-tight text-foreground leading-[1.1] lg:mt-0",
169
- ...k,
170
- children: e.title
171
- }
177
+ ...y,
178
+ children: s.title
179
+ },
180
+ void 0,
181
+ !1,
182
+ {
183
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
184
+ lineNumber: 341,
185
+ columnNumber: 17
186
+ },
187
+ void 0
172
188
  ),
173
- /* @__PURE__ */ t("div", { className: "flex items-center gap-2 mt-2", children: /* @__PURE__ */ a(
189
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-2 mt-2", children: /* @__PURE__ */ e(
174
190
  "a",
175
191
  {
176
192
  href: "#reviews-section",
177
193
  className: "flex items-center gap-1.5 group hover:opacity-85 transition-opacity",
178
194
  children: [
179
- /* @__PURE__ */ t("div", { className: "flex items-center text-amber-500", children: Array.from({ length: 5 }).map((s, o) => /* @__PURE__ */ t(
195
+ /* @__PURE__ */ e("div", { className: "flex items-center text-amber-500", children: Array.from({ length: 5 }).map((r, c) => /* @__PURE__ */ e(
180
196
  "svg",
181
197
  {
182
- className: le(
198
+ className: ie(
183
199
  "h-4 w-4 fill-current",
184
- o < Math.round(e.average_rating || 0) ? "text-amber-500" : "text-slate-300 dark:text-slate-700"
200
+ c < Math.round(s.average_rating || 0) ? "text-amber-500" : "text-slate-300 dark:text-slate-700"
185
201
  ),
186
202
  viewBox: "0 0 20 20",
187
203
  fill: "currentColor",
188
- children: /* @__PURE__ */ t("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" })
204
+ children: /* @__PURE__ */ e("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }, void 0, !1, {
205
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
206
+ lineNumber: 367,
207
+ columnNumber: 27
208
+ }, void 0)
209
+ },
210
+ c,
211
+ !1,
212
+ {
213
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
214
+ lineNumber: 356,
215
+ columnNumber: 25
189
216
  },
190
- o
191
- )) }),
192
- e.total_reviews && e.total_reviews > 0 ? /* @__PURE__ */ a(Y, { children: [
193
- /* @__PURE__ */ t("span", { className: "text-sm font-semibold text-slate-700 dark:text-slate-300", children: e.average_rating?.toFixed(1) }),
194
- /* @__PURE__ */ a("span", { className: "text-sm text-muted-foreground underline decoration-dotted group-hover:text-primary", children: [
217
+ void 0
218
+ )) }, void 0, !1, {
219
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
220
+ lineNumber: 354,
221
+ columnNumber: 21
222
+ }, void 0),
223
+ s.total_reviews && s.total_reviews > 0 ? /* @__PURE__ */ e(Q, { children: [
224
+ /* @__PURE__ */ e("span", { className: "text-sm font-semibold text-slate-700 dark:text-slate-300", children: s.average_rating?.toFixed(1) }, void 0, !1, {
225
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
226
+ lineNumber: 373,
227
+ columnNumber: 25
228
+ }, void 0),
229
+ /* @__PURE__ */ e("span", { className: "text-sm text-muted-foreground underline decoration-dotted group-hover:text-primary", children: [
195
230
  "(",
196
- e.total_reviews === 1 ? l("reviews.review_count_one", { count: e.total_reviews }) : l("reviews.review_count_other", { count: e.total_reviews }),
231
+ s.total_reviews === 1 ? i("reviews.review_count_one", { count: s.total_reviews }) : i("reviews.review_count_other", { count: s.total_reviews }),
197
232
  ")"
198
- ] })
199
- ] }) : /* @__PURE__ */ t("span", { className: "text-xs text-muted-foreground group-hover:text-primary underline decoration-dotted", children: l("reviews.be_the_first") })
233
+ ] }, void 0, !0, {
234
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
235
+ lineNumber: 376,
236
+ columnNumber: 25
237
+ }, void 0)
238
+ ] }, void 0, !0, {
239
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
240
+ lineNumber: 372,
241
+ columnNumber: 23
242
+ }, void 0) : /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground group-hover:text-primary underline decoration-dotted", children: i("reviews.be_the_first") }, void 0, !1, {
243
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
244
+ lineNumber: 383,
245
+ columnNumber: 23
246
+ }, void 0)
200
247
  ]
201
- }
202
- ) }),
203
- e.categories && e.categories.length > 0 && /* @__PURE__ */ t("div", { className: "flex flex-wrap items-center gap-1.5 text-xs font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400", children: e.categories.map((s, o) => {
204
- const c = fe(
205
- s.name,
206
- s.name_translations,
207
- C
248
+ },
249
+ void 0,
250
+ !0,
251
+ {
252
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
253
+ lineNumber: 350,
254
+ columnNumber: 19
255
+ },
256
+ void 0
257
+ ) }, void 0, !1, {
258
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
259
+ lineNumber: 349,
260
+ columnNumber: 17
261
+ }, void 0),
262
+ s.categories && s.categories.length > 0 && /* @__PURE__ */ e("div", { className: "flex flex-wrap items-center gap-1.5 text-xs font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400", children: s.categories.map((r, c) => {
263
+ const o = be(
264
+ r.name,
265
+ r.name_translations,
266
+ L
208
267
  );
209
- return /* @__PURE__ */ a(Z.Fragment, { children: [
210
- o > 0 && /* @__PURE__ */ t("span", { className: "text-muted-foreground/30", children: "•" }),
211
- /* @__PURE__ */ t("span", { children: c })
212
- ] }, s.id);
213
- }) }),
214
- /* @__PURE__ */ t(
268
+ return /* @__PURE__ */ e(Y.Fragment, { children: [
269
+ c > 0 && /* @__PURE__ */ e("span", { className: "text-muted-foreground/30", children: "•" }, void 0, !1, {
270
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
271
+ lineNumber: 401,
272
+ columnNumber: 29
273
+ }, void 0),
274
+ /* @__PURE__ */ e("span", { children: o }, void 0, !1, {
275
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
276
+ lineNumber: 403,
277
+ columnNumber: 27
278
+ }, void 0)
279
+ ] }, r.id, !0, {
280
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
281
+ lineNumber: 399,
282
+ columnNumber: 25
283
+ }, void 0);
284
+ }) }, void 0, !1, {
285
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
286
+ lineNumber: 391,
287
+ columnNumber: 19
288
+ }, void 0),
289
+ /* @__PURE__ */ e(
215
290
  "div",
216
291
  {
217
292
  className: "prose prose-neutral dark:prose-invert max-w-none text-muted-foreground leading-relaxed text-left",
218
- ...S,
219
- children: e.short_description ? /* @__PURE__ */ t(
293
+ ...P,
294
+ children: s.short_description ? /* @__PURE__ */ e(
220
295
  "div",
221
296
  {
222
297
  className: "text-lg mb-4 leading-relaxed",
223
298
  dangerouslySetInnerHTML: {
224
- __html: e.short_description
299
+ __html: s.short_description
225
300
  }
226
- }
227
- ) : d ? /* @__PURE__ */ t("p", { className: "text-lg mb-4 italic text-muted-foreground", children: "Add a short product description." }) : null
228
- }
301
+ },
302
+ void 0,
303
+ !1,
304
+ {
305
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
306
+ lineNumber: 415,
307
+ columnNumber: 21
308
+ },
309
+ void 0
310
+ ) : a ? /* @__PURE__ */ e("p", { className: "text-lg mb-4 italic text-muted-foreground", children: "Add a short product description." }, void 0, !1, {
311
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
312
+ lineNumber: 422,
313
+ columnNumber: 21
314
+ }, void 0) : null
315
+ },
316
+ void 0,
317
+ !1,
318
+ {
319
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
320
+ lineNumber: 410,
321
+ columnNumber: 17
322
+ },
323
+ void 0
229
324
  ),
230
- /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
231
- typeof y == "number" && /* @__PURE__ */ t(
232
- A,
325
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: [
326
+ typeof h == "number" && /* @__PURE__ */ e(
327
+ E,
233
328
  {
234
329
  variant: "destructive",
235
330
  className: "px-2.5 py-1 text-xs font-bold uppercase tracking-wide animate-pulse shadow-sm",
236
- children: l("ecommerce.sale_badge", {
237
- percent: String(X)
331
+ children: i("ecommerce.sale_badge", {
332
+ percent: String(K)
238
333
  })
239
- }
334
+ },
335
+ void 0,
336
+ !1,
337
+ {
338
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
339
+ lineNumber: 430,
340
+ columnNumber: 21
341
+ },
342
+ void 0
240
343
  ),
241
- !v && n > 0 && n < 10 && /* @__PURE__ */ t(
242
- A,
344
+ !x && l > 0 && l < 10 && /* @__PURE__ */ e(
345
+ E,
243
346
  {
244
347
  variant: "outline",
245
348
  className: "text-amber-600 border-amber-200 bg-amber-50",
246
- children: l("ecommerce.low_stock", {
247
- count: String(n)
349
+ children: i("ecommerce.low_stock", {
350
+ count: String(l)
248
351
  })
249
- }
352
+ },
353
+ void 0,
354
+ !1,
355
+ {
356
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
357
+ lineNumber: 440,
358
+ columnNumber: 21
359
+ },
360
+ void 0
250
361
  ),
251
- O && /* @__PURE__ */ t(
252
- A,
362
+ T && /* @__PURE__ */ e(
363
+ E,
253
364
  {
254
365
  variant: "secondary",
255
366
  className: "border border-emerald-200 bg-emerald-50 text-emerald-800",
256
- children: O.label
257
- }
367
+ children: T.label
368
+ },
369
+ void 0,
370
+ !1,
371
+ {
372
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
373
+ lineNumber: 450,
374
+ columnNumber: 21
375
+ },
376
+ void 0
258
377
  )
259
- ] })
260
- ] }) }),
261
- /* @__PURE__ */ a("div", { className: "p-5 rounded-2xl bg-card/60 border border-border/80 shadow-md backdrop-blur-md space-y-4", children: [
262
- v ? /* @__PURE__ */ t(me, { product: e }) : /* @__PURE__ */ a("div", { className: "space-y-3.5", children: [
263
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-4", children: [
264
- /* @__PURE__ */ a("div", { className: "space-y-1", children: [
265
- /* @__PURE__ */ t("span", { className: "text-[10px] font-bold text-muted-foreground uppercase tracking-widest", children: x("ecommerce.price", "Price") }),
266
- /* @__PURE__ */ a("div", { className: "flex items-baseline gap-2.5", children: [
267
- /* @__PURE__ */ t("span", { className: "text-3xl font-extrabold text-foreground", children: F(
268
- y ?? N,
378
+ ] }, void 0, !0, {
379
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
380
+ lineNumber: 428,
381
+ columnNumber: 17
382
+ }, void 0)
383
+ ] }, void 0, !0, {
384
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
385
+ lineNumber: 338,
386
+ columnNumber: 15
387
+ }, void 0) }, void 0, !1, {
388
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
389
+ lineNumber: 337,
390
+ columnNumber: 13
391
+ }, void 0),
392
+ /* @__PURE__ */ e("div", { className: "p-5 rounded-2xl bg-card/60 border border-border/80 shadow-md backdrop-blur-md space-y-4", children: [
393
+ x ? /* @__PURE__ */ e(de, { product: s }, void 0, !1, {
394
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
395
+ lineNumber: 464,
396
+ columnNumber: 17
397
+ }, void 0) : /* @__PURE__ */ e("div", { className: "space-y-3.5", children: [
398
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-between gap-4", children: [
399
+ /* @__PURE__ */ e("div", { className: "space-y-1", children: [
400
+ /* @__PURE__ */ e("span", { className: "text-[10px] font-bold text-muted-foreground uppercase tracking-widest", children: N("ecommerce.price", "Price") }, void 0, !1, {
401
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
402
+ lineNumber: 470,
403
+ columnNumber: 23
404
+ }, void 0),
405
+ /* @__PURE__ */ e("div", { className: "flex items-baseline gap-2.5", children: [
406
+ /* @__PURE__ */ e("span", { className: "text-3xl font-extrabold text-foreground", children: B(
407
+ h ?? D,
269
408
  u
270
- ) }),
271
- typeof y == "number" && /* @__PURE__ */ t("span", { className: "text-lg text-muted-foreground line-through decoration-destructive/20 decoration-1", children: F(N, u) })
272
- ] })
273
- ] }),
274
- !v && (r || !i) && /* @__PURE__ */ a("div", { className: "text-right space-y-1", children: [
275
- /* @__PURE__ */ a("span", { className: "text-[10px] font-bold text-muted-foreground uppercase tracking-widest block", children: [
276
- !i && e.sku && /* @__PURE__ */ a("span", { className: "mr-2 font-normal lowercase normal-case text-muted-foreground/70", children: [
409
+ ) }, void 0, !1, {
410
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
411
+ lineNumber: 474,
412
+ columnNumber: 25
413
+ }, void 0),
414
+ typeof h == "number" && /* @__PURE__ */ e("span", { className: "text-lg text-muted-foreground line-through decoration-destructive/20 decoration-1", children: B(D, u) }, void 0, !1, {
415
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
416
+ lineNumber: 481,
417
+ columnNumber: 27
418
+ }, void 0)
419
+ ] }, void 0, !0, {
420
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
421
+ lineNumber: 473,
422
+ columnNumber: 23
423
+ }, void 0)
424
+ ] }, void 0, !0, {
425
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
426
+ lineNumber: 469,
427
+ columnNumber: 21
428
+ }, void 0),
429
+ !x && (t || !n) && /* @__PURE__ */ e("div", { className: "text-right space-y-1", children: [
430
+ /* @__PURE__ */ e("span", { className: "text-[10px] font-bold text-muted-foreground uppercase tracking-widest block", children: [
431
+ !n && s.sku && /* @__PURE__ */ e("span", { className: "mr-2 font-normal lowercase normal-case text-muted-foreground/70", children: [
277
432
  "SKU: ",
278
- e.sku
279
- ] }),
280
- x("ecommerce.status", "Status")
281
- ] }),
282
- /* @__PURE__ */ t("div", { className: (n ?? 0) > 0 ? "text-emerald-600 dark:text-emerald-400 font-semibold text-sm" : "text-destructive font-semibold text-sm", children: (n ?? 0) > 0 ? W : $ })
283
- ] })
284
- ] }),
285
- i && /* @__PURE__ */ t("div", { className: "space-y-3", children: /* @__PURE__ */ t("div", { className: "grid gap-3 sm:grid-cols-2", children: f.map((s) => {
286
- const o = he(
287
- m,
288
- s.id,
289
- h
433
+ s.sku
434
+ ] }, void 0, !0, {
435
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
436
+ lineNumber: 492,
437
+ columnNumber: 29
438
+ }, void 0),
439
+ N("ecommerce.status", "Status")
440
+ ] }, void 0, !0, {
441
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
442
+ lineNumber: 490,
443
+ columnNumber: 25
444
+ }, void 0),
445
+ /* @__PURE__ */ e("div", { className: (l ?? 0) > 0 ? "text-emerald-600 dark:text-emerald-400 font-semibold text-sm" : "text-destructive font-semibold text-sm", children: (l ?? 0) > 0 ? z : V }, void 0, !1, {
446
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
447
+ lineNumber: 498,
448
+ columnNumber: 25
449
+ }, void 0)
450
+ ] }, void 0, !0, {
451
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
452
+ lineNumber: 489,
453
+ columnNumber: 23
454
+ }, void 0)
455
+ ] }, void 0, !0, {
456
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
457
+ lineNumber: 468,
458
+ columnNumber: 19
459
+ }, void 0),
460
+ n && /* @__PURE__ */ e("div", { className: "space-y-3", children: /* @__PURE__ */ e("div", { className: "grid gap-3 sm:grid-cols-2", children: b.map((r) => {
461
+ const c = pe(
462
+ d,
463
+ r.id,
464
+ p
290
465
  );
291
- return /* @__PURE__ */ a("div", { className: "space-y-1", children: [
292
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between", children: [
293
- /* @__PURE__ */ t(
294
- ae,
466
+ return /* @__PURE__ */ e("div", { className: "space-y-1", children: [
467
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-between", children: [
468
+ /* @__PURE__ */ e(
469
+ re,
295
470
  {
296
- htmlFor: `attribute-${s.id}`,
471
+ htmlFor: `attribute-${r.id}`,
297
472
  className: "text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",
298
- children: s.name
299
- }
473
+ children: r.name
474
+ },
475
+ void 0,
476
+ !1,
477
+ {
478
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
479
+ lineNumber: 520,
480
+ columnNumber: 33
481
+ },
482
+ void 0
300
483
  ),
301
- r?.sku && /* @__PURE__ */ t("span", { className: "text-[10px] text-muted-foreground font-mono", children: r.sku })
302
- ] }),
303
- /* @__PURE__ */ t(
484
+ t?.sku && /* @__PURE__ */ e("span", { className: "text-[10px] text-muted-foreground font-mono", children: t.sku }, void 0, !1, {
485
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
486
+ lineNumber: 527,
487
+ columnNumber: 35
488
+ }, void 0)
489
+ ] }, void 0, !0, {
490
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
491
+ lineNumber: 519,
492
+ columnNumber: 31
493
+ }, void 0),
494
+ /* @__PURE__ */ e(
304
495
  "select",
305
496
  {
306
- id: `attribute-${s.id}`,
497
+ id: `attribute-${r.id}`,
307
498
  className: "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
308
- value: h[s.id] || "",
309
- onChange: (c) => z(
310
- s.id,
311
- c.target.value
499
+ value: p[r.id] || "",
500
+ onChange: (o) => q(
501
+ r.id,
502
+ o.target.value
312
503
  ),
313
- children: s.terms.map((c) => /* @__PURE__ */ t(
504
+ children: r.terms.map((o) => /* @__PURE__ */ e(
314
505
  "option",
315
506
  {
316
- value: c.id,
317
- disabled: !o.has(c.id),
318
- children: c.value
507
+ value: o.id,
508
+ disabled: !c.has(o.id),
509
+ children: o.value
319
510
  },
320
- c.id
511
+ o.id,
512
+ !1,
513
+ {
514
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
515
+ lineNumber: 544,
516
+ columnNumber: 35
517
+ },
518
+ void 0
321
519
  ))
322
- }
520
+ },
521
+ void 0,
522
+ !1,
523
+ {
524
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
525
+ lineNumber: 532,
526
+ columnNumber: 31
527
+ },
528
+ void 0
323
529
  )
324
- ] }, s.id);
325
- }) }) }),
326
- i && !r && /* @__PURE__ */ t("p", { className: "text-xs text-muted-foreground italic pt-1", children: Q }),
327
- /* @__PURE__ */ a("div", { className: "flex items-center gap-3 pt-1", children: [
328
- !v && (n ?? 0) > 0 && /* @__PURE__ */ a("div", { className: "flex items-center border rounded-lg h-12 bg-background border-input select-none", children: [
329
- /* @__PURE__ */ t(
530
+ ] }, r.id, !0, {
531
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
532
+ lineNumber: 518,
533
+ columnNumber: 29
534
+ }, void 0);
535
+ }) }, void 0, !1, {
536
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
537
+ lineNumber: 508,
538
+ columnNumber: 23
539
+ }, void 0) }, void 0, !1, {
540
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
541
+ lineNumber: 507,
542
+ columnNumber: 21
543
+ }, void 0),
544
+ n && !t && /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground italic pt-1", children: H }, void 0, !1, {
545
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
546
+ lineNumber: 561,
547
+ columnNumber: 21
548
+ }, void 0),
549
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-3 pt-1", children: [
550
+ !x && (l ?? 0) > 0 && /* @__PURE__ */ e("div", { className: "flex items-center border rounded-lg h-12 bg-background border-input select-none", children: [
551
+ /* @__PURE__ */ e(
330
552
  "button",
331
553
  {
332
554
  type: "button",
333
- onClick: () => R((s) => Math.max(1, s - 1)),
555
+ onClick: () => j((r) => Math.max(1, r - 1)),
334
556
  className: "px-3 h-full flex items-center justify-center text-muted-foreground hover:text-foreground active:scale-95 transition-all text-lg font-medium",
335
- disabled: P <= 1,
557
+ disabled: C <= 1,
336
558
  children: "-"
337
- }
559
+ },
560
+ void 0,
561
+ !1,
562
+ {
563
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
564
+ lineNumber: 570,
565
+ columnNumber: 25
566
+ },
567
+ void 0
338
568
  ),
339
- /* @__PURE__ */ t("span", { className: "w-8 text-center text-sm font-semibold", children: P }),
340
- /* @__PURE__ */ t(
569
+ /* @__PURE__ */ e("span", { className: "w-8 text-center text-sm font-semibold", children: C }, void 0, !1, {
570
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
571
+ lineNumber: 578,
572
+ columnNumber: 25
573
+ }, void 0),
574
+ /* @__PURE__ */ e(
341
575
  "button",
342
576
  {
343
577
  type: "button",
344
- onClick: () => R(
345
- (s) => n !== null && s >= n ? s : s + 1
578
+ onClick: () => j(
579
+ (r) => l !== null && r >= l ? r : r + 1
346
580
  ),
347
581
  className: "px-3 h-full flex items-center justify-center text-muted-foreground hover:text-foreground active:scale-95 transition-all text-lg font-medium",
348
- disabled: n !== null && P >= n,
582
+ disabled: l !== null && C >= l,
349
583
  children: "+"
350
- }
584
+ },
585
+ void 0,
586
+ !1,
587
+ {
588
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
589
+ lineNumber: 581,
590
+ columnNumber: 25
591
+ },
592
+ void 0
351
593
  )
352
- ] }),
353
- i && (!r || (n ?? 0) <= 0) ? /* @__PURE__ */ t(
354
- se,
594
+ ] }, void 0, !0, {
595
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
596
+ lineNumber: 569,
597
+ columnNumber: 23
598
+ }, void 0),
599
+ n && (!t || (l ?? 0) <= 0) ? /* @__PURE__ */ e(
600
+ te,
355
601
  {
356
602
  disabled: !0,
357
603
  className: "flex-1 h-12 text-md font-bold shadow-md",
358
- children: r ? $ : H
359
- }
360
- ) : /* @__PURE__ */ t(
361
- de,
604
+ children: t ? V : W
605
+ },
606
+ void 0,
607
+ !1,
608
+ {
609
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
610
+ lineNumber: 602,
611
+ columnNumber: 23
612
+ },
613
+ void 0
614
+ ) : /* @__PURE__ */ e(
615
+ ae,
362
616
  {
363
- product: q,
364
- quantity: P,
617
+ product: X,
618
+ quantity: C,
365
619
  className: "flex-1 h-12 text-md font-bold shadow-md transition-all hover:shadow-lg active:scale-[0.98]"
366
- }
620
+ },
621
+ void 0,
622
+ !1,
623
+ {
624
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
625
+ lineNumber: 609,
626
+ columnNumber: 23
627
+ },
628
+ void 0
367
629
  )
368
- ] })
369
- ] }),
370
- /* @__PURE__ */ t(ie, { className: "opacity-60 my-0.5" }),
371
- /* @__PURE__ */ a("div", { className: "grid grid-cols-2 gap-4 text-center text-[11px] font-medium text-muted-foreground pt-1", children: [
372
- /* @__PURE__ */ t("div", { className: "flex items-center justify-center gap-2", children: v ? /* @__PURE__ */ a("span", { className: "inline-flex items-center gap-1.5", children: [
373
- /* @__PURE__ */ t(ee, { className: "h-3.5 w-3.5" }),
374
- l("ecommerce.instant_digital_delivery")
375
- ] }) : /* @__PURE__ */ a("span", { className: "inline-flex items-center gap-1.5", children: [
376
- /* @__PURE__ */ t(te, { className: "h-3.5 w-3.5" }),
377
- l("ecommerce.free_shipping")
378
- ] }) }),
379
- /* @__PURE__ */ t("div", { className: "flex items-center justify-center gap-2", children: /* @__PURE__ */ a("span", { className: "inline-flex items-center gap-1.5", children: [
380
- /* @__PURE__ */ t(re, { className: "h-3.5 w-3.5" }),
381
- l("ecommerce.secure_checkout")
382
- ] }) })
383
- ] })
384
- ] })
385
- ] })
386
- ] }) }),
387
- /* @__PURE__ */ t("div", { className: "min-w-0 w-full", ...g ? void 0 : _, children: g || (e.description_json ? /* @__PURE__ */ t("div", { className: "container mx-auto px-4 md:px-6 pb-12 prose prose-neutral dark:prose-invert max-w-none leading-relaxed", children: /* @__PURE__ */ t(pe, { content: e.description_json }) }) : /* @__PURE__ */ t("div", { className: "container mx-auto px-4 md:px-6 pb-12", children: /* @__PURE__ */ t("p", { className: "italic text-sm text-muted-foreground", children: l("ecommerce.no_description") }) })) }),
388
- w && /* @__PURE__ */ t("div", { id: "reviews-section", className: "border-t border-border mt-12 pt-12", children: w })
389
- ] });
630
+ ] }, void 0, !0, {
631
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
632
+ lineNumber: 567,
633
+ columnNumber: 19
634
+ }, void 0)
635
+ ] }, void 0, !0, {
636
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
637
+ lineNumber: 466,
638
+ columnNumber: 17
639
+ }, void 0),
640
+ /* @__PURE__ */ e(ne, { className: "opacity-60 my-0.5" }, void 0, !1, {
641
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
642
+ lineNumber: 619,
643
+ columnNumber: 15
644
+ }, void 0),
645
+ /* @__PURE__ */ e("div", { className: "grid grid-cols-2 gap-4 text-center text-[11px] font-medium text-muted-foreground pt-1", children: [
646
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-center gap-2", children: x ? /* @__PURE__ */ e("span", { className: "inline-flex items-center gap-1.5", children: [
647
+ /* @__PURE__ */ e(Z, { className: "h-3.5 w-3.5" }, void 0, !1, {
648
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
649
+ lineNumber: 625,
650
+ columnNumber: 23
651
+ }, void 0),
652
+ i("ecommerce.instant_digital_delivery")
653
+ ] }, void 0, !0, {
654
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
655
+ lineNumber: 624,
656
+ columnNumber: 21
657
+ }, void 0) : /* @__PURE__ */ e("span", { className: "inline-flex items-center gap-1.5", children: [
658
+ /* @__PURE__ */ e(ee, { className: "h-3.5 w-3.5" }, void 0, !1, {
659
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
660
+ lineNumber: 630,
661
+ columnNumber: 23
662
+ }, void 0),
663
+ i("ecommerce.free_shipping")
664
+ ] }, void 0, !0, {
665
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
666
+ lineNumber: 629,
667
+ columnNumber: 21
668
+ }, void 0) }, void 0, !1, {
669
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
670
+ lineNumber: 622,
671
+ columnNumber: 17
672
+ }, void 0),
673
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-center gap-2", children: /* @__PURE__ */ e("span", { className: "inline-flex items-center gap-1.5", children: [
674
+ /* @__PURE__ */ e(se, { className: "h-3.5 w-3.5" }, void 0, !1, {
675
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
676
+ lineNumber: 637,
677
+ columnNumber: 21
678
+ }, void 0),
679
+ i("ecommerce.secure_checkout")
680
+ ] }, void 0, !0, {
681
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
682
+ lineNumber: 636,
683
+ columnNumber: 19
684
+ }, void 0) }, void 0, !1, {
685
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
686
+ lineNumber: 635,
687
+ columnNumber: 17
688
+ }, void 0)
689
+ ] }, void 0, !0, {
690
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
691
+ lineNumber: 621,
692
+ columnNumber: 15
693
+ }, void 0)
694
+ ] }, void 0, !0, {
695
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
696
+ lineNumber: 462,
697
+ columnNumber: 13
698
+ }, void 0)
699
+ ] }, void 0, !0, {
700
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
701
+ lineNumber: 336,
702
+ columnNumber: 11
703
+ }, void 0)
704
+ ] }, void 0, !0, {
705
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
706
+ lineNumber: 331,
707
+ columnNumber: 9
708
+ }, void 0) }, void 0, !1, {
709
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
710
+ lineNumber: 330,
711
+ columnNumber: 7
712
+ }, void 0),
713
+ /* @__PURE__ */ e("div", { className: "min-w-0 w-full", ...f ? void 0 : k, children: f || (s.description_json ? /* @__PURE__ */ e("div", { className: "container mx-auto px-4 md:px-6 pb-12 prose prose-neutral dark:prose-invert max-w-none leading-relaxed", children: /* @__PURE__ */ e(me, { content: s.description_json }, void 0, !1, {
714
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
715
+ lineNumber: 652,
716
+ columnNumber: 13
717
+ }, void 0) }, void 0, !1, {
718
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
719
+ lineNumber: 651,
720
+ columnNumber: 11
721
+ }, void 0) : /* @__PURE__ */ e("div", { className: "container mx-auto px-4 md:px-6 pb-12", children: /* @__PURE__ */ e("p", { className: "italic text-sm text-muted-foreground", children: i("ecommerce.no_description") }, void 0, !1, {
722
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
723
+ lineNumber: 656,
724
+ columnNumber: 13
725
+ }, void 0) }, void 0, !1, {
726
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
727
+ lineNumber: 655,
728
+ columnNumber: 11
729
+ }, void 0)) }, void 0, !1, {
730
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
731
+ lineNumber: 647,
732
+ columnNumber: 7
733
+ }, void 0),
734
+ g && /* @__PURE__ */ e("div", { id: "reviews-section", className: "border-t border-border mt-12 pt-12", children: g }, void 0, !1, {
735
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
736
+ lineNumber: 665,
737
+ columnNumber: 9
738
+ }, void 0)
739
+ ] }, void 0, !0, {
740
+ fileName: "C:/Users/desjardinsn/Desktop/nextblock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",
741
+ lineNumber: 329,
742
+ columnNumber: 5
743
+ }, void 0);
390
744
  };
391
745
  export {
392
- je as ProductDetailsLayout
746
+ Ae as ProductDetailsLayout
393
747
  };