@nextblock-cms/ecom 0.19.0 → 0.19.3

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 (161) hide show
  1. package/index.cjs.js +1 -1
  2. package/index.es.js +26 -25
  3. package/lib/CurrencyProvider.cjs.js +1 -1
  4. package/lib/CurrencyProvider.es.js +41 -45
  5. package/lib/PaymentReadinessProvider.cjs.js +1 -1
  6. package/lib/PaymentReadinessProvider.es.js +15 -19
  7. package/lib/cart-store.cjs.js +1 -1
  8. package/lib/cart-store.d.ts +4 -0
  9. package/lib/cart-store.es.js +77 -69
  10. package/lib/components/AccountNavigationMenu.cjs.js +1 -1
  11. package/lib/components/AccountNavigationMenu.es.js +44 -62
  12. package/lib/components/AddToCartButton.cjs.js +1 -1
  13. package/lib/components/AddToCartButton.es.js +50 -78
  14. package/lib/components/Cart.cjs.js +1 -1
  15. package/lib/components/Cart.d.ts +1 -1
  16. package/lib/components/Cart.es.js +158 -377
  17. package/lib/components/CartDrawer.cjs.js +1 -1
  18. package/lib/components/CartDrawer.es.js +143 -297
  19. package/lib/components/CartIcon.cjs.js +1 -1
  20. package/lib/components/CartIcon.es.js +21 -47
  21. package/lib/components/Checkout.cjs.js +1 -1
  22. package/lib/components/Checkout.d.ts +1 -1
  23. package/lib/components/Checkout.es.js +839 -1627
  24. package/lib/components/CouponForm.cjs.js +1 -1
  25. package/lib/components/CouponForm.es.js +104 -155
  26. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  27. package/lib/components/CurrencySwitcher.es.js +14 -33
  28. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  29. package/lib/components/CustomerProfileForm.d.ts +1 -1
  30. package/lib/components/CustomerProfileForm.es.js +264 -672
  31. package/lib/components/FeaturedProduct.cjs.js +1 -1
  32. package/lib/components/FeaturedProduct.es.js +54 -126
  33. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  34. package/lib/components/FreemiusLicensePanel.es.js +45 -125
  35. package/lib/components/InvoiceDocument.cjs.js +1 -1
  36. package/lib/components/InvoiceDocument.es.js +148 -487
  37. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  38. package/lib/components/InvoiceViewerShell.d.ts +4 -1
  39. package/lib/components/InvoiceViewerShell.es.js +59 -142
  40. package/lib/components/ProductCard.cjs.js +1 -1
  41. package/lib/components/ProductCard.d.ts +3 -1
  42. package/lib/components/ProductCard.es.js +128 -242
  43. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  44. package/lib/components/ProductDetailsLayout.es.js +315 -657
  45. package/lib/components/ProductGallery.cjs.js +1 -1
  46. package/lib/components/ProductGallery.d.ts +2 -0
  47. package/lib/components/ProductGallery.es.js +37 -66
  48. package/lib/components/ProductGrid.cjs.js +1 -1
  49. package/lib/components/ProductGrid.es.js +23 -32
  50. package/lib/components/ShippingEstimator.cjs.js +1 -1
  51. package/lib/components/ShippingEstimator.es.js +124 -231
  52. package/lib/components/ShortDescription.cjs.js +1 -0
  53. package/lib/components/ShortDescription.d.ts +19 -0
  54. package/lib/components/ShortDescription.es.js +18 -0
  55. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  56. package/lib/components/SimpleTiptapRenderer.es.js +111 -294
  57. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  58. package/lib/components/SubscriptionSelector.es.js +120 -181
  59. package/lib/components/media/MediaPickerDialog.d.ts +1 -1
  60. package/lib/components/media/MediaUploadForm.d.ts +1 -1
  61. package/lib/invoice.cjs.js +1 -1
  62. package/lib/invoice.d.ts +1 -1
  63. package/lib/invoice.es.js +6 -5
  64. package/lib/order-inventory.d.ts +1 -1
  65. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  66. package/lib/pages/cms/coupons/CouponEditorForm.es.js +115 -375
  67. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  68. package/lib/pages/cms/coupons/CouponsPage.es.js +116 -368
  69. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  70. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +26 -62
  71. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  72. package/lib/pages/cms/coupons/EditCouponPage.es.js +35 -71
  73. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  74. package/lib/pages/cms/coupons/ProductScopePicker.es.js +72 -167
  75. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  76. package/lib/pages/cms/orders/ExportReportsDialog.es.js +87 -247
  77. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  78. package/lib/pages/cms/orders/OrderDetailPage.es.js +95 -283
  79. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  80. package/lib/pages/cms/orders/OrderPrintButton.es.js +9 -21
  81. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  82. package/lib/pages/cms/orders/OrderStatusForm.es.js +46 -106
  83. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  84. package/lib/pages/cms/orders/OrdersPage.es.js +78 -257
  85. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  86. package/lib/pages/cms/payments/PaymentsClient.es.js +192 -580
  87. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  88. package/lib/pages/cms/payments/PaymentsPage.es.js +14 -22
  89. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  90. package/lib/pages/cms/products/ProductsPage.es.js +47 -87
  91. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  92. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +97 -177
  93. package/lib/pages/cms/products/actions.d.ts +20 -20
  94. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  95. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +40 -84
  96. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  97. package/lib/pages/cms/products/attributes/components/AttributeManager.d.ts +1 -1
  98. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +192 -455
  99. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  100. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +28 -72
  101. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  102. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +183 -490
  103. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  104. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +69 -177
  105. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  106. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +102 -213
  107. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  108. package/lib/pages/cms/products/components/DeleteProductButton.es.js +25 -45
  109. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  110. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +58 -202
  111. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  112. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +89 -235
  113. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  114. package/lib/pages/cms/products/components/ProductForm.es.js +526 -1110
  115. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  116. package/lib/pages/cms/products/components/ProductMediaManager.es.js +63 -154
  117. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  118. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +213 -544
  119. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  120. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +91 -207
  121. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  122. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +16 -28
  123. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  124. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +25 -37
  125. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  126. package/lib/pages/cms/products/components/VariationsEditor.es.js +261 -492
  127. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  128. package/lib/pages/cms/products/inventory/InventoryPage.es.js +12 -32
  129. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  130. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +145 -365
  131. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  132. package/lib/pages/cms/products/new/NewProductPage.es.js +30 -42
  133. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  134. package/lib/pages/cms/shipping/ShippingPage.es.js +155 -507
  135. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  136. package/lib/pages/cms/shipping/components/RateForm.d.ts +1 -1
  137. package/lib/pages/cms/shipping/components/RateForm.es.js +334 -717
  138. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  139. package/lib/pages/cms/shipping/components/ZoneForm.es.js +158 -392
  140. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  141. package/lib/pages/cms/taxes/TaxesPage.es.js +119 -447
  142. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  143. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +52 -156
  144. package/lib/product-actions.d.ts +31 -31
  145. package/lib/product-context.cjs.js +1 -1
  146. package/lib/product-context.es.js +10 -14
  147. package/lib/shared-inventory.d.ts +1 -1
  148. package/lib/states.cjs.js +1 -1
  149. package/lib/states.d.ts +2 -0
  150. package/lib/states.es.js +63 -29
  151. package/lib/trials.cjs.js +1 -1
  152. package/lib/trials.d.ts +10 -3
  153. package/lib/trials.es.js +28 -21
  154. package/lib/types.d.ts +2 -0
  155. package/lib/use-price-formatter.cjs.js +1 -0
  156. package/lib/use-price-formatter.d.ts +11 -0
  157. package/lib/use-price-formatter.es.js +13 -0
  158. package/lib/variation-utils.cjs.js +1 -1
  159. package/lib/variation-utils.d.ts +10 -0
  160. package/lib/variation-utils.es.js +139 -123
  161. package/package.json +4 -4
@@ -1,18 +1,19 @@
1
1
  'use client';
2
- import { jsxDEV as s, Fragment as y } from "react/jsx-dev-runtime";
3
- import { AddToCartButton as w } from "./AddToCartButton.es.js";
4
- import { formatPrice as i, useTranslations as S, majorUnitAmountToMinor as k, cn as f } from "@nextblock-cms/utils";
5
- import h from "next/link";
6
- import { useCurrency as A } from "../CurrencyProvider.es.js";
7
- import { resolvePriceRangeForCurrency as L, resolveEffectivePriceForCurrency as g, resolvePriceForCurrency as P } from "../currency.es.js";
8
- import { getTrialSummary as T } from "../trials.es.js";
9
- import { resolveTranslatedText as E } from "../variation-utils.es.js";
10
- const J = ({ product: e, className: _ }) => {
11
- const { activeCurrencyCode: l, currencies: c } = A(), n = L({
2
+ import { jsxs as l, jsx as r, Fragment as T } from "react/jsx-runtime";
3
+ import { AddToCartButton as M } from "./AddToCartButton.es.js";
4
+ import { useTranslations as $, majorUnitAmountToMinor as N, cn as _ } from "@nextblock-cms/utils";
5
+ import { usePriceFormatter as E } from "../use-price-formatter.es.js";
6
+ import y from "next/link";
7
+ import { useCurrency as z } from "../CurrencyProvider.es.js";
8
+ import { resolvePriceRangeForCurrency as B, resolveEffectivePriceForCurrency as P, resolvePriceForCurrency as w } from "../currency.es.js";
9
+ import { getTrialSummary as q } from "../trials.es.js";
10
+ import { resolveTranslatedText as U } from "../variation-utils.es.js";
11
+ const X = ({ product: e, className: C, priority: S = !1 }) => {
12
+ const t = E(), { activeCurrencyCode: s, currencies: c } = z(), n = B({
12
13
  entries: e.variants?.length ? e.variants : e.product_variants?.length ? e.product_variants : [],
13
- currencyCode: l,
14
+ currencyCode: s,
14
15
  currencies: c
15
- }), u = !!(e.has_variants && n), o = g({
16
+ }), g = !!(e.has_variants && n), m = P({
16
17
  prices: e.prices,
17
18
  salePrices: e.sale_prices,
18
19
  fallbackPrice: e.price,
@@ -22,231 +23,136 @@ const J = ({ product: e, className: _ }) => {
22
23
  scheduledPrice: e.scheduled_price,
23
24
  scheduledPrices: e.scheduled_prices,
24
25
  scheduledPriceAt: e.scheduled_price_at,
25
- currencyCode: l,
26
+ currencyCode: s,
26
27
  currencies: c
27
- }), j = u && n ? n.min === n.max ? i(n.min, l) : `${i(n.min, l)} - ${i(
28
+ }), k = g && n ? n.min === n.max ? t(n.min, s) : `${t(n.min, s)} - ${t(
28
29
  n.max,
29
- l
30
- )}` : i(o.sale_price ?? o.price, l), R = e.variants?.length ? e.variants : e.product_variants?.length ? e.product_variants : [], B = u ? R.some(
31
- (r) => g({
32
- prices: r.prices,
33
- salePrices: r.sale_prices,
34
- fallbackPrice: r.price,
35
- fallbackSalePrice: r.sale_price,
36
- saleStartAt: r.sale_start_at,
37
- saleEndAt: r.sale_end_at,
38
- scheduledPrice: r.scheduled_price,
39
- scheduledPrices: r.scheduled_prices,
40
- scheduledPriceAt: r.scheduled_price_at,
41
- currencyCode: l,
30
+ s
31
+ )}` : t(m.sale_price ?? m.price, s), j = e.variants?.length ? e.variants : e.product_variants?.length ? e.product_variants : [], A = g ? j.some(
32
+ (a) => P({
33
+ prices: a.prices,
34
+ salePrices: a.sale_prices,
35
+ fallbackPrice: a.price,
36
+ fallbackSalePrice: a.sale_price,
37
+ saleStartAt: a.sale_start_at,
38
+ saleEndAt: a.sale_end_at,
39
+ scheduledPrice: a.scheduled_price,
40
+ scheduledPrices: a.scheduled_prices,
41
+ scheduledPriceAt: a.scheduled_price_at,
42
+ currencyCode: s,
42
43
  currencies: c
43
44
  }).sale_price != null
44
- ) : o.sale_price != null, { t, lang: D } = S(), x = t("ecommerce.on_sale"), U = x === "ecommerce.on_sale" ? "On Sale" : x, N = T(e), a = e.freemius_plans?.[0]?.freemius_pricing?.[0], m = c.find((r) => r.is_default)?.code || "USD", p = a?.override_monthly_price ?? a?.api_monthly_price, C = a?.override_annual_price ?? a?.api_annual_price, d = typeof p == "number" ? P({
45
+ ) : m.sale_price != null, { t: i, lang: F } = $(), x = i("ecommerce.on_sale"), R = x === "ecommerce.on_sale" ? "On Sale" : x, u = q(e, i), o = e.freemius_plans?.[0]?.freemius_pricing?.[0], d = c.find((a) => a.is_default)?.code || "USD", p = o?.override_monthly_price ?? o?.api_monthly_price, v = o?.override_annual_price ?? o?.api_annual_price, h = typeof p == "number" ? w({
45
46
  prices: {
46
- [m]: k(
47
+ [d]: N(
47
48
  p,
48
- m
49
+ d
49
50
  )
50
51
  },
51
- currencyCode: l,
52
+ currencyCode: s,
52
53
  currencies: c
53
- }) : null, b = typeof C == "number" ? P({
54
+ }) : null, f = typeof v == "number" ? w({
54
55
  prices: {
55
- [m]: k(
56
- C,
57
- m
56
+ [d]: N(
57
+ v,
58
+ d
58
59
  )
59
60
  },
60
- currencyCode: l,
61
+ currencyCode: s,
61
62
  currencies: c
62
63
  }) : null;
63
- return /* @__PURE__ */ s("div", { className: f("group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-all hover:shadow-md", _), children: [
64
- /* @__PURE__ */ s(h, { href: `/product/${e.slug}`, className: "relative aspect-square overflow-hidden bg-muted", children: [
65
- B && /* @__PURE__ */ s("span", { className: "absolute left-3 top-3 z-10 rounded-full bg-destructive px-2.5 py-1 text-[10px] font-bold uppercase tracking-wider text-destructive-foreground shadow-sm", children: U }, void 0, !1, {
66
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
67
- lineNumber: 135,
68
- columnNumber: 11
69
- }, void 0),
70
- e.image_url ? /* @__PURE__ */ s(
71
- "img",
72
- {
73
- src: e.image_url,
74
- alt: e.title,
75
- className: "h-full w-full object-cover object-center transition-transform duration-300 group-hover:scale-105"
76
- },
77
- void 0,
78
- !1,
79
- {
80
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
81
- lineNumber: 140,
82
- columnNumber: 11
83
- },
84
- void 0
85
- ) : /* @__PURE__ */ s("div", { className: "flex h-full items-center justify-center text-muted-foreground", children: "No Image" }, void 0, !1, {
86
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
87
- lineNumber: 146,
88
- columnNumber: 11
89
- }, void 0)
90
- ] }, void 0, !0, {
91
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
92
- lineNumber: 133,
93
- columnNumber: 7
94
- }, void 0),
95
- /* @__PURE__ */ s("div", { className: "flex flex-1 flex-col p-4", children: [
96
- e.categories && e.categories.length > 0 && /* @__PURE__ */ s("div", { className: "text-[10px] font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400 mb-1", children: e.categories.map((r) => E(r.name, r.name_translations, D)).join(" • ") }, void 0, !1, {
97
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
98
- lineNumber: 154,
99
- columnNumber: 11
100
- }, void 0),
101
- /* @__PURE__ */ s(h, { href: `/product/${e.slug}`, className: "mb-2", children: /* @__PURE__ */ s("h3", { className: "line-clamp-1 text-lg font-medium text-foreground group-hover:underline", children: e.title }, void 0, !1, {
102
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
103
- lineNumber: 161,
104
- columnNumber: 12
105
- }, void 0) }, void 0, !1, {
106
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
107
- lineNumber: 160,
108
- columnNumber: 9
109
- }, void 0),
110
- /* @__PURE__ */ s("div", { className: "flex items-center gap-1 mb-2 mt-0.5 text-xs text-muted-foreground min-h-[1.25rem] select-none", "aria-label": `Rating: ${e.average_rating ?? 0} out of 5 stars`, children: e.total_reviews && e.total_reviews > 0 ? /* @__PURE__ */ s(y, { children: [
111
- /* @__PURE__ */ s("div", { className: "flex items-center text-amber-500 mr-1", children: Array.from({ length: 5 }).map((r, v) => {
112
- const H = e.average_rating ?? 0;
113
- return /* @__PURE__ */ s(
114
- "svg",
64
+ return /* @__PURE__ */ l("div", { className: _("group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-shadow hover:shadow-md", C), children: [
65
+ /* @__PURE__ */ l(
66
+ y,
67
+ {
68
+ href: `/product/${e.slug}`,
69
+ tabIndex: -1,
70
+ "aria-hidden": "true",
71
+ className: "relative aspect-square overflow-hidden bg-muted",
72
+ children: [
73
+ A && /* @__PURE__ */ r("span", { className: "absolute left-3 top-3 z-10 rounded-full bg-destructive px-2.5 py-1 text-[10px] font-bold uppercase tracking-wider text-destructive-foreground shadow-sm", children: R }),
74
+ e.image_url ? /* @__PURE__ */ r(
75
+ "img",
115
76
  {
116
- className: f(
117
- "h-3.5 w-3.5 fill-current",
118
- v < Math.round(H) ? "text-amber-500" : "text-slate-200 dark:text-slate-800"
119
- ),
120
- viewBox: "0 0 20 20",
121
- fill: "currentColor",
122
- children: /* @__PURE__ */ s("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, {
123
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
124
- lineNumber: 183,
125
- columnNumber: 23
126
- }, void 0)
127
- },
128
- v,
129
- !1,
130
- {
131
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
132
- lineNumber: 174,
133
- columnNumber: 21
134
- },
135
- void 0
136
- );
137
- }) }, void 0, !1, {
138
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
139
- lineNumber: 170,
140
- columnNumber: 15
141
- }, void 0),
142
- /* @__PURE__ */ s("span", { className: "font-semibold text-slate-700 dark:text-slate-300", children: Number(e.average_rating).toFixed(1) }, void 0, !1, {
143
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
144
- lineNumber: 188,
145
- columnNumber: 15
146
- }, void 0),
147
- /* @__PURE__ */ s("span", { className: "ml-0.5", children: [
77
+ src: e.image_url,
78
+ alt: "",
79
+ width: 600,
80
+ height: 600,
81
+ loading: S ? "eager" : "lazy",
82
+ decoding: "async",
83
+ className: "h-full w-full object-cover object-center transition-transform duration-300 group-hover:scale-105"
84
+ }
85
+ ) : /* @__PURE__ */ r("div", { className: "flex h-full items-center justify-center text-muted-foreground", children: i("ecommerce.no_image") === "ecommerce.no_image" ? "No image" : i("ecommerce.no_image") })
86
+ ]
87
+ }
88
+ ),
89
+ /* @__PURE__ */ l("div", { className: "flex flex-1 flex-col p-4", children: [
90
+ e.categories && e.categories.length > 0 && /* @__PURE__ */ r("div", { className: "text-[10px] font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400 mb-1", children: e.categories.map((a) => U(a.name, a.name_translations, F)).join(" • ") }),
91
+ /* @__PURE__ */ r(y, { href: `/product/${e.slug}`, className: "mb-2", children: /* @__PURE__ */ r("h3", { className: "line-clamp-1 text-lg font-medium text-foreground group-hover:underline", children: e.title }) }),
92
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-1 mb-2 mt-0.5 text-xs text-muted-foreground min-h-[1.25rem] select-none", children: e.total_reviews && e.total_reviews > 0 ? /* @__PURE__ */ l(T, { children: [
93
+ /* @__PURE__ */ r(
94
+ "div",
95
+ {
96
+ role: "img",
97
+ "aria-label": i("ecommerce.rating_out_of_5", { rating: Number(e.average_rating ?? 0).toFixed(1) }) === "ecommerce.rating_out_of_5" ? `Rated ${Number(e.average_rating ?? 0).toFixed(1)} out of 5` : i("ecommerce.rating_out_of_5", { rating: Number(e.average_rating ?? 0).toFixed(1) }),
98
+ className: "flex items-center text-amber-500 mr-1",
99
+ children: Array.from({ length: 5 }).map((a, b) => {
100
+ const L = e.average_rating ?? 0;
101
+ return /* @__PURE__ */ r(
102
+ "svg",
103
+ {
104
+ className: _(
105
+ "h-3.5 w-3.5 fill-current",
106
+ b < Math.round(L) ? "text-amber-500" : "text-slate-200 dark:text-slate-800"
107
+ ),
108
+ viewBox: "0 0 20 20",
109
+ fill: "currentColor",
110
+ "aria-hidden": "true",
111
+ children: /* @__PURE__ */ r("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" })
112
+ },
113
+ b
114
+ );
115
+ })
116
+ }
117
+ ),
118
+ /* @__PURE__ */ r("span", { className: "font-semibold text-slate-700 dark:text-slate-300", children: Number(e.average_rating).toFixed(1) }),
119
+ /* @__PURE__ */ l("span", { className: "ml-0.5", children: [
148
120
  "(",
149
121
  e.total_reviews,
150
122
  ")"
151
- ] }, void 0, !0, {
152
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
153
- lineNumber: 191,
154
- columnNumber: 15
155
- }, void 0)
156
- ] }, void 0, !0, {
157
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
158
- lineNumber: 169,
159
- columnNumber: 13
160
- }, void 0) : /* @__PURE__ */ s("span", { className: "text-slate-400 dark:text-slate-600", children: t("reviews.no_reviews") }, void 0, !1, {
161
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
162
- lineNumber: 194,
163
- columnNumber: 13
164
- }, void 0) }, void 0, !1, {
165
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
166
- lineNumber: 167,
167
- columnNumber: 9
168
- }, void 0),
169
- /* @__PURE__ */ s("div", { className: "mb-4", children: e.product_type === "digital" && (d || b) ? /* @__PURE__ */ s("div", { className: "flex flex-wrap items-baseline gap-x-3 gap-y-1", children: [
170
- d && /* @__PURE__ */ s("div", { className: "flex items-baseline gap-0.5", children: [
171
- /* @__PURE__ */ s("span", { className: "text-xl font-bold text-primary", children: i(d.price, l) }, void 0, !1, {
172
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
173
- lineNumber: 203,
174
- columnNumber: 19
175
- }, void 0),
176
- /* @__PURE__ */ s("span", { className: "text-xs font-medium text-muted-foreground lowercase", children: [
123
+ ] })
124
+ ] }) : /* @__PURE__ */ r("span", { className: "text-slate-400 dark:text-slate-600", children: i("reviews.no_reviews") }) }),
125
+ /* @__PURE__ */ r("div", { className: "mb-4", children: e.product_type === "digital" && (h || f) ? /* @__PURE__ */ l("div", { className: "flex flex-wrap items-baseline gap-x-3 gap-y-1", children: [
126
+ h && /* @__PURE__ */ l("div", { className: "flex items-baseline gap-0.5", children: [
127
+ /* @__PURE__ */ r("span", { className: "text-xl font-bold text-primary", children: t(h.price, s) }),
128
+ /* @__PURE__ */ l("span", { className: "text-xs font-medium text-muted-foreground lowercase", children: [
177
129
  "/ ",
178
- t("ecommerce.month")
179
- ] }, void 0, !0, {
180
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
181
- lineNumber: 206,
182
- columnNumber: 19
183
- }, void 0)
184
- ] }, void 0, !0, {
185
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
186
- lineNumber: 202,
187
- columnNumber: 17
188
- }, void 0),
189
- b && /* @__PURE__ */ s("div", { className: "flex items-baseline gap-0.5", children: [
190
- /* @__PURE__ */ s("span", { className: f("font-bold text-primary", d ? "text-lg" : "text-xl"), children: i(b.price, l) }, void 0, !1, {
191
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
192
- lineNumber: 213,
193
- columnNumber: 19
194
- }, void 0),
195
- /* @__PURE__ */ s("span", { className: "text-xs font-medium text-muted-foreground lowercase", children: [
130
+ i("ecommerce.month")
131
+ ] })
132
+ ] }),
133
+ f && /* @__PURE__ */ l("div", { className: "flex items-baseline gap-0.5", children: [
134
+ /* @__PURE__ */ r("span", { className: _("font-bold text-primary", h ? "text-lg" : "text-xl"), children: t(f.price, s) }),
135
+ /* @__PURE__ */ l("span", { className: "text-xs font-medium text-muted-foreground lowercase", children: [
196
136
  "/ ",
197
- t("ecommerce.year")
198
- ] }, void 0, !0, {
199
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
200
- lineNumber: 216,
201
- columnNumber: 19
202
- }, void 0)
203
- ] }, void 0, !0, {
204
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
205
- lineNumber: 212,
206
- columnNumber: 17
207
- }, void 0)
208
- ] }, void 0, !0, {
209
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
210
- lineNumber: 200,
211
- columnNumber: 13
212
- }, void 0) : /* @__PURE__ */ s("div", { className: "flex items-baseline gap-2", children: [
213
- /* @__PURE__ */ s("span", { className: "text-xl font-bold text-primary", children: j }, void 0, !1, {
214
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
215
- lineNumber: 224,
216
- columnNumber: 15
217
- }, void 0),
218
- !u && o.sale_price && /* @__PURE__ */ s("span", { className: "text-sm text-muted-foreground line-through", children: i(o.price, l) }, void 0, !1, {
219
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
220
- lineNumber: 228,
221
- columnNumber: 17
222
- }, void 0)
223
- ] }, void 0, !0, {
224
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
225
- lineNumber: 223,
226
- columnNumber: 13
227
- }, void 0) }, void 0, !1, {
228
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
229
- lineNumber: 198,
230
- columnNumber: 9
231
- }, void 0),
232
- N && /* @__PURE__ */ s("div", { className: "mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs text-emerald-900", children: [
233
- /* @__PURE__ */ s("div", { className: "font-semibold", children: N.label }, void 0, !1, {
234
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
235
- lineNumber: 238,
236
- columnNumber: 13
237
- }, void 0),
238
- /* @__PURE__ */ s("div", { className: "text-emerald-700", children: N.paymentRequirementLabel }, void 0, !1, {
239
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
240
- lineNumber: 239,
241
- columnNumber: 13
242
- }, void 0)
243
- ] }, void 0, !0, {
244
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
245
- lineNumber: 237,
246
- columnNumber: 11
247
- }, void 0),
248
- /* @__PURE__ */ s("div", { className: "mt-auto", children: /* @__PURE__ */ s(
249
- w,
137
+ i("ecommerce.year")
138
+ ] })
139
+ ] })
140
+ ] }) : /* @__PURE__ */ l("div", { className: "flex items-baseline gap-2", children: [
141
+ /* @__PURE__ */ r("span", { className: "text-xl font-bold text-primary", children: k }),
142
+ !g && m.sale_price && /* @__PURE__ */ l("span", { className: "text-sm text-muted-foreground tabular-nums", children: [
143
+ /* @__PURE__ */ l("span", { className: "sr-only", children: [
144
+ i("ecommerce.regular_price") === "ecommerce.regular_price" ? "Regular price" : i("ecommerce.regular_price"),
145
+ " "
146
+ ] }),
147
+ /* @__PURE__ */ r("s", { children: t(m.price, s) })
148
+ ] })
149
+ ] }) }),
150
+ u && /* @__PURE__ */ l("div", { className: "mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs text-emerald-900", children: [
151
+ /* @__PURE__ */ r("div", { className: "font-semibold", children: u.label }),
152
+ /* @__PURE__ */ r("div", { className: "text-emerald-700", children: u.paymentRequirementLabel })
153
+ ] }),
154
+ /* @__PURE__ */ r("div", { className: "mt-auto", children: /* @__PURE__ */ r(
155
+ M,
250
156
  {
251
157
  product: {
252
158
  ...e,
@@ -256,31 +162,11 @@ const J = ({ product: e, className: _ }) => {
256
162
  sale_prices: e.sale_prices
257
163
  },
258
164
  className: "w-full"
259
- },
260
- void 0,
261
- !1,
262
- {
263
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
264
- lineNumber: 246,
265
- columnNumber: 11
266
- },
267
- void 0
268
- ) }, void 0, !1, {
269
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
270
- lineNumber: 245,
271
- columnNumber: 9
272
- }, void 0)
273
- ] }, void 0, !0, {
274
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
275
- lineNumber: 152,
276
- columnNumber: 7
277
- }, void 0)
278
- ] }, void 0, !0, {
279
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",
280
- lineNumber: 132,
281
- columnNumber: 5
282
- }, void 0);
165
+ }
166
+ ) })
167
+ ] })
168
+ ] });
283
169
  };
284
170
  export {
285
- J as ProductCard
171
+ X as ProductCard
286
172
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),u=require("react"),B=require("lucide-react"),H=require("@nextblock-cms/ui/badge"),Y=require("@nextblock-cms/ui/button"),Z=require("@nextblock-cms/ui/label"),ee=require("@nextblock-cms/ui/separator"),E=require("@nextblock-cms/utils"),se=require("../product-context.cjs.js"),te=require("./ProductGallery.cjs.js"),re=require("./AddToCartButton.cjs.js"),ie=require("./SubscriptionSelector.cjs.js"),O=require("./SimpleTiptapRenderer.cjs.js"),x=require("../variation-utils.cjs.js"),oe=require("../CurrencyProvider.cjs.js"),$=require("../currency.cjs.js"),ne=require("../types.cjs.js"),le=require("../trials.cjs.js");function w(a,f,P,L){const _={kind:"product-field",field:f,input:P,label:L},s=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";let N=(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(/\/+$/,"");try{(N.startsWith("http://")||N.startsWith("https://"))&&(N=new URL(N).hostname)}catch{}const d=process.env.NEXTBLOCK_VERCEL_PROJECT_ID||process.env.VERCEL_PROJECT_ID,v=process.env.NEXTBLOCK_VERCEL_WORKSPACE_ID||process.env.VERCEL_ORG_ID,j={origin:N,editUrl:`${s}/cms/products/${a.id}/edit`,data:{parentType:"product",parentId:a.id,slug:a.slug,languageId:a.language_id,draftId:null,target:_}};return d&&(j.projectId=d),v&&(j.workspaceId=v),{"data-vercel-edit-info":JSON.stringify(j),"data-vercel-edit-target":JSON.stringify(_),"data-nextblock-visual-edit":`product:${f}`}}const ce=({visualEditingEnabled:a=!1,descriptionNode:f,reviewsNode:P,canPurchase:L=!0,purchaseFallbackNode:_})=>{const s=se.useProduct(),{t:c,lang:N}=E.useTranslations(),{activeCurrencyCode:d,currencies:v}=oe.useCurrency(),j=a?w(s,"title","plain-text","Product title"):void 0,M=a?w(s,"short_description","plain-text","Short description"):void 0,F=a?w(s,"description_json","tiptap","Product description"):void 0,D=(r,l,o)=>{const I=c(r,o);return I===r?l:I},R=s.images&&s.images.length>0?s.images:s.image_url?[{url:s.image_url,alt:s.title}]:[],k=s.custom_props?.provider==="freemius"||ne.isDigitalProduct(s),S=le.getTrialSummary(s),i=!k&&!!(s.has_variants&&s.attributes?.length&&s.variants?.length),b=s.attributes||[],m=s.variants||[],[g,V]=u.useState(()=>x.chooseInitialVariantSelections(b,m)),[C,U]=u.useState(1);u.useEffect(()=>{U(1)},[s.id]),u.useEffect(()=>{i&&V(x.chooseInitialVariantSelections(b,m))},[b,i,s.id,m]);const p=u.useMemo(()=>i?x.normalizeSelectionsToAvailableVariants(b,m,g):g,[b,i,g,m]);u.useEffect(()=>{JSON.stringify(p)!==JSON.stringify(g)&&V(p)},[p,g]);const t=u.useMemo(()=>i?x.findMatchingVariant(m,p):null,[i,p,m]),T=$.resolveEffectivePriceForCurrency({prices:s.prices,salePrices:s.sale_prices,fallbackPrice:s.price,fallbackSalePrice:s.sale_price,saleStartAt:s.sale_start_at,saleEndAt:s.sale_end_at,scheduledPrice:s.scheduled_price,scheduledPrices:s.scheduled_prices,scheduledPriceAt:s.scheduled_price_at,currencyCode:d,currencies:v}),q=i&&t?$.resolveEffectivePriceForCurrency({prices:t.prices,salePrices:t.sale_prices,fallbackPrice:t.price,fallbackSalePrice:t.sale_price,saleStartAt:t.sale_start_at,saleEndAt:t.sale_end_at,scheduledPrice:t.scheduled_price,scheduledPrices:t.scheduled_prices,scheduledPriceAt:t.scheduled_price_at,currencyCode:d,currencies:v}):null,h=q?.price??T.price,y=q?.sale_price??T.sale_price,n=i?t?.stock_quantity??0:s.stock??0,J=u.useMemo(()=>{if(!t?.image_url)return R;const r={url:t.image_url,alt:`${s.title} ${t.label}`},l=R.filter(o=>o.url!==t.image_url);return[r,...l]},[R,s.title,t]),G=typeof y=="number"&&h>0?Math.round((h-y)/h*100):0,z=i&&t?{...s,sku:t.sku,price:t.price,prices:t.prices,sale_price:typeof t.sale_price=="number"?t.sale_price:null,sale_prices:t.sale_prices,image_url:t.image_url||s.image_url,stock:t.stock_quantity,variant_id:t.id,variant_label:t.label,selected_options:t.selected_options,currency_code:d}:{...s,currency_code:d},K=(r,l)=>{V(o=>x.normalizeSelectionsToAvailableVariants(b,m,{...o,[r]:l}))},X=D("ecommerce.in_stock",`${n} in stock`,{count:String(n)}),A=D("ecommerce.out_of_stock","Out of stock"),W=D("ecommerce.select_options","Select Options"),Q=D("ecommerce.variant_selection_required","Select one term from every dropdown to resolve a variation.");return e.jsxDEV("div",{className:"w-full animate-in fade-in slide-in-from-bottom-4 duration-700 ease-out",children:[e.jsxDEV("div",{className:"container mx-auto px-4 md:px-6 py-12",children:e.jsxDEV("div",{className:"grid gap-12 lg:grid-cols-[2fr_3fr] items-start",children:[e.jsxDEV("div",{className:"w-full max-w-2xl mx-auto lg:max-w-none",children:e.jsxDEV(te.ProductGallery,{images:J,className:"w-full"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:343,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:342,columnNumber:11},void 0),e.jsxDEV("div",{className:"flex flex-col gap-4 pb-2 max-w-xl mx-auto lg:mx-0 lg:max-w-none",children:[e.jsxDEV("div",{className:"space-y-6",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("h1",{className:"text-3xl sm:text-4xl lg:text-5xl font-extrabold tracking-tight text-foreground leading-[1.1] lg:mt-0",...j,children:s.title},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:351,columnNumber:17},void 0),e.jsxDEV("div",{className:"flex items-center gap-2 mt-2",children:e.jsxDEV("a",{href:"#reviews-section",className:"flex items-center gap-1.5 group hover:opacity-85 transition-opacity",children:[e.jsxDEV("div",{className:"flex items-center text-amber-500",children:Array.from({length:5}).map((r,l)=>e.jsxDEV("svg",{className:E.cn("h-4 w-4 fill-current",l<Math.round(s.average_rating||0)?"text-amber-500":"text-slate-300 dark:text-slate-700"),viewBox:"0 0 20 20",fill:"currentColor",children:e.jsxDEV("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,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:377,columnNumber:27},void 0)},l,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:366,columnNumber:25},void 0))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:364,columnNumber:21},void 0),s.total_reviews&&s.total_reviews>0?e.jsxDEV(e.Fragment,{children:[e.jsxDEV("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-300",children:s.average_rating?.toFixed(1)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:383,columnNumber:25},void 0),e.jsxDEV("span",{className:"text-sm text-muted-foreground underline decoration-dotted group-hover:text-primary",children:["(",s.total_reviews===1?c("reviews.review_count_one",{count:s.total_reviews}):c("reviews.review_count_other",{count:s.total_reviews}),")"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:386,columnNumber:25},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:382,columnNumber:23},void 0):e.jsxDEV("span",{className:"text-xs text-muted-foreground group-hover:text-primary underline decoration-dotted",children:c("reviews.be_the_first")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:393,columnNumber:23},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:360,columnNumber:19},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:359,columnNumber:17},void 0),s.categories&&s.categories.length>0&&e.jsxDEV("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,l)=>{const o=x.resolveTranslatedText(r.name,r.name_translations,N);return e.jsxDEV(u.Fragment,{children:[l>0&&e.jsxDEV("span",{className:"text-muted-foreground/30",children:"•"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:411,columnNumber:29},void 0),e.jsxDEV("span",{children:o},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:413,columnNumber:27},void 0)]},r.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:409,columnNumber:25},void 0)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:401,columnNumber:19},void 0),e.jsxDEV("div",{className:"prose prose-neutral dark:prose-invert max-w-none text-muted-foreground leading-relaxed text-left",...M,children:s.short_description?e.jsxDEV("div",{className:"text-lg mb-4 leading-relaxed",dangerouslySetInnerHTML:{__html:O.toNoCookieEmbedSrc(s.short_description)??s.short_description}},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:425,columnNumber:21},void 0):a?e.jsxDEV("p",{className:"text-lg mb-4 italic text-muted-foreground",children:"Add a short product description."},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:434,columnNumber:21},void 0):null},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:420,columnNumber:17},void 0),e.jsxDEV("div",{className:"flex items-center gap-3",children:[typeof y=="number"&&e.jsxDEV(H.Badge,{variant:"destructive",className:"px-2.5 py-1 text-xs font-bold uppercase tracking-wide animate-pulse shadow-sm",children:c("ecommerce.sale_badge",{percent:String(G)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:442,columnNumber:21},void 0),!k&&n>0&&n<10&&e.jsxDEV(H.Badge,{variant:"outline",className:"text-amber-600 border-amber-200 bg-amber-50",children:c("ecommerce.low_stock",{count:String(n)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:452,columnNumber:21},void 0),S&&e.jsxDEV(H.Badge,{variant:"secondary",className:"border border-emerald-200 bg-emerald-50 text-emerald-800",children:S.label},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:462,columnNumber:21},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:440,columnNumber:17},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:348,columnNumber:15},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:347,columnNumber:13},void 0),e.jsxDEV("div",{className:"p-5 rounded-2xl bg-card/60 border border-border/80 shadow-md backdrop-blur-md space-y-4",children:[L?k?e.jsxDEV(ie.SubscriptionSelector,{product:s},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:478,columnNumber:17},void 0):e.jsxDEV("div",{className:"space-y-3.5",children:[e.jsxDEV("div",{className:"flex items-center justify-between gap-4",children:[e.jsxDEV("div",{className:"space-y-1",children:[e.jsxDEV("span",{className:"text-[10px] font-bold text-muted-foreground uppercase tracking-widest",children:D("ecommerce.price","Price")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:484,columnNumber:23},void 0),e.jsxDEV("div",{className:"flex items-baseline gap-2.5",children:[e.jsxDEV("span",{className:"text-3xl font-extrabold text-foreground",children:E.formatPrice(y??h,d)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:488,columnNumber:25},void 0),typeof y=="number"&&e.jsxDEV("span",{className:"text-lg text-muted-foreground line-through decoration-destructive/20 decoration-1",children:E.formatPrice(h,d)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:495,columnNumber:27},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:487,columnNumber:23},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:483,columnNumber:21},void 0),!k&&(t||!i)&&e.jsxDEV("div",{className:"text-right space-y-1",children:[e.jsxDEV("span",{className:"text-[10px] font-bold text-muted-foreground uppercase tracking-widest block",children:[!i&&s.sku&&e.jsxDEV("span",{className:"mr-2 font-normal lowercase normal-case text-muted-foreground/70",children:["SKU: ",s.sku]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:506,columnNumber:29},void 0),D("ecommerce.status","Status")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:504,columnNumber:25},void 0),e.jsxDEV("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?X:A},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:512,columnNumber:25},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:503,columnNumber:23},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:482,columnNumber:19},void 0),i&&e.jsxDEV("div",{className:"space-y-3",children:e.jsxDEV("div",{className:"grid gap-3 sm:grid-cols-2",children:b.map(r=>{const l=x.getAvailableTermIdsForAttribute(m,r.id,p);return e.jsxDEV("div",{className:"space-y-1",children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV(Z.Label,{htmlFor:`attribute-${r.id}`,className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:r.name},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:534,columnNumber:33},void 0),t?.sku&&e.jsxDEV("span",{className:"text-[10px] text-muted-foreground font-mono",children:t.sku},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:541,columnNumber:35},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:533,columnNumber:31},void 0),e.jsxDEV("select",{id:`attribute-${r.id}`,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",value:p[r.id]||"",onChange:o=>K(r.id,o.target.value),children:r.terms.map(o=>e.jsxDEV("option",{value:o.id,disabled:!l.has(o.id),children:o.value},o.id,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:558,columnNumber:35},void 0))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:546,columnNumber:31},void 0)]},r.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:532,columnNumber:29},void 0)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:522,columnNumber:23},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:521,columnNumber:21},void 0),i&&!t&&e.jsxDEV("p",{className:"text-xs text-muted-foreground italic pt-1",children:Q},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:575,columnNumber:21},void 0),e.jsxDEV("div",{className:"flex items-center gap-3 pt-1",children:[!k&&(n??0)>0&&e.jsxDEV("div",{className:"flex items-center border rounded-lg h-12 bg-background border-input select-none",children:[e.jsxDEV("button",{type:"button",onClick:()=>U(r=>Math.max(1,r-1)),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",disabled:C<=1,children:"-"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:584,columnNumber:25},void 0),e.jsxDEV("span",{className:"w-8 text-center text-sm font-semibold",children:C},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:592,columnNumber:25},void 0),e.jsxDEV("button",{type:"button",onClick:()=>U(r=>n!==null&&r>=n?r:r+1),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",disabled:n!==null&&C>=n,children:"+"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:595,columnNumber:25},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:583,columnNumber:23},void 0),i&&(!t||(n??0)<=0)?e.jsxDEV(Y.Button,{disabled:!0,className:"flex-1 h-12 text-md font-bold shadow-md",children:t?A:W},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:616,columnNumber:23},void 0):e.jsxDEV(re.AddToCartButton,{product:z,quantity:C,className:"flex-1 h-12 text-md font-bold shadow-md transition-all hover:shadow-lg active:scale-[0.98]"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:623,columnNumber:23},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:581,columnNumber:19},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:480,columnNumber:17},void 0):_,e.jsxDEV(ee.Separator,{className:"opacity-60 my-0.5"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:633,columnNumber:15},void 0),e.jsxDEV("div",{className:"grid grid-cols-2 gap-4 text-center text-[11px] font-medium text-muted-foreground pt-1",children:[e.jsxDEV("div",{className:"flex items-center justify-center gap-2",children:k?e.jsxDEV("span",{className:"inline-flex items-center gap-1.5",children:[e.jsxDEV(B.Download,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:639,columnNumber:23},void 0),c("ecommerce.instant_digital_delivery")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:638,columnNumber:21},void 0):e.jsxDEV("span",{className:"inline-flex items-center gap-1.5",children:[e.jsxDEV(B.Package,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:644,columnNumber:23},void 0),c("ecommerce.free_shipping")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:643,columnNumber:21},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:636,columnNumber:17},void 0),e.jsxDEV("div",{className:"flex items-center justify-center gap-2",children:e.jsxDEV("span",{className:"inline-flex items-center gap-1.5",children:[e.jsxDEV(B.ShieldCheck,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:651,columnNumber:21},void 0),c("ecommerce.secure_checkout")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:650,columnNumber:19},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:649,columnNumber:17},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:635,columnNumber:15},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:474,columnNumber:13},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:346,columnNumber:11},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:341,columnNumber:9},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:340,columnNumber:7},void 0),e.jsxDEV("div",{className:"min-w-0 w-full",...f?void 0:F,children:f||(s.description_json?e.jsxDEV("div",{className:"container mx-auto px-4 md:px-6 pb-12 prose prose-neutral dark:prose-invert max-w-none leading-relaxed",children:e.jsxDEV(O.SimpleTiptapRenderer,{content:s.description_json},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:666,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:665,columnNumber:11},void 0):e.jsxDEV("div",{className:"container mx-auto px-4 md:px-6 pb-12",children:e.jsxDEV("p",{className:"italic text-sm text-muted-foreground",children:c("ecommerce.no_description")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:670,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:669,columnNumber:11},void 0))},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:661,columnNumber:7},void 0),P&&e.jsxDEV("div",{id:"reviews-section",className:"border-t border-border mt-12 pt-12",children:P},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:679,columnNumber:9},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductDetailsLayout.tsx",lineNumber:339,columnNumber:5},void 0)};exports.ProductDetailsLayout=ce;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),x=require("react"),I=require("lucide-react"),A=require("@nextblock-cms/ui/badge"),ee=require("@nextblock-cms/ui/button"),te=require("@nextblock-cms/ui/label"),se=require("@nextblock-cms/ui/separator"),F=require("@nextblock-cms/utils"),re=require("../use-price-formatter.cjs.js"),ae=require("../product-context.cjs.js"),ie=require("./ProductGallery.cjs.js"),ce=require("./AddToCartButton.cjs.js"),ne=require("./SubscriptionSelector.cjs.js"),le=require("./SimpleTiptapRenderer.cjs.js"),oe=require("./ShortDescription.cjs.js"),v=require("../variation-utils.cjs.js"),de=require("../CurrencyProvider.cjs.js"),$=require("../currency.cjs.js"),ue=require("../types.cjs.js"),me=require("../trials.cjs.js");function V(o,_,P,E){const C={kind:"product-field",field:_,input:P,label:E},t=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";let g=(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(/\/+$/,"");try{(g.startsWith("http://")||g.startsWith("https://"))&&(g=new URL(g).hostname)}catch{}const N=process.env.NEXTBLOCK_VERCEL_PROJECT_ID||process.env.VERCEL_PROJECT_ID,d=process.env.NEXTBLOCK_VERCEL_WORKSPACE_ID||process.env.VERCEL_ORG_ID,b={origin:g,editUrl:`${t}/cms/products/${o.id}/edit`,data:{parentType:"product",parentId:o.id,slug:o.slug,languageId:o.language_id,draftId:null,target:C}};return N&&(b.projectId=N),d&&(b.workspaceId=d),{"data-vercel-edit-info":JSON.stringify(b),"data-vercel-edit-target":JSON.stringify(C),"data-nextblock-visual-edit":`product:${_}`}}const pe=({visualEditingEnabled:o=!1,descriptionNode:_,reviewsNode:P,canPurchase:E=!0,purchaseFallbackNode:C})=>{const t=ae.useProduct(),{t:c,lang:g}=F.useTranslations(),N=re.usePriceFormatter(),{activeCurrencyCode:d,currencies:b}=de.useCurrency(),J=o?V(t,"title","plain-text","Product title"):void 0,G=o?V(t,"short_description","plain-text","Short description"):void 0,K=o?V(t,"description_json","tiptap","Product description"):void 0,l=(r,n,m)=>{const p=c(r,m);return p===r?n:p},L=t.images&&t.images.length>0?t.images:t.image_url?[{url:t.image_url,alt:t.title}]:[],j=t.custom_props?.provider==="freemius"||ue.isDigitalProduct(t),O=me.getTrialSummary(t,c),i=!j&&!!(t.has_variants&&t.attributes?.length&&t.variants?.length),f=t.attributes||[],u=t.variants||[],[w,R]=x.useState(()=>v.chooseInitialVariantSelections(f,u)),[U,T]=x.useState(1);x.useEffect(()=>{T(1)},[t.id]),x.useEffect(()=>{i&&R(v.chooseInitialVariantSelections(f,u))},[f,i,t.id,u]);const y=x.useMemo(()=>i?v.normalizeSelectionsToAvailableVariants(f,u,w):w,[f,i,w,u]);x.useEffect(()=>{JSON.stringify(y)!==JSON.stringify(w)&&R(y)},[y,w]);const s=x.useMemo(()=>i?v.findMatchingVariant(u,y):null,[i,y,u]),B=$.resolveEffectivePriceForCurrency({prices:t.prices,salePrices:t.sale_prices,fallbackPrice:t.price,fallbackSalePrice:t.sale_price,saleStartAt:t.sale_start_at,saleEndAt:t.sale_end_at,scheduledPrice:t.scheduled_price,scheduledPrices:t.scheduled_prices,scheduledPriceAt:t.scheduled_price_at,currencyCode:d,currencies:b}),D=i&&s?$.resolveEffectivePriceForCurrency({prices:s.prices,salePrices:s.sale_prices,fallbackPrice:s.price,fallbackSalePrice:s.sale_price,saleStartAt:s.sale_start_at,saleEndAt:s.sale_end_at,scheduledPrice:s.scheduled_price,scheduledPrices:s.scheduled_prices,scheduledPriceAt:s.scheduled_price_at,currencyCode:d,currencies:b}):null,k=D?.price??B.price,S=D?.sale_price??B.sale_price,a=i?s?.stock_quantity??0:t.stock??null,q=a===null||a>0,h=a===null?U:Math.max(1,Math.min(U,Math.max(a,1))),X=x.useMemo(()=>{if(!s?.image_url)return L;const r={url:s.image_url,alt:`${t.title} ${s.label}`},n=L.filter(m=>m.url!==s.image_url);return[r,...n]},[L,t.title,s]),z=typeof S=="number"&&k>0?Math.round((k-S)/k*100):0,Q=i&&s?{...t,sku:s.sku,price:s.price,prices:s.prices,sale_price:typeof s.sale_price=="number"?s.sale_price:null,sale_prices:s.sale_prices,sale_start_at:s.sale_start_at,sale_end_at:s.sale_end_at,scheduled_price:s.scheduled_price,scheduled_prices:s.scheduled_prices,scheduled_price_at:s.scheduled_price_at,image_url:s.image_url||t.image_url,stock:s.stock_quantity,variant_id:s.id,variant_label:s.label,selected_options:s.selected_options,currency_code:d}:{...t,currency_code:d},W=(r,n)=>{R(m=>v.applyVariantSelection(f,u,m,r,n))},H=a===null?l("ecommerce.in_stock_untracked","In stock"):l("ecommerce.in_stock",`${a} in stock`,{count:String(a)}),M=l("ecommerce.out_of_stock","Out of stock"),Y=l("ecommerce.select_options","Select Options"),Z=l("ecommerce.variant_selection_required","Select one term from every dropdown to resolve a variation.");return e.jsxs("div",{className:"w-full animate-in fade-in slide-in-from-bottom-4 duration-700 ease-out",children:[e.jsx("div",{className:"container mx-auto px-4 md:px-6 py-12",children:e.jsxs("div",{className:"grid gap-12 lg:grid-cols-[2fr_3fr] items-start",children:[e.jsx("div",{className:"w-full max-w-2xl mx-auto lg:max-w-none",children:e.jsx(ie.ProductGallery,{images:X,className:"w-full"})}),e.jsxs("div",{className:"flex flex-col gap-4 pb-2 max-w-xl mx-auto lg:mx-0 lg:max-w-none",children:[e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("h1",{className:"text-3xl sm:text-4xl lg:text-5xl font-extrabold tracking-tight text-foreground leading-[1.1] lg:mt-0",...J,children:t.title}),e.jsx("div",{className:"flex items-center gap-2 mt-2",children:e.jsxs("a",{href:"#reviews-section",className:"flex items-center gap-1.5 group hover:opacity-85 transition-opacity",children:[e.jsx("div",{className:"flex items-center text-amber-500",children:Array.from({length:5}).map((r,n)=>e.jsx("svg",{className:F.cn("h-4 w-4 fill-current",n<Math.round(t.average_rating||0)?"text-amber-500":"text-slate-300 dark:text-slate-700"),viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("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"})},n))}),t.total_reviews&&t.total_reviews>0?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-300",children:t.average_rating?.toFixed(1)}),e.jsxs("span",{className:"text-sm text-muted-foreground underline decoration-dotted group-hover:text-primary",children:["(",t.total_reviews===1?c("reviews.review_count_one",{count:t.total_reviews}):c("reviews.review_count_other",{count:t.total_reviews}),")"]})]}):e.jsx("span",{className:"text-xs text-muted-foreground group-hover:text-primary underline decoration-dotted",children:c("reviews.be_the_first")})]})}),t.categories&&t.categories.length>0&&e.jsx("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:t.categories.map((r,n)=>{const m=v.resolveTranslatedText(r.name,r.name_translations,g);return e.jsxs(x.Fragment,{children:[n>0&&e.jsx("span",{className:"text-muted-foreground/30",children:"•"}),e.jsx("span",{children:m})]},r.id)})}),e.jsx("div",{className:"prose prose-neutral dark:prose-invert max-w-none text-muted-foreground leading-relaxed text-left",...G,children:t.short_description?e.jsx(oe.ShortDescription,{value:t.short_description,className:"text-lg mb-4 leading-relaxed"}):o?e.jsx("p",{className:"text-lg mb-4 italic text-muted-foreground",children:"Add a short product description."}):null}),e.jsxs("div",{className:"flex items-center gap-3",children:[typeof S=="number"&&e.jsx(A.Badge,{variant:"destructive",className:"px-2.5 py-1 text-xs font-bold uppercase tracking-wide animate-pulse shadow-sm",children:c("ecommerce.sale_badge",{percent:String(z)})}),!j&&a!==null&&a>0&&a<10&&e.jsx(A.Badge,{variant:"outline",className:"text-amber-600 border-amber-200 bg-amber-50",children:c("ecommerce.low_stock",{count:String(a)})}),O&&e.jsx(A.Badge,{variant:"secondary",className:"border border-emerald-200 bg-emerald-50 text-emerald-800",children:O.label})]})]})}),e.jsxs("div",{className:"p-5 rounded-2xl bg-card border border-border/80 shadow-md space-y-4",children:[E?j?e.jsx(ne.SubscriptionSelector,{product:t}):e.jsxs("div",{className:"space-y-3.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-[10px] font-bold text-muted-foreground uppercase tracking-widest",children:l("ecommerce.price","Price")}),e.jsxs("div",{className:"flex items-baseline gap-2.5",children:[e.jsx("span",{className:"text-3xl font-extrabold text-foreground",children:N(S??k,d)}),typeof S=="number"&&e.jsx("span",{className:"text-lg text-muted-foreground line-through decoration-destructive/20 decoration-1",children:N(k,d)})]})]}),!j&&(s||!i)&&e.jsxs("div",{className:"text-right space-y-1",children:[e.jsxs("span",{className:"text-[10px] font-bold text-muted-foreground uppercase tracking-widest block",children:[!i&&t.sku&&e.jsxs("span",{className:"mr-2 font-normal lowercase normal-case text-muted-foreground/70",children:[l("ecommerce.sku","SKU"),": ",t.sku]}),l("ecommerce.status","Status")]}),e.jsx("div",{className:q?"text-emerald-600 dark:text-emerald-400 font-semibold text-sm":"text-destructive font-semibold text-sm",children:q?H:M})]})]}),i&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"grid gap-3 sm:grid-cols-2",children:f.map((r,n)=>{const m=v.getAvailableTermIdsForAttribute(u,r.id,{});return e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te.Label,{htmlFor:`attribute-${r.id}`,className:"text-[11px] font-semibold text-muted-foreground uppercase tracking-wider",children:r.name}),n===0&&s?.sku&&e.jsx("span",{className:"text-[10px] text-muted-foreground font-mono",children:s.sku})]}),e.jsx("select",{id:`attribute-${r.id}`,className:"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",value:y[r.id]||"",onChange:p=>W(r.id,p.target.value),children:r.terms.map(p=>e.jsx("option",{value:p.id,disabled:!m.has(p.id),children:p.value},p.id))})]},r.id)})})}),i&&!s&&e.jsx("p",{className:"text-xs text-muted-foreground italic pt-1",children:Z}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[!j&&q&&e.jsxs("div",{role:"group","aria-label":l("ecommerce.quantity","Quantity"),className:"flex items-center border rounded-lg h-12 bg-background border-input select-none",children:[e.jsx("button",{type:"button",onClick:()=>T(Math.max(1,h-1)),"aria-label":l("ecommerce.decrease_quantity","Decrease quantity"),className:"px-3 h-full flex items-center justify-center rounded-l-lg text-muted-foreground hover:text-foreground active:scale-95 transition-colors text-lg font-medium focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring",disabled:h<=1,children:e.jsx("span",{"aria-hidden":"true",children:"-"})}),e.jsx("span",{"aria-live":"polite","aria-atomic":"true",className:"w-8 text-center text-sm font-semibold tabular-nums",children:h}),e.jsx("button",{type:"button",onClick:()=>T(a!==null&&h>=a?h:h+1),"aria-label":l("ecommerce.increase_quantity","Increase quantity"),className:"px-3 h-full flex items-center justify-center rounded-r-lg text-muted-foreground hover:text-foreground active:scale-95 transition-colors text-lg font-medium focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring",disabled:a!==null&&h>=a,children:e.jsx("span",{"aria-hidden":"true",children:"+"})})]}),i&&(!s||!q)?e.jsx(ee.Button,{disabled:!0,className:"flex-1 h-12 text-md font-bold shadow-md",children:s?M:Y}):e.jsx(ce.AddToCartButton,{product:Q,quantity:h,className:"flex-1 h-12 text-base font-bold shadow-md transition-shadow hover:shadow-lg active:scale-[0.98]"})]})]}):C,e.jsx(se.Separator,{className:"opacity-60 my-0.5"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-center text-[11px] font-medium text-muted-foreground pt-1",children:[e.jsx("div",{className:"flex items-center justify-center gap-2",children:j?e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(I.Download,{className:"h-3.5 w-3.5"}),c("ecommerce.instant_digital_delivery")]}):e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(I.Package,{className:"h-3.5 w-3.5"}),c("ecommerce.free_shipping")]})}),e.jsx("div",{className:"flex items-center justify-center gap-2",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(I.ShieldCheck,{className:"h-3.5 w-3.5"}),c("ecommerce.secure_checkout")]})})]})]})]})]})}),e.jsx("div",{className:"min-w-0 w-full",..._?void 0:K,children:_||(t.description_json?e.jsx("div",{className:"container mx-auto px-4 md:px-6 pb-12 prose prose-neutral dark:prose-invert max-w-none leading-relaxed",children:e.jsx(le.SimpleTiptapRenderer,{content:t.description_json})}):e.jsx("div",{className:"container mx-auto px-4 md:px-6 pb-12",children:e.jsx("p",{className:"italic text-sm text-muted-foreground",children:c("ecommerce.no_description")})}))}),P&&e.jsx("div",{id:"reviews-section",className:"border-t border-border mt-12 pt-12",children:P})]})};exports.ProductDetailsLayout=pe;