@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,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-dev-runtime"),h=require("next/link"),v=require("lucide-react"),t=require("@nextblock-cms/ui/button"),f=require("./InvoiceDocument.cjs.js");function k({invoice:i,labels:c,locale:m,title:d,description:r,printLabel:a,headerVisual:n,action:s,loading:o=!1,loadingMessage:u,error:l,emptyMessage:b,className:N="",showHeader:x=!0,beforeInvoice:p}){return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("style",{children:`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),f=require("next/link"),g=require("lucide-react"),n=require("@nextblock-cms/ui/button"),y=require("./InvoiceDocument.cjs.js");function w({invoice:i,labels:c,locale:x,title:m,description:l,printLabel:u,headerVisual:s,action:t,loading:d=!1,loadingMessage:p,error:r,onRetry:a,retryLabel:o,emptyMessage:b,className:h="",showHeader:j=!0,beforeInvoice:v}){return e.jsxs(e.Fragment,{children:[e.jsx("style",{children:`
2
2
  @media print {
3
3
  @page {
4
4
  size: portrait;
@@ -26,4 +26,4 @@
26
26
  padding: 0;
27
27
  }
28
28
  }
29
- `},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:60,columnNumber:7},this),e.jsxDEV("div",{className:`mx-auto max-w-6xl px-4 py-10 md:px-6 print:max-w-none print:px-0 print:py-0 ${N}`,children:[x?e.jsxDEV("div",{className:"mb-6 flex flex-col gap-4 md:flex-row md:items-center md:justify-between print:hidden",children:[e.jsxDEV("div",{className:"flex items-center gap-4",children:[n?e.jsxDEV("div",{className:"shrink-0",children:n},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:96,columnNumber:31},this):null,e.jsxDEV("div",{children:[e.jsxDEV("h1",{className:"text-3xl font-bold",children:d},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:98,columnNumber:17},this),r?e.jsxDEV("p",{className:"text-sm text-muted-foreground",children:r},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:100,columnNumber:19},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:97,columnNumber:15},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:95,columnNumber:13},this),e.jsxDEV("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxDEV(t.Button,{type:"button",variant:"outline",onClick:()=>window.print(),disabled:!i,children:[e.jsxDEV(v.Printer,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:112,columnNumber:17},this),a]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:106,columnNumber:15},this),s?e.jsxDEV(t.Button,{asChild:!0,variant:s.variant||"default",children:e.jsxDEV(h,{href:s.href,children:s.label},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:118,columnNumber:19},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:117,columnNumber:17},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:105,columnNumber:13},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:94,columnNumber:11},this):null,o?e.jsxDEV("div",{className:"mb-6 flex items-center justify-center gap-3 rounded-2xl border bg-background px-5 py-4 text-sm text-muted-foreground print:hidden",children:u},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:126,columnNumber:11},this):null,l?e.jsxDEV("div",{className:"mb-6 rounded-2xl border border-amber-200 bg-amber-50 px-5 py-4 text-sm text-amber-700 print:hidden",children:l},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:132,columnNumber:11},this):null,p,i?e.jsxDEV("div",{"data-print-invoice-root":!0,children:e.jsxDEV(f.InvoiceDocument,{data:i,labels:c,locale:m},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:141,columnNumber:13},this)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:140,columnNumber:11},this):!o&&!l?e.jsxDEV("div",{className:"rounded-2xl border bg-background px-6 py-12 text-center text-muted-foreground print:hidden",children:b},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:148,columnNumber:11},this):null]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:90,columnNumber:7},this)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",lineNumber:59,columnNumber:5},this)}exports.InvoiceViewerShell=k;
29
+ `}),e.jsxs("div",{className:`mx-auto max-w-6xl px-4 py-10 md:px-6 print:max-w-none print:px-0 print:py-0 ${h}`,children:[j?e.jsxs("div",{className:"mb-6 flex flex-col gap-4 md:flex-row md:items-center md:justify-between print:hidden",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[s?e.jsx("div",{className:"shrink-0",children:s}):null,e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold",children:m}),l?e.jsx("p",{className:"text-sm text-muted-foreground",children:l}):null]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs(n.Button,{type:"button",variant:"outline",onClick:()=>window.print(),disabled:!i,children:[e.jsx(g.Printer,{className:"mr-2 h-4 w-4"}),u]}),t?e.jsx(n.Button,{asChild:!0,variant:t.variant||"default",children:e.jsx(f,{href:t.href,children:t.label})}):null]})]}):null,d?e.jsx("div",{role:"status",className:"mb-6 flex items-center justify-center gap-3 rounded-2xl border bg-background px-5 py-4 text-sm text-muted-foreground print:hidden",children:p}):null,r?e.jsxs("div",{role:"alert",className:"mb-6 flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-amber-200 bg-amber-50 px-5 py-4 text-sm text-amber-800 print:hidden dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200",children:[e.jsx("span",{children:r}),a&&o?e.jsx(n.Button,{type:"button",size:"sm",variant:"outline",onClick:a,children:o}):null]}):null,v,i?e.jsx("div",{"data-print-invoice-root":!0,children:e.jsx(y.InvoiceDocument,{data:i,labels:c,locale:x})}):!d&&!r?e.jsx("div",{className:"rounded-2xl border bg-background px-6 py-12 text-center text-muted-foreground print:hidden",children:b}):null]})]})}exports.InvoiceViewerShell=w;
@@ -18,11 +18,14 @@ interface InvoiceViewerShellProps {
18
18
  loading?: boolean;
19
19
  loadingMessage?: string;
20
20
  error?: string | null;
21
+ /** With `retryLabel`, shows a retry button beside the error. */
22
+ onRetry?: () => void;
23
+ retryLabel?: string;
21
24
  emptyMessage?: string;
22
25
  className?: string;
23
26
  showHeader?: boolean;
24
27
  /** Optional content rendered above the invoice (and hidden when printing). */
25
28
  beforeInvoice?: ReactNode;
26
29
  }
27
- export declare function InvoiceViewerShell({ invoice, labels, locale, title, description, printLabel, headerVisual, action, loading, loadingMessage, error, emptyMessage, className, showHeader, beforeInvoice, }: InvoiceViewerShellProps): import("react").JSX.Element;
30
+ export declare function InvoiceViewerShell({ invoice, labels, locale, title, description, printLabel, headerVisual, action, loading, loadingMessage, error, onRetry, retryLabel, emptyMessage, className, showHeader, beforeInvoice, }: InvoiceViewerShellProps): import("react").JSX.Element;
28
31
  export {};
@@ -1,27 +1,29 @@
1
1
  'use client';
2
- import { jsxDEV as e, Fragment as h } from "react/jsx-dev-runtime";
3
- import v from "next/link";
4
- import { Printer as f } from "lucide-react";
5
- import { Button as t } from "@nextblock-cms/ui/button";
2
+ import { jsxs as r, Fragment as w, jsx as e } from "react/jsx-runtime";
3
+ import y from "next/link";
4
+ import { Printer as N } from "lucide-react";
5
+ import { Button as d } from "@nextblock-cms/ui/button";
6
6
  import { InvoiceDocument as k } from "./InvoiceDocument.es.js";
7
- function B({
8
- invoice: s,
9
- labels: m,
10
- locale: c,
11
- title: d,
12
- description: r,
13
- printLabel: a,
14
- headerVisual: n,
15
- action: i,
16
- loading: o = !1,
17
- loadingMessage: N,
18
- error: l,
19
- emptyMessage: b,
20
- className: u = "",
21
- showHeader: p = !0,
22
- beforeInvoice: x
7
+ function D({
8
+ invoice: i,
9
+ labels: c,
10
+ locale: p,
11
+ title: u,
12
+ description: l,
13
+ printLabel: x,
14
+ headerVisual: a,
15
+ action: t,
16
+ loading: m = !1,
17
+ loadingMessage: b,
18
+ error: n,
19
+ onRetry: o,
20
+ retryLabel: s,
21
+ emptyMessage: h,
22
+ className: f = "",
23
+ showHeader: v = !0,
24
+ beforeInvoice: g
23
25
  }) {
24
- return /* @__PURE__ */ e(h, { children: [
26
+ return /* @__PURE__ */ r(w, { children: [
25
27
  /* @__PURE__ */ e("style", { children: `
26
28
  @media print {
27
29
  @page {
@@ -50,141 +52,56 @@ function B({
50
52
  padding: 0;
51
53
  }
52
54
  }
53
- ` }, void 0, !1, {
54
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
55
- lineNumber: 60,
56
- columnNumber: 7
57
- }, this),
58
- /* @__PURE__ */ e(
55
+ ` }),
56
+ /* @__PURE__ */ r(
59
57
  "div",
60
58
  {
61
- className: `mx-auto max-w-6xl px-4 py-10 md:px-6 print:max-w-none print:px-0 print:py-0 ${u}`,
59
+ className: `mx-auto max-w-6xl px-4 py-10 md:px-6 print:max-w-none print:px-0 print:py-0 ${f}`,
62
60
  children: [
63
- p ? /* @__PURE__ */ e("div", { className: "mb-6 flex flex-col gap-4 md:flex-row md:items-center md:justify-between print:hidden", children: [
64
- /* @__PURE__ */ e("div", { className: "flex items-center gap-4", children: [
65
- n ? /* @__PURE__ */ e("div", { className: "shrink-0", children: n }, void 0, !1, {
66
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
67
- lineNumber: 96,
68
- columnNumber: 31
69
- }, this) : null,
70
- /* @__PURE__ */ e("div", { children: [
71
- /* @__PURE__ */ e("h1", { className: "text-3xl font-bold", children: d }, void 0, !1, {
72
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
73
- lineNumber: 98,
74
- columnNumber: 17
75
- }, this),
76
- r ? /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: r }, void 0, !1, {
77
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
78
- lineNumber: 100,
79
- columnNumber: 19
80
- }, this) : null
81
- ] }, void 0, !0, {
82
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
83
- lineNumber: 97,
84
- columnNumber: 15
85
- }, this)
86
- ] }, void 0, !0, {
87
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
88
- lineNumber: 95,
89
- columnNumber: 13
90
- }, this),
91
- /* @__PURE__ */ e("div", { className: "flex flex-wrap items-center gap-3", children: [
92
- /* @__PURE__ */ e(
93
- t,
61
+ v ? /* @__PURE__ */ r("div", { className: "mb-6 flex flex-col gap-4 md:flex-row md:items-center md:justify-between print:hidden", children: [
62
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-4", children: [
63
+ a ? /* @__PURE__ */ e("div", { className: "shrink-0", children: a }) : null,
64
+ /* @__PURE__ */ r("div", { children: [
65
+ /* @__PURE__ */ e("h1", { className: "text-3xl font-bold", children: u }),
66
+ l ? /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: l }) : null
67
+ ] })
68
+ ] }),
69
+ /* @__PURE__ */ r("div", { className: "flex flex-wrap items-center gap-3", children: [
70
+ /* @__PURE__ */ r(
71
+ d,
94
72
  {
95
73
  type: "button",
96
74
  variant: "outline",
97
75
  onClick: () => window.print(),
98
- disabled: !s,
76
+ disabled: !i,
99
77
  children: [
100
- /* @__PURE__ */ e(f, { className: "mr-2 h-4 w-4" }, void 0, !1, {
101
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
102
- lineNumber: 112,
103
- columnNumber: 17
104
- }, this),
105
- a
78
+ /* @__PURE__ */ e(N, { className: "mr-2 h-4 w-4" }),
79
+ x
106
80
  ]
107
- },
108
- void 0,
109
- !0,
110
- {
111
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
112
- lineNumber: 106,
113
- columnNumber: 15
114
- },
115
- this
81
+ }
116
82
  ),
117
- i ? /* @__PURE__ */ e(t, { asChild: !0, variant: i.variant || "default", children: /* @__PURE__ */ e(v, { href: i.href, children: i.label }, void 0, !1, {
118
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
119
- lineNumber: 118,
120
- columnNumber: 19
121
- }, this) }, void 0, !1, {
122
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
123
- lineNumber: 117,
124
- columnNumber: 17
125
- }, this) : null
126
- ] }, void 0, !0, {
127
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
128
- lineNumber: 105,
129
- columnNumber: 13
130
- }, this)
131
- ] }, void 0, !0, {
132
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
133
- lineNumber: 94,
134
- columnNumber: 11
135
- }, this) : null,
136
- o ? /* @__PURE__ */ e("div", { className: "mb-6 flex items-center justify-center gap-3 rounded-2xl border bg-background px-5 py-4 text-sm text-muted-foreground print:hidden", children: N }, void 0, !1, {
137
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
138
- lineNumber: 126,
139
- columnNumber: 11
140
- }, this) : null,
141
- l ? /* @__PURE__ */ e("div", { className: "mb-6 rounded-2xl border border-amber-200 bg-amber-50 px-5 py-4 text-sm text-amber-700 print:hidden", children: l }, void 0, !1, {
142
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
143
- lineNumber: 132,
144
- columnNumber: 11
145
- }, this) : null,
146
- x,
147
- s ? /* @__PURE__ */ e("div", { "data-print-invoice-root": !0, children: /* @__PURE__ */ e(
83
+ t ? /* @__PURE__ */ e(d, { asChild: !0, variant: t.variant || "default", children: /* @__PURE__ */ e(y, { href: t.href, children: t.label }) }) : null
84
+ ] })
85
+ ] }) : null,
86
+ m ? /* @__PURE__ */ e("div", { role: "status", className: "mb-6 flex items-center justify-center gap-3 rounded-2xl border bg-background px-5 py-4 text-sm text-muted-foreground print:hidden", children: b }) : null,
87
+ n ? /* @__PURE__ */ r("div", { role: "alert", className: "mb-6 flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-amber-200 bg-amber-50 px-5 py-4 text-sm text-amber-800 print:hidden dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200", children: [
88
+ /* @__PURE__ */ e("span", { children: n }),
89
+ o && s ? /* @__PURE__ */ e(d, { type: "button", size: "sm", variant: "outline", onClick: o, children: s }) : null
90
+ ] }) : null,
91
+ g,
92
+ i ? /* @__PURE__ */ e("div", { "data-print-invoice-root": !0, children: /* @__PURE__ */ e(
148
93
  k,
149
94
  {
150
- data: s,
151
- labels: m,
152
- locale: c
153
- },
154
- void 0,
155
- !1,
156
- {
157
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
158
- lineNumber: 141,
159
- columnNumber: 13
160
- },
161
- this
162
- ) }, void 0, !1, {
163
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
164
- lineNumber: 140,
165
- columnNumber: 11
166
- }, this) : !o && !l ? /* @__PURE__ */ e("div", { className: "rounded-2xl border bg-background px-6 py-12 text-center text-muted-foreground print:hidden", children: b }, void 0, !1, {
167
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
168
- lineNumber: 148,
169
- columnNumber: 11
170
- }, this) : null
95
+ data: i,
96
+ labels: c,
97
+ locale: p
98
+ }
99
+ ) }) : !m && !n ? /* @__PURE__ */ e("div", { className: "rounded-2xl border bg-background px-6 py-12 text-center text-muted-foreground print:hidden", children: h }) : null
171
100
  ]
172
- },
173
- void 0,
174
- !0,
175
- {
176
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
177
- lineNumber: 90,
178
- columnNumber: 7
179
- },
180
- this
101
+ }
181
102
  )
182
- ] }, void 0, !0, {
183
- fileName: "C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/InvoiceViewerShell.tsx",
184
- lineNumber: 59,
185
- columnNumber: 5
186
- }, this);
103
+ ] });
187
104
  }
188
105
  export {
189
- B as InvoiceViewerShell
106
+ D as InvoiceViewerShell
190
107
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-dev-runtime"),E=require("./AddToCartButton.cjs.js"),n=require("@nextblock-cms/utils"),k=require("next/link"),B=require("../CurrencyProvider.cjs.js"),o=require("../currency.cjs.js"),U=require("../trials.cjs.js"),y=require("../variation-utils.cjs.js"),V=({product:e,className:h})=>{const{activeCurrencyCode:l,currencies:c}=B.useCurrency(),i=o.resolvePriceRangeForCurrency({entries:e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],currencyCode:l,currencies:c}),N=!!(e.has_variants&&i),t=o.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:l,currencies:c}),j=N&&i?i.min===i.max?n.formatPrice(i.min,l):`${n.formatPrice(i.min,l)} - ${n.formatPrice(i.max,l)}`:n.formatPrice(t.sale_price??t.price,l),P=e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],D=N?P.some(r=>o.resolveEffectivePriceForCurrency({prices:r.prices,salePrices:r.sale_prices,fallbackPrice:r.price,fallbackSalePrice:r.sale_price,saleStartAt:r.sale_start_at,saleEndAt:r.sale_end_at,scheduledPrice:r.scheduled_price,scheduledPrices:r.scheduled_prices,scheduledPriceAt:r.scheduled_price_at,currencyCode:l,currencies:c}).sale_price!=null):t.sale_price!=null,{t:a,lang:g}=n.useTranslations(),f=a("ecommerce.on_sale"),_=f==="ecommerce.on_sale"?"On Sale":f,b=U.getTrialSummary(e),m=e.freemius_plans?.[0]?.freemius_pricing?.[0],d=c.find(r=>r.is_default)?.code||"USD",p=m?.override_monthly_price??m?.api_monthly_price,v=m?.override_annual_price??m?.api_annual_price,u=typeof p=="number"?o.resolvePriceForCurrency({prices:{[d]:n.majorUnitAmountToMinor(p,d)},currencyCode:l,currencies:c}):null,x=typeof v=="number"?o.resolvePriceForCurrency({prices:{[d]:n.majorUnitAmountToMinor(v,d)},currencyCode:l,currencies:c}):null;return s.jsxDEV("div",{className:n.cn("group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-all hover:shadow-md",h),children:[s.jsxDEV(k,{href:`/product/${e.slug}`,className:"relative aspect-square overflow-hidden bg-muted",children:[D&&s.jsxDEV("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:_},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:135,columnNumber:11},void 0),e.image_url?s.jsxDEV("img",{src:e.image_url,alt:e.title,className:"h-full w-full object-cover object-center transition-transform duration-300 group-hover:scale-105"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:140,columnNumber:11},void 0):s.jsxDEV("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"No Image"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:146,columnNumber:11},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:133,columnNumber:7},void 0),s.jsxDEV("div",{className:"flex flex-1 flex-col p-4",children:[e.categories&&e.categories.length>0&&s.jsxDEV("div",{className:"text-[10px] font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400 mb-1",children:e.categories.map(r=>y.resolveTranslatedText(r.name,r.name_translations,g)).join(" • ")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:154,columnNumber:11},void 0),s.jsxDEV(k,{href:`/product/${e.slug}`,className:"mb-2",children:s.jsxDEV("h3",{className:"line-clamp-1 text-lg font-medium text-foreground group-hover:underline",children:e.title},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:161,columnNumber:12},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:160,columnNumber:9},void 0),s.jsxDEV("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?s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"flex items-center text-amber-500 mr-1",children:Array.from({length:5}).map((r,C)=>{const R=e.average_rating??0;return s.jsxDEV("svg",{className:n.cn("h-3.5 w-3.5 fill-current",C<Math.round(R)?"text-amber-500":"text-slate-200 dark:text-slate-800"),viewBox:"0 0 20 20",fill:"currentColor",children:s.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/ProductCard.tsx",lineNumber:183,columnNumber:23},void 0)},C,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:174,columnNumber:21},void 0)})},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:170,columnNumber:15},void 0),s.jsxDEV("span",{className:"font-semibold text-slate-700 dark:text-slate-300",children:Number(e.average_rating).toFixed(1)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:188,columnNumber:15},void 0),s.jsxDEV("span",{className:"ml-0.5",children:["(",e.total_reviews,")"]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:191,columnNumber:15},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:169,columnNumber:13},void 0):s.jsxDEV("span",{className:"text-slate-400 dark:text-slate-600",children:a("reviews.no_reviews")},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:194,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:167,columnNumber:9},void 0),s.jsxDEV("div",{className:"mb-4",children:e.product_type==="digital"&&(u||x)?s.jsxDEV("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[u&&s.jsxDEV("div",{className:"flex items-baseline gap-0.5",children:[s.jsxDEV("span",{className:"text-xl font-bold text-primary",children:n.formatPrice(u.price,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:203,columnNumber:19},void 0),s.jsxDEV("span",{className:"text-xs font-medium text-muted-foreground lowercase",children:["/ ",a("ecommerce.month")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:206,columnNumber:19},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:202,columnNumber:17},void 0),x&&s.jsxDEV("div",{className:"flex items-baseline gap-0.5",children:[s.jsxDEV("span",{className:n.cn("font-bold text-primary",u?"text-lg":"text-xl"),children:n.formatPrice(x.price,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:213,columnNumber:19},void 0),s.jsxDEV("span",{className:"text-xs font-medium text-muted-foreground lowercase",children:["/ ",a("ecommerce.year")]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:216,columnNumber:19},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:212,columnNumber:17},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:200,columnNumber:13},void 0):s.jsxDEV("div",{className:"flex items-baseline gap-2",children:[s.jsxDEV("span",{className:"text-xl font-bold text-primary",children:j},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:224,columnNumber:15},void 0),!N&&t.sale_price&&s.jsxDEV("span",{className:"text-sm text-muted-foreground line-through",children:n.formatPrice(t.price,l)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:228,columnNumber:17},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:223,columnNumber:13},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:198,columnNumber:9},void 0),b&&s.jsxDEV("div",{className:"mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs text-emerald-900",children:[s.jsxDEV("div",{className:"font-semibold",children:b.label},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:238,columnNumber:13},void 0),s.jsxDEV("div",{className:"text-emerald-700",children:b.paymentRequirementLabel},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:239,columnNumber:13},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:237,columnNumber:11},void 0),s.jsxDEV("div",{className:"mt-auto",children:s.jsxDEV(E.AddToCartButton,{product:{...e,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices},className:"w-full"},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:246,columnNumber:11},void 0)},void 0,!1,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:245,columnNumber:9},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:152,columnNumber:7},void 0)]},void 0,!0,{fileName:"C:/Users/desjardinsn/Desktop/NRH-NextBlock/libs/ecommerce/src/lib/components/ProductCard.tsx",lineNumber:132,columnNumber:5},void 0)};exports.ProductCard=V;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),q=require("./AddToCartButton.cjs.js"),c=require("@nextblock-cms/utils"),A=require("../use-price-formatter.cjs.js"),j=require("next/link"),R=require("../CurrencyProvider.cjs.js"),m=require("../currency.cjs.js"),T=require("../trials.cjs.js"),M=require("../variation-utils.cjs.js"),L=({product:e,className:y,priority:N=!1})=>{const i=A.usePriceFormatter(),{activeCurrencyCode:a,currencies:n}=R.useCurrency(),t=m.resolvePriceRangeForCurrency({entries:e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],currencyCode:a,currencies:n}),h=!!(e.has_variants&&t),o=m.resolveEffectivePriceForCurrency({prices:e.prices,salePrices:e.sale_prices,fallbackPrice:e.price,fallbackSalePrice:e.sale_price,saleStartAt:e.sale_start_at,saleEndAt:e.sale_end_at,scheduledPrice:e.scheduled_price,scheduledPrices:e.scheduled_prices,scheduledPriceAt:e.scheduled_price_at,currencyCode:a,currencies:n}),P=h&&t?t.min===t.max?i(t.min,a):`${i(t.min,a)} - ${i(t.max,a)}`:i(o.sale_price??o.price,a),w=e.variants?.length?e.variants:e.product_variants?.length?e.product_variants:[],C=h?w.some(s=>m.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:a,currencies:n}).sale_price!=null):o.sale_price!=null,{t:l,lang:S}=c.useTranslations(),f=l("ecommerce.on_sale"),F=f==="ecommerce.on_sale"?"On Sale":f,g=T.getTrialSummary(e,l),d=e.freemius_plans?.[0]?.freemius_pricing?.[0],x=n.find(s=>s.is_default)?.code||"USD",p=d?.override_monthly_price??d?.api_monthly_price,v=d?.override_annual_price??d?.api_annual_price,u=typeof p=="number"?m.resolvePriceForCurrency({prices:{[x]:c.majorUnitAmountToMinor(p,x)},currencyCode:a,currencies:n}):null,_=typeof v=="number"?m.resolvePriceForCurrency({prices:{[x]:c.majorUnitAmountToMinor(v,x)},currencyCode:a,currencies:n}):null;return r.jsxs("div",{className:c.cn("group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm transition-shadow hover:shadow-md",y),children:[r.jsxs(j,{href:`/product/${e.slug}`,tabIndex:-1,"aria-hidden":"true",className:"relative aspect-square overflow-hidden bg-muted",children:[C&&r.jsx("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:F}),e.image_url?r.jsx("img",{src:e.image_url,alt:"",width:600,height:600,loading:N?"eager":"lazy",decoding:"async",className:"h-full w-full object-cover object-center transition-transform duration-300 group-hover:scale-105"}):r.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:l("ecommerce.no_image")==="ecommerce.no_image"?"No image":l("ecommerce.no_image")})]}),r.jsxs("div",{className:"flex flex-1 flex-col p-4",children:[e.categories&&e.categories.length>0&&r.jsx("div",{className:"text-[10px] font-bold uppercase tracking-widest text-amber-600 dark:text-amber-400 mb-1",children:e.categories.map(s=>M.resolveTranslatedText(s.name,s.name_translations,S)).join(" • ")}),r.jsx(j,{href:`/product/${e.slug}`,className:"mb-2",children:r.jsx("h3",{className:"line-clamp-1 text-lg font-medium text-foreground group-hover:underline",children:e.title})}),r.jsx("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?r.jsxs(r.Fragment,{children:[r.jsx("div",{role:"img","aria-label":l("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`:l("ecommerce.rating_out_of_5",{rating:Number(e.average_rating??0).toFixed(1)}),className:"flex items-center text-amber-500 mr-1",children:Array.from({length:5}).map((s,b)=>{const k=e.average_rating??0;return r.jsx("svg",{className:c.cn("h-3.5 w-3.5 fill-current",b<Math.round(k)?"text-amber-500":"text-slate-200 dark:text-slate-800"),viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",children:r.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"})},b)})}),r.jsx("span",{className:"font-semibold text-slate-700 dark:text-slate-300",children:Number(e.average_rating).toFixed(1)}),r.jsxs("span",{className:"ml-0.5",children:["(",e.total_reviews,")"]})]}):r.jsx("span",{className:"text-slate-400 dark:text-slate-600",children:l("reviews.no_reviews")})}),r.jsx("div",{className:"mb-4",children:e.product_type==="digital"&&(u||_)?r.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[u&&r.jsxs("div",{className:"flex items-baseline gap-0.5",children:[r.jsx("span",{className:"text-xl font-bold text-primary",children:i(u.price,a)}),r.jsxs("span",{className:"text-xs font-medium text-muted-foreground lowercase",children:["/ ",l("ecommerce.month")]})]}),_&&r.jsxs("div",{className:"flex items-baseline gap-0.5",children:[r.jsx("span",{className:c.cn("font-bold text-primary",u?"text-lg":"text-xl"),children:i(_.price,a)}),r.jsxs("span",{className:"text-xs font-medium text-muted-foreground lowercase",children:["/ ",l("ecommerce.year")]})]})]}):r.jsxs("div",{className:"flex items-baseline gap-2",children:[r.jsx("span",{className:"text-xl font-bold text-primary",children:P}),!h&&o.sale_price&&r.jsxs("span",{className:"text-sm text-muted-foreground tabular-nums",children:[r.jsxs("span",{className:"sr-only",children:[l("ecommerce.regular_price")==="ecommerce.regular_price"?"Regular price":l("ecommerce.regular_price")," "]}),r.jsx("s",{children:i(o.price,a)})]})]})}),g&&r.jsxs("div",{className:"mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs text-emerald-900",children:[r.jsx("div",{className:"font-semibold",children:g.label}),r.jsx("div",{className:"text-emerald-700",children:g.paymentRequirementLabel})]}),r.jsx("div",{className:"mt-auto",children:r.jsx(q.AddToCartButton,{product:{...e,price:e.price,prices:e.prices,sale_price:e.sale_price,sale_prices:e.sale_prices},className:"w-full"})})]})]})};exports.ProductCard=L;
@@ -2,6 +2,8 @@ import { Product } from '../types';
2
2
  interface ProductCardProps {
3
3
  product: Product;
4
4
  className?: string;
5
+ /** Above the fold (first grid row): load the image eagerly instead of lazily. */
6
+ priority?: boolean;
5
7
  }
6
- export declare const ProductCard: ({ product, className }: ProductCardProps) => import("react").JSX.Element;
8
+ export declare const ProductCard: ({ product, className, priority }: ProductCardProps) => import("react").JSX.Element;
7
9
  export {};