@nextblock-cms/ecom 0.19.0 → 0.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) 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.es.js +154 -381
  16. package/lib/components/CartDrawer.cjs.js +1 -1
  17. package/lib/components/CartDrawer.es.js +143 -297
  18. package/lib/components/CartIcon.cjs.js +1 -1
  19. package/lib/components/CartIcon.es.js +21 -47
  20. package/lib/components/Checkout.cjs.js +1 -1
  21. package/lib/components/Checkout.es.js +814 -1614
  22. package/lib/components/CouponForm.cjs.js +1 -1
  23. package/lib/components/CouponForm.es.js +104 -155
  24. package/lib/components/CurrencySwitcher.cjs.js +1 -1
  25. package/lib/components/CurrencySwitcher.es.js +14 -33
  26. package/lib/components/CustomerProfileForm.cjs.js +1 -1
  27. package/lib/components/CustomerProfileForm.es.js +264 -672
  28. package/lib/components/FeaturedProduct.cjs.js +1 -1
  29. package/lib/components/FeaturedProduct.es.js +46 -125
  30. package/lib/components/FreemiusLicensePanel.cjs.js +1 -1
  31. package/lib/components/FreemiusLicensePanel.es.js +45 -125
  32. package/lib/components/InvoiceDocument.cjs.js +1 -1
  33. package/lib/components/InvoiceDocument.es.js +148 -487
  34. package/lib/components/InvoiceViewerShell.cjs.js +2 -2
  35. package/lib/components/InvoiceViewerShell.d.ts +4 -1
  36. package/lib/components/InvoiceViewerShell.es.js +59 -142
  37. package/lib/components/ProductCard.cjs.js +1 -1
  38. package/lib/components/ProductCard.d.ts +3 -1
  39. package/lib/components/ProductCard.es.js +128 -242
  40. package/lib/components/ProductDetailsLayout.cjs.js +1 -1
  41. package/lib/components/ProductDetailsLayout.es.js +311 -652
  42. package/lib/components/ProductGallery.cjs.js +1 -1
  43. package/lib/components/ProductGallery.d.ts +2 -0
  44. package/lib/components/ProductGallery.es.js +37 -66
  45. package/lib/components/ProductGrid.cjs.js +1 -1
  46. package/lib/components/ProductGrid.es.js +23 -32
  47. package/lib/components/ShippingEstimator.cjs.js +1 -1
  48. package/lib/components/ShippingEstimator.es.js +118 -231
  49. package/lib/components/SimpleTiptapRenderer.cjs.js +1 -1
  50. package/lib/components/SimpleTiptapRenderer.es.js +111 -294
  51. package/lib/components/SubscriptionSelector.cjs.js +1 -1
  52. package/lib/components/SubscriptionSelector.es.js +120 -181
  53. package/lib/invoice.cjs.js +1 -1
  54. package/lib/invoice.d.ts +1 -1
  55. package/lib/invoice.es.js +6 -5
  56. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +1 -1
  57. package/lib/pages/cms/coupons/CouponEditorForm.es.js +115 -375
  58. package/lib/pages/cms/coupons/CouponsPage.cjs.js +2 -2
  59. package/lib/pages/cms/coupons/CouponsPage.es.js +116 -368
  60. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +1 -1
  61. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +26 -62
  62. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +1 -1
  63. package/lib/pages/cms/coupons/EditCouponPage.es.js +35 -71
  64. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +1 -1
  65. package/lib/pages/cms/coupons/ProductScopePicker.es.js +72 -167
  66. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +1 -1
  67. package/lib/pages/cms/orders/ExportReportsDialog.es.js +87 -247
  68. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +1 -1
  69. package/lib/pages/cms/orders/OrderDetailPage.es.js +95 -283
  70. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +1 -1
  71. package/lib/pages/cms/orders/OrderPrintButton.es.js +9 -21
  72. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +1 -1
  73. package/lib/pages/cms/orders/OrderStatusForm.es.js +46 -106
  74. package/lib/pages/cms/orders/OrdersPage.cjs.js +1 -1
  75. package/lib/pages/cms/orders/OrdersPage.es.js +78 -257
  76. package/lib/pages/cms/payments/PaymentsClient.cjs.js +1 -1
  77. package/lib/pages/cms/payments/PaymentsClient.es.js +192 -580
  78. package/lib/pages/cms/payments/PaymentsPage.cjs.js +1 -1
  79. package/lib/pages/cms/payments/PaymentsPage.es.js +14 -22
  80. package/lib/pages/cms/products/ProductsPage.cjs.js +1 -1
  81. package/lib/pages/cms/products/ProductsPage.es.js +47 -87
  82. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +1 -1
  83. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +97 -177
  84. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +1 -1
  85. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +40 -84
  86. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +1 -1
  87. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +192 -455
  88. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +1 -1
  89. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +28 -72
  90. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +1 -1
  91. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +183 -490
  92. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +1 -1
  93. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +69 -177
  94. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +1 -1
  95. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +102 -213
  96. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +1 -1
  97. package/lib/pages/cms/products/components/DeleteProductButton.es.js +25 -45
  98. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +1 -1
  99. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +58 -202
  100. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +1 -1
  101. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +89 -235
  102. package/lib/pages/cms/products/components/ProductForm.cjs.js +1 -1
  103. package/lib/pages/cms/products/components/ProductForm.es.js +526 -1110
  104. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +1 -1
  105. package/lib/pages/cms/products/components/ProductMediaManager.es.js +63 -154
  106. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +1 -1
  107. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +213 -544
  108. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +1 -1
  109. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +91 -207
  110. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +1 -1
  111. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +16 -28
  112. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +2 -2
  113. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +25 -37
  114. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +1 -1
  115. package/lib/pages/cms/products/components/VariationsEditor.es.js +261 -492
  116. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +1 -1
  117. package/lib/pages/cms/products/inventory/InventoryPage.es.js +12 -32
  118. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +2 -2
  119. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +145 -365
  120. package/lib/pages/cms/products/new/NewProductPage.cjs.js +1 -1
  121. package/lib/pages/cms/products/new/NewProductPage.es.js +30 -42
  122. package/lib/pages/cms/shipping/ShippingPage.cjs.js +2 -2
  123. package/lib/pages/cms/shipping/ShippingPage.es.js +155 -507
  124. package/lib/pages/cms/shipping/components/RateForm.cjs.js +1 -1
  125. package/lib/pages/cms/shipping/components/RateForm.es.js +334 -717
  126. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +1 -1
  127. package/lib/pages/cms/shipping/components/ZoneForm.es.js +158 -392
  128. package/lib/pages/cms/taxes/TaxesPage.cjs.js +1 -1
  129. package/lib/pages/cms/taxes/TaxesPage.es.js +119 -447
  130. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +1 -1
  131. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +52 -156
  132. package/lib/product-context.cjs.js +1 -1
  133. package/lib/product-context.es.js +10 -14
  134. package/lib/trials.cjs.js +1 -1
  135. package/lib/trials.d.ts +10 -3
  136. package/lib/trials.es.js +28 -21
  137. package/lib/types.d.ts +2 -0
  138. package/lib/use-price-formatter.cjs.js +1 -0
  139. package/lib/use-price-formatter.d.ts +11 -0
  140. package/lib/use-price-formatter.es.js +13 -0
  141. package/lib/variation-utils.cjs.js +1 -1
  142. package/lib/variation-utils.d.ts +10 -0
  143. package/lib/variation-utils.es.js +139 -123
  144. package/package.json +4 -4
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-dev-runtime"),d=require("next/link"),N=require("next/navigation"),a=require("lucide-react"),o=require("@nextblock-cms/utils");function u(s,r,c){const t=s(r);return t===r?c:t}function b(s){return s==="password"?a.KeyRound:a.Package2}function f({links:s,title:r,className:c}){const t=N.usePathname(),{t:i}=o.useTranslations();return s.length?n.jsxDEV("div",{className:o.cn("w-full space-y-3",c),children:[n.jsxDEV("div",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:r||u(i,"account_navigation","Account")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:55,columnNumber:7},this),n.jsxDEV("div",{className:"space-y-2",children:s.map(e=>{const l=b(e.icon),m=t===e.href||t.startsWith(`${e.href}/`);return n.jsxDEV(d,{href:e.href,className:o.cn("flex items-center gap-3 rounded-xl border px-3 py-2.5 text-sm font-medium transition-colors",m?"border-slate-900 bg-slate-900 text-white":"border-border bg-background hover:bg-muted/40"),children:[n.jsxDEV(l,{className:"h-4 w-4 shrink-0"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:76,columnNumber:15},this),n.jsxDEV("span",{children:u(i,e.labelKey,e.fallbackLabel)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:77,columnNumber:15},this)]},e.href,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:66,columnNumber:13},this)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:59,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",lineNumber:54,columnNumber:5},this):null}exports.AccountNavigationMenu=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),m=require("next/link"),f=require("next/navigation"),d=require("lucide-react"),o=require("@nextblock-cms/utils");function i(r,t,c){const a=r(t);return a===t?c:a}function g(r){return r==="password"?d.KeyRound:d.Package2}function h({links:r,title:t,className:c}){const a=f.usePathname(),{t:s}=o.useTranslations();return r.length?n.jsxs("nav",{"aria-label":t||i(s,"account_navigation","Account"),className:o.cn("w-full space-y-3",c),children:[n.jsx("div",{"aria-hidden":"true",className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:t||i(s,"account_navigation","Account")}),n.jsx("div",{className:"space-y-2",children:r.map(e=>{const l=g(e.icon),u=a===e.href||a.startsWith(`${e.href}/`);return n.jsxs(m,{href:e.href,"aria-current":u?"page":void 0,className:o.cn("flex items-center gap-3 rounded-xl border px-3 py-2.5 text-sm font-medium transition-colors",u?"border-primary bg-primary text-primary-foreground":"border-border bg-background hover:bg-muted/40"),children:[n.jsx(l,{className:"h-4 w-4 shrink-0"}),n.jsx("span",{children:i(s,e.labelKey,e.fallbackLabel)})]},e.href)})})]}):null}exports.AccountNavigationMenu=h;
@@ -1,70 +1,52 @@
1
1
  'use client';
2
- import { jsxDEV as t } from "react/jsx-dev-runtime";
3
- import u from "next/link";
4
- import { usePathname as N } from "next/navigation";
5
- import { KeyRound as d, Package2 as b } from "lucide-react";
6
- import { useTranslations as f, cn as i } from "@nextblock-cms/utils";
7
- function a(s, o, r) {
8
- const n = s(o);
9
- return n === o ? r : n;
2
+ import { jsxs as u, jsx as n } from "react/jsx-runtime";
3
+ import l from "next/link";
4
+ import { usePathname as f } from "next/navigation";
5
+ import { KeyRound as p, Package2 as h } from "lucide-react";
6
+ import { useTranslations as g, cn as m } from "@nextblock-cms/utils";
7
+ function s(e, a, o) {
8
+ const t = e(a);
9
+ return t === a ? o : t;
10
10
  }
11
- function p(s) {
12
- return s === "password" ? d : b;
11
+ function b(e) {
12
+ return e === "password" ? p : h;
13
13
  }
14
14
  function A({
15
- links: s,
16
- title: o,
17
- className: r
15
+ links: e,
16
+ title: a,
17
+ className: o
18
18
  }) {
19
- const n = N(), { t: c } = f();
20
- return s.length ? /* @__PURE__ */ t("div", { className: i("w-full space-y-3", r), children: [
21
- /* @__PURE__ */ t("div", { className: "text-sm font-medium text-muted-foreground uppercase tracking-wider", children: o || a(c, "account_navigation", "Account") }, void 0, !1, {
22
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
23
- lineNumber: 55,
24
- columnNumber: 7
25
- }, this),
26
- /* @__PURE__ */ t("div", { className: "space-y-2", children: s.map((e) => {
27
- const m = p(e.icon), l = n === e.href || n.startsWith(`${e.href}/`);
28
- return /* @__PURE__ */ t(
29
- u,
30
- {
31
- href: e.href,
32
- className: i(
33
- "flex items-center gap-3 rounded-xl border px-3 py-2.5 text-sm font-medium transition-colors",
34
- l ? "border-slate-900 bg-slate-900 text-white" : "border-border bg-background hover:bg-muted/40"
35
- ),
36
- children: [
37
- /* @__PURE__ */ t(m, { className: "h-4 w-4 shrink-0" }, void 0, !1, {
38
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
39
- lineNumber: 76,
40
- columnNumber: 15
41
- }, this),
42
- /* @__PURE__ */ t("span", { children: a(c, e.labelKey, e.fallbackLabel) }, void 0, !1, {
43
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
44
- lineNumber: 77,
45
- columnNumber: 15
46
- }, this)
47
- ]
48
- },
49
- e.href,
50
- !0,
51
- {
52
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
53
- lineNumber: 66,
54
- columnNumber: 13
55
- },
56
- this
57
- );
58
- }) }, void 0, !1, {
59
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
60
- lineNumber: 59,
61
- columnNumber: 7
62
- }, this)
63
- ] }, void 0, !0, {
64
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AccountNavigationMenu.tsx",
65
- lineNumber: 54,
66
- columnNumber: 5
67
- }, this) : null;
19
+ const t = f(), { t: c } = g();
20
+ return e.length ? /* @__PURE__ */ u(
21
+ "nav",
22
+ {
23
+ "aria-label": a || s(c, "account_navigation", "Account"),
24
+ className: m("w-full space-y-3", o),
25
+ children: [
26
+ /* @__PURE__ */ n("div", { "aria-hidden": "true", className: "text-sm font-medium text-muted-foreground uppercase tracking-wider", children: a || s(c, "account_navigation", "Account") }),
27
+ /* @__PURE__ */ n("div", { className: "space-y-2", children: e.map((r) => {
28
+ const d = b(r.icon), i = t === r.href || t.startsWith(`${r.href}/`);
29
+ return /* @__PURE__ */ u(
30
+ l,
31
+ {
32
+ href: r.href,
33
+ "aria-current": i ? "page" : void 0,
34
+ className: m(
35
+ "flex items-center gap-3 rounded-xl border px-3 py-2.5 text-sm font-medium transition-colors",
36
+ // Theme tokens: slate-900 on a dark theme was a dark pill on a dark card.
37
+ i ? "border-primary bg-primary text-primary-foreground" : "border-border bg-background hover:bg-muted/40"
38
+ ),
39
+ children: [
40
+ /* @__PURE__ */ n(d, { className: "h-4 w-4 shrink-0" }),
41
+ /* @__PURE__ */ n("span", { children: s(c, r.labelKey, r.fallbackLabel) })
42
+ ]
43
+ },
44
+ r.href
45
+ );
46
+ }) })
47
+ ]
48
+ }
49
+ ) : null;
68
50
  }
69
51
  export {
70
52
  A as AccountNavigationMenu
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-dev-runtime"),i=require("@nextblock-cms/ui/button"),o=require("lucide-react"),c=require("sonner"),d=require("next/link"),v=require("../use-cart.cjs.js"),B=require("@nextblock-cms/utils"),m=require("../types.cjs.js"),h=require("../CurrencyProvider.cjs.js"),D=require("../PaymentReadinessProvider.cjs.js"),j=({product:e,className:n,quantity:u})=>{const a=v.useCart(t=>t),{t:r}=B.useTranslations(),{activeCurrencyCode:_}=h.useCurrency(),b=D.useCanPurchase(e),l=m.isDigitalProduct(e),N=!!e.has_variants&&!e.variant_id&&!l,f=!l&&typeof e.stock=="number"&&e.stock<=0;if(!b){const t=r("ecommerce.contact_seller");return s.jsxDEV(i.Button,{asChild:!0,variant:"outline",className:n,children:s.jsxDEV(d,{href:`/product/${e.slug}#contact-seller`,children:[s.jsxDEV(o.Mail,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:46,columnNumber:11},void 0),t==="ecommerce.contact_seller"?"Contact the seller":t]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:45,columnNumber:9},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:44,columnNumber:7},void 0)}if(N)return s.jsxDEV(i.Button,{asChild:!0,className:n,children:s.jsxDEV(d,{href:`/product/${e.slug}`,children:"Select Options"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:56,columnNumber:9},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:55,columnNumber:7},void 0);if(f){const t=r("ecommerce.out_of_stock");return s.jsxDEV(i.Button,{disabled:!0,className:n,children:[s.jsxDEV(o.ShoppingCart,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:66,columnNumber:9},void 0),t==="ecommerce.out_of_stock"?"Out of stock":t]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:65,columnNumber:7},void 0)}if(!a)return s.jsxDEV(i.Button,{disabled:!0,className:n,children:[s.jsxDEV(o.ShoppingCart,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:77,columnNumber:9},void 0),r("ecommerce.add_to_cart")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:76,columnNumber:7},void 0);const{addItem:C}=a,x=()=>{const t=m.getProductPaymentProvider(e)??"stripe",{success:k,error:p}=C({id:e.variant_id||e.id,product_id:e.id,title:e.title,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices,is_taxable:e.is_taxable,image_url:e.image_url,slug:e.slug,sku:e.sku,stock:e.stock,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:e.product_type,payment_provider:e.payment_provider??t,provider:t,freemius_product_id:e.freemius_product_id,freemius_plan_id:e.freemius_plan_id,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,has_variants:e.has_variants,variant_id:e.variant_id,variant_label:e.variant_label,selected_options:e.selected_options,currency_code:_,quantity:u});k?c.toast.success(r("ecommerce.added_to_cart_success",{item:e.title})):c.toast.error(p||r("ecommerce.added_to_cart_error"))};return s.jsxDEV(i.Button,{onClick:x,className:n,children:[s.jsxDEV(o.ShoppingCart,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:127,columnNumber:7},void 0),r("ecommerce.add_to_cart")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",lineNumber:126,columnNumber:5},void 0)};exports.AddToCartButton=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),a=require("@nextblock-cms/ui/button"),n=require("lucide-react"),d=require("sonner"),u=require("next/link"),p=require("../use-cart.cjs.js"),q=require("@nextblock-cms/utils"),m=require("../types.cjs.js"),P=require("../CurrencyProvider.cjs.js"),S=require("../PaymentReadinessProvider.cjs.js"),B=({product:e,className:i,quantity:h})=>{const l=p.useCart(t=>t),{t:r}=q.useTranslations(),{activeCurrencyCode:g}=P.useCurrency(),f=S.useCanPurchase(e),_=m.isDigitalProduct(e),y=!!e.has_variants&&!e.variant_id&&!_,v=!_&&typeof e.stock=="number"&&e.stock<=0;if(!f){const t=r("ecommerce.contact_seller");return s.jsx(a.Button,{asChild:!0,variant:"outline",className:i,children:s.jsxs(u,{href:`/product/${e.slug}#contact-seller`,children:[s.jsx(n.Mail,{className:"mr-2 h-4 w-4"}),t==="ecommerce.contact_seller"?"Contact the seller":t]})})}if(y)return s.jsx(a.Button,{asChild:!0,className:i,children:s.jsx(u,{href:`/product/${e.slug}`,children:r("ecommerce.select_options")==="ecommerce.select_options"?"Select options":r("ecommerce.select_options")})});if(v){const t=r("ecommerce.out_of_stock");return s.jsxs(a.Button,{disabled:!0,className:i,children:[s.jsx(n.ShoppingCart,{className:"mr-2 h-4 w-4"}),t==="ecommerce.out_of_stock"?"Out of stock":t]})}if(!l)return s.jsxs(a.Button,{disabled:!0,className:i,children:[s.jsx(n.ShoppingCart,{className:"mr-2 h-4 w-4"}),r("ecommerce.add_to_cart")]});const{addItem:C}=l,b=()=>{const t=m.getProductPaymentProvider(e)??"stripe",{success:x,error:j,errorKey:c,errorParams:k}=C({id:e.variant_id||e.id,product_id:e.id,title:e.title,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices,sale_start_at:e.sale_start_at,sale_end_at:e.sale_end_at,scheduled_price:e.scheduled_price,scheduled_prices:e.scheduled_prices,scheduled_price_at:e.scheduled_price_at,is_taxable:e.is_taxable,image_url:e.image_url,slug:e.slug,sku:e.sku,stock:e.stock,language_id:e.language_id,translation_group_id:e.translation_group_id,product_type:e.product_type,payment_provider:e.payment_provider??t,provider:t,freemius_product_id:e.freemius_product_id,freemius_plan_id:e.freemius_plan_id,trial_period_days:e.trial_period_days??0,trial_requires_payment_method:e.trial_requires_payment_method??!1,has_variants:e.has_variants,variant_id:e.variant_id,variant_label:e.variant_label,selected_options:e.selected_options,currency_code:g,quantity:h});if(x)d.toast.success(r("ecommerce.added_to_cart_success",{item:e.title}));else{const o=c?r(c,k):null;d.toast.error(o&&o!==c?o:j||r("ecommerce.added_to_cart_error"))}};return s.jsxs(a.Button,{onClick:b,className:i,children:[s.jsx(n.ShoppingCart,{className:"mr-2 h-4 w-4"}),r("ecommerce.add_to_cart")]})};exports.AddToCartButton=B;
@@ -1,76 +1,40 @@
1
1
  'use client';
2
- import { jsxDEV as s } from "react/jsx-dev-runtime";
3
- import { Button as o } from "@nextblock-cms/ui/button";
4
- import { Mail as C, ShoppingCart as n } from "lucide-react";
5
- import { toast as m } from "sonner";
6
- import c from "next/link";
7
- import { useCart as h } from "../use-cart.es.js";
8
- import { useTranslations as v } from "@nextblock-cms/utils";
9
- import { isDigitalProduct as x, getProductPaymentProvider as B } from "../types.es.js";
10
- import { useCurrency as g } from "../CurrencyProvider.es.js";
11
- import { useCanPurchase as T } from "../PaymentReadinessProvider.es.js";
12
- const q = ({ product: e, className: i, quantity: d }) => {
13
- const a = h((r) => r), { t } = v(), { activeCurrencyCode: u } = g(), _ = T(e), l = x(e), f = !!e.has_variants && !e.variant_id && !l, N = !l && typeof e.stock == "number" && e.stock <= 0;
14
- if (!_) {
2
+ import { jsx as s, jsxs as o } from "react/jsx-runtime";
3
+ import { Button as a } from "@nextblock-cms/ui/button";
4
+ import { Mail as P, ShoppingCart as l } from "lucide-react";
5
+ import { toast as d } from "sonner";
6
+ import h from "next/link";
7
+ import { useCart as x } from "../use-cart.es.js";
8
+ import { useTranslations as S } from "@nextblock-cms/utils";
9
+ import { isDigitalProduct as w, getProductPaymentProvider as O } from "../types.es.js";
10
+ import { useCurrency as T } from "../CurrencyProvider.es.js";
11
+ import { useCanPurchase as q } from "../PaymentReadinessProvider.es.js";
12
+ const z = ({ product: e, className: i, quantity: f }) => {
13
+ const c = x((r) => r), { t } = S(), { activeCurrencyCode: u } = T(), p = q(e), m = w(e), g = !!e.has_variants && !e.variant_id && !m, v = !m && typeof e.stock == "number" && e.stock <= 0;
14
+ if (!p) {
15
15
  const r = t("ecommerce.contact_seller");
16
- return /* @__PURE__ */ s(o, { asChild: !0, variant: "outline", className: i, children: /* @__PURE__ */ s(c, { href: `/product/${e.slug}#contact-seller`, children: [
17
- /* @__PURE__ */ s(C, { className: "mr-2 h-4 w-4" }, void 0, !1, {
18
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
19
- lineNumber: 46,
20
- columnNumber: 11
21
- }, void 0),
16
+ return /* @__PURE__ */ s(a, { asChild: !0, variant: "outline", className: i, children: /* @__PURE__ */ o(h, { href: `/product/${e.slug}#contact-seller`, children: [
17
+ /* @__PURE__ */ s(P, { className: "mr-2 h-4 w-4" }),
22
18
  r === "ecommerce.contact_seller" ? "Contact the seller" : r
23
- ] }, void 0, !0, {
24
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
25
- lineNumber: 45,
26
- columnNumber: 9
27
- }, void 0) }, void 0, !1, {
28
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
29
- lineNumber: 44,
30
- columnNumber: 7
31
- }, void 0);
19
+ ] }) });
32
20
  }
33
- if (f)
34
- return /* @__PURE__ */ s(o, { asChild: !0, className: i, children: /* @__PURE__ */ s(c, { href: `/product/${e.slug}`, children: "Select Options" }, void 0, !1, {
35
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
36
- lineNumber: 56,
37
- columnNumber: 9
38
- }, void 0) }, void 0, !1, {
39
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
40
- lineNumber: 55,
41
- columnNumber: 7
42
- }, void 0);
43
- if (N) {
21
+ if (g)
22
+ return /* @__PURE__ */ s(a, { asChild: !0, className: i, children: /* @__PURE__ */ s(h, { href: `/product/${e.slug}`, children: t("ecommerce.select_options") === "ecommerce.select_options" ? "Select options" : t("ecommerce.select_options") }) });
23
+ if (v) {
44
24
  const r = t("ecommerce.out_of_stock");
45
- return /* @__PURE__ */ s(o, { disabled: !0, className: i, children: [
46
- /* @__PURE__ */ s(n, { className: "mr-2 h-4 w-4" }, void 0, !1, {
47
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
48
- lineNumber: 66,
49
- columnNumber: 9
50
- }, void 0),
25
+ return /* @__PURE__ */ o(a, { disabled: !0, className: i, children: [
26
+ /* @__PURE__ */ s(l, { className: "mr-2 h-4 w-4" }),
51
27
  r === "ecommerce.out_of_stock" ? "Out of stock" : r
52
- ] }, void 0, !0, {
53
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
54
- lineNumber: 65,
55
- columnNumber: 7
56
- }, void 0);
28
+ ] });
57
29
  }
58
- if (!a)
59
- return /* @__PURE__ */ s(o, { disabled: !0, className: i, children: [
60
- /* @__PURE__ */ s(n, { className: "mr-2 h-4 w-4" }, void 0, !1, {
61
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
62
- lineNumber: 77,
63
- columnNumber: 9
64
- }, void 0),
30
+ if (!c)
31
+ return /* @__PURE__ */ o(a, { disabled: !0, className: i, children: [
32
+ /* @__PURE__ */ s(l, { className: "mr-2 h-4 w-4" }),
65
33
  t("ecommerce.add_to_cart")
66
- ] }, void 0, !0, {
67
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
68
- lineNumber: 76,
69
- columnNumber: 7
70
- }, void 0);
71
- const { addItem: b } = a;
72
- return /* @__PURE__ */ s(o, { onClick: () => {
73
- const r = B(e) ?? "stripe", { success: p, error: k } = b({
34
+ ] });
35
+ const { addItem: y } = c;
36
+ return /* @__PURE__ */ o(a, { onClick: () => {
37
+ const r = O(e) ?? "stripe", { success: k, error: C, errorKey: n, errorParams: b } = y({
74
38
  id: e.variant_id || e.id,
75
39
  product_id: e.id,
76
40
  title: e.title,
@@ -78,6 +42,15 @@ const q = ({ product: e, className: i, quantity: d }) => {
78
42
  prices: e.prices,
79
43
  sale_price: e.sale_price,
80
44
  sale_prices: e.sale_prices,
45
+ // The sale window and the scheduled price travel with the line. The cart prices a line
46
+ // with `resolveEffectivePriceForCurrency`, where a missing window means "always on":
47
+ // without these an expired or not-yet-started sale showed the regular price on the
48
+ // product page and the sale price in the cart, the drawer and the subtotal.
49
+ sale_start_at: e.sale_start_at,
50
+ sale_end_at: e.sale_end_at,
51
+ scheduled_price: e.scheduled_price,
52
+ scheduled_prices: e.scheduled_prices,
53
+ scheduled_price_at: e.scheduled_price_at,
81
54
  is_taxable: e.is_taxable,
82
55
  image_url: e.image_url,
83
56
  slug: e.slug,
@@ -98,22 +71,21 @@ const q = ({ product: e, className: i, quantity: d }) => {
98
71
  variant_label: e.variant_label,
99
72
  selected_options: e.selected_options,
100
73
  currency_code: u,
101
- quantity: d
74
+ quantity: f
102
75
  });
103
- p ? m.success(t("ecommerce.added_to_cart_success", { item: e.title })) : m.error(k || t("ecommerce.added_to_cart_error"));
76
+ if (k)
77
+ d.success(t("ecommerce.added_to_cart_success", { item: e.title }));
78
+ else {
79
+ const _ = n ? t(n, b) : null;
80
+ d.error(
81
+ _ && _ !== n ? _ : C || t("ecommerce.added_to_cart_error")
82
+ );
83
+ }
104
84
  }, className: i, children: [
105
- /* @__PURE__ */ s(n, { className: "mr-2 h-4 w-4" }, void 0, !1, {
106
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
107
- lineNumber: 127,
108
- columnNumber: 7
109
- }, void 0),
85
+ /* @__PURE__ */ s(l, { className: "mr-2 h-4 w-4" }),
110
86
  t("ecommerce.add_to_cart")
111
- ] }, void 0, !0, {
112
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/AddToCartButton.tsx",
113
- lineNumber: 126,
114
- columnNumber: 5
115
- }, void 0);
87
+ ] });
116
88
  };
117
89
  export {
118
- q as AddToCartButton
90
+ z as AddToCartButton
119
91
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),h=require("react"),B=require("@nextblock-cms/ui/badge"),t=require("@nextblock-cms/ui/button"),r=require("@nextblock-cms/ui/table"),b=require("lucide-react"),x=require("../cart-store.cjs.js"),R=require("../use-cart.cjs.js"),m=require("../types.cjs.js"),H=require("next/navigation"),d=require("@nextblock-cms/utils"),E=require("./ShippingEstimator.cjs.js"),U=require("../CurrencyProvider.cjs.js"),V=require("../trials.cjs.js"),g=require("./CouponForm.cjs.js"),y=()=>{const p=H.useRouter(),a=R.useCart(s=>s),C=x.useCartSubtotal(),{t:n}=d.useTranslations(),{activeCurrencyCode:l,currencies:u}=U.useCurrency(),o=a?.items??[],k=h.useMemo(()=>o.reduce((s,c)=>{if(m.isDigitalItem(c))return s;const i=x.getCartItemActivePrice(c,{currencyCode:l,currencies:u});return s+(i.sale_price??i.price)*c.quantity},0),[l,u,o]);if(!a)return null;const{updateQuantity:f,removeItem:j}=a,D=s=>o.reduce((c,i)=>m.isDigitalItem(i)||i.sku!==s?c:c+i.quantity,0),v=()=>{p.push("/checkout")};return o.length===0?e.jsxDEV("div",{className:"flex flex-col items-center justify-center space-y-4 py-12",children:[e.jsxDEV("h2",{className:"text-2xl font-bold",children:n("ecommerce.cart_empty")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:69,columnNumber:9},void 0),e.jsxDEV("p",{className:"text-muted-foreground",children:n("ecommerce.cart_empty_description")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:70,columnNumber:9},void 0),e.jsxDEV(t.Button,{asChild:!0,children:e.jsxDEV("a",{href:"/shop",children:n("ecommerce.continue_shopping")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:72,columnNumber:11},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:71,columnNumber:9},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:68,columnNumber:7},void 0):e.jsxDEV("div",{className:"container mx-auto py-12",children:[e.jsxDEV("h1",{className:"mb-8 text-3xl font-bold",children:n("ecommerce.shopping_cart")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:80,columnNumber:7},void 0),e.jsxDEV("div",{className:"grid gap-12 lg:grid-cols-12 lg:items-start",children:[e.jsxDEV("div",{className:"lg:col-span-8",children:e.jsxDEV("div",{className:"rounded-lg border overflow-hidden",children:e.jsxDEV(r.Table,{children:[e.jsxDEV(r.TableHeader,{children:e.jsxDEV(r.TableRow,{children:[e.jsxDEV(r.TableHead,{children:n("ecommerce.product")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:88,columnNumber:19},void 0),e.jsxDEV(r.TableHead,{children:n("ecommerce.quantity")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:89,columnNumber:19},void 0),e.jsxDEV(r.TableHead,{className:"text-right",children:n("ecommerce.price")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:90,columnNumber:19},void 0),e.jsxDEV(r.TableHead,{className:"text-right",children:n("ecommerce.total")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:91,columnNumber:19},void 0),e.jsxDEV(r.TableHead,{className:"w-[50px]"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:92,columnNumber:19},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:87,columnNumber:17},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:86,columnNumber:15},void 0),e.jsxDEV(r.TableBody,{children:o.map(s=>{const c=D(s.sku),i=x.getCartItemActivePrice(s,{currencyCode:l,currencies:u}),N=V.getTrialSummary(s);return e.jsxDEV(r.TableRow,{children:[e.jsxDEV(r.TableCell,{children:e.jsxDEV("div",{className:"flex items-center gap-4",children:[s.image_url?e.jsxDEV("div",{className:"h-16 w-16 overflow-hidden rounded border bg-neutral-100",children:e.jsxDEV("img",{src:s.image_url,alt:s.title,className:"h-full w-full object-cover"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:110,columnNumber:31},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:109,columnNumber:29},void 0):e.jsxDEV("div",{className:"flex h-16 w-16 items-center justify-center rounded bg-secondary",children:e.jsxDEV("span",{className:"text-[10px] text-muted-foreground",children:n("ecommerce.no_image")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:118,columnNumber:31},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:117,columnNumber:29},void 0),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"font-medium",children:s.title},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:124,columnNumber:29},void 0),s.variant_label&&e.jsxDEV("div",{className:"mt-1 text-xs text-muted-foreground",children:s.variant_label},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:126,columnNumber:31},void 0),m.isDigitalItem(s)&&s.billing_cycle&&e.jsxDEV("div",{className:"mt-1 text-xs capitalize text-muted-foreground",children:[s.billing_cycle," Subscription"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:131,columnNumber:31},void 0),N&&e.jsxDEV("div",{className:"mt-1 text-xs font-medium text-emerald-700",children:[N.label," - ",N.paymentRequirementLabel]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:136,columnNumber:31},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:123,columnNumber:27},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:107,columnNumber:25},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:106,columnNumber:23},void 0),e.jsxDEV(r.TableCell,{children:m.isDigitalItem(s)?e.jsxDEV(B.Badge,{variant:"secondary",className:"font-normal text-xs",children:"1 (License)"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:145,columnNumber:27},void 0):e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(t.Button,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>f(s.id,s.quantity-1),children:e.jsxDEV(b.Minus,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:156,columnNumber:31},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:150,columnNumber:29},void 0),e.jsxDEV("span",{className:"w-8 text-center",children:s.quantity},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:158,columnNumber:29},void 0),e.jsxDEV(t.Button,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>f(s.id,s.quantity+1),disabled:typeof s.stock=="number"&&c>=s.stock,children:e.jsxDEV(b.Plus,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:169,columnNumber:31},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:159,columnNumber:29},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:149,columnNumber:27},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:143,columnNumber:23},void 0),e.jsxDEV(r.TableCell,{className:"text-right",children:e.jsxDEV("div",{className:"flex flex-col items-end",children:[e.jsxDEV("span",{className:"font-medium",children:d.formatPrice(i.sale_price??i.price,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:176,columnNumber:27},void 0),i.sale_price&&e.jsxDEV("span",{className:"text-xs text-muted-foreground line-through",children:d.formatPrice(i.price,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:180,columnNumber:29},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:175,columnNumber:25},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:174,columnNumber:23},void 0),e.jsxDEV(r.TableCell,{className:"text-right font-medium",children:d.formatPrice((i.sale_price??i.price)*s.quantity,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:186,columnNumber:23},void 0),e.jsxDEV(r.TableCell,{children:e.jsxDEV(t.Button,{variant:"ghost",size:"icon",onClick:()=>j(s.id),className:"text-muted-foreground hover:text-destructive",children:e.jsxDEV(b.Trash2,{className:"h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:199,columnNumber:27},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:193,columnNumber:25},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:192,columnNumber:23},void 0)]},s.id,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:105,columnNumber:21},void 0)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:95,columnNumber:15},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:85,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:84,columnNumber:11},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:83,columnNumber:9},void 0),e.jsxDEV("div",{className:"lg:col-span-4",children:e.jsxDEV("div",{className:"rounded-lg border bg-card p-6 shadow-sm",children:[e.jsxDEV("h2",{className:"mb-4 text-lg font-semibold",children:n("ecommerce.order_summary")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:212,columnNumber:17},void 0),e.jsxDEV("div",{className:"flex justify-between border-b pb-4",children:[e.jsxDEV("span",{children:n("ecommerce.subtotal")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:214,columnNumber:21},void 0),e.jsxDEV("span",{className:"font-medium",children:d.formatPrice(C,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:215,columnNumber:21},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:213,columnNumber:17},void 0),e.jsxDEV("div",{className:"mt-4 flex flex-col gap-4",children:[e.jsxDEV("p",{className:"text-sm text-muted-foreground",children:n("ecommerce.shipping_taxes_calculated")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:218,columnNumber:21},void 0),o.some(s=>!m.isDigitalItem(s))&&e.jsxDEV(E.ShippingEstimator,{physicalSubtotal:k},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:223,columnNumber:25},void 0),e.jsxDEV(g.CouponForm,{items:o,currencyCode:l,compact:!0},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:226,columnNumber:21},void 0),e.jsxDEV(t.Button,{className:"w-full mt-4",size:"lg",onClick:v,children:n("ecommerce.proceed_to_checkout")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:232,columnNumber:21},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:217,columnNumber:18},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:211,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:210,columnNumber:9},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:82,columnNumber:7},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/Cart.tsx",lineNumber:79,columnNumber:5},void 0)};exports.Cart=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),q=require("react"),C=require("@nextblock-cms/ui/badge"),d=require("@nextblock-cms/ui/button"),t=require("@nextblock-cms/ui/table"),j=require("lucide-react"),p=require("../cart-store.cjs.js"),w=require("../use-cart.cjs.js"),u=require("../types.cjs.js"),g=require("next/link"),T=require("@nextblock-cms/utils"),k=require("../use-price-formatter.cjs.js"),S=require("./ShippingEstimator.cjs.js"),P=require("../CurrencyProvider.cjs.js"),R=require("../trials.cjs.js"),B=require("./CouponForm.cjs.js"),H=()=>{const m=k.usePriceFormatter(),x=w.useCart(s=>s),y=p.useCartSubtotal(),{t:c}=T.useTranslations(),l=(s,a,r)=>{const o=c(s,r);return o===s?a:o},N="/shop",{activeCurrencyCode:i,currencies:h}=P.useCurrency(),n=x?.items??[],f=q.useMemo(()=>n.reduce((s,a)=>{if(u.isDigitalItem(a))return s;const r=p.getCartItemActivePrice(a,{currencyCode:i,currencies:h});return s+(r.sale_price??r.price)*a.quantity},0),[i,h,n]);if(!x)return null;const{updateQuantity:b,removeItem:v}=x,_=s=>n.reduce((a,r)=>u.isDigitalItem(r)||r.sku!==s?a:a+r.quantity,0);return n.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center space-y-4 py-12",children:[e.jsx("h1",{className:"text-2xl font-bold",children:c("ecommerce.cart_empty")}),e.jsx("p",{className:"text-muted-foreground",children:c("ecommerce.cart_empty_description")}),e.jsx(d.Button,{asChild:!0,children:e.jsx(g,{href:N,children:c("ecommerce.continue_shopping")})})]}):e.jsxs("div",{className:"container mx-auto py-12",children:[e.jsx("h1",{className:"mb-8 text-3xl font-bold",children:c("ecommerce.shopping_cart")}),e.jsxs("div",{className:"grid gap-12 lg:grid-cols-12 lg:items-start",children:[e.jsx("div",{className:"lg:col-span-8",children:e.jsx("div",{className:"rounded-lg border overflow-hidden",children:e.jsxs(t.Table,{children:[e.jsx(t.TableHeader,{children:e.jsxs(t.TableRow,{children:[e.jsx(t.TableHead,{children:c("ecommerce.product")}),e.jsx(t.TableHead,{children:c("ecommerce.quantity")}),e.jsx(t.TableHead,{className:"text-right",children:c("ecommerce.price")}),e.jsx(t.TableHead,{className:"text-right",children:c("ecommerce.total")}),e.jsx(t.TableHead,{className:"w-[50px]",children:e.jsx("span",{className:"sr-only",children:l("ecommerce.actions","Actions")})})]})}),e.jsx(t.TableBody,{children:n.map(s=>{const a=_(s.sku),r=p.getCartItemActivePrice(s,{currencyCode:i,currencies:h}),o=R.getTrialSummary(s,c);return e.jsxs(t.TableRow,{children:[e.jsx(t.TableCell,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[s.image_url?e.jsx("div",{className:"h-16 w-16 overflow-hidden rounded border bg-neutral-100",children:e.jsx("img",{src:s.image_url,alt:s.title,className:"h-full w-full object-cover"})}):e.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded bg-secondary",children:e.jsx("span",{className:"text-[10px] text-muted-foreground",children:c("ecommerce.no_image")})}),e.jsxs("div",{className:"min-w-0 break-words",children:[e.jsx("div",{className:"font-medium",children:s.title}),s.variant_label&&e.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:s.variant_label}),u.isDigitalItem(s)&&s.billing_cycle&&e.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:l(`ecommerce.checkout_billing_cycle_${s.billing_cycle}`,`${s.billing_cycle} subscription`)}),o&&e.jsxs("div",{className:"mt-1 text-xs font-medium text-emerald-700",children:[o.label," - ",o.paymentRequirementLabel]})]})]})}),e.jsx(t.TableCell,{children:u.isDigitalItem(s)?e.jsx(C.Badge,{variant:"secondary",className:"font-normal text-xs",children:l("ecommerce.license_count_one","1 license",{count:1})}):e.jsxs("div",{role:"group","aria-label":`${l("ecommerce.quantity","Quantity")}: ${s.title}`,className:"flex items-center gap-2",children:[e.jsx(d.Button,{variant:"outline",size:"icon",className:"h-8 w-8","aria-label":l("ecommerce.decrease_quantity","Decrease quantity"),onClick:()=>b(s.id,s.quantity-1),children:e.jsx(j.Minus,{className:"h-4 w-4"})}),e.jsx("span",{"aria-live":"polite","aria-atomic":"true",className:"w-8 text-center tabular-nums",children:s.quantity}),e.jsx(d.Button,{variant:"outline",size:"icon",className:"h-8 w-8","aria-label":l("ecommerce.increase_quantity","Increase quantity"),onClick:()=>b(s.id,s.quantity+1),disabled:typeof s.stock=="number"&&a>=s.stock,children:e.jsx(j.Plus,{className:"h-4 w-4"})})]})}),e.jsx(t.TableCell,{className:"text-right",children:e.jsxs("div",{className:"flex flex-col items-end tabular-nums",children:[e.jsxs("span",{className:"font-medium",children:[r.sale_price&&e.jsxs("span",{className:"sr-only",children:[l("ecommerce.sale_price","Sale price")," "]}),m(r.sale_price??r.price,i)]}),r.sale_price&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{className:"sr-only",children:[l("ecommerce.regular_price","Regular price")," "]}),e.jsx("s",{children:m(r.price,i)})]})]})}),e.jsx(t.TableCell,{className:"text-right font-medium tabular-nums",children:m((r.sale_price??r.price)*s.quantity,i)}),e.jsx(t.TableCell,{children:e.jsx(d.Button,{variant:"ghost",size:"icon",onClick:()=>v(s.id),"aria-label":l("ecommerce.remove_item",`Remove ${s.title} from cart`,{item:s.title}),className:"text-muted-foreground hover:text-destructive",children:e.jsx(j.Trash2,{className:"h-4 w-4"})})})]},s.id)})})]})})}),e.jsx("div",{className:"lg:col-span-4",children:e.jsxs("div",{className:"rounded-lg border bg-card p-6 shadow-sm",children:[e.jsx("h2",{className:"mb-4 text-lg font-semibold",children:c("ecommerce.order_summary")}),e.jsxs("div",{className:"flex justify-between border-b pb-4",children:[e.jsx("span",{children:c("ecommerce.subtotal")}),e.jsx("span",{className:"font-medium tabular-nums",children:m(y,i)})]}),e.jsxs("div",{className:"mt-4 flex flex-col gap-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:c("ecommerce.shipping_taxes_calculated")}),n.some(s=>!u.isDigitalItem(s))&&e.jsx(S.ShippingEstimator,{physicalSubtotal:f}),e.jsx(B.CouponForm,{items:n,currencyCode:i,compact:!0}),e.jsx(d.Button,{asChild:!0,className:"w-full mt-4",size:"lg",children:e.jsx(g,{href:"/checkout",children:c("ecommerce.proceed_to_checkout")})})]})]})})]})]})};exports.Cart=H;