@reblu/site-blocks 0.25.0 → 0.26.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
@@ -46,6 +46,7 @@ __export(src_exports, {
46
46
  EMPTY_FULL_INVOICE_VALUE: () => EMPTY_FULL_INVOICE_VALUE,
47
47
  FaqAccordion: () => FaqAccordion,
48
48
  FullInvoiceFields: () => FullInvoiceFields,
49
+ LegalDocument: () => LegalDocument,
49
50
  LessonPreview: () => LessonPreview,
50
51
  MarkdownRenderer: () => MarkdownRenderer,
51
52
  OrderConfirmation: () => OrderConfirmation,
@@ -13594,8 +13595,53 @@ function CoursePurchaseTerms({
13594
13595
  );
13595
13596
  }
13596
13597
 
13597
- // src/components/lesson-preview.tsx
13598
+ // src/components/legal-document.tsx
13598
13599
  var import_jsx_runtime4 = require("react/jsx-runtime");
13600
+ function isVisiblyEmpty2(html5) {
13601
+ if (/<(img|iframe|hr)\b/i.test(html5)) return false;
13602
+ return html5.replace(/<[^>]*>/g, "").trim() === "";
13603
+ }
13604
+ function LegalDocument({
13605
+ content,
13606
+ title,
13607
+ fallback,
13608
+ titleId = "legal-document-title",
13609
+ className,
13610
+ titleClassName,
13611
+ contentClassName
13612
+ }) {
13613
+ const html5 = markdownToSafeHtml(typeof content === "string" ? content : null);
13614
+ const isEmpty = !html5 || isVisiblyEmpty2(html5);
13615
+ const hasFallback = fallback !== void 0 && fallback !== null && fallback !== false;
13616
+ if (isEmpty && !hasFallback) return null;
13617
+ const hasTitle = title !== void 0 && title !== null && title !== "";
13618
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
13619
+ "article",
13620
+ {
13621
+ "data-slot": "legal-document",
13622
+ "aria-labelledby": hasTitle ? titleId : void 0,
13623
+ className: slotClassName("space-y-6", "", className),
13624
+ children: [
13625
+ hasTitle && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h1", { id: titleId, className: slotClassName("", "text-3xl font-bold", titleClassName), children: title }),
13626
+ isEmpty ? fallback : (
13627
+ // `html` is already sanitised by `markdownToSafeHtml` — SafeHtml only maps it.
13628
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13629
+ SafeHtml,
13630
+ {
13631
+ html: html5,
13632
+ headingOffset: hasTitle ? 1 : 0,
13633
+ normalizeHeadings: hasTitle,
13634
+ className: contentClassName
13635
+ }
13636
+ )
13637
+ )
13638
+ ]
13639
+ }
13640
+ );
13641
+ }
13642
+
13643
+ // src/components/lesson-preview.tsx
13644
+ var import_jsx_runtime5 = require("react/jsx-runtime");
13599
13645
  var DEFAULT_LESSON_PREVIEW_LABELS = {
13600
13646
  badge: "Vista previa gratuita",
13601
13647
  player: "V\xEDdeo",
@@ -13619,7 +13665,7 @@ function clock(seconds) {
13619
13665
  iso: `PT${h2 > 0 ? `${h2}H` : ""}${m2}M${s2}S`
13620
13666
  };
13621
13667
  }
13622
- function isVisiblyEmpty2(html5) {
13668
+ function isVisiblyEmpty3(html5) {
13623
13669
  if (/<(img|iframe|hr)\b/i.test(html5)) return false;
13624
13670
  return html5.replace(/<[^>]*>/g, "").trim() === "";
13625
13671
  }
@@ -13636,17 +13682,17 @@ function LessonPreview({
13636
13682
  const Tag = `h${headingLevel}`;
13637
13683
  const video = lesson.video && isEmbeddable(lesson.video.embedUrl) ? lesson.video : null;
13638
13684
  const html5 = markdownToSafeHtml(lesson.content);
13639
- const hasBody = html5 !== null && html5 !== "" && !isVisiblyEmpty2(html5);
13685
+ const hasBody = html5 !== null && html5 !== "" && !isVisiblyEmpty3(html5);
13640
13686
  const duration = typeof lesson.durationSeconds === "number" && lesson.durationSeconds > 0 ? clock(lesson.durationSeconds) : null;
13641
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
13687
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
13642
13688
  "article",
13643
13689
  {
13644
13690
  "data-slot": "lesson-preview",
13645
13691
  "aria-labelledby": headingId,
13646
13692
  className: slotClassName("space-y-6", "", className),
13647
13693
  children: [
13648
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("header", { className: "space-y-2", children: [
13649
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13694
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("header", { className: "space-y-2", children: [
13695
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13650
13696
  "span",
13651
13697
  {
13652
13698
  "data-slot": "lesson-preview-badge",
@@ -13654,7 +13700,7 @@ function LessonPreview({
13654
13700
  children: labels.badge
13655
13701
  }
13656
13702
  ),
13657
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13703
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13658
13704
  Tag,
13659
13705
  {
13660
13706
  id: headingId,
@@ -13662,12 +13708,12 @@ function LessonPreview({
13662
13708
  children: lesson.title
13663
13709
  }
13664
13710
  ),
13665
- duration && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
13666
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "sr-only", children: [
13711
+ duration && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
13712
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "sr-only", children: [
13667
13713
  labels.duration,
13668
13714
  ": "
13669
13715
  ] }),
13670
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13716
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13671
13717
  "time",
13672
13718
  {
13673
13719
  "data-slot": "lesson-preview-duration",
@@ -13678,12 +13724,12 @@ function LessonPreview({
13678
13724
  )
13679
13725
  ] })
13680
13726
  ] }),
13681
- video && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13727
+ video && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13682
13728
  "div",
13683
13729
  {
13684
13730
  "data-slot": "lesson-preview-player",
13685
13731
  className: "aspect-video w-full overflow-hidden rounded-xl border border-border bg-black",
13686
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13732
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13687
13733
  "iframe",
13688
13734
  {
13689
13735
  src: video.embedUrl,
@@ -13697,7 +13743,7 @@ function LessonPreview({
13697
13743
  )
13698
13744
  }
13699
13745
  ),
13700
- hasBody && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
13746
+ hasBody && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13701
13747
  SafeHtml,
13702
13748
  {
13703
13749
  html: html5,
@@ -13716,7 +13762,7 @@ var import_utils3 = require("@reblu/site-ui/utils");
13716
13762
  // src/components/_page-parts.tsx
13717
13763
  var import_utils2 = require("@reblu/site-ui/utils");
13718
13764
  var import_button_variants = require("@reblu/site-ui/button-variants");
13719
- var import_jsx_runtime5 = require("react/jsx-runtime");
13765
+ var import_jsx_runtime6 = require("react/jsx-runtime");
13720
13766
  var KNOWN_BUTTON_VARIANTS = /* @__PURE__ */ new Set([
13721
13767
  "default",
13722
13768
  "destructive",
@@ -13729,11 +13775,11 @@ function toButtonVariant(variant) {
13729
13775
  return variant && KNOWN_BUTTON_VARIANTS.has(variant) ? variant : "default";
13730
13776
  }
13731
13777
  function PageHero({ page }) {
13732
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("header", { className: "space-y-4", children: [
13733
- page.category && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "inline-flex items-center rounded-full bg-secondary px-3 py-1 text-sm font-medium text-secondary-foreground", children: page.category.name }),
13734
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: "text-4xl font-bold tracking-tight", children: page.title }),
13735
- page.subtitle && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-lg text-muted-foreground", children: page.subtitle }),
13736
- page.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13778
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("header", { className: "space-y-4", children: [
13779
+ page.category && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "inline-flex items-center rounded-full bg-secondary px-3 py-1 text-sm font-medium text-secondary-foreground", children: page.category.name }),
13780
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h1", { className: "text-4xl font-bold tracking-tight", children: page.title }),
13781
+ page.subtitle && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-lg text-muted-foreground", children: page.subtitle }),
13782
+ page.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
13737
13783
  "img",
13738
13784
  {
13739
13785
  src: page.coverImageUrl,
@@ -13747,7 +13793,7 @@ function PageHero({ page }) {
13747
13793
  function SectionCta({ section }) {
13748
13794
  if (!section.ctaLabel || !section.ctaUrl) return null;
13749
13795
  const variant = toButtonVariant(section.ctaVariant);
13750
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13796
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
13751
13797
  "a",
13752
13798
  {
13753
13799
  href: section.ctaUrl,
@@ -13762,46 +13808,46 @@ function SectionCta({ section }) {
13762
13808
  }
13763
13809
  function SectionImages({ section }) {
13764
13810
  if (section.images.length === 0) return null;
13765
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: (0, import_utils2.cn)("grid gap-4", section.images.length > 1 ? "sm:grid-cols-2" : "grid-cols-1"), children: section.images.map((img) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("figure", { className: "space-y-1", children: [
13766
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: img.url, alt: img.alt, loading: "lazy", className: "h-full w-full object-cover" }) }),
13767
- img.caption && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("figcaption", { className: "text-sm text-muted-foreground", children: img.caption })
13811
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_utils2.cn)("grid gap-4", section.images.length > 1 ? "sm:grid-cols-2" : "grid-cols-1"), children: section.images.map((img) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("figure", { className: "space-y-1", children: [
13812
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: img.url, alt: img.alt, loading: "lazy", className: "h-full w-full object-cover" }) }),
13813
+ img.caption && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("figcaption", { className: "text-sm text-muted-foreground", children: img.caption })
13768
13814
  ] }, `${img.url}-${img.order}`)) });
13769
13815
  }
13770
13816
  function PageSectionBlock({ section }) {
13771
13817
  const imageFirst = section.layout === "IMAGE_TEXT";
13772
13818
  const sideBySide = section.layout === "TEXT_IMAGE" || section.layout === "IMAGE_TEXT";
13773
13819
  const hasImages = section.images.length > 0;
13774
- const body3 = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "space-y-4", children: [
13775
- section.heading && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h2", { className: "text-2xl font-bold", children: section.heading }),
13776
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SafeHtml, { html: sanitizeHtml(section.contentHtml), headingOffset: 2 }),
13777
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionCta, { section })
13820
+ const body3 = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "space-y-4", children: [
13821
+ section.heading && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h2", { className: "text-2xl font-bold", children: section.heading }),
13822
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SafeHtml, { html: sanitizeHtml(section.contentHtml), headingOffset: 2 }),
13823
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SectionCta, { section })
13778
13824
  ] });
13779
13825
  if (sideBySide && hasImages) {
13780
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { className: "grid items-center gap-8 md:grid-cols-2", children: imageFirst ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
13781
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionImages, { section }),
13826
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("section", { className: "grid items-center gap-8 md:grid-cols-2", children: imageFirst ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
13827
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SectionImages, { section }),
13782
13828
  body3
13783
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
13829
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
13784
13830
  body3,
13785
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionImages, { section })
13831
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SectionImages, { section })
13786
13832
  ] }) });
13787
13833
  }
13788
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("section", { className: "space-y-4", children: [
13834
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("section", { className: "space-y-4", children: [
13789
13835
  body3,
13790
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionImages, { section })
13836
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SectionImages, { section })
13791
13837
  ] });
13792
13838
  }
13793
13839
  function PageSectionList({ sections }) {
13794
13840
  if (sections.length === 0) return null;
13795
13841
  const ordered = sections.slice().sort((a, b2) => a.order - b2.order);
13796
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PageSectionBlock, { section }, section.id)) });
13842
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PageSectionBlock, { section }, section.id)) });
13797
13843
  }
13798
13844
 
13799
13845
  // src/components/treatment.tsx
13800
- var import_jsx_runtime6 = require("react/jsx-runtime");
13846
+ var import_jsx_runtime7 = require("react/jsx-runtime");
13801
13847
  function Treatment({ page, className }) {
13802
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("article", { className: (0, import_utils3.cn)("space-y-12", className), "data-slot": "treatment", children: [
13803
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PageHero, { page }),
13804
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PageSectionList, { sections: page.sections })
13848
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("article", { className: (0, import_utils3.cn)("space-y-12", className), "data-slot": "treatment", children: [
13849
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PageHero, { page }),
13850
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PageSectionList, { sections: page.sections })
13805
13851
  ] });
13806
13852
  }
13807
13853
 
@@ -13810,11 +13856,11 @@ var import_utils5 = require("@reblu/site-ui/utils");
13810
13856
 
13811
13857
  // src/components/page-card-grid.tsx
13812
13858
  var import_utils4 = require("@reblu/site-ui/utils");
13813
- var import_jsx_runtime7 = require("react/jsx-runtime");
13859
+ var import_jsx_runtime8 = require("react/jsx-runtime");
13814
13860
  var defaultPageHref = (page) => `/${page.slug}`;
13815
13861
  var pageKey = (page) => `${page.category?.slug ?? ""}/${page.slug}`;
13816
13862
  function PageCardGrid(props) {
13817
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PageCardGridSection, { ...props });
13863
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(PageCardGridSection, { ...props });
13818
13864
  }
13819
13865
  function PageCardGridSection({
13820
13866
  pages,
@@ -13825,15 +13871,15 @@ function PageCardGridSection({
13825
13871
  }) {
13826
13872
  if (pages.length === 0) return null;
13827
13873
  const showHeading = keepEmptyHeading ? heading !== void 0 : !!heading;
13828
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("section", { className: (0, import_utils4.cn)("space-y-6", className), children: [
13829
- showHeading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h2", { className: "text-2xl font-bold", children: heading }),
13830
- /* @__PURE__ */ (0, import_jsx_runtime7.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_runtime7.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
13874
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: (0, import_utils4.cn)("space-y-6", className), children: [
13875
+ showHeading && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h2", { className: "text-2xl font-bold", children: heading }),
13876
+ /* @__PURE__ */ (0, import_jsx_runtime8.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_runtime8.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
13831
13877
  "a",
13832
13878
  {
13833
13879
  href: pageHref(page),
13834
13880
  className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13835
13881
  children: [
13836
- page.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
13882
+ page.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
13837
13883
  "img",
13838
13884
  {
13839
13885
  src: page.coverImageUrl,
@@ -13842,9 +13888,9 @@ function PageCardGridSection({
13842
13888
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13843
13889
  }
13844
13890
  ) }),
13845
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13846
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13847
- page.excerpt && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13891
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13892
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13893
+ page.excerpt && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13848
13894
  ] })
13849
13895
  ]
13850
13896
  }
@@ -13853,7 +13899,7 @@ function PageCardGridSection({
13853
13899
  }
13854
13900
 
13855
13901
  // src/components/parent-page.tsx
13856
- var import_jsx_runtime8 = require("react/jsx-runtime");
13902
+ var import_jsx_runtime9 = require("react/jsx-runtime");
13857
13903
  var defaultChildPageHref = (slug) => `/${slug}`;
13858
13904
  function ParentPage({
13859
13905
  page,
@@ -13868,10 +13914,10 @@ function ParentPage({
13868
13914
  const pages = childPages ?? treatments ?? [];
13869
13915
  const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13870
13916
  const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
13871
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("article", { className: (0, import_utils5.cn)("space-y-12", className), "data-slot": "specialty", children: [
13872
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(PageHero, { page }),
13873
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(PageSectionList, { sections: page.sections }),
13874
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
13917
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("article", { className: (0, import_utils5.cn)("space-y-12", className), "data-slot": "specialty", children: [
13918
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PageHero, { page }),
13919
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PageSectionList, { sections: page.sections }),
13920
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13875
13921
  PageCardGridSection,
13876
13922
  {
13877
13923
  pages,
@@ -13891,7 +13937,7 @@ var import_utils7 = require("@reblu/site-ui/utils");
13891
13937
 
13892
13938
  // src/components/professional-fields.tsx
13893
13939
  var import_utils6 = require("@reblu/site-ui/utils");
13894
- var import_jsx_runtime9 = require("react/jsx-runtime");
13940
+ var import_jsx_runtime10 = require("react/jsx-runtime");
13895
13941
  function ProfessionalFields({
13896
13942
  fields,
13897
13943
  variant = "profile",
@@ -13899,7 +13945,7 @@ function ProfessionalFields({
13899
13945
  }) {
13900
13946
  const shown = (fields ?? []).filter((f) => variant !== "card" || f.showOnCard);
13901
13947
  if (shown.length === 0) return null;
13902
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
13948
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13903
13949
  "dl",
13904
13950
  {
13905
13951
  className: (0, import_utils6.cn)(
@@ -13909,13 +13955,13 @@ function ProfessionalFields({
13909
13955
  ),
13910
13956
  "data-slot": "professional-fields",
13911
13957
  "data-variant": variant,
13912
- children: shown.map((field, index) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
13958
+ children: shown.map((field, index) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13913
13959
  "div",
13914
13960
  {
13915
13961
  className: variant === "card" ? "flex justify-center gap-1" : "contents",
13916
13962
  children: [
13917
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("dt", { className: "text-muted-foreground", children: field.label }),
13918
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("dd", { className: "m-0 font-medium", children: field.value })
13963
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("dt", { className: "text-muted-foreground", children: field.label }),
13964
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("dd", { className: "m-0 font-medium", children: field.value })
13919
13965
  ]
13920
13966
  },
13921
13967
  `${field.label}-${index}`
@@ -13925,7 +13971,7 @@ function ProfessionalFields({
13925
13971
  }
13926
13972
 
13927
13973
  // src/components/profile-card.tsx
13928
- var import_jsx_runtime10 = require("react/jsx-runtime");
13974
+ var import_jsx_runtime11 = require("react/jsx-runtime");
13929
13975
  function initials(name) {
13930
13976
  return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
13931
13977
  }
@@ -13940,7 +13986,7 @@ function ProfileCard({
13940
13986
  className
13941
13987
  }) {
13942
13988
  const NameTag = href ? "a" : "span";
13943
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
13989
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
13944
13990
  "article",
13945
13991
  {
13946
13992
  className: (0, import_utils7.cn)(
@@ -13949,7 +13995,7 @@ function ProfileCard({
13949
13995
  ),
13950
13996
  "data-slot": "profile-card",
13951
13997
  children: [
13952
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
13998
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13953
13999
  "span",
13954
14000
  {
13955
14001
  className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground",
@@ -13957,12 +14003,12 @@ function ProfileCard({
13957
14003
  children: initials(name)
13958
14004
  }
13959
14005
  ) }),
13960
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "space-y-1", children: [
13961
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
13962
- role && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-sm text-muted-foreground", children: role })
14006
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "space-y-1", children: [
14007
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
14008
+ role && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-sm text-muted-foreground", children: role })
13963
14009
  ] }),
13964
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ProfessionalFields, { fields, variant: "card" }),
13965
- specialties.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
14010
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ProfessionalFields, { fields, variant: "card" }),
14011
+ specialties.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
13966
14012
  "li",
13967
14013
  {
13968
14014
  className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
@@ -13970,7 +14016,7 @@ function ProfileCard({
13970
14016
  },
13971
14017
  s2
13972
14018
  )) }),
13973
- bio && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-sm text-muted-foreground", children: bio })
14019
+ bio && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-sm text-muted-foreground", children: bio })
13974
14020
  ]
13975
14021
  }
13976
14022
  );
@@ -13978,11 +14024,11 @@ function ProfileCard({
13978
14024
 
13979
14025
  // src/components/product-card.tsx
13980
14026
  var import_utils8 = require("@reblu/site-ui/utils");
13981
- var import_jsx_runtime11 = require("react/jsx-runtime");
14027
+ var import_jsx_runtime12 = require("react/jsx-runtime");
13982
14028
  function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
13983
14029
  const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
13984
14030
  const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
13985
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
14031
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
13986
14032
  "article",
13987
14033
  {
13988
14034
  className: (0, import_utils8.cn)(
@@ -13991,7 +14037,7 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13991
14037
  ),
13992
14038
  "data-slot": "product-card",
13993
14039
  children: [
13994
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
14040
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
13995
14041
  "img",
13996
14042
  {
13997
14043
  src: image.url,
@@ -13999,14 +14045,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13999
14045
  loading: "lazy",
14000
14046
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
14001
14047
  }
14002
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
14003
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14004
- product.category && /* @__PURE__ */ (0, import_jsx_runtime11.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 }),
14005
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
14006
- product.shortDescription && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
14007
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
14008
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
14009
- hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
14048
+ ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
14049
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14050
+ product.category && /* @__PURE__ */ (0, import_jsx_runtime12.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 }),
14051
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
14052
+ product.shortDescription && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
14053
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
14054
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
14055
+ hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
14010
14056
  ] })
14011
14057
  ] })
14012
14058
  ]
@@ -14208,7 +14254,7 @@ var __iconNode8 = [
14208
14254
  var Truck = createLucideIcon("truck", __iconNode8);
14209
14255
 
14210
14256
  // src/components/product-trust-items.tsx
14211
- var import_jsx_runtime12 = require("react/jsx-runtime");
14257
+ var import_jsx_runtime13 = require("react/jsx-runtime");
14212
14258
  var DEFAULT_TRUST_ICONS = Object.freeze({
14213
14259
  shipping: Truck,
14214
14260
  returns: RotateCcw,
@@ -14242,9 +14288,9 @@ function ProductTrustItems({
14242
14288
  return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
14243
14289
  });
14244
14290
  if (rows.length === 0) return null;
14245
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14246
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14247
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { children: text3 })
14291
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14292
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14293
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: text3 })
14248
14294
  ] }, key2)) });
14249
14295
  }
14250
14296
 
@@ -14252,7 +14298,7 @@ function ProductTrustItems({
14252
14298
  var import_utils11 = require("@reblu/site-ui/utils");
14253
14299
 
14254
14300
  // src/components/_heading.tsx
14255
- var import_jsx_runtime13 = require("react/jsx-runtime");
14301
+ var import_jsx_runtime14 = require("react/jsx-runtime");
14256
14302
  function nextHeadingLevel(level) {
14257
14303
  return Math.min(level + 1, 6);
14258
14304
  }
@@ -14262,11 +14308,11 @@ function Heading({
14262
14308
  children: children2
14263
14309
  }) {
14264
14310
  const Tag = `h${level}`;
14265
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tag, { className, children: children2 });
14311
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tag, { className, children: children2 });
14266
14312
  }
14267
14313
 
14268
14314
  // src/components/faq-accordion.tsx
14269
- var import_jsx_runtime14 = require("react/jsx-runtime");
14315
+ var import_jsx_runtime15 = require("react/jsx-runtime");
14270
14316
  function FaqAccordion({
14271
14317
  items,
14272
14318
  heading,
@@ -14277,18 +14323,18 @@ function FaqAccordion({
14277
14323
  }) {
14278
14324
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
14279
14325
  if (visible.length === 0) return null;
14280
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: (0, import_utils11.cn)("space-y-4", className), "data-slot": "faq-accordion", children: [
14281
- heading && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14282
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
14326
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: (0, import_utils11.cn)("space-y-4", className), "data-slot": "faq-accordion", children: [
14327
+ heading && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14328
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14283
14329
  "details",
14284
14330
  {
14285
14331
  className: "group px-4",
14286
14332
  "data-slot": "faq-item",
14287
14333
  ...defaultOpen.includes(index) ? { open: true } : {},
14288
14334
  children: [
14289
- /* @__PURE__ */ (0, import_jsx_runtime14.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: [
14290
- questionHeadingLevel ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: item.q }),
14291
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
14335
+ /* @__PURE__ */ (0, import_jsx_runtime15.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: [
14336
+ questionHeadingLevel ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: item.q }),
14337
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14292
14338
  "span",
14293
14339
  {
14294
14340
  "aria-hidden": "true",
@@ -14297,7 +14343,7 @@ function FaqAccordion({
14297
14343
  }
14298
14344
  )
14299
14345
  ] }),
14300
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14346
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14301
14347
  ]
14302
14348
  },
14303
14349
  index
@@ -14307,7 +14353,7 @@ function FaqAccordion({
14307
14353
 
14308
14354
  // src/components/trust-badges.tsx
14309
14355
  var import_utils12 = require("@reblu/site-ui/utils");
14310
- var import_jsx_runtime15 = (
14356
+ var import_jsx_runtime16 = (
14311
14357
  // eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
14312
14358
  require("react/jsx-runtime")
14313
14359
  );
@@ -14350,7 +14396,7 @@ function safeLogoSrc(url) {
14350
14396
  function BadgeContent({ badge, logoClassName }) {
14351
14397
  const src = safeLogoSrc(badge.logoUrl);
14352
14398
  if (src) {
14353
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14399
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14354
14400
  "img",
14355
14401
  {
14356
14402
  src,
@@ -14360,7 +14406,7 @@ function BadgeContent({ badge, logoClassName }) {
14360
14406
  }
14361
14407
  );
14362
14408
  }
14363
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-sm font-medium", children: badge.name });
14409
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-sm font-medium", children: badge.name });
14364
14410
  }
14365
14411
  function TrustBadges({
14366
14412
  badges,
@@ -14388,14 +14434,14 @@ function TrustBadges({
14388
14434
  if (groups.length === 0) return null;
14389
14435
  const hasHeading = heading !== void 0 && heading !== null && heading !== "";
14390
14436
  const groupHeadingLevel = hasHeading ? nextHeadingLevel(headingLevel) : headingLevel;
14391
- const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14437
+ const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14392
14438
  "div",
14393
14439
  {
14394
14440
  "data-slot": "trust-badge-group",
14395
14441
  "data-type": type,
14396
14442
  className: (0, import_utils12.cn)("space-y-3", groupClassName),
14397
14443
  children: [
14398
- groupHeading ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14444
+ groupHeading ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14399
14445
  Heading,
14400
14446
  {
14401
14447
  level: groupHeadingLevel,
@@ -14407,30 +14453,30 @@ function TrustBadges({
14407
14453
  children: groupHeading
14408
14454
  }
14409
14455
  ) : null,
14410
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("ul", { className: (0, import_utils12.cn)("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14456
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { className: (0, import_utils12.cn)("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14411
14457
  const href = safeHref(badge.url);
14412
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("li", { children: href ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14413
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BadgeContent, { badge, logoClassName }),
14458
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("li", { children: href ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14459
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BadgeContent, { badge, logoClassName }),
14414
14460
  " ",
14415
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "sr-only", children: newWindowLabel })
14416
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BadgeContent, { badge, logoClassName }) }, badge.id);
14461
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "sr-only", children: newWindowLabel })
14462
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BadgeContent, { badge, logoClassName }) }, badge.id);
14417
14463
  }) })
14418
14464
  ]
14419
14465
  },
14420
14466
  type
14421
14467
  ));
14422
14468
  if (!hasHeading) {
14423
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { "data-slot": "trust-badges", className: (0, import_utils12.cn)("space-y-6", className), children: content });
14469
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { "data-slot": "trust-badges", className: (0, import_utils12.cn)("space-y-6", className), children: content });
14424
14470
  }
14425
14471
  const Tag = `h${headingLevel}`;
14426
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
14472
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14427
14473
  "section",
14428
14474
  {
14429
14475
  "data-slot": "trust-badges",
14430
14476
  "aria-labelledby": headingId,
14431
14477
  className: (0, import_utils12.cn)("space-y-6", className),
14432
14478
  children: [
14433
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
14479
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14434
14480
  Tag,
14435
14481
  {
14436
14482
  id: headingId,
@@ -14447,38 +14493,38 @@ function TrustBadges({
14447
14493
  // src/components/page-blocks.tsx
14448
14494
  var import_utils13 = require("@reblu/site-ui/utils");
14449
14495
  var import_button_variants2 = require("@reblu/site-ui/button-variants");
14450
- var import_jsx_runtime16 = require("react/jsx-runtime");
14496
+ var import_jsx_runtime17 = require("react/jsx-runtime");
14451
14497
  var ALIASES = {
14452
14498
  doctor_embed: "profile_embed",
14453
14499
  specialty_embed: "page_embed"
14454
14500
  };
14455
14501
  function HeroBlock({ block, headingLevel }) {
14456
14502
  const { title, subtitle, imageUrl } = block.data;
14457
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-4", children: [
14458
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
14459
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-lg opacity-80", children: subtitle }),
14460
- imageUrl && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
14503
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-4", children: [
14504
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
14505
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-lg opacity-80", children: subtitle }),
14506
+ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
14461
14507
  ] });
14462
14508
  }
14463
14509
  function RichtextBlock({ block, headingLevel }) {
14464
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14510
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14465
14511
  }
14466
14512
  function FaqBlock({ block }) {
14467
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(FaqAccordion, { items: block.data.items });
14513
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FaqAccordion, { items: block.data.items });
14468
14514
  }
14469
14515
  function StatsBlock({ block }) {
14470
- return /* @__PURE__ */ (0, import_jsx_runtime16.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_runtime16.jsxs)("div", { className: "flex flex-col-reverse gap-1", children: [
14471
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("dt", { className: "text-sm opacity-80", children: item.label }),
14472
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("dd", { className: "text-3xl font-bold", children: item.value })
14516
+ return /* @__PURE__ */ (0, import_jsx_runtime17.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_runtime17.jsxs)("div", { className: "flex flex-col-reverse gap-1", children: [
14517
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("dt", { className: "text-sm opacity-80", children: item.label }),
14518
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("dd", { className: "text-3xl font-bold", children: item.value })
14473
14519
  ] }, i)) });
14474
14520
  }
14475
14521
  function TestimonialBlock({ block }) {
14476
14522
  const { quote, author, role, avatarUrl } = block.data;
14477
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("figure", { className: "space-y-4", children: [
14478
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: quote }) }),
14479
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("figcaption", { className: "flex items-center gap-3", children: [
14523
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("figure", { className: "space-y-4", children: [
14524
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: quote }) }),
14525
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("figcaption", { className: "flex items-center gap-3", children: [
14480
14526
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
14481
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14527
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14482
14528
  "img",
14483
14529
  {
14484
14530
  src: avatarUrl,
@@ -14487,9 +14533,9 @@ function TestimonialBlock({ block }) {
14487
14533
  className: "h-10 w-10 rounded-full object-cover"
14488
14534
  }
14489
14535
  ),
14490
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { children: [
14491
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-semibold", children: author }),
14492
- role && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "block text-sm opacity-80", children: role })
14536
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { children: [
14537
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "font-semibold", children: author }),
14538
+ role && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "block text-sm opacity-80", children: role })
14493
14539
  ] })
14494
14540
  ] })
14495
14541
  ] });
@@ -14498,19 +14544,19 @@ function CtaSlotBlock(_props) {
14498
14544
  return null;
14499
14545
  }
14500
14546
  function FeatureListBlock({ block }) {
14501
- return /* @__PURE__ */ (0, import_jsx_runtime16.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_runtime16.jsx)("li", { children: item.text }, i)) });
14547
+ return /* @__PURE__ */ (0, import_jsx_runtime17.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_runtime17.jsx)("li", { children: item.text }, i)) });
14502
14548
  }
14503
14549
  function GalleryBlock({ block }) {
14504
14550
  const { images } = block.data;
14505
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14551
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14506
14552
  "div",
14507
14553
  {
14508
14554
  className: (0, import_utils13.cn)(
14509
14555
  "grid gap-4",
14510
14556
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
14511
14557
  ),
14512
- children: images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("figure", { className: "space-y-1", children: [
14513
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14558
+ children: images.map((img, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("figure", { className: "space-y-1", children: [
14559
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14514
14560
  "img",
14515
14561
  {
14516
14562
  src: img.url,
@@ -14519,7 +14565,7 @@ function GalleryBlock({ block }) {
14519
14565
  className: "h-full w-full object-cover"
14520
14566
  }
14521
14567
  ) }),
14522
- img.caption && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
14568
+ img.caption && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("figcaption", { className: "text-sm opacity-80", children: img.caption })
14523
14569
  ] }, `${img.url}-${i}`))
14524
14570
  }
14525
14571
  );
@@ -14529,13 +14575,13 @@ function EmbedCard({
14529
14575
  headingLevel,
14530
14576
  embedHref
14531
14577
  }) {
14532
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14578
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
14533
14579
  "a",
14534
14580
  {
14535
14581
  href: embedHref(resolved),
14536
14582
  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",
14537
14583
  children: [
14538
- resolved.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14584
+ resolved.coverImageUrl && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14539
14585
  "img",
14540
14586
  {
14541
14587
  src: resolved.coverImageUrl,
@@ -14544,24 +14590,24 @@ function EmbedCard({
14544
14590
  className: "h-full w-full object-cover"
14545
14591
  }
14546
14592
  ) }),
14547
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-1 p-4", children: [
14548
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
14549
- resolved.role && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
14550
- resolved.excerpt && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-muted-foreground", children: resolved.excerpt })
14593
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-1 p-4", children: [
14594
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
14595
+ resolved.role && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
14596
+ resolved.excerpt && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-muted-foreground", children: resolved.excerpt })
14551
14597
  ] })
14552
14598
  ]
14553
14599
  }
14554
14600
  );
14555
14601
  }
14556
14602
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
14557
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14603
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14558
14604
  }
14559
14605
  function ProfileEmbedBlock({
14560
14606
  block,
14561
14607
  headingLevel,
14562
14608
  embedHref
14563
14609
  }) {
14564
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14610
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14565
14611
  }
14566
14612
  var DEFAULT_RENDERERS = {
14567
14613
  hero: HeroBlock,
@@ -14618,7 +14664,7 @@ function toIdFragment(value) {
14618
14664
  function SectionCta2({ cta }) {
14619
14665
  if (!hasUsableCta(cta)) return null;
14620
14666
  const variant = toButtonVariant(cta.variant);
14621
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14667
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14622
14668
  "a",
14623
14669
  {
14624
14670
  href: cta.url,
@@ -14651,7 +14697,7 @@ function PageBlocks({
14651
14697
  const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
14652
14698
  const background = block.backgroundColor;
14653
14699
  return [
14654
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
14700
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
14655
14701
  "section",
14656
14702
  {
14657
14703
  "data-slot": "page-block",
@@ -14660,8 +14706,8 @@ function PageBlocks({
14660
14706
  style: surfaceStyle(background),
14661
14707
  className: (0, import_utils13.cn)("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14662
14708
  children: [
14663
- block.heading && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { id: headingId, children: block.heading }) }),
14664
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
14709
+ block.heading && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { id: headingId, children: block.heading }) }),
14710
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14665
14711
  Renderer,
14666
14712
  {
14667
14713
  block,
@@ -14669,7 +14715,7 @@ function PageBlocks({
14669
14715
  embedHref
14670
14716
  }
14671
14717
  ),
14672
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SectionCta2, { cta: block.cta })
14718
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SectionCta2, { cta: block.cta })
14673
14719
  ]
14674
14720
  },
14675
14721
  block.id
@@ -14677,12 +14723,12 @@ function PageBlocks({
14677
14723
  ];
14678
14724
  });
14679
14725
  if (sections.length === 0) return null;
14680
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: (0, import_utils13.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
14726
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_utils13.cn)("space-y-12", className), "data-slot": "page-blocks", children: sections });
14681
14727
  }
14682
14728
 
14683
14729
  // src/components/shop-filters.tsx
14684
14730
  var import_utils14 = require("@reblu/site-ui/utils");
14685
- var import_jsx_runtime17 = require("react/jsx-runtime");
14731
+ var import_jsx_runtime18 = require("react/jsx-runtime");
14686
14732
  var DEFAULT_SHOP_PRICE_BANDS = [
14687
14733
  { max: 2500 },
14688
14734
  { min: 2500, max: 5e3 },
@@ -14726,7 +14772,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
14726
14772
  return "";
14727
14773
  }
14728
14774
  function OptionLink({ href, active, label, onActivate }) {
14729
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14775
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14730
14776
  "a",
14731
14777
  {
14732
14778
  href,
@@ -14744,9 +14790,9 @@ function OptionLink({ href, active, label, onActivate }) {
14744
14790
  );
14745
14791
  }
14746
14792
  function FilterFieldset({ legend, children: children2 }) {
14747
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("fieldset", { className: "space-y-2", children: [
14748
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14749
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-wrap gap-2", children: children2 })
14793
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("fieldset", { className: "space-y-2", children: [
14794
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14795
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex flex-wrap gap-2", children: children2 })
14750
14796
  ] });
14751
14797
  }
14752
14798
  function ShopFilters({
@@ -14769,11 +14815,11 @@ function ShopFilters({
14769
14815
  if (!shouldRenderShopFilters(facets, active)) {
14770
14816
  return null;
14771
14817
  }
14772
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_utils14.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
14818
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: (0, import_utils14.cn)("space-y-6", className), "data-slot": "shop-filters", children: [
14773
14819
  visibleTaxonomies.map((axis) => {
14774
14820
  const activeSlug = active.taxonomy?.[axis.key];
14775
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(FilterFieldset, { legend: axis.label, children: [
14776
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14821
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(FilterFieldset, { legend: axis.label, children: [
14822
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14777
14823
  OptionLink,
14778
14824
  {
14779
14825
  href: hrefs.taxonomy(axis.key, void 0),
@@ -14788,7 +14834,7 @@ function ShopFilters({
14788
14834
  ),
14789
14835
  axis.terms.map((term) => {
14790
14836
  const isActive = activeSlug === term.slug;
14791
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14837
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14792
14838
  OptionLink,
14793
14839
  {
14794
14840
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -14808,9 +14854,9 @@ function ShopFilters({
14808
14854
  }),
14809
14855
  visibleAttributes.map((attr) => {
14810
14856
  const activeValues = toValueArray(active.attr?.[attr.key]);
14811
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14857
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14812
14858
  const isActive = activeValues.includes(opt.value);
14813
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14859
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14814
14860
  OptionLink,
14815
14861
  {
14816
14862
  href: hrefs.attr(attr.key, opt.value),
@@ -14828,11 +14874,11 @@ function ShopFilters({
14828
14874
  );
14829
14875
  }) }, attr.key);
14830
14876
  }),
14831
- showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14877
+ showPriceGroup && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14832
14878
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
14833
14879
  const nextMin = isActive ? void 0 : band.min;
14834
14880
  const nextMax = isActive ? void 0 : band.max;
14835
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14881
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14836
14882
  OptionLink,
14837
14883
  {
14838
14884
  href: hrefs.price(nextMin, nextMax),
@@ -14843,7 +14889,7 @@ function ShopFilters({
14843
14889
  i
14844
14890
  );
14845
14891
  }) }),
14846
- hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14892
+ hasOnSale && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14847
14893
  OptionLink,
14848
14894
  {
14849
14895
  href: hrefs.onSale(!active.onSale),
@@ -14852,7 +14898,7 @@ function ShopFilters({
14852
14898
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
14853
14899
  }
14854
14900
  ),
14855
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
14901
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14856
14902
  "a",
14857
14903
  {
14858
14904
  href: hrefs.clearAll(),
@@ -14869,7 +14915,7 @@ function ShopFilters({
14869
14915
 
14870
14916
  // src/components/course-catalog-filters.tsx
14871
14917
  var import_utils15 = require("@reblu/site-ui/utils");
14872
- var import_jsx_runtime18 = require("react/jsx-runtime");
14918
+ var import_jsx_runtime19 = require("react/jsx-runtime");
14873
14919
  var DEFAULT_COURSE_PRICE_BANDS = [
14874
14920
  { max: 5e3 },
14875
14921
  { min: 5e3, max: 15e3 },
@@ -14922,9 +14968,9 @@ function CourseCatalogFilters({
14922
14968
  const showPrice = enabled.price !== false;
14923
14969
  const isFree = Boolean(active.free);
14924
14970
  if (!showCategories && !showInstructors && !showPrice) return null;
14925
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: (0, import_utils15.cn)("space-y-6", className), "data-slot": "course-catalog-filters", children: [
14926
- showCategories && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(FilterFieldset, { legend: t.category, children: [
14927
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14971
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: (0, import_utils15.cn)("space-y-6", className), "data-slot": "course-catalog-filters", children: [
14972
+ showCategories && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(FilterFieldset, { legend: t.category, children: [
14973
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14928
14974
  OptionLink,
14929
14975
  {
14930
14976
  href: categoryHref(void 0),
@@ -14936,7 +14982,7 @@ function CourseCatalogFilters({
14936
14982
  sortedCategories.map((category) => {
14937
14983
  const isActive = active.category === category.slug;
14938
14984
  const next2 = isActive ? void 0 : category.slug;
14939
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14985
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14940
14986
  OptionLink,
14941
14987
  {
14942
14988
  href: categoryHref(next2),
@@ -14948,8 +14994,8 @@ function CourseCatalogFilters({
14948
14994
  );
14949
14995
  })
14950
14996
  ] }),
14951
- showInstructors && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(FilterFieldset, { legend: t.instructor, children: [
14952
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
14997
+ showInstructors && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(FilterFieldset, { legend: t.instructor, children: [
14998
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14953
14999
  OptionLink,
14954
15000
  {
14955
15001
  href: hrefs.instructor(void 0),
@@ -14961,7 +15007,7 @@ function CourseCatalogFilters({
14961
15007
  named.map((instructor) => {
14962
15008
  const isActive = active.instructor === instructor.id;
14963
15009
  const next2 = isActive ? void 0 : instructor.id;
14964
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
15010
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14965
15011
  OptionLink,
14966
15012
  {
14967
15013
  href: hrefs.instructor(next2),
@@ -14973,8 +15019,8 @@ function CourseCatalogFilters({
14973
15019
  );
14974
15020
  })
14975
15021
  ] }),
14976
- showPrice && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(FilterFieldset, { legend: t.price, children: [
14977
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
15022
+ showPrice && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(FilterFieldset, { legend: t.price, children: [
15023
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14978
15024
  OptionLink,
14979
15025
  {
14980
15026
  href: hrefs.free(!isFree),
@@ -14989,7 +15035,7 @@ function CourseCatalogFilters({
14989
15035
  const isActive = !isFree && active.priceMin === band.min && active.priceMax === band.max;
14990
15036
  const nextMin = isActive ? void 0 : band.min;
14991
15037
  const nextMax = isActive ? void 0 : band.max;
14992
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
15038
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
14993
15039
  OptionLink,
14994
15040
  {
14995
15041
  href: hrefs.price(nextMin, nextMax),
@@ -15001,7 +15047,7 @@ function CourseCatalogFilters({
15001
15047
  );
15002
15048
  })
15003
15049
  ] }),
15004
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
15050
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15005
15051
  "a",
15006
15052
  {
15007
15053
  href: hrefs.clearAll(),
@@ -15024,7 +15070,7 @@ function CourseCatalogFilters({
15024
15070
 
15025
15071
  // src/components/cart-line-list.tsx
15026
15072
  var import_utils16 = require("@reblu/site-ui/utils");
15027
- var import_jsx_runtime19 = require("react/jsx-runtime");
15073
+ var import_jsx_runtime20 = require("react/jsx-runtime");
15028
15074
  var DEFAULT_LABELS2 = {
15029
15075
  quantityLabel: "Cantidad",
15030
15076
  decrease: "Reducir cantidad",
@@ -15050,9 +15096,9 @@ function CartLineList({
15050
15096
  }) {
15051
15097
  const t = { ...DEFAULT_LABELS2, ...labels };
15052
15098
  const noticeContent = notice === true ? t.cancelledNotice : notice;
15053
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: (0, import_utils16.cn)("space-y-4", className), "data-slot": "cart-line-list", children: [
15054
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
15055
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15099
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_utils16.cn)("space-y-4", className), "data-slot": "cart-line-list", children: [
15100
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
15101
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15056
15102
  "div",
15057
15103
  {
15058
15104
  role: "status",
@@ -15061,33 +15107,33 @@ function CartLineList({
15061
15107
  children: noticeContent
15062
15108
  }
15063
15109
  ),
15064
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
15110
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("ul", { className: "space-y-4", children: items.map((item) => {
15065
15111
  const maxQty = item.maxStock ?? Infinity;
15066
15112
  const atMax = item.quantity >= maxQty;
15067
15113
  const atMin = item.quantity <= 1;
15068
15114
  const message = lineMessage?.(item);
15069
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
15115
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15070
15116
  "li",
15071
15117
  {
15072
15118
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
15073
15119
  children: [
15074
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15075
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "min-w-0 flex-1", children: [
15076
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15077
- item.variantName && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15078
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15120
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15121
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "min-w-0 flex-1", children: [
15122
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15123
+ item.variantName && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15124
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15079
15125
  formatPrice(item.unitPrice, currencyCode, locale),
15080
15126
  " ",
15081
15127
  t.unitPriceSuffix
15082
15128
  ] }),
15083
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
15129
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15084
15130
  "div",
15085
15131
  {
15086
15132
  role: "group",
15087
15133
  "aria-label": t.quantityLabel,
15088
15134
  className: "mt-3 flex items-center gap-3",
15089
15135
  children: [
15090
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15136
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15091
15137
  "button",
15092
15138
  {
15093
15139
  type: "button",
@@ -15098,8 +15144,8 @@ function CartLineList({
15098
15144
  children: "\u2212"
15099
15145
  }
15100
15146
  ),
15101
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15102
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15147
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15148
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15103
15149
  "button",
15104
15150
  {
15105
15151
  type: "button",
@@ -15110,7 +15156,7 @@ function CartLineList({
15110
15156
  children: "+"
15111
15157
  }
15112
15158
  ),
15113
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15159
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15114
15160
  "button",
15115
15161
  {
15116
15162
  type: "button",
@@ -15123,7 +15169,7 @@ function CartLineList({
15123
15169
  ]
15124
15170
  }
15125
15171
  ),
15126
- message != null && message !== false && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
15172
+ message != null && message !== false && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15127
15173
  "p",
15128
15174
  {
15129
15175
  className: "mt-2 text-sm text-destructive",
@@ -15132,7 +15178,7 @@ function CartLineList({
15132
15178
  }
15133
15179
  )
15134
15180
  ] }),
15135
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15181
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15136
15182
  ]
15137
15183
  },
15138
15184
  lineKey(item.productId, item.variantId)
@@ -15143,7 +15189,7 @@ function CartLineList({
15143
15189
 
15144
15190
  // src/components/cart-summary.tsx
15145
15191
  var import_utils17 = require("@reblu/site-ui/utils");
15146
- var import_jsx_runtime20 = require("react/jsx-runtime");
15192
+ var import_jsx_runtime21 = require("react/jsx-runtime");
15147
15193
  var DEFAULT_LABELS3 = {
15148
15194
  subtotal: "Subtotal",
15149
15195
  discountPrefix: "Descuento",
@@ -15173,37 +15219,37 @@ function CartSummary({
15173
15219
  const hasDiscount = Boolean(discountAmount && discountAmount > 0);
15174
15220
  const noticeContent = notice === true ? t.cancelledNotice : notice;
15175
15221
  const hasNotice = noticeContent != null && noticeContent !== false;
15176
- const breakdown = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15222
+ const breakdown = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15177
15223
  "dl",
15178
15224
  {
15179
15225
  className: (0, import_utils17.cn)("space-y-2 text-sm", !hasNotice && className),
15180
15226
  "data-slot": "cart-summary",
15181
15227
  children: [
15182
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
15183
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dt", { children: t.subtotal }),
15184
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15228
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
15229
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dt", { children: t.subtotal }),
15230
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15185
15231
  ] }),
15186
- hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15187
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15188
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("dd", { children: [
15232
+ hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15233
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15234
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("dd", { children: [
15189
15235
  "-",
15190
15236
  formatPrice(discountAmount, currencyCode, locale)
15191
15237
  ] })
15192
15238
  ] }),
15193
- shippingEnabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
15194
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dt", { children: t.shipping }),
15195
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15239
+ shippingEnabled && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between text-muted-foreground", children: [
15240
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dt", { children: t.shipping }),
15241
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15196
15242
  ] }),
15197
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
15198
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dt", { children: t.total }),
15199
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("dd", { children: formatPrice(total, currencyCode, locale) })
15243
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
15244
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dt", { children: t.total }),
15245
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("dd", { children: formatPrice(total, currencyCode, locale) })
15200
15246
  ] })
15201
15247
  ]
15202
15248
  }
15203
15249
  );
15204
15250
  if (!hasNotice) return breakdown;
15205
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_utils17.cn)("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
15206
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15251
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: (0, import_utils17.cn)("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
15252
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15207
15253
  "div",
15208
15254
  {
15209
15255
  role: "status",
@@ -15218,7 +15264,7 @@ function CartSummary({
15218
15264
 
15219
15265
  // src/components/cart-adjustments-notice.tsx
15220
15266
  var import_utils18 = require("@reblu/site-ui/utils");
15221
- var import_jsx_runtime21 = require("react/jsx-runtime");
15267
+ var import_jsx_runtime22 = require("react/jsx-runtime");
15222
15268
  var DEFAULT_LABELS4 = {
15223
15269
  removed: (names) => names.length === 1 ? `Hemos quitado del carrito: ${names[0]}, ya no est\xE1 disponible.` : `Hemos quitado del carrito: ${names.join(", ")}, ya no est\xE1n disponibles.`,
15224
15270
  quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
@@ -15252,20 +15298,20 @@ function CartAdjustmentsNotice({
15252
15298
  );
15253
15299
  }
15254
15300
  if (messages.length === 0) return null;
15255
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15301
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
15256
15302
  "div",
15257
15303
  {
15258
15304
  role: "status",
15259
15305
  className: (0, import_utils18.cn)("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
15260
15306
  "data-slot": "cart-adjustments-notice",
15261
- children: messages.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { children: messages[0] }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("li", { children: message }, index)) })
15307
+ children: messages.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { children: messages[0] }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("li", { children: message }, index)) })
15262
15308
  }
15263
15309
  );
15264
15310
  }
15265
15311
 
15266
15312
  // src/components/added-to-cart-toast.tsx
15267
15313
  var import_utils19 = require("@reblu/site-ui/utils");
15268
- var import_jsx_runtime22 = (
15314
+ var import_jsx_runtime23 = (
15269
15315
  // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
15270
15316
  require("react/jsx-runtime")
15271
15317
  );
@@ -15288,7 +15334,7 @@ function AddedToCartToast({
15288
15334
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
15289
15335
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
15290
15336
  const variant = status === "success" ? "success" : "error";
15291
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
15337
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
15292
15338
  "div",
15293
15339
  {
15294
15340
  "data-slot": "added-to-cart-toast",
@@ -15300,12 +15346,12 @@ function AddedToCartToast({
15300
15346
  className
15301
15347
  ),
15302
15348
  children: [
15303
- hasThumbnail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
15304
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "min-w-0 flex-1", children: [
15305
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "truncate font-semibold text-foreground", children: productName }),
15306
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
15349
+ hasThumbnail && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
15350
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "min-w-0 flex-1", children: [
15351
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "truncate font-semibold text-foreground", children: productName }),
15352
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
15307
15353
  ] }),
15308
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
15354
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
15309
15355
  ]
15310
15356
  }
15311
15357
  );
@@ -15313,7 +15359,7 @@ function AddedToCartToast({
15313
15359
 
15314
15360
  // src/components/checkout-login-prompt.tsx
15315
15361
  var import_utils20 = require("@reblu/site-ui/utils");
15316
- var import_jsx_runtime23 = require("react/jsx-runtime");
15362
+ var import_jsx_runtime24 = require("react/jsx-runtime");
15317
15363
  var DEFAULT_LABELS6 = {
15318
15364
  title: "Identificaci\xF3n",
15319
15365
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -15340,9 +15386,9 @@ function CheckoutLoginPrompt({
15340
15386
  if (!open) return null;
15341
15387
  const t = { ...DEFAULT_LABELS6, ...labels };
15342
15388
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
15343
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
15344
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
15345
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
15389
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
15390
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
15391
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
15346
15392
  "div",
15347
15393
  {
15348
15394
  role: "dialog",
@@ -15354,12 +15400,12 @@ function CheckoutLoginPrompt({
15354
15400
  className
15355
15401
  ),
15356
15402
  children: [
15357
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
15358
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
15359
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
15360
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
15403
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
15404
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
15405
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
15406
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
15361
15407
  ] }),
15362
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
15408
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15363
15409
  "button",
15364
15410
  {
15365
15411
  type: "button",
@@ -15370,9 +15416,9 @@ function CheckoutLoginPrompt({
15370
15416
  }
15371
15417
  )
15372
15418
  ] }),
15373
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
15374
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
15375
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
15419
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-2", children: [
15420
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
15421
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15376
15422
  "input",
15377
15423
  {
15378
15424
  id: "checkout-login-prompt-email",
@@ -15387,10 +15433,10 @@ function CheckoutLoginPrompt({
15387
15433
  )
15388
15434
  }
15389
15435
  ),
15390
- error && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-xs text-destructive", children: error })
15436
+ error && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-destructive", children: error })
15391
15437
  ] }),
15392
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
15393
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
15438
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-2", children: [
15439
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15394
15440
  "button",
15395
15441
  {
15396
15442
  type: "button",
@@ -15403,7 +15449,7 @@ function CheckoutLoginPrompt({
15403
15449
  children: checking ? t.checking : t.continueWithEmail
15404
15450
  }
15405
15451
  ),
15406
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
15452
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15407
15453
  "button",
15408
15454
  {
15409
15455
  type: "button",
@@ -15422,7 +15468,7 @@ function CheckoutLoginPrompt({
15422
15468
  // src/components/checkout-form.tsx
15423
15469
  var import_utils21 = require("@reblu/site-ui/utils");
15424
15470
  var import_phone_input = require("@reblu/site-ui/phone-input");
15425
- var import_jsx_runtime24 = require("react/jsx-runtime");
15471
+ var import_jsx_runtime25 = require("react/jsx-runtime");
15426
15472
  var DEFAULT_LABELS7 = {
15427
15473
  contactTitle: "Datos de contacto",
15428
15474
  nameLabel: "Nombre completo",
@@ -15478,9 +15524,9 @@ function CheckoutForm({
15478
15524
  event.preventDefault();
15479
15525
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
15480
15526
  }
15481
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
15527
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
15482
15528
  loginPrompt,
15483
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
15529
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
15484
15530
  "form",
15485
15531
  {
15486
15532
  "data-testid": "checkout-form",
@@ -15488,12 +15534,12 @@ function CheckoutForm({
15488
15534
  className: (0, import_utils21.cn)("space-y-8", className),
15489
15535
  "data-slot": "checkout-form",
15490
15536
  children: [
15491
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("section", { className: "space-y-4", children: [
15492
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
15493
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15494
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-1", children: [
15495
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
15496
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15537
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("section", { className: "space-y-4", children: [
15538
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
15539
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15540
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "space-y-1", children: [
15541
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
15542
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15497
15543
  "input",
15498
15544
  {
15499
15545
  id: "checkout-form-name",
@@ -15508,11 +15554,11 @@ function CheckoutForm({
15508
15554
  )
15509
15555
  }
15510
15556
  ),
15511
- contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
15557
+ contactErrors?.name && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.name })
15512
15558
  ] }),
15513
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-1", children: [
15514
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
15515
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15559
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "space-y-1", children: [
15560
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
15561
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15516
15562
  "input",
15517
15563
  {
15518
15564
  id: "checkout-form-email",
@@ -15527,9 +15573,9 @@ function CheckoutForm({
15527
15573
  )
15528
15574
  }
15529
15575
  ),
15530
- contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
15576
+ contactErrors?.email && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-xs text-destructive", children: contactErrors.email })
15531
15577
  ] }),
15532
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15578
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15533
15579
  import_phone_input.PhoneInput,
15534
15580
  {
15535
15581
  id: "checkout-form-phone",
@@ -15543,26 +15589,26 @@ function CheckoutForm({
15543
15589
  ] })
15544
15590
  ] }),
15545
15591
  children2,
15546
- generalError ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
15547
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("section", { className: "space-y-3", children: [
15548
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
15549
- autoDiscount ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
15592
+ generalError ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
15593
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("section", { className: "space-y-3", children: [
15594
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
15595
+ autoDiscount ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
15550
15596
  "div",
15551
15597
  {
15552
15598
  className: "flex items-center gap-2 rounded-lg border border-green-200 bg-green-50 px-4 py-3 text-sm text-green-700 dark:border-green-800 dark:bg-green-900/20 dark:text-green-400",
15553
15599
  "data-slot": "checkout-staff-discount",
15554
15600
  children: [
15555
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "font-semibold", children: t.staffDiscountApplied }),
15556
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
15601
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "font-semibold", children: t.staffDiscountApplied }),
15602
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
15557
15603
  ]
15558
15604
  }
15559
15605
  ) : null,
15560
- appliedDiscount && !autoDiscount ? /* @__PURE__ */ (0, import_jsx_runtime24.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: [
15561
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
15562
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "font-semibold", children: appliedDiscount.code }),
15563
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
15606
+ appliedDiscount && !autoDiscount ? /* @__PURE__ */ (0, import_jsx_runtime25.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: [
15607
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
15608
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "font-semibold", children: appliedDiscount.code }),
15609
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
15564
15610
  ] }),
15565
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15611
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15566
15612
  "button",
15567
15613
  {
15568
15614
  type: "button",
@@ -15572,9 +15618,9 @@ function CheckoutForm({
15572
15618
  children: t.removeDiscount
15573
15619
  }
15574
15620
  )
15575
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex gap-2", children: [
15576
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
15577
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15621
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex gap-2", children: [
15622
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
15623
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15578
15624
  "input",
15579
15625
  {
15580
15626
  id: "checkout-form-discount-code",
@@ -15586,7 +15632,7 @@ function CheckoutForm({
15586
15632
  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"
15587
15633
  }
15588
15634
  ),
15589
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15635
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15590
15636
  "button",
15591
15637
  {
15592
15638
  type: "button",
@@ -15597,9 +15643,9 @@ function CheckoutForm({
15597
15643
  }
15598
15644
  )
15599
15645
  ] }),
15600
- discountError && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-destructive", children: discountError })
15646
+ discountError && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-xs text-destructive", children: discountError })
15601
15647
  ] }),
15602
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
15648
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15603
15649
  "button",
15604
15650
  {
15605
15651
  type: "submit",
@@ -15622,7 +15668,7 @@ var import_utils23 = require("@reblu/site-ui/utils");
15622
15668
 
15623
15669
  // src/components/order-invoice-link.tsx
15624
15670
  var import_utils22 = require("@reblu/site-ui/utils");
15625
- var import_jsx_runtime25 = require("react/jsx-runtime");
15671
+ var import_jsx_runtime26 = require("react/jsx-runtime");
15626
15672
  var DEFAULT_LABELS8 = {
15627
15673
  linkLabel: "Descargar la factura {number}",
15628
15674
  signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
@@ -15630,8 +15676,8 @@ var DEFAULT_LABELS8 = {
15630
15676
  function OrderInvoiceLink({ invoice, labels, className }) {
15631
15677
  if (!invoice) return null;
15632
15678
  const t = { ...DEFAULT_LABELS8, ...labels };
15633
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: (0, import_utils22.cn)("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
15634
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
15679
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: (0, import_utils22.cn)("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
15680
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
15635
15681
  "a",
15636
15682
  {
15637
15683
  href: invoice.url,
@@ -15639,12 +15685,12 @@ function OrderInvoiceLink({ invoice, labels, className }) {
15639
15685
  children: t.linkLabel.replace("{number}", invoice.number)
15640
15686
  }
15641
15687
  ),
15642
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-muted-foreground", children: t.signInHint })
15688
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-muted-foreground", children: t.signInHint })
15643
15689
  ] });
15644
15690
  }
15645
15691
 
15646
15692
  // src/components/order-confirmation.tsx
15647
- var import_jsx_runtime26 = require("react/jsx-runtime");
15693
+ var import_jsx_runtime27 = require("react/jsx-runtime");
15648
15694
  var DEFAULT_LABELS9 = {
15649
15695
  pollingTitle: "Confirmando tu pedido\u2026",
15650
15696
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -15710,43 +15756,43 @@ function OrderConfirmation({
15710
15756
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
15711
15757
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
15712
15758
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
15713
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: (0, import_utils23.cn)("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
15714
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h1", { className: "text-3xl font-bold", children: title }),
15715
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-lg text-muted-foreground", children: description }),
15716
- showFullOrderSummary && order && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "space-y-6", children: [
15717
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15718
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
15719
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15759
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: (0, import_utils23.cn)("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
15760
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h1", { className: "text-3xl font-bold", children: title }),
15761
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "text-lg text-muted-foreground", children: description }),
15762
+ showFullOrderSummary && order && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-6", children: [
15763
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15764
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
15765
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15720
15766
  ] }),
15721
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
15722
- order.items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
15767
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
15768
+ order.items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
15723
15769
  "div",
15724
15770
  {
15725
15771
  className: "flex justify-between gap-4 text-sm",
15726
15772
  children: [
15727
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
15773
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
15728
15774
  item.product.name,
15729
15775
  item.variant ? ` (${item.variant.name})` : "",
15730
15776
  " x",
15731
15777
  item.quantity
15732
15778
  ] }),
15733
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
15779
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { children: formatPrice(item.total, currencyCode, locale) })
15734
15780
  ]
15735
15781
  },
15736
15782
  idx
15737
15783
  )),
15738
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
15739
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: t.totalLabel }),
15740
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: formatPrice(order.total, currencyCode, locale) })
15784
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
15785
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { children: t.totalLabel }),
15786
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { children: formatPrice(order.total, currencyCode, locale) })
15741
15787
  ] }) })
15742
15788
  ] }),
15743
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15789
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15744
15790
  t.confirmationEmailPrefix,
15745
15791
  " ",
15746
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15792
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15747
15793
  "."
15748
15794
  ] }),
15749
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
15795
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
15750
15796
  OrderInvoiceLink,
15751
15797
  {
15752
15798
  invoice: order.invoice,
@@ -15754,11 +15800,11 @@ function OrderConfirmation({
15754
15800
  }
15755
15801
  )
15756
15802
  ] }),
15757
- showOrderReference && order && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15758
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
15759
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15803
+ showOrderReference && order && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15804
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
15805
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15760
15806
  ] }),
15761
- status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
15807
+ status === "failed" && cartHref && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
15762
15808
  "a",
15763
15809
  {
15764
15810
  href: cartHref,
@@ -15766,7 +15812,7 @@ function OrderConfirmation({
15766
15812
  children: t.backToCartLabel
15767
15813
  }
15768
15814
  ),
15769
- showRecheck && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
15815
+ showRecheck && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
15770
15816
  "button",
15771
15817
  {
15772
15818
  type: "button",
@@ -15775,16 +15821,16 @@ function OrderConfirmation({
15775
15821
  children: t.recheckLabel
15776
15822
  }
15777
15823
  ),
15778
- showSessionReference && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15779
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
15780
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
15824
+ showSessionReference && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15825
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
15826
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
15781
15827
  ] })
15782
15828
  ] });
15783
15829
  }
15784
15830
 
15785
15831
  // src/components/full-invoice-fields.tsx
15786
15832
  var import_utils24 = require("@reblu/site-ui/utils");
15787
- var import_jsx_runtime27 = require("react/jsx-runtime");
15833
+ var import_jsx_runtime28 = require("react/jsx-runtime");
15788
15834
  var EMPTY_FULL_INVOICE_VALUE = {
15789
15835
  wantsFullInvoice: false,
15790
15836
  billingIdType: "NIF",
@@ -15901,12 +15947,12 @@ function FullInvoiceFields({
15901
15947
  const showFields = value.wantsFullInvoice || overCap;
15902
15948
  const isSpanishNif = value.billingIdType === "NIF";
15903
15949
  const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
15904
- const error = (key2) => errors[key2] ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
15950
+ const error = (key2) => errors[key2] ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
15905
15951
  const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
15906
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("section", { className: (0, import_utils24.cn)("space-y-4", className), "data-slot": "full-invoice-fields", children: [
15907
- overCap ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
15908
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
15909
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
15952
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("section", { className: (0, import_utils24.cn)("space-y-4", className), "data-slot": "full-invoice-fields", children: [
15953
+ overCap ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
15954
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
15955
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
15910
15956
  "input",
15911
15957
  {
15912
15958
  type: "checkbox",
@@ -15916,12 +15962,12 @@ function FullInvoiceFields({
15916
15962
  ),
15917
15963
  t.toggle
15918
15964
  ] }),
15919
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15965
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15920
15966
  ] }),
15921
- showFields && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15922
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
15923
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
15924
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
15967
+ showFields && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15968
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
15969
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
15970
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
15925
15971
  "select",
15926
15972
  {
15927
15973
  id: "full-invoice-id-type",
@@ -15930,14 +15976,14 @@ function FullInvoiceFields({
15930
15976
  value: value.billingIdType,
15931
15977
  onChange: (e) => set("billingIdType", e.target.value),
15932
15978
  ...invalid2("billingIdType"),
15933
- children: ID_TYPES.map((type) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("option", { value: type, children: t.idTypeOptions[type] }, type))
15979
+ children: ID_TYPES.map((type) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("option", { value: type, children: t.idTypeOptions[type] }, type))
15934
15980
  }
15935
15981
  ),
15936
15982
  error("billingIdType")
15937
15983
  ] }),
15938
- !isSpanishNif && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
15939
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
15940
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
15984
+ !isSpanishNif && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
15985
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
15986
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
15941
15987
  "select",
15942
15988
  {
15943
15989
  id: "full-invoice-id-country",
@@ -15947,16 +15993,16 @@ function FullInvoiceFields({
15947
15993
  onChange: (e) => set("billingIdCountry", e.target.value),
15948
15994
  ...invalid2("billingIdCountry"),
15949
15995
  children: [
15950
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("option", { value: "", disabled: true, children: t.chooseCountry }),
15951
- countries.map((c) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("option", { value: c.code, children: c.name }, c.code))
15996
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("option", { value: "", disabled: true, children: t.chooseCountry }),
15997
+ countries.map((c) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("option", { value: c.code, children: c.name }, c.code))
15952
15998
  ]
15953
15999
  }
15954
16000
  ),
15955
16001
  error("billingIdCountry")
15956
16002
  ] }),
15957
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
15958
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
15959
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16003
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
16004
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
16005
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
15960
16006
  "input",
15961
16007
  {
15962
16008
  id: "full-invoice-nif",
@@ -15969,9 +16015,9 @@ function FullInvoiceFields({
15969
16015
  ),
15970
16016
  error("billingNif")
15971
16017
  ] }),
15972
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
15973
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
15974
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16018
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
16019
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
16020
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
15975
16021
  "input",
15976
16022
  {
15977
16023
  id: "full-invoice-name",
@@ -15984,9 +16030,9 @@ function FullInvoiceFields({
15984
16030
  ),
15985
16031
  error("billingName")
15986
16032
  ] }),
15987
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1 sm:col-span-2", children: [
15988
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
15989
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16033
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1 sm:col-span-2", children: [
16034
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
16035
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
15990
16036
  "input",
15991
16037
  {
15992
16038
  id: "full-invoice-street",
@@ -15998,9 +16044,9 @@ function FullInvoiceFields({
15998
16044
  }
15999
16045
  )
16000
16046
  ] }),
16001
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
16002
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
16003
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16047
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
16048
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
16049
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
16004
16050
  "input",
16005
16051
  {
16006
16052
  id: "full-invoice-postal-code",
@@ -16011,9 +16057,9 @@ function FullInvoiceFields({
16011
16057
  }
16012
16058
  )
16013
16059
  ] }),
16014
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
16015
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
16016
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16060
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
16061
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
16062
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
16017
16063
  "input",
16018
16064
  {
16019
16065
  id: "full-invoice-city",
@@ -16024,9 +16070,9 @@ function FullInvoiceFields({
16024
16070
  }
16025
16071
  )
16026
16072
  ] }),
16027
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "space-y-1", children: [
16028
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
16029
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
16073
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-1", children: [
16074
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
16075
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
16030
16076
  "select",
16031
16077
  {
16032
16078
  id: "full-invoice-country",
@@ -16034,18 +16080,18 @@ function FullInvoiceFields({
16034
16080
  required: true,
16035
16081
  value: value.country,
16036
16082
  onChange: (e) => set("country", e.target.value),
16037
- children: countries.map((c) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("option", { value: c.code, children: c.name }, c.code))
16083
+ children: countries.map((c) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("option", { value: c.code, children: c.name }, c.code))
16038
16084
  }
16039
16085
  )
16040
16086
  ] }),
16041
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "sm:col-span-2", children: error("address") })
16087
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "sm:col-span-2", children: error("address") })
16042
16088
  ] })
16043
16089
  ] });
16044
16090
  }
16045
16091
 
16046
16092
  // src/components/contact-interest-field.tsx
16047
16093
  var import_utils25 = require("@reblu/site-ui/utils");
16048
- var import_jsx_runtime28 = require("react/jsx-runtime");
16094
+ var import_jsx_runtime29 = require("react/jsx-runtime");
16049
16095
  function ContactInterestField({
16050
16096
  interest,
16051
16097
  value,
@@ -16062,18 +16108,18 @@ function ContactInterestField({
16062
16108
  else next2.delete(option2);
16063
16109
  onChange(interest.options.filter((candidate) => next2.has(candidate)));
16064
16110
  };
16065
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("fieldset", { "data-slot": "contact-interest", className: (0, import_utils25.cn)("space-y-2", className), children: [
16066
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("legend", { className: "text-sm font-medium", children: interest.label }),
16067
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
16111
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("fieldset", { "data-slot": "contact-interest", className: (0, import_utils25.cn)("space-y-2", className), children: [
16112
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("legend", { className: "text-sm font-medium", children: interest.label }),
16113
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
16068
16114
  const id = `${idPrefix}-${index}`;
16069
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
16115
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
16070
16116
  "label",
16071
16117
  {
16072
16118
  htmlFor: id,
16073
16119
  "data-slot": "contact-interest-option",
16074
16120
  className: "flex items-center gap-2 text-sm",
16075
16121
  children: [
16076
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
16122
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
16077
16123
  "input",
16078
16124
  {
16079
16125
  id,
@@ -16122,6 +16168,7 @@ var import_site_contracts = require("@reblu/site-contracts");
16122
16168
  EMPTY_FULL_INVOICE_VALUE,
16123
16169
  FaqAccordion,
16124
16170
  FullInvoiceFields,
16171
+ LegalDocument,
16125
16172
  LessonPreview,
16126
16173
  MarkdownRenderer,
16127
16174
  OrderConfirmation,