@reblu/site-blocks 0.11.0 → 0.12.1

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
@@ -34,6 +34,7 @@ __export(src_exports, {
34
34
  MarkdownRenderer: () => MarkdownRenderer,
35
35
  OrderConfirmation: () => OrderConfirmation,
36
36
  PageBlocks: () => PageBlocks,
37
+ PageCardGrid: () => PageCardGrid,
37
38
  ParentPage: () => ParentPage,
38
39
  ProductCard: () => ProductCard,
39
40
  ProductTrustItems: () => ProductTrustItems,
@@ -13375,8 +13376,54 @@ function Treatment({ page, className }) {
13375
13376
  }
13376
13377
 
13377
13378
  // src/components/parent-page.tsx
13379
+ var import_utils5 = require("@reblu/site-ui/utils");
13380
+
13381
+ // src/components/page-card-grid.tsx
13378
13382
  var import_utils4 = require("@reblu/site-ui/utils");
13379
13383
  var import_jsx_runtime4 = require("react/jsx-runtime");
13384
+ var defaultPageHref = (page) => `/${page.slug}`;
13385
+ var pageKey = (page) => `${page.category?.slug ?? ""}/${page.slug}`;
13386
+ function PageCardGrid(props) {
13387
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PageCardGridSection, { ...props });
13388
+ }
13389
+ function PageCardGridSection({
13390
+ pages,
13391
+ pageHref = defaultPageHref,
13392
+ heading,
13393
+ className,
13394
+ keepEmptyHeading = false
13395
+ }) {
13396
+ if (pages.length === 0) return null;
13397
+ const showHeading = keepEmptyHeading ? heading !== void 0 : !!heading;
13398
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("section", { className: (0, import_utils4.cn)("space-y-6", className), children: [
13399
+ showHeading && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className: "text-2xl font-bold", children: heading }),
13400
+ /* @__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((page) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
13401
+ "a",
13402
+ {
13403
+ href: pageHref(page),
13404
+ className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13405
+ children: [
13406
+ page.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13407
+ "img",
13408
+ {
13409
+ src: page.coverImageUrl,
13410
+ alt: "",
13411
+ loading: "lazy",
13412
+ className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13413
+ }
13414
+ ) }),
13415
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13416
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13417
+ page.excerpt && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13418
+ ] })
13419
+ ]
13420
+ }
13421
+ ) }, pageKey(page))) })
13422
+ ] });
13423
+ }
13424
+
13425
+ // src/components/parent-page.tsx
13426
+ var import_jsx_runtime5 = require("react/jsx-runtime");
13380
13427
  var defaultChildPageHref = (slug) => `/${slug}`;
13381
13428
  function ParentPage({
13382
13429
  page,
@@ -13391,34 +13438,18 @@ function ParentPage({
13391
13438
  const pages = childPages ?? treatments ?? [];
13392
13439
  const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13393
13440
  const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
13394
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("article", { className: (0, import_utils4.cn)("space-y-12", className), "data-slot": "specialty", children: [
13395
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PageHero, { page }),
13396
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PageSectionList, { sections: page.sections }),
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)(
13400
- "a",
13401
- {
13402
- href: hrefFor(t.slug),
13403
- className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13404
- children: [
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)(
13406
- "img",
13407
- {
13408
- src: t.coverImageUrl,
13409
- alt: "",
13410
- loading: "lazy",
13411
- className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13412
- }
13413
- ) }),
13414
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13415
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: t.title }),
13416
- t.excerpt && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: t.excerpt })
13417
- ] })
13418
- ]
13419
- }
13420
- ) }, t.slug)) })
13421
- ] })
13441
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("article", { className: (0, import_utils5.cn)("space-y-12", className), "data-slot": "specialty", children: [
13442
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PageHero, { page }),
13443
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PageSectionList, { sections: page.sections }),
13444
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13445
+ PageCardGridSection,
13446
+ {
13447
+ pages,
13448
+ heading: label,
13449
+ pageHref: (child) => hrefFor(child.slug),
13450
+ keepEmptyHeading: true
13451
+ }
13452
+ )
13422
13453
  ] });
13423
13454
  }
13424
13455
 
@@ -13426,34 +13457,34 @@ function ParentPage({
13426
13457
  var Specialty = ParentPage;
13427
13458
 
13428
13459
  // src/components/profile-card.tsx
13429
- var import_utils5 = require("@reblu/site-ui/utils");
13430
- var import_jsx_runtime5 = require("react/jsx-runtime");
13460
+ var import_utils6 = require("@reblu/site-ui/utils");
13461
+ var import_jsx_runtime6 = require("react/jsx-runtime");
13431
13462
  function initials(name) {
13432
13463
  return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
13433
13464
  }
13434
13465
  function ProfileCard({ name, role, imageUrl, specialties = [], bio, href, className }) {
13435
13466
  const NameTag = href ? "a" : "span";
13436
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
13467
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
13437
13468
  "article",
13438
13469
  {
13439
- className: (0, import_utils5.cn)(
13470
+ className: (0, import_utils6.cn)(
13440
13471
  "flex flex-col items-center gap-3 rounded-lg border bg-card p-6 text-center",
13441
13472
  className
13442
13473
  ),
13443
13474
  "data-slot": "profile-card",
13444
13475
  children: [
13445
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground", "aria-hidden": "true", children: initials(name) }) }),
13446
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "space-y-1", children: [
13447
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13476
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground", "aria-hidden": "true", children: initials(name) }) }),
13477
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "space-y-1", children: [
13478
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
13448
13479
  NameTag,
13449
13480
  {
13450
13481
  ...href ? { href, className: "transition-colors hover:text-primary" } : {},
13451
13482
  children: name
13452
13483
  }
13453
13484
  ) }),
13454
- role && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: role })
13485
+ role && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm text-muted-foreground", children: role })
13455
13486
  ] }),
13456
- specialties.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13487
+ specialties.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
13457
13488
  "li",
13458
13489
  {
13459
13490
  className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
@@ -13461,28 +13492,28 @@ function ProfileCard({ name, role, imageUrl, specialties = [], bio, href, classN
13461
13492
  },
13462
13493
  s2
13463
13494
  )) }),
13464
- bio && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: bio })
13495
+ bio && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm text-muted-foreground", children: bio })
13465
13496
  ]
13466
13497
  }
13467
13498
  );
13468
13499
  }
13469
13500
 
13470
13501
  // src/components/product-card.tsx
13471
- var import_utils6 = require("@reblu/site-ui/utils");
13472
- var import_jsx_runtime6 = require("react/jsx-runtime");
13502
+ var import_utils7 = require("@reblu/site-ui/utils");
13503
+ var import_jsx_runtime7 = require("react/jsx-runtime");
13473
13504
  function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
13474
13505
  const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
13475
13506
  const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
13476
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
13507
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
13477
13508
  "article",
13478
13509
  {
13479
- className: (0, import_utils6.cn)(
13510
+ className: (0, import_utils7.cn)(
13480
13511
  "group flex flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13481
13512
  className
13482
13513
  ),
13483
13514
  "data-slot": "product-card",
13484
13515
  children: [
13485
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
13516
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
13486
13517
  "img",
13487
13518
  {
13488
13519
  src: image.url,
@@ -13490,14 +13521,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13490
13521
  loading: "lazy",
13491
13522
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13492
13523
  }
13493
- ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13494
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13495
- product.category && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "inline-flex w-fit items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground", children: product.category.name }),
13496
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13497
- product.shortDescription && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13498
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13499
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13500
- hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13524
+ ) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13525
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13526
+ product.category && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "inline-flex w-fit items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground", children: product.category.name }),
13527
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13528
+ product.shortDescription && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13529
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13530
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13531
+ hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13501
13532
  ] })
13502
13533
  ] })
13503
13534
  ]
@@ -13699,8 +13730,8 @@ var __iconNode8 = [
13699
13730
  var Truck = createLucideIcon("truck", __iconNode8);
13700
13731
 
13701
13732
  // src/components/product-trust-items.tsx
13702
- var import_utils9 = require("@reblu/site-ui/utils");
13703
- var import_jsx_runtime7 = require("react/jsx-runtime");
13733
+ var import_utils10 = require("@reblu/site-ui/utils");
13734
+ var import_jsx_runtime8 = require("react/jsx-runtime");
13704
13735
  var DEFAULT_TRUST_ICONS = Object.freeze({
13705
13736
  shipping: Truck,
13706
13737
  returns: RotateCcw,
@@ -13734,17 +13765,17 @@ function ProductTrustItems({
13734
13765
  return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
13735
13766
  });
13736
13767
  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 })
13768
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(List, { "data-slot": "product-trust-items", className: (0, import_utils10.cn)("space-y-2.5", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("li", { className: (0, import_utils10.cn)("flex items-center gap-3 text-sm text-muted-foreground", itemClassName), children: [
13769
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
13770
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: text3 })
13740
13771
  ] }, key2)) });
13741
13772
  }
13742
13773
 
13743
13774
  // src/components/faq-accordion.tsx
13744
- var import_utils10 = require("@reblu/site-ui/utils");
13775
+ var import_utils11 = require("@reblu/site-ui/utils");
13745
13776
 
13746
13777
  // src/components/_heading.tsx
13747
- var import_jsx_runtime8 = require("react/jsx-runtime");
13778
+ var import_jsx_runtime9 = require("react/jsx-runtime");
13748
13779
  function nextHeadingLevel(level) {
13749
13780
  return Math.min(level + 1, 6);
13750
13781
  }
@@ -13754,11 +13785,11 @@ function Heading({
13754
13785
  children: children2
13755
13786
  }) {
13756
13787
  const Tag = `h${level}`;
13757
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Tag, { className, children: children2 });
13788
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Tag, { className, children: children2 });
13758
13789
  }
13759
13790
 
13760
13791
  // src/components/faq-accordion.tsx
13761
- var import_jsx_runtime9 = require("react/jsx-runtime");
13792
+ var import_jsx_runtime10 = require("react/jsx-runtime");
13762
13793
  function FaqAccordion({
13763
13794
  items,
13764
13795
  heading,
@@ -13769,18 +13800,18 @@ function FaqAccordion({
13769
13800
  }) {
13770
13801
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
13771
13802
  if (visible.length === 0) return null;
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)(
13803
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_utils11.cn)("space-y-4", className), "data-slot": "faq-accordion", children: [
13804
+ heading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13805
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13775
13806
  "details",
13776
13807
  {
13777
13808
  className: "group px-4",
13778
13809
  "data-slot": "faq-item",
13779
13810
  ...defaultOpen.includes(index) ? { open: true } : {},
13780
13811
  children: [
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)(
13812
+ /* @__PURE__ */ (0, import_jsx_runtime10.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: [
13813
+ questionHeadingLevel ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: item.q }),
13814
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13784
13815
  "span",
13785
13816
  {
13786
13817
  "aria-hidden": "true",
@@ -13789,7 +13820,7 @@ function FaqAccordion({
13789
13820
  }
13790
13821
  )
13791
13822
  ] }),
13792
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13823
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13793
13824
  ]
13794
13825
  },
13795
13826
  index
@@ -13798,40 +13829,40 @@ function FaqAccordion({
13798
13829
  }
13799
13830
 
13800
13831
  // src/components/page-blocks.tsx
13801
- var import_utils11 = require("@reblu/site-ui/utils");
13832
+ var import_utils12 = require("@reblu/site-ui/utils");
13802
13833
  var import_button_variants2 = require("@reblu/site-ui/button-variants");
13803
- var import_jsx_runtime10 = require("react/jsx-runtime");
13834
+ var import_jsx_runtime11 = require("react/jsx-runtime");
13804
13835
  var ALIASES = {
13805
13836
  doctor_embed: "profile_embed",
13806
13837
  specialty_embed: "page_embed"
13807
13838
  };
13808
13839
  function HeroBlock({ block, headingLevel }) {
13809
13840
  const { title, subtitle, imageUrl } = block.data;
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" }) })
13841
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "space-y-4", children: [
13842
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
13843
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-lg opacity-80", children: subtitle }),
13844
+ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
13814
13845
  ] });
13815
13846
  }
13816
13847
  function RichtextBlock({ block, headingLevel }) {
13817
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13848
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13818
13849
  }
13819
13850
  function FaqBlock({ block }) {
13820
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FaqAccordion, { items: block.data.items });
13851
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FaqAccordion, { items: block.data.items });
13821
13852
  }
13822
13853
  function StatsBlock({ block }) {
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 })
13854
+ return /* @__PURE__ */ (0, import_jsx_runtime11.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_runtime11.jsxs)("div", { className: "flex flex-col-reverse gap-1", children: [
13855
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dt", { className: "text-sm opacity-80", children: item.label }),
13856
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dd", { className: "text-3xl font-bold", children: item.value })
13826
13857
  ] }, i)) });
13827
13858
  }
13828
13859
  function TestimonialBlock({ block }) {
13829
13860
  const { quote, author, role, avatarUrl } = block.data;
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: [
13861
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("figure", { className: "space-y-4", children: [
13862
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { children: quote }) }),
13863
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("figcaption", { className: "flex items-center gap-3", children: [
13833
13864
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
13834
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13865
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13835
13866
  "img",
13836
13867
  {
13837
13868
  src: avatarUrl,
@@ -13840,9 +13871,9 @@ function TestimonialBlock({ block }) {
13840
13871
  className: "h-10 w-10 rounded-full object-cover"
13841
13872
  }
13842
13873
  ),
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 })
13874
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
13875
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-semibold", children: author }),
13876
+ role && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "block text-sm opacity-80", children: role })
13846
13877
  ] })
13847
13878
  ] })
13848
13879
  ] });
@@ -13851,19 +13882,19 @@ function CtaSlotBlock(_props) {
13851
13882
  return null;
13852
13883
  }
13853
13884
  function FeatureListBlock({ block }) {
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)) });
13885
+ return /* @__PURE__ */ (0, import_jsx_runtime11.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_runtime11.jsx)("li", { children: item.text }, i)) });
13855
13886
  }
13856
13887
  function GalleryBlock({ block }) {
13857
13888
  const { images } = block.data;
13858
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13889
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13859
13890
  "div",
13860
13891
  {
13861
- className: (0, import_utils11.cn)(
13892
+ className: (0, import_utils12.cn)(
13862
13893
  "grid gap-4",
13863
13894
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
13864
13895
  ),
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)(
13896
+ children: images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("figure", { className: "space-y-1", children: [
13897
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13867
13898
  "img",
13868
13899
  {
13869
13900
  src: img.url,
@@ -13872,7 +13903,7 @@ function GalleryBlock({ block }) {
13872
13903
  className: "h-full w-full object-cover"
13873
13904
  }
13874
13905
  ) }),
13875
- img.caption && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
13906
+ img.caption && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
13876
13907
  ] }, `${img.url}-${i}`))
13877
13908
  }
13878
13909
  );
@@ -13882,13 +13913,13 @@ function EmbedCard({
13882
13913
  headingLevel,
13883
13914
  embedHref
13884
13915
  }) {
13885
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13916
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
13886
13917
  "a",
13887
13918
  {
13888
13919
  href: embedHref(resolved),
13889
13920
  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",
13890
13921
  children: [
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)(
13922
+ resolved.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13892
13923
  "img",
13893
13924
  {
13894
13925
  src: resolved.coverImageUrl,
@@ -13897,24 +13928,24 @@ function EmbedCard({
13897
13928
  className: "h-full w-full object-cover"
13898
13929
  }
13899
13930
  ) }),
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 })
13931
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "space-y-1 p-4", children: [
13932
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
13933
+ resolved.role && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
13934
+ resolved.excerpt && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-muted-foreground", children: resolved.excerpt })
13904
13935
  ] })
13905
13936
  ]
13906
13937
  }
13907
13938
  );
13908
13939
  }
13909
13940
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
13910
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13941
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13911
13942
  }
13912
13943
  function ProfileEmbedBlock({
13913
13944
  block,
13914
13945
  headingLevel,
13915
13946
  embedHref
13916
13947
  }) {
13917
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13948
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13918
13949
  }
13919
13950
  var DEFAULT_RENDERERS = {
13920
13951
  hero: HeroBlock,
@@ -13971,14 +14002,14 @@ function toIdFragment(value) {
13971
14002
  function SectionCta2({ cta }) {
13972
14003
  if (!hasUsableCta(cta)) return null;
13973
14004
  const variant = toButtonVariant(cta.variant);
13974
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14005
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13975
14006
  "a",
13976
14007
  {
13977
14008
  href: cta.url,
13978
14009
  "data-slot": "button",
13979
14010
  "data-variant": variant,
13980
14011
  "data-size": "default",
13981
- className: (0, import_utils11.cn)((0, import_button_variants2.buttonVariants)({ variant, size: "default" })),
14012
+ className: (0, import_utils12.cn)((0, import_button_variants2.buttonVariants)({ variant, size: "default" })),
13982
14013
  ...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
13983
14014
  children: cta.label
13984
14015
  }
@@ -14004,17 +14035,17 @@ function PageBlocks({
14004
14035
  const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
14005
14036
  const background = block.backgroundColor;
14006
14037
  return [
14007
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
14038
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
14008
14039
  "section",
14009
14040
  {
14010
14041
  "data-slot": "page-block",
14011
14042
  "data-block-type": type,
14012
14043
  "aria-labelledby": headingId,
14013
14044
  style: surfaceStyle(background),
14014
- className: (0, import_utils11.cn)("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14045
+ className: (0, import_utils12.cn)("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14015
14046
  children: [
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)(
14047
+ block.heading && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { id: headingId, children: block.heading }) }),
14048
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14018
14049
  Renderer,
14019
14050
  {
14020
14051
  block,
@@ -14022,7 +14053,7 @@ function PageBlocks({
14022
14053
  embedHref
14023
14054
  }
14024
14055
  ),
14025
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SectionCta2, { cta: block.cta })
14056
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SectionCta2, { cta: block.cta })
14026
14057
  ]
14027
14058
  },
14028
14059
  block.id
@@ -14030,12 +14061,12 @@ function PageBlocks({
14030
14061
  ];
14031
14062
  });
14032
14063
  if (sections.length === 0) return null;
14033
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: (0, import_utils11.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
14064
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: (0, import_utils12.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
14034
14065
  }
14035
14066
 
14036
14067
  // src/components/shop-filters.tsx
14037
- var import_utils12 = require("@reblu/site-ui/utils");
14038
- var import_jsx_runtime11 = require("react/jsx-runtime");
14068
+ var import_utils13 = require("@reblu/site-ui/utils");
14069
+ var import_jsx_runtime12 = require("react/jsx-runtime");
14039
14070
  var DEFAULT_SHOP_PRICE_BANDS = [
14040
14071
  { max: 2500 },
14041
14072
  { min: 2500, max: 5e3 },
@@ -14079,7 +14110,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
14079
14110
  return "";
14080
14111
  }
14081
14112
  function OptionLink({ href, active, label, onActivate }) {
14082
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14113
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14083
14114
  "a",
14084
14115
  {
14085
14116
  href,
@@ -14088,7 +14119,7 @@ function OptionLink({ href, active, label, onActivate }) {
14088
14119
  event.preventDefault();
14089
14120
  onActivate();
14090
14121
  } : void 0,
14091
- className: (0, import_utils12.cn)(
14122
+ className: (0, import_utils13.cn)(
14092
14123
  "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",
14093
14124
  active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
14094
14125
  ),
@@ -14097,9 +14128,9 @@ function OptionLink({ href, active, label, onActivate }) {
14097
14128
  );
14098
14129
  }
14099
14130
  function FilterFieldset({ legend, 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 })
14131
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("fieldset", { className: "space-y-2", children: [
14132
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14133
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex flex-wrap gap-2", children: children2 })
14103
14134
  ] });
14104
14135
  }
14105
14136
  function ShopFilters({
@@ -14122,11 +14153,11 @@ function ShopFilters({
14122
14153
  if (!shouldRenderShopFilters(facets, active)) {
14123
14154
  return null;
14124
14155
  }
14125
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: (0, import_utils12.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
14156
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: (0, import_utils13.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
14126
14157
  visibleTaxonomies.map((axis) => {
14127
14158
  const activeSlug = active.taxonomy?.[axis.key];
14128
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(FilterFieldset, { legend: axis.label, children: [
14129
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14159
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(FilterFieldset, { legend: axis.label, children: [
14160
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14130
14161
  OptionLink,
14131
14162
  {
14132
14163
  href: hrefs.taxonomy(axis.key, void 0),
@@ -14141,7 +14172,7 @@ function ShopFilters({
14141
14172
  ),
14142
14173
  axis.terms.map((term) => {
14143
14174
  const isActive = activeSlug === term.slug;
14144
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14175
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14145
14176
  OptionLink,
14146
14177
  {
14147
14178
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -14161,9 +14192,9 @@ function ShopFilters({
14161
14192
  }),
14162
14193
  visibleAttributes.map((attr) => {
14163
14194
  const activeValues = toValueArray(active.attr?.[attr.key]);
14164
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14195
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14165
14196
  const isActive = activeValues.includes(opt.value);
14166
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14197
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14167
14198
  OptionLink,
14168
14199
  {
14169
14200
  href: hrefs.attr(attr.key, opt.value),
@@ -14181,11 +14212,11 @@ function ShopFilters({
14181
14212
  );
14182
14213
  }) }, attr.key);
14183
14214
  }),
14184
- showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14215
+ showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14185
14216
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
14186
14217
  const nextMin = isActive ? void 0 : band.min;
14187
14218
  const nextMax = isActive ? void 0 : band.max;
14188
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14219
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14189
14220
  OptionLink,
14190
14221
  {
14191
14222
  href: hrefs.price(nextMin, nextMax),
@@ -14196,7 +14227,7 @@ function ShopFilters({
14196
14227
  i
14197
14228
  );
14198
14229
  }) }),
14199
- hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14230
+ hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14200
14231
  OptionLink,
14201
14232
  {
14202
14233
  href: hrefs.onSale(!active.onSale),
@@ -14205,7 +14236,7 @@ function ShopFilters({
14205
14236
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
14206
14237
  }
14207
14238
  ),
14208
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14239
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14209
14240
  "a",
14210
14241
  {
14211
14242
  href: hrefs.clearAll(),
@@ -14221,8 +14252,8 @@ function ShopFilters({
14221
14252
  }
14222
14253
 
14223
14254
  // src/components/cart-line-list.tsx
14224
- var import_utils13 = require("@reblu/site-ui/utils");
14225
- var import_jsx_runtime12 = require("react/jsx-runtime");
14255
+ var import_utils14 = require("@reblu/site-ui/utils");
14256
+ var import_jsx_runtime13 = require("react/jsx-runtime");
14226
14257
  var DEFAULT_LABELS2 = {
14227
14258
  quantityLabel: "Cantidad",
14228
14259
  decrease: "Reducir cantidad",
@@ -14247,9 +14278,9 @@ function CartLineList({
14247
14278
  }) {
14248
14279
  const t = { ...DEFAULT_LABELS2, ...labels };
14249
14280
  const noticeContent = notice === true ? t.cancelledNotice : notice;
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)(
14281
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: (0, import_utils14.cn)("space-y-4", className), "data-slot": "cart-line-list", children: [
14282
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14283
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
14253
14284
  "div",
14254
14285
  {
14255
14286
  role: "status",
@@ -14258,32 +14289,32 @@ function CartLineList({
14258
14289
  children: noticeContent
14259
14290
  }
14260
14291
  ),
14261
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
14292
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
14262
14293
  const maxQty = item.maxStock ?? Infinity;
14263
14294
  const atMax = item.quantity >= maxQty;
14264
14295
  const atMin = item.quantity <= 1;
14265
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
14296
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
14266
14297
  "li",
14267
14298
  {
14268
14299
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
14269
14300
  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: [
14301
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
14302
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "min-w-0 flex-1", children: [
14303
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
14304
+ item.variantName && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
14305
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("p", { className: "mt-1 text-sm text-muted-foreground", children: [
14275
14306
  formatPrice(item.unitPrice, currencyCode, locale),
14276
14307
  " ",
14277
14308
  t.unitPriceSuffix
14278
14309
  ] }),
14279
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
14310
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
14280
14311
  "div",
14281
14312
  {
14282
14313
  role: "group",
14283
14314
  "aria-label": t.quantityLabel,
14284
14315
  className: "mt-3 flex items-center gap-3",
14285
14316
  children: [
14286
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14317
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
14287
14318
  "button",
14288
14319
  {
14289
14320
  type: "button",
@@ -14294,8 +14325,8 @@ function CartLineList({
14294
14325
  children: "\u2212"
14295
14326
  }
14296
14327
  ),
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)(
14328
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14329
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
14299
14330
  "button",
14300
14331
  {
14301
14332
  type: "button",
@@ -14306,7 +14337,7 @@ function CartLineList({
14306
14337
  children: "+"
14307
14338
  }
14308
14339
  ),
14309
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
14340
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
14310
14341
  "button",
14311
14342
  {
14312
14343
  type: "button",
@@ -14320,7 +14351,7 @@ function CartLineList({
14320
14351
  }
14321
14352
  )
14322
14353
  ] }),
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) }) })
14354
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
14324
14355
  ]
14325
14356
  },
14326
14357
  lineKey(item.productId, item.variantId)
@@ -14330,8 +14361,8 @@ function CartLineList({
14330
14361
  }
14331
14362
 
14332
14363
  // src/components/cart-summary.tsx
14333
- var import_utils14 = require("@reblu/site-ui/utils");
14334
- var import_jsx_runtime13 = require("react/jsx-runtime");
14364
+ var import_utils15 = require("@reblu/site-ui/utils");
14365
+ var import_jsx_runtime14 = require("react/jsx-runtime");
14335
14366
  var DEFAULT_LABELS3 = {
14336
14367
  subtotal: "Subtotal",
14337
14368
  discountPrefix: "Descuento",
@@ -14358,40 +14389,40 @@ function CartSummary({
14358
14389
  const hasDiscount = Boolean(discount && discount > 0);
14359
14390
  const noticeContent = notice === true ? t.cancelledNotice : notice;
14360
14391
  const hasNotice = noticeContent != null && noticeContent !== false;
14361
- const breakdown = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
14392
+ const breakdown = /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
14362
14393
  "dl",
14363
14394
  {
14364
- className: (0, import_utils14.cn)("space-y-2 text-sm", !hasNotice && className),
14395
+ className: (0, import_utils15.cn)("space-y-2 text-sm", !hasNotice && className),
14365
14396
  "data-slot": "cart-summary",
14366
14397
  children: [
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) })
14398
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14399
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dt", { children: t.subtotal }),
14400
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dd", { children: formatPrice(subtotal, currencyCode, locale) })
14370
14401
  ] }),
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: [
14402
+ hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14403
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("dt", { children: [
14373
14404
  t.discountPrefix,
14374
14405
  discountCode ? ` (${discountCode})` : ""
14375
14406
  ] }),
14376
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dd", { children: [
14407
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("dd", { children: [
14377
14408
  "-",
14378
14409
  formatPrice(discount, currencyCode, locale)
14379
14410
  ] })
14380
14411
  ] }),
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) })
14412
+ shippingEnabled && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
14413
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dt", { children: t.shipping }),
14414
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
14384
14415
  ] }),
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) })
14416
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14417
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dt", { children: t.total }),
14418
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("dd", { children: formatPrice(total, currencyCode, locale) })
14388
14419
  ] })
14389
14420
  ]
14390
14421
  }
14391
14422
  );
14392
14423
  if (!hasNotice) return breakdown;
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)(
14424
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: (0, import_utils15.cn)("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14425
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14395
14426
  "div",
14396
14427
  {
14397
14428
  role: "status",
@@ -14405,8 +14436,8 @@ function CartSummary({
14405
14436
  }
14406
14437
 
14407
14438
  // src/components/added-to-cart-toast.tsx
14408
- var import_utils15 = require("@reblu/site-ui/utils");
14409
- var import_jsx_runtime14 = (
14439
+ var import_utils16 = require("@reblu/site-ui/utils");
14440
+ var import_jsx_runtime15 = (
14410
14441
  // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
14411
14442
  require("react/jsx-runtime")
14412
14443
  );
@@ -14429,32 +14460,32 @@ function AddedToCartToast({
14429
14460
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
14430
14461
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
14431
14462
  const variant = status === "success" ? "success" : "error";
14432
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
14463
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14433
14464
  "div",
14434
14465
  {
14435
14466
  "data-slot": "added-to-cart-toast",
14436
14467
  "data-variant": variant,
14437
- className: (0, import_utils15.cn)(
14468
+ className: (0, import_utils16.cn)(
14438
14469
  "flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
14439
14470
  variant === "success" && "border-green-600/30 dark:border-green-400/30",
14440
14471
  variant === "error" && "border-destructive/30",
14441
14472
  className
14442
14473
  ),
14443
14474
  children: [
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 })
14475
+ hasThumbnail && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14476
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "min-w-0 flex-1", children: [
14477
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "truncate font-semibold text-foreground", children: productName }),
14478
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
14448
14479
  ] }),
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 }) })
14480
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
14450
14481
  ]
14451
14482
  }
14452
14483
  );
14453
14484
  }
14454
14485
 
14455
14486
  // src/components/checkout-login-prompt.tsx
14456
- var import_utils16 = require("@reblu/site-ui/utils");
14457
- var import_jsx_runtime15 = require("react/jsx-runtime");
14487
+ var import_utils17 = require("@reblu/site-ui/utils");
14488
+ var import_jsx_runtime16 = require("react/jsx-runtime");
14458
14489
  var DEFAULT_LABELS5 = {
14459
14490
  title: "Identificaci\xF3n",
14460
14491
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -14481,26 +14512,26 @@ function CheckoutLoginPrompt({
14481
14512
  if (!open) return null;
14482
14513
  const t = { ...DEFAULT_LABELS5, ...labels };
14483
14514
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
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)(
14515
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
14516
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14517
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14487
14518
  "div",
14488
14519
  {
14489
14520
  role: "dialog",
14490
14521
  "aria-modal": "true",
14491
14522
  "aria-labelledby": "checkout-login-prompt-title",
14492
14523
  "data-slot": "checkout-login-prompt",
14493
- className: (0, import_utils16.cn)(
14524
+ className: (0, import_utils17.cn)(
14494
14525
  "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",
14495
14526
  className
14496
14527
  ),
14497
14528
  children: [
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 })
14529
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
14530
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
14531
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14532
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
14502
14533
  ] }),
14503
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14534
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14504
14535
  "button",
14505
14536
  {
14506
14537
  type: "button",
@@ -14511,9 +14542,9 @@ function CheckoutLoginPrompt({
14511
14542
  }
14512
14543
  )
14513
14544
  ] }),
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)(
14545
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
14546
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14547
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14517
14548
  "input",
14518
14549
  {
14519
14550
  id: "checkout-login-prompt-email",
@@ -14522,29 +14553,29 @@ function CheckoutLoginPrompt({
14522
14553
  value: email,
14523
14554
  onChange: (e) => onEmailChange(e.target.value),
14524
14555
  placeholder: t.emailPlaceholder,
14525
- className: (0, import_utils16.cn)(
14556
+ className: (0, import_utils17.cn)(
14526
14557
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14527
14558
  error ? "border-destructive" : "border-border focus:border-primary"
14528
14559
  )
14529
14560
  }
14530
14561
  ),
14531
- error && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-destructive", children: error })
14562
+ error && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: error })
14532
14563
  ] }),
14533
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-2", children: [
14534
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14564
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
14565
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14535
14566
  "button",
14536
14567
  {
14537
14568
  type: "button",
14538
14569
  onClick: onSubmitEmail,
14539
14570
  disabled: checking || !isValidEmail,
14540
- className: (0, import_utils16.cn)(
14571
+ className: (0, import_utils17.cn)(
14541
14572
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
14542
14573
  checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14543
14574
  ),
14544
14575
  children: checking ? t.checking : t.continueWithEmail
14545
14576
  }
14546
14577
  ),
14547
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14578
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14548
14579
  "button",
14549
14580
  {
14550
14581
  type: "button",
@@ -14561,9 +14592,9 @@ function CheckoutLoginPrompt({
14561
14592
  }
14562
14593
 
14563
14594
  // src/components/checkout-form.tsx
14564
- var import_utils17 = require("@reblu/site-ui/utils");
14595
+ var import_utils18 = require("@reblu/site-ui/utils");
14565
14596
  var import_phone_input = require("@reblu/site-ui/phone-input");
14566
- var import_jsx_runtime16 = require("react/jsx-runtime");
14597
+ var import_jsx_runtime17 = require("react/jsx-runtime");
14567
14598
  var DEFAULT_LABELS6 = {
14568
14599
  contactTitle: "Datos de contacto",
14569
14600
  nameLabel: "Nombre completo",
@@ -14617,22 +14648,22 @@ function CheckoutForm({
14617
14648
  event.preventDefault();
14618
14649
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
14619
14650
  }
14620
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
14651
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
14621
14652
  loginPrompt,
14622
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14653
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
14623
14654
  "form",
14624
14655
  {
14625
14656
  "data-testid": "checkout-form",
14626
14657
  onSubmit,
14627
- className: (0, import_utils17.cn)("space-y-8", className),
14658
+ className: (0, import_utils18.cn)("space-y-8", className),
14628
14659
  "data-slot": "checkout-form",
14629
14660
  children: [
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)(
14661
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { className: "space-y-4", children: [
14662
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
14663
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
14664
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-1", children: [
14665
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
14666
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14636
14667
  "input",
14637
14668
  {
14638
14669
  id: "checkout-form-name",
@@ -14641,17 +14672,17 @@ function CheckoutForm({
14641
14672
  value: contact.name,
14642
14673
  onChange: (e) => patchContact({ name: e.target.value }),
14643
14674
  placeholder: t.namePlaceholder,
14644
- className: (0, import_utils17.cn)(
14675
+ className: (0, import_utils18.cn)(
14645
14676
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14646
14677
  contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
14647
14678
  )
14648
14679
  }
14649
14680
  ),
14650
- contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
14681
+ contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
14651
14682
  ] }),
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)(
14683
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-1", children: [
14684
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
14685
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14655
14686
  "input",
14656
14687
  {
14657
14688
  id: "checkout-form-email",
@@ -14660,15 +14691,15 @@ function CheckoutForm({
14660
14691
  value: contact.email,
14661
14692
  onChange: (e) => patchContact({ email: e.target.value }),
14662
14693
  placeholder: t.emailPlaceholder,
14663
- className: (0, import_utils17.cn)(
14694
+ className: (0, import_utils18.cn)(
14664
14695
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14665
14696
  contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
14666
14697
  )
14667
14698
  }
14668
14699
  ),
14669
- contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
14700
+ contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
14670
14701
  ] }),
14671
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14702
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14672
14703
  import_phone_input.PhoneInput,
14673
14704
  {
14674
14705
  id: "checkout-form-phone",
@@ -14682,15 +14713,15 @@ function CheckoutForm({
14682
14713
  ] })
14683
14714
  ] }),
14684
14715
  children2,
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)) })
14716
+ generalError ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
14717
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { className: "space-y-3", children: [
14718
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
14719
+ appliedDiscount ? /* @__PURE__ */ (0, import_jsx_runtime17.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: [
14720
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
14721
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "font-semibold", children: appliedDiscount.code }),
14722
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
14692
14723
  ] }),
14693
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14724
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14694
14725
  "button",
14695
14726
  {
14696
14727
  type: "button",
@@ -14700,9 +14731,9 @@ function CheckoutForm({
14700
14731
  children: t.removeDiscount
14701
14732
  }
14702
14733
  )
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)(
14734
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex gap-2", children: [
14735
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
14736
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14706
14737
  "input",
14707
14738
  {
14708
14739
  id: "checkout-form-discount-code",
@@ -14714,7 +14745,7 @@ function CheckoutForm({
14714
14745
  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"
14715
14746
  }
14716
14747
  ),
14717
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14748
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14718
14749
  "button",
14719
14750
  {
14720
14751
  type: "button",
@@ -14725,14 +14756,14 @@ function CheckoutForm({
14725
14756
  }
14726
14757
  )
14727
14758
  ] }),
14728
- discountError && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-destructive", children: discountError })
14759
+ discountError && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-xs text-destructive", children: discountError })
14729
14760
  ] }),
14730
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14761
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14731
14762
  "button",
14732
14763
  {
14733
14764
  type: "submit",
14734
14765
  disabled: submitting || submitDisabled,
14735
- className: (0, import_utils17.cn)(
14766
+ className: (0, import_utils18.cn)(
14736
14767
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
14737
14768
  submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14738
14769
  ),
@@ -14746,8 +14777,8 @@ function CheckoutForm({
14746
14777
  }
14747
14778
 
14748
14779
  // src/components/order-confirmation.tsx
14749
- var import_utils18 = require("@reblu/site-ui/utils");
14750
- var import_jsx_runtime17 = require("react/jsx-runtime");
14780
+ var import_utils19 = require("@reblu/site-ui/utils");
14781
+ var import_jsx_runtime18 = require("react/jsx-runtime");
14751
14782
  var DEFAULT_LABELS7 = {
14752
14783
  pollingTitle: "Confirmando tu pedido\u2026",
14753
14784
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -14809,48 +14840,48 @@ function OrderConfirmation({
14809
14840
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
14810
14841
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
14811
14842
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
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 })
14843
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: (0, import_utils19.cn)("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
14844
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h1", { className: "text-3xl font-bold", children: title }),
14845
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-lg text-muted-foreground", children: description }),
14846
+ showFullOrderSummary && order && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "space-y-6", children: [
14847
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14848
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
14849
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14819
14850
  ] }),
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)(
14851
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
14852
+ order.items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
14822
14853
  "div",
14823
14854
  {
14824
14855
  className: "flex justify-between gap-4 text-sm",
14825
14856
  children: [
14826
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14857
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14827
14858
  item.product.name,
14828
14859
  item.variant ? ` (${item.variant.name})` : "",
14829
14860
  " x",
14830
14861
  item.quantity
14831
14862
  ] }),
14832
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
14863
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
14833
14864
  ]
14834
14865
  },
14835
14866
  idx
14836
14867
  )),
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) })
14868
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
14869
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: t.totalLabel }),
14870
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: formatPrice(order.total, currencyCode, locale) })
14840
14871
  ] }) })
14841
14872
  ] }),
14842
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14873
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14843
14874
  t.confirmationEmailPrefix,
14844
14875
  " ",
14845
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14876
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14846
14877
  "."
14847
14878
  ] })
14848
14879
  ] }),
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 })
14880
+ showOrderReference && order && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14881
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
14882
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14852
14883
  ] }),
14853
- status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14884
+ status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14854
14885
  "a",
14855
14886
  {
14856
14887
  href: cartHref,
@@ -14858,7 +14889,7 @@ function OrderConfirmation({
14858
14889
  children: t.backToCartLabel
14859
14890
  }
14860
14891
  ),
14861
- showRecheck && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14892
+ showRecheck && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14862
14893
  "button",
14863
14894
  {
14864
14895
  type: "button",
@@ -14867,9 +14898,9 @@ function OrderConfirmation({
14867
14898
  children: t.recheckLabel
14868
14899
  }
14869
14900
  ),
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 })
14901
+ showSessionReference && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14902
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
14903
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
14873
14904
  ] })
14874
14905
  ] });
14875
14906
  }
@@ -14889,6 +14920,7 @@ function OrderConfirmation({
14889
14920
  MarkdownRenderer,
14890
14921
  OrderConfirmation,
14891
14922
  PageBlocks,
14923
+ PageCardGrid,
14892
14924
  ParentPage,
14893
14925
  ProductCard,
14894
14926
  ProductTrustItems,