@reblu/site-blocks 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -29,11 +29,14 @@ __export(src_exports, {
29
29
  DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE: () => DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE,
30
30
  DEFAULT_SHOP_ERROR_MESSAGES: () => DEFAULT_SHOP_ERROR_MESSAGES,
31
31
  DEFAULT_SHOP_PRICE_BANDS: () => DEFAULT_SHOP_PRICE_BANDS,
32
+ DEFAULT_TRUST_ICONS: () => DEFAULT_TRUST_ICONS,
32
33
  FaqAccordion: () => FaqAccordion,
33
34
  MarkdownRenderer: () => MarkdownRenderer,
34
35
  OrderConfirmation: () => OrderConfirmation,
35
36
  PageBlocks: () => PageBlocks,
37
+ ParentPage: () => ParentPage,
36
38
  ProductCard: () => ProductCard,
39
+ ProductTrustItems: () => ProductTrustItems,
37
40
  ProfileCard: () => ProfileCard,
38
41
  SafeHtml: () => SafeHtml,
39
42
  ShopFilters: () => ShopFilters,
@@ -13371,25 +13374,32 @@ function Treatment({ page, className }) {
13371
13374
  ] });
13372
13375
  }
13373
13376
 
13374
- // src/components/specialty.tsx
13377
+ // src/components/parent-page.tsx
13375
13378
  var import_utils4 = require("@reblu/site-ui/utils");
13376
13379
  var import_jsx_runtime4 = require("react/jsx-runtime");
13377
- function Specialty({
13380
+ var defaultChildPageHref = (slug) => `/${slug}`;
13381
+ function ParentPage({
13378
13382
  page,
13379
- treatments = [],
13380
- treatmentHref = (slug) => `/${slug}`,
13381
- treatmentsLabel = "Treatments",
13383
+ childPages,
13384
+ childPageHref,
13385
+ childPagesLabel,
13386
+ treatments,
13387
+ treatmentHref,
13388
+ treatmentsLabel,
13382
13389
  className
13383
13390
  }) {
13391
+ const pages = childPages ?? treatments ?? [];
13392
+ const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13393
+ const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
13384
13394
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("article", { className: (0, import_utils4.cn)("space-y-12", className), "data-slot": "specialty", children: [
13385
13395
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PageHero, { page }),
13386
13396
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PageSectionList, { sections: page.sections }),
13387
- treatments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("section", { className: "space-y-6", children: [
13388
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className: "text-2xl font-bold", children: treatmentsLabel }),
13389
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: treatments.map((t) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
13397
+ pages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("section", { className: "space-y-6", children: [
13398
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className: "text-2xl font-bold", children: label }),
13399
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: pages.map((t) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
13390
13400
  "a",
13391
13401
  {
13392
- href: treatmentHref(t.slug),
13402
+ href: hrefFor(t.slug),
13393
13403
  className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13394
13404
  children: [
13395
13405
  t.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
@@ -13412,6 +13422,9 @@ function Specialty({
13412
13422
  ] });
13413
13423
  }
13414
13424
 
13425
+ // src/components/specialty.tsx
13426
+ var Specialty = ParentPage;
13427
+
13415
13428
  // src/components/profile-card.tsx
13416
13429
  var import_utils5 = require("@reblu/site-ui/utils");
13417
13430
  var import_jsx_runtime5 = require("react/jsx-runtime");
@@ -13492,11 +13505,246 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13492
13505
  );
13493
13506
  }
13494
13507
 
13508
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/createLucideIcon.js
13509
+ var import_react2 = require("react");
13510
+
13511
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/shared/src/utils.js
13512
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
13513
+ var toCamelCase = (string) => string.replace(
13514
+ /^([A-Z])|[\s-_]+(\w)/g,
13515
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
13516
+ );
13517
+ var toPascalCase = (string) => {
13518
+ const camelCase = toCamelCase(string);
13519
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
13520
+ };
13521
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
13522
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
13523
+ }).join(" ").trim();
13524
+ var hasA11yProp = (props) => {
13525
+ for (const prop in props) {
13526
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
13527
+ return true;
13528
+ }
13529
+ }
13530
+ };
13531
+
13532
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.js
13533
+ var import_react = require("react");
13534
+
13535
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/defaultAttributes.js
13536
+ var defaultAttributes = {
13537
+ xmlns: "http://www.w3.org/2000/svg",
13538
+ width: 24,
13539
+ height: 24,
13540
+ viewBox: "0 0 24 24",
13541
+ fill: "none",
13542
+ stroke: "currentColor",
13543
+ strokeWidth: 2,
13544
+ strokeLinecap: "round",
13545
+ strokeLinejoin: "round"
13546
+ };
13547
+
13548
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.js
13549
+ var Icon = (0, import_react.forwardRef)(
13550
+ ({
13551
+ color: color2 = "currentColor",
13552
+ size = 24,
13553
+ strokeWidth = 2,
13554
+ absoluteStrokeWidth,
13555
+ className = "",
13556
+ children: children2,
13557
+ iconNode,
13558
+ ...rest
13559
+ }, ref) => (0, import_react.createElement)(
13560
+ "svg",
13561
+ {
13562
+ ref,
13563
+ ...defaultAttributes,
13564
+ width: size,
13565
+ height: size,
13566
+ stroke: color2,
13567
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
13568
+ className: mergeClasses("lucide", className),
13569
+ ...!children2 && !hasA11yProp(rest) && { "aria-hidden": "true" },
13570
+ ...rest
13571
+ },
13572
+ [
13573
+ ...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)),
13574
+ ...Array.isArray(children2) ? children2 : [children2]
13575
+ ]
13576
+ )
13577
+ );
13578
+
13579
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/createLucideIcon.js
13580
+ var createLucideIcon = (iconName, iconNode) => {
13581
+ const Component = (0, import_react2.forwardRef)(
13582
+ ({ className, ...props }, ref) => (0, import_react2.createElement)(Icon, {
13583
+ ref,
13584
+ iconNode,
13585
+ className: mergeClasses(
13586
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
13587
+ `lucide-${iconName}`,
13588
+ className
13589
+ ),
13590
+ ...props
13591
+ })
13592
+ );
13593
+ Component.displayName = toPascalCase(iconName);
13594
+ return Component;
13595
+ };
13596
+
13597
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/award.js
13598
+ var __iconNode = [
13599
+ [
13600
+ "path",
13601
+ {
13602
+ d: "m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",
13603
+ key: "1yiouv"
13604
+ }
13605
+ ],
13606
+ ["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }]
13607
+ ];
13608
+ var Award = createLucideIcon("award", __iconNode);
13609
+
13610
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/badge-check.js
13611
+ var __iconNode2 = [
13612
+ [
13613
+ "path",
13614
+ {
13615
+ d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",
13616
+ key: "3c2336"
13617
+ }
13618
+ ],
13619
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
13620
+ ];
13621
+ var BadgeCheck = createLucideIcon("badge-check", __iconNode2);
13622
+
13623
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/gift.js
13624
+ var __iconNode3 = [
13625
+ ["rect", { x: "3", y: "8", width: "18", height: "4", rx: "1", key: "bkv52" }],
13626
+ ["path", { d: "M12 8v13", key: "1c76mn" }],
13627
+ ["path", { d: "M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7", key: "6wjy6b" }],
13628
+ [
13629
+ "path",
13630
+ {
13631
+ d: "M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",
13632
+ key: "1ihvrl"
13633
+ }
13634
+ ]
13635
+ ];
13636
+ var Gift = createLucideIcon("gift", __iconNode3);
13637
+
13638
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/headset.js
13639
+ var __iconNode4 = [
13640
+ [
13641
+ "path",
13642
+ {
13643
+ d: "M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z",
13644
+ key: "12oyoe"
13645
+ }
13646
+ ],
13647
+ ["path", { d: "M21 16v2a4 4 0 0 1-4 4h-5", key: "1x7m43" }]
13648
+ ];
13649
+ var Headset = createLucideIcon("headset", __iconNode4);
13650
+
13651
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js
13652
+ var __iconNode5 = [
13653
+ ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
13654
+ ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
13655
+ ];
13656
+ var RotateCcw = createLucideIcon("rotate-ccw", __iconNode5);
13657
+
13658
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shield-check.js
13659
+ var __iconNode6 = [
13660
+ [
13661
+ "path",
13662
+ {
13663
+ d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
13664
+ key: "oel41y"
13665
+ }
13666
+ ],
13667
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
13668
+ ];
13669
+ var ShieldCheck = createLucideIcon("shield-check", __iconNode6);
13670
+
13671
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/store.js
13672
+ var __iconNode7 = [
13673
+ ["path", { d: "M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5", key: "slp6dd" }],
13674
+ [
13675
+ "path",
13676
+ {
13677
+ d: "M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244",
13678
+ key: "o0xfot"
13679
+ }
13680
+ ],
13681
+ ["path", { d: "M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05", key: "wn3emo" }]
13682
+ ];
13683
+ var Store = createLucideIcon("store", __iconNode7);
13684
+
13685
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/truck.js
13686
+ var __iconNode8 = [
13687
+ ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
13688
+ ["path", { d: "M15 18H9", key: "1lyqi6" }],
13689
+ [
13690
+ "path",
13691
+ {
13692
+ d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
13693
+ key: "lysw3i"
13694
+ }
13695
+ ],
13696
+ ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
13697
+ ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
13698
+ ];
13699
+ var Truck = createLucideIcon("truck", __iconNode8);
13700
+
13701
+ // src/components/product-trust-items.tsx
13702
+ var import_utils9 = require("@reblu/site-ui/utils");
13703
+ var import_jsx_runtime7 = require("react/jsx-runtime");
13704
+ var DEFAULT_TRUST_ICONS = Object.freeze({
13705
+ shipping: Truck,
13706
+ returns: RotateCcw,
13707
+ "secure-payment": ShieldCheck,
13708
+ support: Headset,
13709
+ gift: Gift,
13710
+ pickup: Store,
13711
+ warranty: BadgeCheck,
13712
+ quality: Award
13713
+ });
13714
+ function isKnownIcon(icon) {
13715
+ return Object.prototype.hasOwnProperty.call(DEFAULT_TRUST_ICONS, icon);
13716
+ }
13717
+ function isEntryObject(value) {
13718
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13719
+ }
13720
+ function ProductTrustItems({
13721
+ items,
13722
+ icons,
13723
+ as: List = "ul",
13724
+ className,
13725
+ itemClassName
13726
+ }) {
13727
+ if (!Array.isArray(items) || items.length === 0) return null;
13728
+ const rows = items.flatMap((item, index) => {
13729
+ if (!isEntryObject(item)) return [];
13730
+ const icon = item.icon;
13731
+ const text3 = typeof item.text === "string" ? item.text.trim() : "";
13732
+ if (typeof icon !== "string" || !isKnownIcon(icon) || text3 === "") return [];
13733
+ const Icon2 = icons?.[icon] ?? DEFAULT_TRUST_ICONS[icon];
13734
+ return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
13735
+ });
13736
+ if (rows.length === 0) return null;
13737
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(List, { "data-slot": "product-trust-items", className: (0, import_utils9.cn)("space-y-2.5", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("li", { className: (0, import_utils9.cn)("flex items-center gap-3 text-sm text-muted-foreground", itemClassName), children: [
13738
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
13739
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: text3 })
13740
+ ] }, key2)) });
13741
+ }
13742
+
13495
13743
  // src/components/faq-accordion.tsx
13496
- var import_utils7 = require("@reblu/site-ui/utils");
13744
+ var import_utils10 = require("@reblu/site-ui/utils");
13497
13745
 
13498
13746
  // src/components/_heading.tsx
13499
- var import_jsx_runtime7 = require("react/jsx-runtime");
13747
+ var import_jsx_runtime8 = require("react/jsx-runtime");
13500
13748
  function nextHeadingLevel(level) {
13501
13749
  return Math.min(level + 1, 6);
13502
13750
  }
@@ -13506,11 +13754,11 @@ function Heading({
13506
13754
  children: children2
13507
13755
  }) {
13508
13756
  const Tag = `h${level}`;
13509
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Tag, { className, children: children2 });
13757
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Tag, { className, children: children2 });
13510
13758
  }
13511
13759
 
13512
13760
  // src/components/faq-accordion.tsx
13513
- var import_jsx_runtime8 = require("react/jsx-runtime");
13761
+ var import_jsx_runtime9 = require("react/jsx-runtime");
13514
13762
  function FaqAccordion({
13515
13763
  items,
13516
13764
  heading,
@@ -13521,18 +13769,18 @@ function FaqAccordion({
13521
13769
  }) {
13522
13770
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
13523
13771
  if (visible.length === 0) return null;
13524
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: (0, import_utils7.cn)("space-y-4", className), "data-slot": "faq-accordion", children: [
13525
- heading && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13526
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
13772
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: (0, import_utils10.cn)("space-y-4", className), "data-slot": "faq-accordion", children: [
13773
+ heading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13774
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
13527
13775
  "details",
13528
13776
  {
13529
13777
  className: "group px-4",
13530
13778
  "data-slot": "faq-item",
13531
13779
  ...defaultOpen.includes(index) ? { open: true } : {},
13532
13780
  children: [
13533
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("summary", { className: "flex cursor-pointer list-none items-center justify-between gap-4 py-4 font-medium focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden", children: [
13534
- questionHeadingLevel ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: item.q }),
13535
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
13781
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("summary", { className: "flex cursor-pointer list-none items-center justify-between gap-4 py-4 font-medium focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden", children: [
13782
+ questionHeadingLevel ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: item.q }),
13783
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13536
13784
  "span",
13537
13785
  {
13538
13786
  "aria-hidden": "true",
@@ -13541,7 +13789,7 @@ function FaqAccordion({
13541
13789
  }
13542
13790
  )
13543
13791
  ] }),
13544
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13792
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13545
13793
  ]
13546
13794
  },
13547
13795
  index
@@ -13550,40 +13798,40 @@ function FaqAccordion({
13550
13798
  }
13551
13799
 
13552
13800
  // src/components/page-blocks.tsx
13553
- var import_utils8 = require("@reblu/site-ui/utils");
13801
+ var import_utils11 = require("@reblu/site-ui/utils");
13554
13802
  var import_button_variants2 = require("@reblu/site-ui/button-variants");
13555
- var import_jsx_runtime9 = require("react/jsx-runtime");
13803
+ var import_jsx_runtime10 = require("react/jsx-runtime");
13556
13804
  var ALIASES = {
13557
13805
  doctor_embed: "profile_embed",
13558
13806
  specialty_embed: "page_embed"
13559
13807
  };
13560
13808
  function HeroBlock({ block, headingLevel }) {
13561
13809
  const { title, subtitle, imageUrl } = block.data;
13562
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-4", children: [
13563
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
13564
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-lg opacity-80", children: subtitle }),
13565
- imageUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
13810
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "space-y-4", children: [
13811
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
13812
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-lg opacity-80", children: subtitle }),
13813
+ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
13566
13814
  ] });
13567
13815
  }
13568
13816
  function RichtextBlock({ block, headingLevel }) {
13569
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13817
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13570
13818
  }
13571
13819
  function FaqBlock({ block }) {
13572
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(FaqAccordion, { items: block.data.items });
13820
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FaqAccordion, { items: block.data.items });
13573
13821
  }
13574
13822
  function StatsBlock({ block }) {
13575
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col-reverse gap-1", children: [
13576
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("dt", { className: "text-sm opacity-80", children: item.label }),
13577
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("dd", { className: "text-3xl font-bold", children: item.value })
13823
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col-reverse gap-1", children: [
13824
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("dt", { className: "text-sm opacity-80", children: item.label }),
13825
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("dd", { className: "text-3xl font-bold", children: item.value })
13578
13826
  ] }, i)) });
13579
13827
  }
13580
13828
  function TestimonialBlock({ block }) {
13581
13829
  const { quote, author, role, avatarUrl } = block.data;
13582
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("figure", { className: "space-y-4", children: [
13583
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { children: quote }) }),
13584
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("figcaption", { className: "flex items-center gap-3", children: [
13830
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("figure", { className: "space-y-4", children: [
13831
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { children: quote }) }),
13832
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("figcaption", { className: "flex items-center gap-3", children: [
13585
13833
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
13586
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13834
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13587
13835
  "img",
13588
13836
  {
13589
13837
  src: avatarUrl,
@@ -13592,9 +13840,9 @@ function TestimonialBlock({ block }) {
13592
13840
  className: "h-10 w-10 rounded-full object-cover"
13593
13841
  }
13594
13842
  ),
13595
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
13596
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-semibold", children: author }),
13597
- role && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "block text-sm opacity-80", children: role })
13843
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { children: [
13844
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "font-semibold", children: author }),
13845
+ role && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "block text-sm opacity-80", children: role })
13598
13846
  ] })
13599
13847
  ] })
13600
13848
  ] });
@@ -13603,19 +13851,19 @@ function CtaSlotBlock(_props) {
13603
13851
  return null;
13604
13852
  }
13605
13853
  function FeatureListBlock({ block }) {
13606
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("li", { children: item.text }, i)) });
13854
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("li", { children: item.text }, i)) });
13607
13855
  }
13608
13856
  function GalleryBlock({ block }) {
13609
13857
  const { images } = block.data;
13610
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13858
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13611
13859
  "div",
13612
13860
  {
13613
- className: (0, import_utils8.cn)(
13861
+ className: (0, import_utils11.cn)(
13614
13862
  "grid gap-4",
13615
13863
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
13616
13864
  ),
13617
- children: images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("figure", { className: "space-y-1", children: [
13618
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13865
+ children: images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("figure", { className: "space-y-1", children: [
13866
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13619
13867
  "img",
13620
13868
  {
13621
13869
  src: img.url,
@@ -13624,7 +13872,7 @@ function GalleryBlock({ block }) {
13624
13872
  className: "h-full w-full object-cover"
13625
13873
  }
13626
13874
  ) }),
13627
- img.caption && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
13875
+ img.caption && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
13628
13876
  ] }, `${img.url}-${i}`))
13629
13877
  }
13630
13878
  );
@@ -13634,13 +13882,13 @@ function EmbedCard({
13634
13882
  headingLevel,
13635
13883
  embedHref
13636
13884
  }) {
13637
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
13885
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13638
13886
  "a",
13639
13887
  {
13640
13888
  href: embedHref(resolved),
13641
13889
  className: "group block overflow-hidden rounded-xl border border-border bg-card text-card-foreground transition-shadow hover:shadow-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
13642
13890
  children: [
13643
- resolved.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13891
+ resolved.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13644
13892
  "img",
13645
13893
  {
13646
13894
  src: resolved.coverImageUrl,
@@ -13649,24 +13897,24 @@ function EmbedCard({
13649
13897
  className: "h-full w-full object-cover"
13650
13898
  }
13651
13899
  ) }),
13652
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-1 p-4", children: [
13653
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
13654
- resolved.role && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
13655
- resolved.excerpt && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-muted-foreground", children: resolved.excerpt })
13900
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "space-y-1 p-4", children: [
13901
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
13902
+ resolved.role && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
13903
+ resolved.excerpt && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-muted-foreground", children: resolved.excerpt })
13656
13904
  ] })
13657
13905
  ]
13658
13906
  }
13659
13907
  );
13660
13908
  }
13661
13909
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
13662
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13910
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13663
13911
  }
13664
13912
  function ProfileEmbedBlock({
13665
13913
  block,
13666
13914
  headingLevel,
13667
13915
  embedHref
13668
13916
  }) {
13669
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13917
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13670
13918
  }
13671
13919
  var DEFAULT_RENDERERS = {
13672
13920
  hero: HeroBlock,
@@ -13723,14 +13971,14 @@ function toIdFragment(value) {
13723
13971
  function SectionCta2({ cta }) {
13724
13972
  if (!hasUsableCta(cta)) return null;
13725
13973
  const variant = toButtonVariant(cta.variant);
13726
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13974
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13727
13975
  "a",
13728
13976
  {
13729
13977
  href: cta.url,
13730
13978
  "data-slot": "button",
13731
13979
  "data-variant": variant,
13732
13980
  "data-size": "default",
13733
- className: (0, import_utils8.cn)((0, import_button_variants2.buttonVariants)({ variant, size: "default" })),
13981
+ className: (0, import_utils11.cn)((0, import_button_variants2.buttonVariants)({ variant, size: "default" })),
13734
13982
  ...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
13735
13983
  children: cta.label
13736
13984
  }
@@ -13756,17 +14004,17 @@ function PageBlocks({
13756
14004
  const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
13757
14005
  const background = block.backgroundColor;
13758
14006
  return [
13759
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
14007
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13760
14008
  "section",
13761
14009
  {
13762
14010
  "data-slot": "page-block",
13763
14011
  "data-block-type": type,
13764
14012
  "aria-labelledby": headingId,
13765
14013
  style: surfaceStyle(background),
13766
- className: (0, import_utils8.cn)("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14014
+ className: (0, import_utils11.cn)("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
13767
14015
  children: [
13768
- block.heading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { id: headingId, children: block.heading }) }),
13769
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
14016
+ block.heading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { id: headingId, children: block.heading }) }),
14017
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13770
14018
  Renderer,
13771
14019
  {
13772
14020
  block,
@@ -13774,7 +14022,7 @@ function PageBlocks({
13774
14022
  embedHref
13775
14023
  }
13776
14024
  ),
13777
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SectionCta2, { cta: block.cta })
14025
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SectionCta2, { cta: block.cta })
13778
14026
  ]
13779
14027
  },
13780
14028
  block.id
@@ -13782,12 +14030,12 @@ function PageBlocks({
13782
14030
  ];
13783
14031
  });
13784
14032
  if (sections.length === 0) return null;
13785
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_utils8.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
14033
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: (0, import_utils11.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
13786
14034
  }
13787
14035
 
13788
14036
  // src/components/shop-filters.tsx
13789
- var import_utils9 = require("@reblu/site-ui/utils");
13790
- var import_jsx_runtime10 = require("react/jsx-runtime");
14037
+ var import_utils12 = require("@reblu/site-ui/utils");
14038
+ var import_jsx_runtime11 = require("react/jsx-runtime");
13791
14039
  var DEFAULT_SHOP_PRICE_BANDS = [
13792
14040
  { max: 2500 },
13793
14041
  { min: 2500, max: 5e3 },
@@ -13831,7 +14079,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
13831
14079
  return "";
13832
14080
  }
13833
14081
  function OptionLink({ href, active, label, onActivate }) {
13834
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14082
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13835
14083
  "a",
13836
14084
  {
13837
14085
  href,
@@ -13840,7 +14088,7 @@ function OptionLink({ href, active, label, onActivate }) {
13840
14088
  event.preventDefault();
13841
14089
  onActivate();
13842
14090
  } : void 0,
13843
- className: (0, import_utils9.cn)(
14091
+ className: (0, import_utils12.cn)(
13844
14092
  "inline-flex items-center rounded-full border px-3 py-1 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
13845
14093
  active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
13846
14094
  ),
@@ -13849,9 +14097,9 @@ function OptionLink({ href, active, label, onActivate }) {
13849
14097
  );
13850
14098
  }
13851
14099
  function FilterFieldset({ legend, children: children2 }) {
13852
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("fieldset", { className: "space-y-2", children: [
13853
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("legend", { className: "text-sm font-medium text-foreground", children: legend }),
13854
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-2", children: children2 })
14100
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("fieldset", { className: "space-y-2", children: [
14101
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14102
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-wrap gap-2", children: children2 })
13855
14103
  ] });
13856
14104
  }
13857
14105
  function ShopFilters({
@@ -13874,11 +14122,11 @@ function ShopFilters({
13874
14122
  if (!shouldRenderShopFilters(facets, active)) {
13875
14123
  return null;
13876
14124
  }
13877
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_utils9.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
14125
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: (0, import_utils12.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
13878
14126
  visibleTaxonomies.map((axis) => {
13879
14127
  const activeSlug = active.taxonomy?.[axis.key];
13880
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(FilterFieldset, { legend: axis.label, children: [
13881
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14128
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(FilterFieldset, { legend: axis.label, children: [
14129
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13882
14130
  OptionLink,
13883
14131
  {
13884
14132
  href: hrefs.taxonomy(axis.key, void 0),
@@ -13893,7 +14141,7 @@ function ShopFilters({
13893
14141
  ),
13894
14142
  axis.terms.map((term) => {
13895
14143
  const isActive = activeSlug === term.slug;
13896
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14144
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13897
14145
  OptionLink,
13898
14146
  {
13899
14147
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -13913,9 +14161,9 @@ function ShopFilters({
13913
14161
  }),
13914
14162
  visibleAttributes.map((attr) => {
13915
14163
  const activeValues = toValueArray(active.attr?.[attr.key]);
13916
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14164
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
13917
14165
  const isActive = activeValues.includes(opt.value);
13918
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14166
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13919
14167
  OptionLink,
13920
14168
  {
13921
14169
  href: hrefs.attr(attr.key, opt.value),
@@ -13933,11 +14181,11 @@ function ShopFilters({
13933
14181
  );
13934
14182
  }) }, attr.key);
13935
14183
  }),
13936
- showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14184
+ showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
13937
14185
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
13938
14186
  const nextMin = isActive ? void 0 : band.min;
13939
14187
  const nextMax = isActive ? void 0 : band.max;
13940
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14188
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13941
14189
  OptionLink,
13942
14190
  {
13943
14191
  href: hrefs.price(nextMin, nextMax),
@@ -13948,7 +14196,7 @@ function ShopFilters({
13948
14196
  i
13949
14197
  );
13950
14198
  }) }),
13951
- hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14199
+ hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13952
14200
  OptionLink,
13953
14201
  {
13954
14202
  href: hrefs.onSale(!active.onSale),
@@ -13957,7 +14205,7 @@ function ShopFilters({
13957
14205
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
13958
14206
  }
13959
14207
  ),
13960
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14208
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13961
14209
  "a",
13962
14210
  {
13963
14211
  href: hrefs.clearAll(),
@@ -13973,8 +14221,8 @@ function ShopFilters({
13973
14221
  }
13974
14222
 
13975
14223
  // src/components/cart-line-list.tsx
13976
- var import_utils10 = require("@reblu/site-ui/utils");
13977
- var import_jsx_runtime11 = require("react/jsx-runtime");
14224
+ var import_utils13 = require("@reblu/site-ui/utils");
14225
+ var import_jsx_runtime12 = require("react/jsx-runtime");
13978
14226
  var DEFAULT_LABELS2 = {
13979
14227
  quantityLabel: "Cantidad",
13980
14228
  decrease: "Reducir cantidad",
@@ -13999,9 +14247,9 @@ function CartLineList({
13999
14247
  }) {
14000
14248
  const t = { ...DEFAULT_LABELS2, ...labels };
14001
14249
  const noticeContent = notice === true ? t.cancelledNotice : notice;
14002
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: (0, import_utils10.cn)("space-y-4", className), "data-slot": "cart-line-list", children: [
14003
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14004
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14250
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: (0, import_utils13.cn)("space-y-4", className), "data-slot": "cart-line-list", children: [
14251
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14252
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14005
14253
  "div",
14006
14254
  {
14007
14255
  role: "status",
@@ -14010,32 +14258,32 @@ function CartLineList({
14010
14258
  children: noticeContent
14011
14259
  }
14012
14260
  ),
14013
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
14261
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
14014
14262
  const maxQty = item.maxStock ?? Infinity;
14015
14263
  const atMax = item.quantity >= maxQty;
14016
14264
  const atMin = item.quantity <= 1;
14017
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
14265
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
14018
14266
  "li",
14019
14267
  {
14020
14268
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
14021
14269
  children: [
14022
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
14023
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "min-w-0 flex-1", children: [
14024
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
14025
- item.variantName && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
14026
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { className: "mt-1 text-sm text-muted-foreground", children: [
14270
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
14271
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "min-w-0 flex-1", children: [
14272
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
14273
+ item.variantName && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
14274
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("p", { className: "mt-1 text-sm text-muted-foreground", children: [
14027
14275
  formatPrice(item.unitPrice, currencyCode, locale),
14028
14276
  " ",
14029
14277
  t.unitPriceSuffix
14030
14278
  ] }),
14031
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
14279
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
14032
14280
  "div",
14033
14281
  {
14034
14282
  role: "group",
14035
14283
  "aria-label": t.quantityLabel,
14036
14284
  className: "mt-3 flex items-center gap-3",
14037
14285
  children: [
14038
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14286
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14039
14287
  "button",
14040
14288
  {
14041
14289
  type: "button",
@@ -14046,8 +14294,8 @@ function CartLineList({
14046
14294
  children: "\u2212"
14047
14295
  }
14048
14296
  ),
14049
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14050
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14297
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14298
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14051
14299
  "button",
14052
14300
  {
14053
14301
  type: "button",
@@ -14058,7 +14306,7 @@ function CartLineList({
14058
14306
  children: "+"
14059
14307
  }
14060
14308
  ),
14061
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14309
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14062
14310
  "button",
14063
14311
  {
14064
14312
  type: "button",
@@ -14072,7 +14320,7 @@ function CartLineList({
14072
14320
  }
14073
14321
  )
14074
14322
  ] }),
14075
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
14323
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
14076
14324
  ]
14077
14325
  },
14078
14326
  lineKey(item.productId, item.variantId)
@@ -14082,8 +14330,8 @@ function CartLineList({
14082
14330
  }
14083
14331
 
14084
14332
  // src/components/cart-summary.tsx
14085
- var import_utils11 = require("@reblu/site-ui/utils");
14086
- var import_jsx_runtime12 = require("react/jsx-runtime");
14333
+ var import_utils14 = require("@reblu/site-ui/utils");
14334
+ var import_jsx_runtime13 = require("react/jsx-runtime");
14087
14335
  var DEFAULT_LABELS3 = {
14088
14336
  subtotal: "Subtotal",
14089
14337
  discountPrefix: "Descuento",
@@ -14110,40 +14358,40 @@ function CartSummary({
14110
14358
  const hasDiscount = Boolean(discount && discount > 0);
14111
14359
  const noticeContent = notice === true ? t.cancelledNotice : notice;
14112
14360
  const hasNotice = noticeContent != null && noticeContent !== false;
14113
- const breakdown = /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
14361
+ const breakdown = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
14114
14362
  "dl",
14115
14363
  {
14116
- className: (0, import_utils11.cn)("space-y-2 text-sm", !hasNotice && className),
14364
+ className: (0, import_utils14.cn)("space-y-2 text-sm", !hasNotice && className),
14117
14365
  "data-slot": "cart-summary",
14118
14366
  children: [
14119
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14120
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dt", { children: t.subtotal }),
14121
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dd", { children: formatPrice(subtotal, currencyCode, locale) })
14367
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14368
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dt", { children: t.subtotal }),
14369
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dd", { children: formatPrice(subtotal, currencyCode, locale) })
14122
14370
  ] }),
14123
- hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14124
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("dt", { children: [
14371
+ hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14372
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dt", { children: [
14125
14373
  t.discountPrefix,
14126
14374
  discountCode ? ` (${discountCode})` : ""
14127
14375
  ] }),
14128
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("dd", { children: [
14376
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dd", { children: [
14129
14377
  "-",
14130
14378
  formatPrice(discount, currencyCode, locale)
14131
14379
  ] })
14132
14380
  ] }),
14133
- shippingEnabled && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14134
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dt", { children: t.shipping }),
14135
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
14381
+ shippingEnabled && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14382
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dt", { children: t.shipping }),
14383
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
14136
14384
  ] }),
14137
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14138
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dt", { children: t.total }),
14139
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("dd", { children: formatPrice(total, currencyCode, locale) })
14385
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14386
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dt", { children: t.total }),
14387
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("dd", { children: formatPrice(total, currencyCode, locale) })
14140
14388
  ] })
14141
14389
  ]
14142
14390
  }
14143
14391
  );
14144
14392
  if (!hasNotice) return breakdown;
14145
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: (0, import_utils11.cn)("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14146
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14393
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: (0, import_utils14.cn)("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14394
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
14147
14395
  "div",
14148
14396
  {
14149
14397
  role: "status",
@@ -14157,8 +14405,8 @@ function CartSummary({
14157
14405
  }
14158
14406
 
14159
14407
  // src/components/added-to-cart-toast.tsx
14160
- var import_utils12 = require("@reblu/site-ui/utils");
14161
- var import_jsx_runtime13 = (
14408
+ var import_utils15 = require("@reblu/site-ui/utils");
14409
+ var import_jsx_runtime14 = (
14162
14410
  // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
14163
14411
  require("react/jsx-runtime")
14164
14412
  );
@@ -14181,32 +14429,32 @@ function AddedToCartToast({
14181
14429
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
14182
14430
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
14183
14431
  const variant = status === "success" ? "success" : "error";
14184
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
14432
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
14185
14433
  "div",
14186
14434
  {
14187
14435
  "data-slot": "added-to-cart-toast",
14188
14436
  "data-variant": variant,
14189
- className: (0, import_utils12.cn)(
14437
+ className: (0, import_utils15.cn)(
14190
14438
  "flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
14191
14439
  variant === "success" && "border-green-600/30 dark:border-green-400/30",
14192
14440
  variant === "error" && "border-destructive/30",
14193
14441
  className
14194
14442
  ),
14195
14443
  children: [
14196
- hasThumbnail && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14197
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "min-w-0 flex-1", children: [
14198
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "truncate font-semibold text-foreground", children: productName }),
14199
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
14444
+ hasThumbnail && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14445
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "min-w-0 flex-1", children: [
14446
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "truncate font-semibold text-foreground", children: productName }),
14447
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
14200
14448
  ] }),
14201
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
14449
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
14202
14450
  ]
14203
14451
  }
14204
14452
  );
14205
14453
  }
14206
14454
 
14207
14455
  // src/components/checkout-login-prompt.tsx
14208
- var import_utils13 = require("@reblu/site-ui/utils");
14209
- var import_jsx_runtime14 = require("react/jsx-runtime");
14456
+ var import_utils16 = require("@reblu/site-ui/utils");
14457
+ var import_jsx_runtime15 = require("react/jsx-runtime");
14210
14458
  var DEFAULT_LABELS5 = {
14211
14459
  title: "Identificaci\xF3n",
14212
14460
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -14233,26 +14481,26 @@ function CheckoutLoginPrompt({
14233
14481
  if (!open) return null;
14234
14482
  const t = { ...DEFAULT_LABELS5, ...labels };
14235
14483
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
14236
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
14237
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14238
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
14484
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
14485
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14486
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14239
14487
  "div",
14240
14488
  {
14241
14489
  role: "dialog",
14242
14490
  "aria-modal": "true",
14243
14491
  "aria-labelledby": "checkout-login-prompt-title",
14244
14492
  "data-slot": "checkout-login-prompt",
14245
- className: (0, import_utils13.cn)(
14493
+ className: (0, import_utils16.cn)(
14246
14494
  "fixed left-1/2 top-1/2 z-50 w-full max-w-md -translate-x-1/2 -translate-y-1/2 space-y-5 rounded-2xl border border-border bg-background p-6 shadow-2xl",
14247
14495
  className
14248
14496
  ),
14249
14497
  children: [
14250
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
14251
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
14252
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14253
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
14498
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
14499
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
14500
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14501
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
14254
14502
  ] }),
14255
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14503
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14256
14504
  "button",
14257
14505
  {
14258
14506
  type: "button",
@@ -14263,9 +14511,9 @@ function CheckoutLoginPrompt({
14263
14511
  }
14264
14512
  )
14265
14513
  ] }),
14266
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "space-y-2", children: [
14267
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14268
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14514
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-2", children: [
14515
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14516
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14269
14517
  "input",
14270
14518
  {
14271
14519
  id: "checkout-login-prompt-email",
@@ -14274,29 +14522,29 @@ function CheckoutLoginPrompt({
14274
14522
  value: email,
14275
14523
  onChange: (e) => onEmailChange(e.target.value),
14276
14524
  placeholder: t.emailPlaceholder,
14277
- className: (0, import_utils13.cn)(
14525
+ className: (0, import_utils16.cn)(
14278
14526
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14279
14527
  error ? "border-destructive" : "border-border focus:border-primary"
14280
14528
  )
14281
14529
  }
14282
14530
  ),
14283
- error && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-xs text-destructive", children: error })
14531
+ error && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-destructive", children: error })
14284
14532
  ] }),
14285
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "space-y-2", children: [
14286
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14533
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-2", children: [
14534
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14287
14535
  "button",
14288
14536
  {
14289
14537
  type: "button",
14290
14538
  onClick: onSubmitEmail,
14291
14539
  disabled: checking || !isValidEmail,
14292
- className: (0, import_utils13.cn)(
14540
+ className: (0, import_utils16.cn)(
14293
14541
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
14294
14542
  checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14295
14543
  ),
14296
14544
  children: checking ? t.checking : t.continueWithEmail
14297
14545
  }
14298
14546
  ),
14299
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14547
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14300
14548
  "button",
14301
14549
  {
14302
14550
  type: "button",
@@ -14313,9 +14561,9 @@ function CheckoutLoginPrompt({
14313
14561
  }
14314
14562
 
14315
14563
  // src/components/checkout-form.tsx
14316
- var import_utils14 = require("@reblu/site-ui/utils");
14564
+ var import_utils17 = require("@reblu/site-ui/utils");
14317
14565
  var import_phone_input = require("@reblu/site-ui/phone-input");
14318
- var import_jsx_runtime15 = require("react/jsx-runtime");
14566
+ var import_jsx_runtime16 = require("react/jsx-runtime");
14319
14567
  var DEFAULT_LABELS6 = {
14320
14568
  contactTitle: "Datos de contacto",
14321
14569
  nameLabel: "Nombre completo",
@@ -14369,22 +14617,22 @@ function CheckoutForm({
14369
14617
  event.preventDefault();
14370
14618
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
14371
14619
  }
14372
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
14620
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
14373
14621
  loginPrompt,
14374
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14622
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14375
14623
  "form",
14376
14624
  {
14377
14625
  "data-testid": "checkout-form",
14378
14626
  onSubmit,
14379
- className: (0, import_utils14.cn)("space-y-8", className),
14627
+ className: (0, import_utils17.cn)("space-y-8", className),
14380
14628
  "data-slot": "checkout-form",
14381
14629
  children: [
14382
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "space-y-4", children: [
14383
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
14384
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
14385
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-1", children: [
14386
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
14387
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14630
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("section", { className: "space-y-4", children: [
14631
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
14632
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
14633
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-1", children: [
14634
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
14635
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14388
14636
  "input",
14389
14637
  {
14390
14638
  id: "checkout-form-name",
@@ -14393,17 +14641,17 @@ function CheckoutForm({
14393
14641
  value: contact.name,
14394
14642
  onChange: (e) => patchContact({ name: e.target.value }),
14395
14643
  placeholder: t.namePlaceholder,
14396
- className: (0, import_utils14.cn)(
14644
+ className: (0, import_utils17.cn)(
14397
14645
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14398
14646
  contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
14399
14647
  )
14400
14648
  }
14401
14649
  ),
14402
- contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
14650
+ contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
14403
14651
  ] }),
14404
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-1", children: [
14405
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
14406
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14652
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-1", children: [
14653
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
14654
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14407
14655
  "input",
14408
14656
  {
14409
14657
  id: "checkout-form-email",
@@ -14412,15 +14660,15 @@ function CheckoutForm({
14412
14660
  value: contact.email,
14413
14661
  onChange: (e) => patchContact({ email: e.target.value }),
14414
14662
  placeholder: t.emailPlaceholder,
14415
- className: (0, import_utils14.cn)(
14663
+ className: (0, import_utils17.cn)(
14416
14664
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14417
14665
  contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
14418
14666
  )
14419
14667
  }
14420
14668
  ),
14421
- contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
14669
+ contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
14422
14670
  ] }),
14423
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14671
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14424
14672
  import_phone_input.PhoneInput,
14425
14673
  {
14426
14674
  id: "checkout-form-phone",
@@ -14434,15 +14682,15 @@ function CheckoutForm({
14434
14682
  ] })
14435
14683
  ] }),
14436
14684
  children2,
14437
- generalError ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
14438
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "space-y-3", children: [
14439
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
14440
- appliedDiscount ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between rounded-lg border border-green-200 bg-green-50 px-4 py-3 dark:border-green-800 dark:bg-green-900/20", children: [
14441
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
14442
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-semibold", children: appliedDiscount.code }),
14443
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
14685
+ generalError ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
14686
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("section", { className: "space-y-3", children: [
14687
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
14688
+ appliedDiscount ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between rounded-lg border border-green-200 bg-green-50 px-4 py-3 dark:border-green-800 dark:bg-green-900/20", children: [
14689
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
14690
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-semibold", children: appliedDiscount.code }),
14691
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
14444
14692
  ] }),
14445
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14693
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14446
14694
  "button",
14447
14695
  {
14448
14696
  type: "button",
@@ -14452,9 +14700,9 @@ function CheckoutForm({
14452
14700
  children: t.removeDiscount
14453
14701
  }
14454
14702
  )
14455
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex gap-2", children: [
14456
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
14457
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14703
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex gap-2", children: [
14704
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
14705
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14458
14706
  "input",
14459
14707
  {
14460
14708
  id: "checkout-form-discount-code",
@@ -14466,7 +14714,7 @@ function CheckoutForm({
14466
14714
  className: "flex-1 rounded-lg border border-border bg-background px-3 py-2 text-sm uppercase transition focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20"
14467
14715
  }
14468
14716
  ),
14469
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14717
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14470
14718
  "button",
14471
14719
  {
14472
14720
  type: "button",
@@ -14477,14 +14725,14 @@ function CheckoutForm({
14477
14725
  }
14478
14726
  )
14479
14727
  ] }),
14480
- discountError && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-destructive", children: discountError })
14728
+ discountError && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: discountError })
14481
14729
  ] }),
14482
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14730
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14483
14731
  "button",
14484
14732
  {
14485
14733
  type: "submit",
14486
14734
  disabled: submitting || submitDisabled,
14487
- className: (0, import_utils14.cn)(
14735
+ className: (0, import_utils17.cn)(
14488
14736
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
14489
14737
  submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14490
14738
  ),
@@ -14498,8 +14746,8 @@ function CheckoutForm({
14498
14746
  }
14499
14747
 
14500
14748
  // src/components/order-confirmation.tsx
14501
- var import_utils15 = require("@reblu/site-ui/utils");
14502
- var import_jsx_runtime16 = require("react/jsx-runtime");
14749
+ var import_utils18 = require("@reblu/site-ui/utils");
14750
+ var import_jsx_runtime17 = require("react/jsx-runtime");
14503
14751
  var DEFAULT_LABELS7 = {
14504
14752
  pollingTitle: "Confirmando tu pedido\u2026",
14505
14753
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -14561,48 +14809,48 @@ function OrderConfirmation({
14561
14809
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
14562
14810
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
14563
14811
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
14564
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: (0, import_utils15.cn)("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
14565
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h1", { className: "text-3xl font-bold", children: title }),
14566
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-lg text-muted-foreground", children: description }),
14567
- showFullOrderSummary && order && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-6", children: [
14568
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14569
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
14570
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14812
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_utils18.cn)("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
14813
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h1", { className: "text-3xl font-bold", children: title }),
14814
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-lg text-muted-foreground", children: description }),
14815
+ showFullOrderSummary && order && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-6", children: [
14816
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14817
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
14818
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14571
14819
  ] }),
14572
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
14573
- order.items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14820
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
14821
+ order.items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
14574
14822
  "div",
14575
14823
  {
14576
14824
  className: "flex justify-between gap-4 text-sm",
14577
14825
  children: [
14578
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14826
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14579
14827
  item.product.name,
14580
14828
  item.variant ? ` (${item.variant.name})` : "",
14581
14829
  " x",
14582
14830
  item.quantity
14583
14831
  ] }),
14584
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
14832
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
14585
14833
  ]
14586
14834
  },
14587
14835
  idx
14588
14836
  )),
14589
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
14590
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: t.totalLabel }),
14591
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: formatPrice(order.total, currencyCode, locale) })
14837
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
14838
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: t.totalLabel }),
14839
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: formatPrice(order.total, currencyCode, locale) })
14592
14840
  ] }) })
14593
14841
  ] }),
14594
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14842
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14595
14843
  t.confirmationEmailPrefix,
14596
14844
  " ",
14597
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14845
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14598
14846
  "."
14599
14847
  ] })
14600
14848
  ] }),
14601
- showOrderReference && order && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14602
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
14603
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14849
+ showOrderReference && order && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14850
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
14851
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14604
14852
  ] }),
14605
- status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14853
+ status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14606
14854
  "a",
14607
14855
  {
14608
14856
  href: cartHref,
@@ -14610,7 +14858,7 @@ function OrderConfirmation({
14610
14858
  children: t.backToCartLabel
14611
14859
  }
14612
14860
  ),
14613
- showRecheck && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14861
+ showRecheck && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14614
14862
  "button",
14615
14863
  {
14616
14864
  type: "button",
@@ -14619,9 +14867,9 @@ function OrderConfirmation({
14619
14867
  children: t.recheckLabel
14620
14868
  }
14621
14869
  ),
14622
- showSessionReference && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14623
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
14624
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
14870
+ showSessionReference && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14871
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
14872
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
14625
14873
  ] })
14626
14874
  ] });
14627
14875
  }
@@ -14636,11 +14884,14 @@ function OrderConfirmation({
14636
14884
  DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE,
14637
14885
  DEFAULT_SHOP_ERROR_MESSAGES,
14638
14886
  DEFAULT_SHOP_PRICE_BANDS,
14887
+ DEFAULT_TRUST_ICONS,
14639
14888
  FaqAccordion,
14640
14889
  MarkdownRenderer,
14641
14890
  OrderConfirmation,
14642
14891
  PageBlocks,
14892
+ ParentPage,
14643
14893
  ProductCard,
14894
+ ProductTrustItems,
14644
14895
  ProfileCard,
14645
14896
  SafeHtml,
14646
14897
  ShopFilters,
@@ -14657,4 +14908,26 @@ function OrderConfirmation({
14657
14908
  sanitizeHtml,
14658
14909
  shouldRenderShopFilters
14659
14910
  });
14911
+ /*! Bundled license information:
14912
+
14913
+ lucide-react/dist/esm/shared/src/utils.js:
14914
+ lucide-react/dist/esm/defaultAttributes.js:
14915
+ lucide-react/dist/esm/Icon.js:
14916
+ lucide-react/dist/esm/createLucideIcon.js:
14917
+ lucide-react/dist/esm/icons/award.js:
14918
+ lucide-react/dist/esm/icons/badge-check.js:
14919
+ lucide-react/dist/esm/icons/gift.js:
14920
+ lucide-react/dist/esm/icons/headset.js:
14921
+ lucide-react/dist/esm/icons/rotate-ccw.js:
14922
+ lucide-react/dist/esm/icons/shield-check.js:
14923
+ lucide-react/dist/esm/icons/store.js:
14924
+ lucide-react/dist/esm/icons/truck.js:
14925
+ lucide-react/dist/esm/lucide-react.js:
14926
+ (**
14927
+ * @license lucide-react v0.562.0 - ISC
14928
+ *
14929
+ * This source code is licensed under the ISC license.
14930
+ * See the LICENSE file in the root directory of this source tree.
14931
+ *)
14932
+ */
14660
14933
  //# sourceMappingURL=index.cjs.map