@reblu/site-blocks 0.25.0 → 0.27.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.js CHANGED
@@ -13473,9 +13473,11 @@ function CourseDescription({
13473
13473
  }
13474
13474
 
13475
13475
  // src/components/course-purchase-terms.tsx
13476
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
13476
+ import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
13477
13477
  var DEFAULT_COURSE_PURCHASE_TERMS_LABELS = {
13478
13478
  withdrawalWaiver: "El acceso empieza al comprar: al pagar pides el acceso inmediato y renuncias al derecho de desistimiento de 14 d\xEDas.",
13479
+ serviceStartRequest: "Al pagar pides expresamente que la formaci\xF3n empiece dentro del plazo de desistimiento de 14 d\xEDas.",
13480
+ consentText: (text3) => ` Texto de la casilla: \xAB${text3}\xBB`,
13479
13481
  accessDuration: (months) => `Acceso durante ${months} ${months === 1 ? "mes" : "meses"} desde la inscripci\xF3n.`,
13480
13482
  refundGuarantee: ({ basis, thresholdPercent, windowDays }) => {
13481
13483
  const period = windowDays != null ? ` durante ${windowDays} d\xEDas desde el pago` : "";
@@ -13496,7 +13498,21 @@ function CoursePurchaseTerms({
13496
13498
  }) {
13497
13499
  const text3 = { ...DEFAULT_COURSE_PURCHASE_TERMS_LABELS, ...labels };
13498
13500
  const items = [];
13499
- if (course.withdrawalWaiverRequired === true) {
13501
+ if (course.withdrawalConsent !== void 0) {
13502
+ const consent = course.withdrawalConsent;
13503
+ if (consent) {
13504
+ const line = consent.kind === "SERVICE_START_REQUEST" ? text3.serviceStartRequest : text3.withdrawalWaiver;
13505
+ items.push({
13506
+ // The waiver keeps its REB-1199 slot (existing SITE styles target it).
13507
+ key: consent.kind === "SERVICE_START_REQUEST" ? "service-start-request" : "withdrawal-waiver",
13508
+ kind: consent.kind,
13509
+ node: /* @__PURE__ */ jsxs3(Fragment2, { children: [
13510
+ line,
13511
+ text3.consentText(consent.text)
13512
+ ] })
13513
+ });
13514
+ }
13515
+ } else if (course.withdrawalWaiverRequired === true) {
13500
13516
  items.push({ key: "withdrawal-waiver", node: text3.withdrawalWaiver });
13501
13517
  }
13502
13518
  if (typeof course.accessDurationMonths === "number") {
@@ -13507,7 +13523,7 @@ function CoursePurchaseTerms({
13507
13523
  }
13508
13524
  if (items.length === 0) return null;
13509
13525
  const hasHeading = heading !== void 0 && heading !== null && heading !== "";
13510
- const list = /* @__PURE__ */ jsx3("ul", { className: slotClassName("list-disc space-y-1 pl-5", "text-sm text-muted-foreground", listClassName), children: items.map((item) => /* @__PURE__ */ jsx3("li", { "data-slot": `course-purchase-terms-${item.key}`, children: item.node }, item.key)) });
13526
+ const list = /* @__PURE__ */ jsx3("ul", { className: slotClassName("list-disc space-y-1 pl-5", "text-sm text-muted-foreground", listClassName), children: items.map((item) => /* @__PURE__ */ jsx3("li", { "data-slot": `course-purchase-terms-${item.key}`, "data-kind": item.kind, children: item.node }, item.key)) });
13511
13527
  const Tag = `h${headingLevel}`;
13512
13528
  return /* @__PURE__ */ jsxs3(
13513
13529
  "section",
@@ -13523,8 +13539,53 @@ function CoursePurchaseTerms({
13523
13539
  );
13524
13540
  }
13525
13541
 
13526
- // src/components/lesson-preview.tsx
13542
+ // src/components/legal-document.tsx
13527
13543
  import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
13544
+ function isVisiblyEmpty2(html5) {
13545
+ if (/<(img|iframe|hr)\b/i.test(html5)) return false;
13546
+ return html5.replace(/<[^>]*>/g, "").trim() === "";
13547
+ }
13548
+ function LegalDocument({
13549
+ content,
13550
+ title,
13551
+ fallback,
13552
+ titleId = "legal-document-title",
13553
+ className,
13554
+ titleClassName,
13555
+ contentClassName
13556
+ }) {
13557
+ const html5 = markdownToSafeHtml(typeof content === "string" ? content : null);
13558
+ const isEmpty = !html5 || isVisiblyEmpty2(html5);
13559
+ const hasFallback = fallback !== void 0 && fallback !== null && fallback !== false;
13560
+ if (isEmpty && !hasFallback) return null;
13561
+ const hasTitle = title !== void 0 && title !== null && title !== "";
13562
+ return /* @__PURE__ */ jsxs4(
13563
+ "article",
13564
+ {
13565
+ "data-slot": "legal-document",
13566
+ "aria-labelledby": hasTitle ? titleId : void 0,
13567
+ className: slotClassName("space-y-6", "", className),
13568
+ children: [
13569
+ hasTitle && /* @__PURE__ */ jsx4("h1", { id: titleId, className: slotClassName("", "text-3xl font-bold", titleClassName), children: title }),
13570
+ isEmpty ? fallback : (
13571
+ // `html` is already sanitised by `markdownToSafeHtml` — SafeHtml only maps it.
13572
+ /* @__PURE__ */ jsx4(
13573
+ SafeHtml,
13574
+ {
13575
+ html: html5,
13576
+ headingOffset: hasTitle ? 1 : 0,
13577
+ normalizeHeadings: hasTitle,
13578
+ className: contentClassName
13579
+ }
13580
+ )
13581
+ )
13582
+ ]
13583
+ }
13584
+ );
13585
+ }
13586
+
13587
+ // src/components/lesson-preview.tsx
13588
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
13528
13589
  var DEFAULT_LESSON_PREVIEW_LABELS = {
13529
13590
  badge: "Vista previa gratuita",
13530
13591
  player: "V\xEDdeo",
@@ -13548,7 +13609,7 @@ function clock(seconds) {
13548
13609
  iso: `PT${h2 > 0 ? `${h2}H` : ""}${m2}M${s2}S`
13549
13610
  };
13550
13611
  }
13551
- function isVisiblyEmpty2(html5) {
13612
+ function isVisiblyEmpty3(html5) {
13552
13613
  if (/<(img|iframe|hr)\b/i.test(html5)) return false;
13553
13614
  return html5.replace(/<[^>]*>/g, "").trim() === "";
13554
13615
  }
@@ -13565,17 +13626,17 @@ function LessonPreview({
13565
13626
  const Tag = `h${headingLevel}`;
13566
13627
  const video = lesson.video && isEmbeddable(lesson.video.embedUrl) ? lesson.video : null;
13567
13628
  const html5 = markdownToSafeHtml(lesson.content);
13568
- const hasBody = html5 !== null && html5 !== "" && !isVisiblyEmpty2(html5);
13629
+ const hasBody = html5 !== null && html5 !== "" && !isVisiblyEmpty3(html5);
13569
13630
  const duration = typeof lesson.durationSeconds === "number" && lesson.durationSeconds > 0 ? clock(lesson.durationSeconds) : null;
13570
- return /* @__PURE__ */ jsxs4(
13631
+ return /* @__PURE__ */ jsxs5(
13571
13632
  "article",
13572
13633
  {
13573
13634
  "data-slot": "lesson-preview",
13574
13635
  "aria-labelledby": headingId,
13575
13636
  className: slotClassName("space-y-6", "", className),
13576
13637
  children: [
13577
- /* @__PURE__ */ jsxs4("header", { className: "space-y-2", children: [
13578
- /* @__PURE__ */ jsx4(
13638
+ /* @__PURE__ */ jsxs5("header", { className: "space-y-2", children: [
13639
+ /* @__PURE__ */ jsx5(
13579
13640
  "span",
13580
13641
  {
13581
13642
  "data-slot": "lesson-preview-badge",
@@ -13583,7 +13644,7 @@ function LessonPreview({
13583
13644
  children: labels.badge
13584
13645
  }
13585
13646
  ),
13586
- /* @__PURE__ */ jsx4(
13647
+ /* @__PURE__ */ jsx5(
13587
13648
  Tag,
13588
13649
  {
13589
13650
  id: headingId,
@@ -13591,12 +13652,12 @@ function LessonPreview({
13591
13652
  children: lesson.title
13592
13653
  }
13593
13654
  ),
13594
- duration && /* @__PURE__ */ jsxs4("p", { className: "text-sm text-muted-foreground", children: [
13595
- /* @__PURE__ */ jsxs4("span", { className: "sr-only", children: [
13655
+ duration && /* @__PURE__ */ jsxs5("p", { className: "text-sm text-muted-foreground", children: [
13656
+ /* @__PURE__ */ jsxs5("span", { className: "sr-only", children: [
13596
13657
  labels.duration,
13597
13658
  ": "
13598
13659
  ] }),
13599
- /* @__PURE__ */ jsx4(
13660
+ /* @__PURE__ */ jsx5(
13600
13661
  "time",
13601
13662
  {
13602
13663
  "data-slot": "lesson-preview-duration",
@@ -13607,12 +13668,12 @@ function LessonPreview({
13607
13668
  )
13608
13669
  ] })
13609
13670
  ] }),
13610
- video && /* @__PURE__ */ jsx4(
13671
+ video && /* @__PURE__ */ jsx5(
13611
13672
  "div",
13612
13673
  {
13613
13674
  "data-slot": "lesson-preview-player",
13614
13675
  className: "aspect-video w-full overflow-hidden rounded-xl border border-border bg-black",
13615
- children: /* @__PURE__ */ jsx4(
13676
+ children: /* @__PURE__ */ jsx5(
13616
13677
  "iframe",
13617
13678
  {
13618
13679
  src: video.embedUrl,
@@ -13626,7 +13687,7 @@ function LessonPreview({
13626
13687
  )
13627
13688
  }
13628
13689
  ),
13629
- hasBody && /* @__PURE__ */ jsx4("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ jsx4(
13690
+ hasBody && /* @__PURE__ */ jsx5("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ jsx5(
13630
13691
  SafeHtml,
13631
13692
  {
13632
13693
  html: html5,
@@ -13645,7 +13706,7 @@ import { cn as cn3 } from "@reblu/site-ui/utils";
13645
13706
  // src/components/_page-parts.tsx
13646
13707
  import { cn as cn2 } from "@reblu/site-ui/utils";
13647
13708
  import { buttonVariants } from "@reblu/site-ui/button-variants";
13648
- import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
13709
+ import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
13649
13710
  var KNOWN_BUTTON_VARIANTS = /* @__PURE__ */ new Set([
13650
13711
  "default",
13651
13712
  "destructive",
@@ -13658,11 +13719,11 @@ function toButtonVariant(variant) {
13658
13719
  return variant && KNOWN_BUTTON_VARIANTS.has(variant) ? variant : "default";
13659
13720
  }
13660
13721
  function PageHero({ page }) {
13661
- return /* @__PURE__ */ jsxs5("header", { className: "space-y-4", children: [
13662
- page.category && /* @__PURE__ */ jsx5("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 }),
13663
- /* @__PURE__ */ jsx5("h1", { className: "text-4xl font-bold tracking-tight", children: page.title }),
13664
- page.subtitle && /* @__PURE__ */ jsx5("p", { className: "text-lg text-muted-foreground", children: page.subtitle }),
13665
- page.coverImageUrl && /* @__PURE__ */ jsx5("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx5(
13722
+ return /* @__PURE__ */ jsxs6("header", { className: "space-y-4", children: [
13723
+ page.category && /* @__PURE__ */ jsx6("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 }),
13724
+ /* @__PURE__ */ jsx6("h1", { className: "text-4xl font-bold tracking-tight", children: page.title }),
13725
+ page.subtitle && /* @__PURE__ */ jsx6("p", { className: "text-lg text-muted-foreground", children: page.subtitle }),
13726
+ page.coverImageUrl && /* @__PURE__ */ jsx6("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx6(
13666
13727
  "img",
13667
13728
  {
13668
13729
  src: page.coverImageUrl,
@@ -13676,7 +13737,7 @@ function PageHero({ page }) {
13676
13737
  function SectionCta({ section }) {
13677
13738
  if (!section.ctaLabel || !section.ctaUrl) return null;
13678
13739
  const variant = toButtonVariant(section.ctaVariant);
13679
- return /* @__PURE__ */ jsx5("div", { className: "pt-2", children: /* @__PURE__ */ jsx5(
13740
+ return /* @__PURE__ */ jsx6("div", { className: "pt-2", children: /* @__PURE__ */ jsx6(
13680
13741
  "a",
13681
13742
  {
13682
13743
  href: section.ctaUrl,
@@ -13691,46 +13752,46 @@ function SectionCta({ section }) {
13691
13752
  }
13692
13753
  function SectionImages({ section }) {
13693
13754
  if (section.images.length === 0) return null;
13694
- return /* @__PURE__ */ jsx5("div", { className: cn2("grid gap-4", section.images.length > 1 ? "sm:grid-cols-2" : "grid-cols-1"), children: section.images.map((img) => /* @__PURE__ */ jsxs5("figure", { className: "space-y-1", children: [
13695
- /* @__PURE__ */ jsx5("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx5("img", { src: img.url, alt: img.alt, loading: "lazy", className: "h-full w-full object-cover" }) }),
13696
- img.caption && /* @__PURE__ */ jsx5("figcaption", { className: "text-sm text-muted-foreground", children: img.caption })
13755
+ return /* @__PURE__ */ jsx6("div", { className: cn2("grid gap-4", section.images.length > 1 ? "sm:grid-cols-2" : "grid-cols-1"), children: section.images.map((img) => /* @__PURE__ */ jsxs6("figure", { className: "space-y-1", children: [
13756
+ /* @__PURE__ */ jsx6("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx6("img", { src: img.url, alt: img.alt, loading: "lazy", className: "h-full w-full object-cover" }) }),
13757
+ img.caption && /* @__PURE__ */ jsx6("figcaption", { className: "text-sm text-muted-foreground", children: img.caption })
13697
13758
  ] }, `${img.url}-${img.order}`)) });
13698
13759
  }
13699
13760
  function PageSectionBlock({ section }) {
13700
13761
  const imageFirst = section.layout === "IMAGE_TEXT";
13701
13762
  const sideBySide = section.layout === "TEXT_IMAGE" || section.layout === "IMAGE_TEXT";
13702
13763
  const hasImages = section.images.length > 0;
13703
- const body3 = /* @__PURE__ */ jsxs5("div", { className: "space-y-4", children: [
13704
- section.heading && /* @__PURE__ */ jsx5("h2", { className: "text-2xl font-bold", children: section.heading }),
13705
- /* @__PURE__ */ jsx5(SafeHtml, { html: sanitizeHtml(section.contentHtml), headingOffset: 2 }),
13706
- /* @__PURE__ */ jsx5(SectionCta, { section })
13764
+ const body3 = /* @__PURE__ */ jsxs6("div", { className: "space-y-4", children: [
13765
+ section.heading && /* @__PURE__ */ jsx6("h2", { className: "text-2xl font-bold", children: section.heading }),
13766
+ /* @__PURE__ */ jsx6(SafeHtml, { html: sanitizeHtml(section.contentHtml), headingOffset: 2 }),
13767
+ /* @__PURE__ */ jsx6(SectionCta, { section })
13707
13768
  ] });
13708
13769
  if (sideBySide && hasImages) {
13709
- return /* @__PURE__ */ jsx5("section", { className: "grid items-center gap-8 md:grid-cols-2", children: imageFirst ? /* @__PURE__ */ jsxs5(Fragment2, { children: [
13710
- /* @__PURE__ */ jsx5(SectionImages, { section }),
13770
+ return /* @__PURE__ */ jsx6("section", { className: "grid items-center gap-8 md:grid-cols-2", children: imageFirst ? /* @__PURE__ */ jsxs6(Fragment3, { children: [
13771
+ /* @__PURE__ */ jsx6(SectionImages, { section }),
13711
13772
  body3
13712
- ] }) : /* @__PURE__ */ jsxs5(Fragment2, { children: [
13773
+ ] }) : /* @__PURE__ */ jsxs6(Fragment3, { children: [
13713
13774
  body3,
13714
- /* @__PURE__ */ jsx5(SectionImages, { section })
13775
+ /* @__PURE__ */ jsx6(SectionImages, { section })
13715
13776
  ] }) });
13716
13777
  }
13717
- return /* @__PURE__ */ jsxs5("section", { className: "space-y-4", children: [
13778
+ return /* @__PURE__ */ jsxs6("section", { className: "space-y-4", children: [
13718
13779
  body3,
13719
- /* @__PURE__ */ jsx5(SectionImages, { section })
13780
+ /* @__PURE__ */ jsx6(SectionImages, { section })
13720
13781
  ] });
13721
13782
  }
13722
13783
  function PageSectionList({ sections }) {
13723
13784
  if (sections.length === 0) return null;
13724
13785
  const ordered = sections.slice().sort((a, b2) => a.order - b2.order);
13725
- return /* @__PURE__ */ jsx5("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ jsx5(PageSectionBlock, { section }, section.id)) });
13786
+ return /* @__PURE__ */ jsx6("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ jsx6(PageSectionBlock, { section }, section.id)) });
13726
13787
  }
13727
13788
 
13728
13789
  // src/components/treatment.tsx
13729
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
13790
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
13730
13791
  function Treatment({ page, className }) {
13731
- return /* @__PURE__ */ jsxs6("article", { className: cn3("space-y-12", className), "data-slot": "treatment", children: [
13732
- /* @__PURE__ */ jsx6(PageHero, { page }),
13733
- /* @__PURE__ */ jsx6(PageSectionList, { sections: page.sections })
13792
+ return /* @__PURE__ */ jsxs7("article", { className: cn3("space-y-12", className), "data-slot": "treatment", children: [
13793
+ /* @__PURE__ */ jsx7(PageHero, { page }),
13794
+ /* @__PURE__ */ jsx7(PageSectionList, { sections: page.sections })
13734
13795
  ] });
13735
13796
  }
13736
13797
 
@@ -13739,11 +13800,11 @@ import { cn as cn5 } from "@reblu/site-ui/utils";
13739
13800
 
13740
13801
  // src/components/page-card-grid.tsx
13741
13802
  import { cn as cn4 } from "@reblu/site-ui/utils";
13742
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
13803
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
13743
13804
  var defaultPageHref = (page) => `/${page.slug}`;
13744
13805
  var pageKey = (page) => `${page.category?.slug ?? ""}/${page.slug}`;
13745
13806
  function PageCardGrid(props) {
13746
- return /* @__PURE__ */ jsx7(PageCardGridSection, { ...props });
13807
+ return /* @__PURE__ */ jsx8(PageCardGridSection, { ...props });
13747
13808
  }
13748
13809
  function PageCardGridSection({
13749
13810
  pages,
@@ -13754,15 +13815,15 @@ function PageCardGridSection({
13754
13815
  }) {
13755
13816
  if (pages.length === 0) return null;
13756
13817
  const showHeading = keepEmptyHeading ? heading !== void 0 : !!heading;
13757
- return /* @__PURE__ */ jsxs7("section", { className: cn4("space-y-6", className), children: [
13758
- showHeading && /* @__PURE__ */ jsx7("h2", { className: "text-2xl font-bold", children: heading }),
13759
- /* @__PURE__ */ jsx7("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__ */ jsx7("li", { children: /* @__PURE__ */ jsxs7(
13818
+ return /* @__PURE__ */ jsxs8("section", { className: cn4("space-y-6", className), children: [
13819
+ showHeading && /* @__PURE__ */ jsx8("h2", { className: "text-2xl font-bold", children: heading }),
13820
+ /* @__PURE__ */ jsx8("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__ */ jsx8("li", { children: /* @__PURE__ */ jsxs8(
13760
13821
  "a",
13761
13822
  {
13762
13823
  href: pageHref(page),
13763
13824
  className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13764
13825
  children: [
13765
- page.coverImageUrl && /* @__PURE__ */ jsx7("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx7(
13826
+ page.coverImageUrl && /* @__PURE__ */ jsx8("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx8(
13766
13827
  "img",
13767
13828
  {
13768
13829
  src: page.coverImageUrl,
@@ -13771,9 +13832,9 @@ function PageCardGridSection({
13771
13832
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13772
13833
  }
13773
13834
  ) }),
13774
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13775
- /* @__PURE__ */ jsx7("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13776
- page.excerpt && /* @__PURE__ */ jsx7("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13835
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13836
+ /* @__PURE__ */ jsx8("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13837
+ page.excerpt && /* @__PURE__ */ jsx8("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13777
13838
  ] })
13778
13839
  ]
13779
13840
  }
@@ -13782,7 +13843,7 @@ function PageCardGridSection({
13782
13843
  }
13783
13844
 
13784
13845
  // src/components/parent-page.tsx
13785
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
13846
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
13786
13847
  var defaultChildPageHref = (slug) => `/${slug}`;
13787
13848
  function ParentPage({
13788
13849
  page,
@@ -13797,10 +13858,10 @@ function ParentPage({
13797
13858
  const pages = childPages ?? treatments ?? [];
13798
13859
  const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13799
13860
  const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
13800
- return /* @__PURE__ */ jsxs8("article", { className: cn5("space-y-12", className), "data-slot": "specialty", children: [
13801
- /* @__PURE__ */ jsx8(PageHero, { page }),
13802
- /* @__PURE__ */ jsx8(PageSectionList, { sections: page.sections }),
13803
- /* @__PURE__ */ jsx8(
13861
+ return /* @__PURE__ */ jsxs9("article", { className: cn5("space-y-12", className), "data-slot": "specialty", children: [
13862
+ /* @__PURE__ */ jsx9(PageHero, { page }),
13863
+ /* @__PURE__ */ jsx9(PageSectionList, { sections: page.sections }),
13864
+ /* @__PURE__ */ jsx9(
13804
13865
  PageCardGridSection,
13805
13866
  {
13806
13867
  pages,
@@ -13820,7 +13881,7 @@ import { cn as cn7 } from "@reblu/site-ui/utils";
13820
13881
 
13821
13882
  // src/components/professional-fields.tsx
13822
13883
  import { cn as cn6 } from "@reblu/site-ui/utils";
13823
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
13884
+ import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
13824
13885
  function ProfessionalFields({
13825
13886
  fields,
13826
13887
  variant = "profile",
@@ -13828,7 +13889,7 @@ function ProfessionalFields({
13828
13889
  }) {
13829
13890
  const shown = (fields ?? []).filter((f) => variant !== "card" || f.showOnCard);
13830
13891
  if (shown.length === 0) return null;
13831
- return /* @__PURE__ */ jsx9(
13892
+ return /* @__PURE__ */ jsx10(
13832
13893
  "dl",
13833
13894
  {
13834
13895
  className: cn6(
@@ -13838,13 +13899,13 @@ function ProfessionalFields({
13838
13899
  ),
13839
13900
  "data-slot": "professional-fields",
13840
13901
  "data-variant": variant,
13841
- children: shown.map((field, index) => /* @__PURE__ */ jsxs9(
13902
+ children: shown.map((field, index) => /* @__PURE__ */ jsxs10(
13842
13903
  "div",
13843
13904
  {
13844
13905
  className: variant === "card" ? "flex justify-center gap-1" : "contents",
13845
13906
  children: [
13846
- /* @__PURE__ */ jsx9("dt", { className: "text-muted-foreground", children: field.label }),
13847
- /* @__PURE__ */ jsx9("dd", { className: "m-0 font-medium", children: field.value })
13907
+ /* @__PURE__ */ jsx10("dt", { className: "text-muted-foreground", children: field.label }),
13908
+ /* @__PURE__ */ jsx10("dd", { className: "m-0 font-medium", children: field.value })
13848
13909
  ]
13849
13910
  },
13850
13911
  `${field.label}-${index}`
@@ -13854,7 +13915,7 @@ function ProfessionalFields({
13854
13915
  }
13855
13916
 
13856
13917
  // src/components/profile-card.tsx
13857
- import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
13918
+ import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
13858
13919
  function initials(name) {
13859
13920
  return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
13860
13921
  }
@@ -13869,7 +13930,7 @@ function ProfileCard({
13869
13930
  className
13870
13931
  }) {
13871
13932
  const NameTag = href ? "a" : "span";
13872
- return /* @__PURE__ */ jsxs10(
13933
+ return /* @__PURE__ */ jsxs11(
13873
13934
  "article",
13874
13935
  {
13875
13936
  className: cn7(
@@ -13878,7 +13939,7 @@ function ProfileCard({
13878
13939
  ),
13879
13940
  "data-slot": "profile-card",
13880
13941
  children: [
13881
- /* @__PURE__ */ jsx10("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx10("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx10(
13942
+ /* @__PURE__ */ jsx11("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx11("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx11(
13882
13943
  "span",
13883
13944
  {
13884
13945
  className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground",
@@ -13886,12 +13947,12 @@ function ProfileCard({
13886
13947
  children: initials(name)
13887
13948
  }
13888
13949
  ) }),
13889
- /* @__PURE__ */ jsxs10("div", { className: "space-y-1", children: [
13890
- /* @__PURE__ */ jsx10("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx10(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
13891
- role && /* @__PURE__ */ jsx10("p", { className: "text-sm text-muted-foreground", children: role })
13950
+ /* @__PURE__ */ jsxs11("div", { className: "space-y-1", children: [
13951
+ /* @__PURE__ */ jsx11("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx11(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
13952
+ role && /* @__PURE__ */ jsx11("p", { className: "text-sm text-muted-foreground", children: role })
13892
13953
  ] }),
13893
- /* @__PURE__ */ jsx10(ProfessionalFields, { fields, variant: "card" }),
13894
- specialties.length > 0 && /* @__PURE__ */ jsx10("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx10(
13954
+ /* @__PURE__ */ jsx11(ProfessionalFields, { fields, variant: "card" }),
13955
+ specialties.length > 0 && /* @__PURE__ */ jsx11("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx11(
13895
13956
  "li",
13896
13957
  {
13897
13958
  className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
@@ -13899,7 +13960,7 @@ function ProfileCard({
13899
13960
  },
13900
13961
  s2
13901
13962
  )) }),
13902
- bio && /* @__PURE__ */ jsx10("p", { className: "text-sm text-muted-foreground", children: bio })
13963
+ bio && /* @__PURE__ */ jsx11("p", { className: "text-sm text-muted-foreground", children: bio })
13903
13964
  ]
13904
13965
  }
13905
13966
  );
@@ -13907,11 +13968,11 @@ function ProfileCard({
13907
13968
 
13908
13969
  // src/components/product-card.tsx
13909
13970
  import { cn as cn8 } from "@reblu/site-ui/utils";
13910
- import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
13971
+ import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
13911
13972
  function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
13912
13973
  const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
13913
13974
  const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
13914
- return /* @__PURE__ */ jsxs11(
13975
+ return /* @__PURE__ */ jsxs12(
13915
13976
  "article",
13916
13977
  {
13917
13978
  className: cn8(
@@ -13920,7 +13981,7 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13920
13981
  ),
13921
13982
  "data-slot": "product-card",
13922
13983
  children: [
13923
- /* @__PURE__ */ jsx11("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx11(
13984
+ /* @__PURE__ */ jsx12("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx12(
13924
13985
  "img",
13925
13986
  {
13926
13987
  src: image.url,
@@ -13928,14 +13989,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13928
13989
  loading: "lazy",
13929
13990
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13930
13991
  }
13931
- ) : /* @__PURE__ */ jsx11("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13932
- /* @__PURE__ */ jsxs11("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13933
- product.category && /* @__PURE__ */ jsx11("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 }),
13934
- /* @__PURE__ */ jsx11("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx11("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13935
- product.shortDescription && /* @__PURE__ */ jsx11("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13936
- /* @__PURE__ */ jsxs11("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13937
- /* @__PURE__ */ jsx11("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13938
- hasDiscount && /* @__PURE__ */ jsx11("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13992
+ ) : /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13993
+ /* @__PURE__ */ jsxs12("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13994
+ product.category && /* @__PURE__ */ jsx12("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 }),
13995
+ /* @__PURE__ */ jsx12("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx12("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13996
+ product.shortDescription && /* @__PURE__ */ jsx12("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13997
+ /* @__PURE__ */ jsxs12("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13998
+ /* @__PURE__ */ jsx12("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13999
+ hasDiscount && /* @__PURE__ */ jsx12("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13939
14000
  ] })
13940
14001
  ] })
13941
14002
  ]
@@ -14137,7 +14198,7 @@ var __iconNode8 = [
14137
14198
  var Truck = createLucideIcon("truck", __iconNode8);
14138
14199
 
14139
14200
  // src/components/product-trust-items.tsx
14140
- import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
14201
+ import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
14141
14202
  var DEFAULT_TRUST_ICONS = Object.freeze({
14142
14203
  shipping: Truck,
14143
14204
  returns: RotateCcw,
@@ -14171,9 +14232,9 @@ function ProductTrustItems({
14171
14232
  return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
14172
14233
  });
14173
14234
  if (rows.length === 0) return null;
14174
- return /* @__PURE__ */ jsx12(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs12("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14175
- /* @__PURE__ */ jsx12(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14176
- /* @__PURE__ */ jsx12("span", { children: text3 })
14235
+ return /* @__PURE__ */ jsx13(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs13("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14236
+ /* @__PURE__ */ jsx13(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14237
+ /* @__PURE__ */ jsx13("span", { children: text3 })
14177
14238
  ] }, key2)) });
14178
14239
  }
14179
14240
 
@@ -14181,7 +14242,7 @@ function ProductTrustItems({
14181
14242
  import { cn as cn9 } from "@reblu/site-ui/utils";
14182
14243
 
14183
14244
  // src/components/_heading.tsx
14184
- import { jsx as jsx13 } from "react/jsx-runtime";
14245
+ import { jsx as jsx14 } from "react/jsx-runtime";
14185
14246
  function nextHeadingLevel(level) {
14186
14247
  return Math.min(level + 1, 6);
14187
14248
  }
@@ -14191,11 +14252,11 @@ function Heading({
14191
14252
  children: children2
14192
14253
  }) {
14193
14254
  const Tag = `h${level}`;
14194
- return /* @__PURE__ */ jsx13(Tag, { className, children: children2 });
14255
+ return /* @__PURE__ */ jsx14(Tag, { className, children: children2 });
14195
14256
  }
14196
14257
 
14197
14258
  // src/components/faq-accordion.tsx
14198
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
14259
+ import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
14199
14260
  function FaqAccordion({
14200
14261
  items,
14201
14262
  heading,
@@ -14206,18 +14267,18 @@ function FaqAccordion({
14206
14267
  }) {
14207
14268
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
14208
14269
  if (visible.length === 0) return null;
14209
- return /* @__PURE__ */ jsxs13("div", { className: cn9("space-y-4", className), "data-slot": "faq-accordion", children: [
14210
- heading && /* @__PURE__ */ jsx14(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14211
- /* @__PURE__ */ jsx14("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs13(
14270
+ return /* @__PURE__ */ jsxs14("div", { className: cn9("space-y-4", className), "data-slot": "faq-accordion", children: [
14271
+ heading && /* @__PURE__ */ jsx15(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14272
+ /* @__PURE__ */ jsx15("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs14(
14212
14273
  "details",
14213
14274
  {
14214
14275
  className: "group px-4",
14215
14276
  "data-slot": "faq-item",
14216
14277
  ...defaultOpen.includes(index) ? { open: true } : {},
14217
14278
  children: [
14218
- /* @__PURE__ */ jsxs13("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: [
14219
- questionHeadingLevel ? /* @__PURE__ */ jsx14(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx14("span", { children: item.q }),
14220
- /* @__PURE__ */ jsx14(
14279
+ /* @__PURE__ */ jsxs14("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: [
14280
+ questionHeadingLevel ? /* @__PURE__ */ jsx15(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx15("span", { children: item.q }),
14281
+ /* @__PURE__ */ jsx15(
14221
14282
  "span",
14222
14283
  {
14223
14284
  "aria-hidden": "true",
@@ -14226,7 +14287,7 @@ function FaqAccordion({
14226
14287
  }
14227
14288
  )
14228
14289
  ] }),
14229
- /* @__PURE__ */ jsx14("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14290
+ /* @__PURE__ */ jsx15("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14230
14291
  ]
14231
14292
  },
14232
14293
  index
@@ -14236,7 +14297,7 @@ function FaqAccordion({
14236
14297
 
14237
14298
  // src/components/trust-badges.tsx
14238
14299
  import { cn as cn10 } from "@reblu/site-ui/utils";
14239
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
14300
+ import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
14240
14301
  var DEFAULT_TRUST_BADGE_HEADINGS = Object.freeze(
14241
14302
  {
14242
14303
  PARTNER: "Colaboradores",
@@ -14278,7 +14339,7 @@ function BadgeContent({ badge, logoClassName }) {
14278
14339
  if (src) {
14279
14340
  return (
14280
14341
  // eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
14281
- /* @__PURE__ */ jsx15(
14342
+ /* @__PURE__ */ jsx16(
14282
14343
  "img",
14283
14344
  {
14284
14345
  src,
@@ -14289,7 +14350,7 @@ function BadgeContent({ badge, logoClassName }) {
14289
14350
  )
14290
14351
  );
14291
14352
  }
14292
- return /* @__PURE__ */ jsx15("span", { className: "text-sm font-medium", children: badge.name });
14353
+ return /* @__PURE__ */ jsx16("span", { className: "text-sm font-medium", children: badge.name });
14293
14354
  }
14294
14355
  function TrustBadges({
14295
14356
  badges,
@@ -14317,14 +14378,14 @@ function TrustBadges({
14317
14378
  if (groups.length === 0) return null;
14318
14379
  const hasHeading = heading !== void 0 && heading !== null && heading !== "";
14319
14380
  const groupHeadingLevel = hasHeading ? nextHeadingLevel(headingLevel) : headingLevel;
14320
- const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs14(
14381
+ const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs15(
14321
14382
  "div",
14322
14383
  {
14323
14384
  "data-slot": "trust-badge-group",
14324
14385
  "data-type": type,
14325
14386
  className: cn10("space-y-3", groupClassName),
14326
14387
  children: [
14327
- groupHeading ? /* @__PURE__ */ jsx15(
14388
+ groupHeading ? /* @__PURE__ */ jsx16(
14328
14389
  Heading,
14329
14390
  {
14330
14391
  level: groupHeadingLevel,
@@ -14336,30 +14397,30 @@ function TrustBadges({
14336
14397
  children: groupHeading
14337
14398
  }
14338
14399
  ) : null,
14339
- /* @__PURE__ */ jsx15("ul", { className: cn10("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14400
+ /* @__PURE__ */ jsx16("ul", { className: cn10("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14340
14401
  const href = safeHref(badge.url);
14341
- return /* @__PURE__ */ jsx15("li", { children: href ? /* @__PURE__ */ jsxs14("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14342
- /* @__PURE__ */ jsx15(BadgeContent, { badge, logoClassName }),
14402
+ return /* @__PURE__ */ jsx16("li", { children: href ? /* @__PURE__ */ jsxs15("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14403
+ /* @__PURE__ */ jsx16(BadgeContent, { badge, logoClassName }),
14343
14404
  " ",
14344
- /* @__PURE__ */ jsx15("span", { className: "sr-only", children: newWindowLabel })
14345
- ] }) : /* @__PURE__ */ jsx15(BadgeContent, { badge, logoClassName }) }, badge.id);
14405
+ /* @__PURE__ */ jsx16("span", { className: "sr-only", children: newWindowLabel })
14406
+ ] }) : /* @__PURE__ */ jsx16(BadgeContent, { badge, logoClassName }) }, badge.id);
14346
14407
  }) })
14347
14408
  ]
14348
14409
  },
14349
14410
  type
14350
14411
  ));
14351
14412
  if (!hasHeading) {
14352
- return /* @__PURE__ */ jsx15("div", { "data-slot": "trust-badges", className: cn10("space-y-6", className), children: content });
14413
+ return /* @__PURE__ */ jsx16("div", { "data-slot": "trust-badges", className: cn10("space-y-6", className), children: content });
14353
14414
  }
14354
14415
  const Tag = `h${headingLevel}`;
14355
- return /* @__PURE__ */ jsxs14(
14416
+ return /* @__PURE__ */ jsxs15(
14356
14417
  "section",
14357
14418
  {
14358
14419
  "data-slot": "trust-badges",
14359
14420
  "aria-labelledby": headingId,
14360
14421
  className: cn10("space-y-6", className),
14361
14422
  children: [
14362
- /* @__PURE__ */ jsx15(
14423
+ /* @__PURE__ */ jsx16(
14363
14424
  Tag,
14364
14425
  {
14365
14426
  id: headingId,
@@ -14376,38 +14437,38 @@ function TrustBadges({
14376
14437
  // src/components/page-blocks.tsx
14377
14438
  import { cn as cn11 } from "@reblu/site-ui/utils";
14378
14439
  import { buttonVariants as buttonVariants2 } from "@reblu/site-ui/button-variants";
14379
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
14440
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
14380
14441
  var ALIASES = {
14381
14442
  doctor_embed: "profile_embed",
14382
14443
  specialty_embed: "page_embed"
14383
14444
  };
14384
14445
  function HeroBlock({ block, headingLevel }) {
14385
14446
  const { title, subtitle, imageUrl } = block.data;
14386
- return /* @__PURE__ */ jsxs15("div", { className: "space-y-4", children: [
14387
- /* @__PURE__ */ jsx16(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
14388
- subtitle && /* @__PURE__ */ jsx16("p", { className: "text-lg opacity-80", children: subtitle }),
14389
- imageUrl && /* @__PURE__ */ jsx16("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx16("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
14447
+ return /* @__PURE__ */ jsxs16("div", { className: "space-y-4", children: [
14448
+ /* @__PURE__ */ jsx17(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
14449
+ subtitle && /* @__PURE__ */ jsx17("p", { className: "text-lg opacity-80", children: subtitle }),
14450
+ imageUrl && /* @__PURE__ */ jsx17("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx17("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
14390
14451
  ] });
14391
14452
  }
14392
14453
  function RichtextBlock({ block, headingLevel }) {
14393
- return /* @__PURE__ */ jsx16(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14454
+ return /* @__PURE__ */ jsx17(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14394
14455
  }
14395
14456
  function FaqBlock({ block }) {
14396
- return /* @__PURE__ */ jsx16(FaqAccordion, { items: block.data.items });
14457
+ return /* @__PURE__ */ jsx17(FaqAccordion, { items: block.data.items });
14397
14458
  }
14398
14459
  function StatsBlock({ block }) {
14399
- return /* @__PURE__ */ jsx16("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs15("div", { className: "flex flex-col-reverse gap-1", children: [
14400
- /* @__PURE__ */ jsx16("dt", { className: "text-sm opacity-80", children: item.label }),
14401
- /* @__PURE__ */ jsx16("dd", { className: "text-3xl font-bold", children: item.value })
14460
+ return /* @__PURE__ */ jsx17("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs16("div", { className: "flex flex-col-reverse gap-1", children: [
14461
+ /* @__PURE__ */ jsx17("dt", { className: "text-sm opacity-80", children: item.label }),
14462
+ /* @__PURE__ */ jsx17("dd", { className: "text-3xl font-bold", children: item.value })
14402
14463
  ] }, i)) });
14403
14464
  }
14404
14465
  function TestimonialBlock({ block }) {
14405
14466
  const { quote, author, role, avatarUrl } = block.data;
14406
- return /* @__PURE__ */ jsxs15("figure", { className: "space-y-4", children: [
14407
- /* @__PURE__ */ jsx16("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx16("p", { children: quote }) }),
14408
- /* @__PURE__ */ jsxs15("figcaption", { className: "flex items-center gap-3", children: [
14467
+ return /* @__PURE__ */ jsxs16("figure", { className: "space-y-4", children: [
14468
+ /* @__PURE__ */ jsx17("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx17("p", { children: quote }) }),
14469
+ /* @__PURE__ */ jsxs16("figcaption", { className: "flex items-center gap-3", children: [
14409
14470
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
14410
- /* @__PURE__ */ jsx16(
14471
+ /* @__PURE__ */ jsx17(
14411
14472
  "img",
14412
14473
  {
14413
14474
  src: avatarUrl,
@@ -14416,9 +14477,9 @@ function TestimonialBlock({ block }) {
14416
14477
  className: "h-10 w-10 rounded-full object-cover"
14417
14478
  }
14418
14479
  ),
14419
- /* @__PURE__ */ jsxs15("span", { children: [
14420
- /* @__PURE__ */ jsx16("span", { className: "font-semibold", children: author }),
14421
- role && /* @__PURE__ */ jsx16("span", { className: "block text-sm opacity-80", children: role })
14480
+ /* @__PURE__ */ jsxs16("span", { children: [
14481
+ /* @__PURE__ */ jsx17("span", { className: "font-semibold", children: author }),
14482
+ role && /* @__PURE__ */ jsx17("span", { className: "block text-sm opacity-80", children: role })
14422
14483
  ] })
14423
14484
  ] })
14424
14485
  ] });
@@ -14427,19 +14488,19 @@ function CtaSlotBlock(_props) {
14427
14488
  return null;
14428
14489
  }
14429
14490
  function FeatureListBlock({ block }) {
14430
- return /* @__PURE__ */ jsx16("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx16("li", { children: item.text }, i)) });
14491
+ return /* @__PURE__ */ jsx17("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx17("li", { children: item.text }, i)) });
14431
14492
  }
14432
14493
  function GalleryBlock({ block }) {
14433
14494
  const { images } = block.data;
14434
- return /* @__PURE__ */ jsx16(
14495
+ return /* @__PURE__ */ jsx17(
14435
14496
  "div",
14436
14497
  {
14437
14498
  className: cn11(
14438
14499
  "grid gap-4",
14439
14500
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
14440
14501
  ),
14441
- children: images.map((img, i) => /* @__PURE__ */ jsxs15("figure", { className: "space-y-1", children: [
14442
- /* @__PURE__ */ jsx16("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx16(
14502
+ children: images.map((img, i) => /* @__PURE__ */ jsxs16("figure", { className: "space-y-1", children: [
14503
+ /* @__PURE__ */ jsx17("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx17(
14443
14504
  "img",
14444
14505
  {
14445
14506
  src: img.url,
@@ -14448,7 +14509,7 @@ function GalleryBlock({ block }) {
14448
14509
  className: "h-full w-full object-cover"
14449
14510
  }
14450
14511
  ) }),
14451
- img.caption && /* @__PURE__ */ jsx16("figcaption", { className: "text-sm opacity-80", children: img.caption })
14512
+ img.caption && /* @__PURE__ */ jsx17("figcaption", { className: "text-sm opacity-80", children: img.caption })
14452
14513
  ] }, `${img.url}-${i}`))
14453
14514
  }
14454
14515
  );
@@ -14458,13 +14519,13 @@ function EmbedCard({
14458
14519
  headingLevel,
14459
14520
  embedHref
14460
14521
  }) {
14461
- return /* @__PURE__ */ jsxs15(
14522
+ return /* @__PURE__ */ jsxs16(
14462
14523
  "a",
14463
14524
  {
14464
14525
  href: embedHref(resolved),
14465
14526
  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",
14466
14527
  children: [
14467
- resolved.coverImageUrl && /* @__PURE__ */ jsx16("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx16(
14528
+ resolved.coverImageUrl && /* @__PURE__ */ jsx17("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx17(
14468
14529
  "img",
14469
14530
  {
14470
14531
  src: resolved.coverImageUrl,
@@ -14473,24 +14534,24 @@ function EmbedCard({
14473
14534
  className: "h-full w-full object-cover"
14474
14535
  }
14475
14536
  ) }),
14476
- /* @__PURE__ */ jsxs15("div", { className: "space-y-1 p-4", children: [
14477
- /* @__PURE__ */ jsx16(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
14478
- resolved.role && /* @__PURE__ */ jsx16("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
14479
- resolved.excerpt && /* @__PURE__ */ jsx16("p", { className: "text-muted-foreground", children: resolved.excerpt })
14537
+ /* @__PURE__ */ jsxs16("div", { className: "space-y-1 p-4", children: [
14538
+ /* @__PURE__ */ jsx17(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
14539
+ resolved.role && /* @__PURE__ */ jsx17("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
14540
+ resolved.excerpt && /* @__PURE__ */ jsx17("p", { className: "text-muted-foreground", children: resolved.excerpt })
14480
14541
  ] })
14481
14542
  ]
14482
14543
  }
14483
14544
  );
14484
14545
  }
14485
14546
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
14486
- return /* @__PURE__ */ jsx16(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14547
+ return /* @__PURE__ */ jsx17(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14487
14548
  }
14488
14549
  function ProfileEmbedBlock({
14489
14550
  block,
14490
14551
  headingLevel,
14491
14552
  embedHref
14492
14553
  }) {
14493
- return /* @__PURE__ */ jsx16(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14554
+ return /* @__PURE__ */ jsx17(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
14494
14555
  }
14495
14556
  var DEFAULT_RENDERERS = {
14496
14557
  hero: HeroBlock,
@@ -14547,7 +14608,7 @@ function toIdFragment(value) {
14547
14608
  function SectionCta2({ cta }) {
14548
14609
  if (!hasUsableCta(cta)) return null;
14549
14610
  const variant = toButtonVariant(cta.variant);
14550
- return /* @__PURE__ */ jsx16("div", { className: "pt-2", children: /* @__PURE__ */ jsx16(
14611
+ return /* @__PURE__ */ jsx17("div", { className: "pt-2", children: /* @__PURE__ */ jsx17(
14551
14612
  "a",
14552
14613
  {
14553
14614
  href: cta.url,
@@ -14580,7 +14641,7 @@ function PageBlocks({
14580
14641
  const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
14581
14642
  const background = block.backgroundColor;
14582
14643
  return [
14583
- /* @__PURE__ */ jsxs15(
14644
+ /* @__PURE__ */ jsxs16(
14584
14645
  "section",
14585
14646
  {
14586
14647
  "data-slot": "page-block",
@@ -14589,8 +14650,8 @@ function PageBlocks({
14589
14650
  style: surfaceStyle(background),
14590
14651
  className: cn11("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14591
14652
  children: [
14592
- block.heading && /* @__PURE__ */ jsx16(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx16("span", { id: headingId, children: block.heading }) }),
14593
- /* @__PURE__ */ jsx16(
14653
+ block.heading && /* @__PURE__ */ jsx17(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx17("span", { id: headingId, children: block.heading }) }),
14654
+ /* @__PURE__ */ jsx17(
14594
14655
  Renderer,
14595
14656
  {
14596
14657
  block,
@@ -14598,7 +14659,7 @@ function PageBlocks({
14598
14659
  embedHref
14599
14660
  }
14600
14661
  ),
14601
- /* @__PURE__ */ jsx16(SectionCta2, { cta: block.cta })
14662
+ /* @__PURE__ */ jsx17(SectionCta2, { cta: block.cta })
14602
14663
  ]
14603
14664
  },
14604
14665
  block.id
@@ -14606,12 +14667,12 @@ function PageBlocks({
14606
14667
  ];
14607
14668
  });
14608
14669
  if (sections.length === 0) return null;
14609
- return /* @__PURE__ */ jsx16("div", { className: cn11("space-y-12", className), "data-slot": "page-blocks", children: sections });
14670
+ return /* @__PURE__ */ jsx17("div", { className: cn11("space-y-12", className), "data-slot": "page-blocks", children: sections });
14610
14671
  }
14611
14672
 
14612
14673
  // src/components/shop-filters.tsx
14613
14674
  import { cn as cn12 } from "@reblu/site-ui/utils";
14614
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
14675
+ import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
14615
14676
  var DEFAULT_SHOP_PRICE_BANDS = [
14616
14677
  { max: 2500 },
14617
14678
  { min: 2500, max: 5e3 },
@@ -14655,7 +14716,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
14655
14716
  return "";
14656
14717
  }
14657
14718
  function OptionLink({ href, active, label, onActivate }) {
14658
- return /* @__PURE__ */ jsx17(
14719
+ return /* @__PURE__ */ jsx18(
14659
14720
  "a",
14660
14721
  {
14661
14722
  href,
@@ -14673,9 +14734,9 @@ function OptionLink({ href, active, label, onActivate }) {
14673
14734
  );
14674
14735
  }
14675
14736
  function FilterFieldset({ legend, children: children2 }) {
14676
- return /* @__PURE__ */ jsxs16("fieldset", { className: "space-y-2", children: [
14677
- /* @__PURE__ */ jsx17("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14678
- /* @__PURE__ */ jsx17("div", { className: "flex flex-wrap gap-2", children: children2 })
14737
+ return /* @__PURE__ */ jsxs17("fieldset", { className: "space-y-2", children: [
14738
+ /* @__PURE__ */ jsx18("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14739
+ /* @__PURE__ */ jsx18("div", { className: "flex flex-wrap gap-2", children: children2 })
14679
14740
  ] });
14680
14741
  }
14681
14742
  function ShopFilters({
@@ -14698,11 +14759,11 @@ function ShopFilters({
14698
14759
  if (!shouldRenderShopFilters(facets, active)) {
14699
14760
  return null;
14700
14761
  }
14701
- return /* @__PURE__ */ jsxs16("div", { className: cn12("space-y-6", className), "data-slot": "shop-filters", children: [
14762
+ return /* @__PURE__ */ jsxs17("div", { className: cn12("space-y-6", className), "data-slot": "shop-filters", children: [
14702
14763
  visibleTaxonomies.map((axis) => {
14703
14764
  const activeSlug = active.taxonomy?.[axis.key];
14704
- return /* @__PURE__ */ jsxs16(FilterFieldset, { legend: axis.label, children: [
14705
- /* @__PURE__ */ jsx17(
14765
+ return /* @__PURE__ */ jsxs17(FilterFieldset, { legend: axis.label, children: [
14766
+ /* @__PURE__ */ jsx18(
14706
14767
  OptionLink,
14707
14768
  {
14708
14769
  href: hrefs.taxonomy(axis.key, void 0),
@@ -14717,7 +14778,7 @@ function ShopFilters({
14717
14778
  ),
14718
14779
  axis.terms.map((term) => {
14719
14780
  const isActive = activeSlug === term.slug;
14720
- return /* @__PURE__ */ jsx17(
14781
+ return /* @__PURE__ */ jsx18(
14721
14782
  OptionLink,
14722
14783
  {
14723
14784
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -14737,9 +14798,9 @@ function ShopFilters({
14737
14798
  }),
14738
14799
  visibleAttributes.map((attr) => {
14739
14800
  const activeValues = toValueArray(active.attr?.[attr.key]);
14740
- return /* @__PURE__ */ jsx17(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14801
+ return /* @__PURE__ */ jsx18(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14741
14802
  const isActive = activeValues.includes(opt.value);
14742
- return /* @__PURE__ */ jsx17(
14803
+ return /* @__PURE__ */ jsx18(
14743
14804
  OptionLink,
14744
14805
  {
14745
14806
  href: hrefs.attr(attr.key, opt.value),
@@ -14757,11 +14818,11 @@ function ShopFilters({
14757
14818
  );
14758
14819
  }) }, attr.key);
14759
14820
  }),
14760
- showPriceGroup && /* @__PURE__ */ jsx17(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14821
+ showPriceGroup && /* @__PURE__ */ jsx18(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14761
14822
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
14762
14823
  const nextMin = isActive ? void 0 : band.min;
14763
14824
  const nextMax = isActive ? void 0 : band.max;
14764
- return /* @__PURE__ */ jsx17(
14825
+ return /* @__PURE__ */ jsx18(
14765
14826
  OptionLink,
14766
14827
  {
14767
14828
  href: hrefs.price(nextMin, nextMax),
@@ -14772,7 +14833,7 @@ function ShopFilters({
14772
14833
  i
14773
14834
  );
14774
14835
  }) }),
14775
- hasOnSale && /* @__PURE__ */ jsx17(
14836
+ hasOnSale && /* @__PURE__ */ jsx18(
14776
14837
  OptionLink,
14777
14838
  {
14778
14839
  href: hrefs.onSale(!active.onSale),
@@ -14781,7 +14842,7 @@ function ShopFilters({
14781
14842
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
14782
14843
  }
14783
14844
  ),
14784
- /* @__PURE__ */ jsx17(
14845
+ /* @__PURE__ */ jsx18(
14785
14846
  "a",
14786
14847
  {
14787
14848
  href: hrefs.clearAll(),
@@ -14798,7 +14859,7 @@ function ShopFilters({
14798
14859
 
14799
14860
  // src/components/course-catalog-filters.tsx
14800
14861
  import { cn as cn13 } from "@reblu/site-ui/utils";
14801
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
14862
+ import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
14802
14863
  var DEFAULT_COURSE_PRICE_BANDS = [
14803
14864
  { max: 5e3 },
14804
14865
  { min: 5e3, max: 15e3 },
@@ -14851,9 +14912,9 @@ function CourseCatalogFilters({
14851
14912
  const showPrice = enabled.price !== false;
14852
14913
  const isFree = Boolean(active.free);
14853
14914
  if (!showCategories && !showInstructors && !showPrice) return null;
14854
- return /* @__PURE__ */ jsxs17("div", { className: cn13("space-y-6", className), "data-slot": "course-catalog-filters", children: [
14855
- showCategories && /* @__PURE__ */ jsxs17(FilterFieldset, { legend: t.category, children: [
14856
- /* @__PURE__ */ jsx18(
14915
+ return /* @__PURE__ */ jsxs18("div", { className: cn13("space-y-6", className), "data-slot": "course-catalog-filters", children: [
14916
+ showCategories && /* @__PURE__ */ jsxs18(FilterFieldset, { legend: t.category, children: [
14917
+ /* @__PURE__ */ jsx19(
14857
14918
  OptionLink,
14858
14919
  {
14859
14920
  href: categoryHref(void 0),
@@ -14865,7 +14926,7 @@ function CourseCatalogFilters({
14865
14926
  sortedCategories.map((category) => {
14866
14927
  const isActive = active.category === category.slug;
14867
14928
  const next2 = isActive ? void 0 : category.slug;
14868
- return /* @__PURE__ */ jsx18(
14929
+ return /* @__PURE__ */ jsx19(
14869
14930
  OptionLink,
14870
14931
  {
14871
14932
  href: categoryHref(next2),
@@ -14877,8 +14938,8 @@ function CourseCatalogFilters({
14877
14938
  );
14878
14939
  })
14879
14940
  ] }),
14880
- showInstructors && /* @__PURE__ */ jsxs17(FilterFieldset, { legend: t.instructor, children: [
14881
- /* @__PURE__ */ jsx18(
14941
+ showInstructors && /* @__PURE__ */ jsxs18(FilterFieldset, { legend: t.instructor, children: [
14942
+ /* @__PURE__ */ jsx19(
14882
14943
  OptionLink,
14883
14944
  {
14884
14945
  href: hrefs.instructor(void 0),
@@ -14890,7 +14951,7 @@ function CourseCatalogFilters({
14890
14951
  named.map((instructor) => {
14891
14952
  const isActive = active.instructor === instructor.id;
14892
14953
  const next2 = isActive ? void 0 : instructor.id;
14893
- return /* @__PURE__ */ jsx18(
14954
+ return /* @__PURE__ */ jsx19(
14894
14955
  OptionLink,
14895
14956
  {
14896
14957
  href: hrefs.instructor(next2),
@@ -14902,8 +14963,8 @@ function CourseCatalogFilters({
14902
14963
  );
14903
14964
  })
14904
14965
  ] }),
14905
- showPrice && /* @__PURE__ */ jsxs17(FilterFieldset, { legend: t.price, children: [
14906
- /* @__PURE__ */ jsx18(
14966
+ showPrice && /* @__PURE__ */ jsxs18(FilterFieldset, { legend: t.price, children: [
14967
+ /* @__PURE__ */ jsx19(
14907
14968
  OptionLink,
14908
14969
  {
14909
14970
  href: hrefs.free(!isFree),
@@ -14918,7 +14979,7 @@ function CourseCatalogFilters({
14918
14979
  const isActive = !isFree && active.priceMin === band.min && active.priceMax === band.max;
14919
14980
  const nextMin = isActive ? void 0 : band.min;
14920
14981
  const nextMax = isActive ? void 0 : band.max;
14921
- return /* @__PURE__ */ jsx18(
14982
+ return /* @__PURE__ */ jsx19(
14922
14983
  OptionLink,
14923
14984
  {
14924
14985
  href: hrefs.price(nextMin, nextMax),
@@ -14930,7 +14991,7 @@ function CourseCatalogFilters({
14930
14991
  );
14931
14992
  })
14932
14993
  ] }),
14933
- /* @__PURE__ */ jsx18(
14994
+ /* @__PURE__ */ jsx19(
14934
14995
  "a",
14935
14996
  {
14936
14997
  href: hrefs.clearAll(),
@@ -14953,7 +15014,7 @@ function CourseCatalogFilters({
14953
15014
 
14954
15015
  // src/components/cart-line-list.tsx
14955
15016
  import { cn as cn14 } from "@reblu/site-ui/utils";
14956
- import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
15017
+ import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
14957
15018
  var DEFAULT_LABELS2 = {
14958
15019
  quantityLabel: "Cantidad",
14959
15020
  decrease: "Reducir cantidad",
@@ -14979,9 +15040,9 @@ function CartLineList({
14979
15040
  }) {
14980
15041
  const t = { ...DEFAULT_LABELS2, ...labels };
14981
15042
  const noticeContent = notice === true ? t.cancelledNotice : notice;
14982
- return /* @__PURE__ */ jsxs18("div", { className: cn14("space-y-4", className), "data-slot": "cart-line-list", children: [
14983
- /* @__PURE__ */ jsx19("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14984
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx19(
15043
+ return /* @__PURE__ */ jsxs19("div", { className: cn14("space-y-4", className), "data-slot": "cart-line-list", children: [
15044
+ /* @__PURE__ */ jsx20("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
15045
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx20(
14985
15046
  "div",
14986
15047
  {
14987
15048
  role: "status",
@@ -14990,33 +15051,33 @@ function CartLineList({
14990
15051
  children: noticeContent
14991
15052
  }
14992
15053
  ),
14993
- /* @__PURE__ */ jsx19("ul", { className: "space-y-4", children: items.map((item) => {
15054
+ /* @__PURE__ */ jsx20("ul", { className: "space-y-4", children: items.map((item) => {
14994
15055
  const maxQty = item.maxStock ?? Infinity;
14995
15056
  const atMax = item.quantity >= maxQty;
14996
15057
  const atMin = item.quantity <= 1;
14997
15058
  const message = lineMessage?.(item);
14998
- return /* @__PURE__ */ jsxs18(
15059
+ return /* @__PURE__ */ jsxs19(
14999
15060
  "li",
15000
15061
  {
15001
15062
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
15002
15063
  children: [
15003
- /* @__PURE__ */ jsx19("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx19("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15004
- /* @__PURE__ */ jsxs18("div", { className: "min-w-0 flex-1", children: [
15005
- /* @__PURE__ */ jsx19("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15006
- item.variantName && /* @__PURE__ */ jsx19("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15007
- /* @__PURE__ */ jsxs18("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15064
+ /* @__PURE__ */ jsx20("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx20("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15065
+ /* @__PURE__ */ jsxs19("div", { className: "min-w-0 flex-1", children: [
15066
+ /* @__PURE__ */ jsx20("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15067
+ item.variantName && /* @__PURE__ */ jsx20("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15068
+ /* @__PURE__ */ jsxs19("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15008
15069
  formatPrice(item.unitPrice, currencyCode, locale),
15009
15070
  " ",
15010
15071
  t.unitPriceSuffix
15011
15072
  ] }),
15012
- /* @__PURE__ */ jsxs18(
15073
+ /* @__PURE__ */ jsxs19(
15013
15074
  "div",
15014
15075
  {
15015
15076
  role: "group",
15016
15077
  "aria-label": t.quantityLabel,
15017
15078
  className: "mt-3 flex items-center gap-3",
15018
15079
  children: [
15019
- /* @__PURE__ */ jsx19(
15080
+ /* @__PURE__ */ jsx20(
15020
15081
  "button",
15021
15082
  {
15022
15083
  type: "button",
@@ -15027,8 +15088,8 @@ function CartLineList({
15027
15088
  children: "\u2212"
15028
15089
  }
15029
15090
  ),
15030
- /* @__PURE__ */ jsx19("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15031
- /* @__PURE__ */ jsx19(
15091
+ /* @__PURE__ */ jsx20("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15092
+ /* @__PURE__ */ jsx20(
15032
15093
  "button",
15033
15094
  {
15034
15095
  type: "button",
@@ -15039,7 +15100,7 @@ function CartLineList({
15039
15100
  children: "+"
15040
15101
  }
15041
15102
  ),
15042
- onRemove && /* @__PURE__ */ jsx19(
15103
+ onRemove && /* @__PURE__ */ jsx20(
15043
15104
  "button",
15044
15105
  {
15045
15106
  type: "button",
@@ -15052,7 +15113,7 @@ function CartLineList({
15052
15113
  ]
15053
15114
  }
15054
15115
  ),
15055
- message != null && message !== false && /* @__PURE__ */ jsx19(
15116
+ message != null && message !== false && /* @__PURE__ */ jsx20(
15056
15117
  "p",
15057
15118
  {
15058
15119
  className: "mt-2 text-sm text-destructive",
@@ -15061,7 +15122,7 @@ function CartLineList({
15061
15122
  }
15062
15123
  )
15063
15124
  ] }),
15064
- /* @__PURE__ */ jsx19("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx19("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15125
+ /* @__PURE__ */ jsx20("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx20("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15065
15126
  ]
15066
15127
  },
15067
15128
  lineKey(item.productId, item.variantId)
@@ -15072,7 +15133,7 @@ function CartLineList({
15072
15133
 
15073
15134
  // src/components/cart-summary.tsx
15074
15135
  import { cn as cn15 } from "@reblu/site-ui/utils";
15075
- import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
15136
+ import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
15076
15137
  var DEFAULT_LABELS3 = {
15077
15138
  subtotal: "Subtotal",
15078
15139
  discountPrefix: "Descuento",
@@ -15102,37 +15163,37 @@ function CartSummary({
15102
15163
  const hasDiscount = Boolean(discountAmount && discountAmount > 0);
15103
15164
  const noticeContent = notice === true ? t.cancelledNotice : notice;
15104
15165
  const hasNotice = noticeContent != null && noticeContent !== false;
15105
- const breakdown = /* @__PURE__ */ jsxs19(
15166
+ const breakdown = /* @__PURE__ */ jsxs20(
15106
15167
  "dl",
15107
15168
  {
15108
15169
  className: cn15("space-y-2 text-sm", !hasNotice && className),
15109
15170
  "data-slot": "cart-summary",
15110
15171
  children: [
15111
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between text-muted-foreground", children: [
15112
- /* @__PURE__ */ jsx20("dt", { children: t.subtotal }),
15113
- /* @__PURE__ */ jsx20("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15172
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between text-muted-foreground", children: [
15173
+ /* @__PURE__ */ jsx21("dt", { children: t.subtotal }),
15174
+ /* @__PURE__ */ jsx21("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15114
15175
  ] }),
15115
- hasDiscount && /* @__PURE__ */ jsxs19("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15116
- /* @__PURE__ */ jsx20("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15117
- /* @__PURE__ */ jsxs19("dd", { children: [
15176
+ hasDiscount && /* @__PURE__ */ jsxs20("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15177
+ /* @__PURE__ */ jsx21("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15178
+ /* @__PURE__ */ jsxs20("dd", { children: [
15118
15179
  "-",
15119
15180
  formatPrice(discountAmount, currencyCode, locale)
15120
15181
  ] })
15121
15182
  ] }),
15122
- shippingEnabled && /* @__PURE__ */ jsxs19("div", { className: "flex justify-between text-muted-foreground", children: [
15123
- /* @__PURE__ */ jsx20("dt", { children: t.shipping }),
15124
- /* @__PURE__ */ jsx20("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15183
+ shippingEnabled && /* @__PURE__ */ jsxs20("div", { className: "flex justify-between text-muted-foreground", children: [
15184
+ /* @__PURE__ */ jsx21("dt", { children: t.shipping }),
15185
+ /* @__PURE__ */ jsx21("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15125
15186
  ] }),
15126
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
15127
- /* @__PURE__ */ jsx20("dt", { children: t.total }),
15128
- /* @__PURE__ */ jsx20("dd", { children: formatPrice(total, currencyCode, locale) })
15187
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
15188
+ /* @__PURE__ */ jsx21("dt", { children: t.total }),
15189
+ /* @__PURE__ */ jsx21("dd", { children: formatPrice(total, currencyCode, locale) })
15129
15190
  ] })
15130
15191
  ]
15131
15192
  }
15132
15193
  );
15133
15194
  if (!hasNotice) return breakdown;
15134
- return /* @__PURE__ */ jsxs19("div", { className: cn15("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
15135
- /* @__PURE__ */ jsx20(
15195
+ return /* @__PURE__ */ jsxs20("div", { className: cn15("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
15196
+ /* @__PURE__ */ jsx21(
15136
15197
  "div",
15137
15198
  {
15138
15199
  role: "status",
@@ -15147,7 +15208,7 @@ function CartSummary({
15147
15208
 
15148
15209
  // src/components/cart-adjustments-notice.tsx
15149
15210
  import { cn as cn16 } from "@reblu/site-ui/utils";
15150
- import { jsx as jsx21 } from "react/jsx-runtime";
15211
+ import { jsx as jsx22 } from "react/jsx-runtime";
15151
15212
  var DEFAULT_LABELS4 = {
15152
15213
  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.`,
15153
15214
  quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
@@ -15181,20 +15242,20 @@ function CartAdjustmentsNotice({
15181
15242
  );
15182
15243
  }
15183
15244
  if (messages.length === 0) return null;
15184
- return /* @__PURE__ */ jsx21(
15245
+ return /* @__PURE__ */ jsx22(
15185
15246
  "div",
15186
15247
  {
15187
15248
  role: "status",
15188
15249
  className: cn16("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
15189
15250
  "data-slot": "cart-adjustments-notice",
15190
- children: messages.length === 1 ? /* @__PURE__ */ jsx21("p", { children: messages[0] }) : /* @__PURE__ */ jsx21("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx21("li", { children: message }, index)) })
15251
+ children: messages.length === 1 ? /* @__PURE__ */ jsx22("p", { children: messages[0] }) : /* @__PURE__ */ jsx22("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx22("li", { children: message }, index)) })
15191
15252
  }
15192
15253
  );
15193
15254
  }
15194
15255
 
15195
15256
  // src/components/added-to-cart-toast.tsx
15196
15257
  import { cn as cn17 } from "@reblu/site-ui/utils";
15197
- import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
15258
+ import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
15198
15259
  var DEFAULT_LABELS5 = {
15199
15260
  success: "A\xF1adido al carrito",
15200
15261
  error: "No se pudo a\xF1adir al carrito",
@@ -15214,7 +15275,7 @@ function AddedToCartToast({
15214
15275
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
15215
15276
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
15216
15277
  const variant = status === "success" ? "success" : "error";
15217
- return /* @__PURE__ */ jsxs20(
15278
+ return /* @__PURE__ */ jsxs21(
15218
15279
  "div",
15219
15280
  {
15220
15281
  "data-slot": "added-to-cart-toast",
@@ -15227,12 +15288,12 @@ function AddedToCartToast({
15227
15288
  ),
15228
15289
  children: [
15229
15290
  hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
15230
- /* @__PURE__ */ jsx22("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
15231
- /* @__PURE__ */ jsxs20("div", { className: "min-w-0 flex-1", children: [
15232
- /* @__PURE__ */ jsx22("p", { className: "truncate font-semibold text-foreground", children: productName }),
15233
- /* @__PURE__ */ jsx22("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
15291
+ /* @__PURE__ */ jsx23("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
15292
+ /* @__PURE__ */ jsxs21("div", { className: "min-w-0 flex-1", children: [
15293
+ /* @__PURE__ */ jsx23("p", { className: "truncate font-semibold text-foreground", children: productName }),
15294
+ /* @__PURE__ */ jsx23("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
15234
15295
  ] }),
15235
- /* @__PURE__ */ jsx22("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx22("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
15296
+ /* @__PURE__ */ jsx23("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx23("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
15236
15297
  ]
15237
15298
  }
15238
15299
  );
@@ -15240,7 +15301,7 @@ function AddedToCartToast({
15240
15301
 
15241
15302
  // src/components/checkout-login-prompt.tsx
15242
15303
  import { cn as cn18 } from "@reblu/site-ui/utils";
15243
- import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
15304
+ import { Fragment as Fragment4, jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
15244
15305
  var DEFAULT_LABELS6 = {
15245
15306
  title: "Identificaci\xF3n",
15246
15307
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -15267,9 +15328,9 @@ function CheckoutLoginPrompt({
15267
15328
  if (!open) return null;
15268
15329
  const t = { ...DEFAULT_LABELS6, ...labels };
15269
15330
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
15270
- return /* @__PURE__ */ jsxs21(Fragment3, { children: [
15271
- /* @__PURE__ */ jsx23("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
15272
- /* @__PURE__ */ jsxs21(
15331
+ return /* @__PURE__ */ jsxs22(Fragment4, { children: [
15332
+ /* @__PURE__ */ jsx24("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
15333
+ /* @__PURE__ */ jsxs22(
15273
15334
  "div",
15274
15335
  {
15275
15336
  role: "dialog",
@@ -15281,12 +15342,12 @@ function CheckoutLoginPrompt({
15281
15342
  className
15282
15343
  ),
15283
15344
  children: [
15284
- /* @__PURE__ */ jsxs21("div", { className: "flex items-start justify-between gap-3", children: [
15285
- /* @__PURE__ */ jsxs21("div", { children: [
15286
- /* @__PURE__ */ jsx23("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
15287
- /* @__PURE__ */ jsx23("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
15345
+ /* @__PURE__ */ jsxs22("div", { className: "flex items-start justify-between gap-3", children: [
15346
+ /* @__PURE__ */ jsxs22("div", { children: [
15347
+ /* @__PURE__ */ jsx24("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
15348
+ /* @__PURE__ */ jsx24("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
15288
15349
  ] }),
15289
- /* @__PURE__ */ jsx23(
15350
+ /* @__PURE__ */ jsx24(
15290
15351
  "button",
15291
15352
  {
15292
15353
  type: "button",
@@ -15297,9 +15358,9 @@ function CheckoutLoginPrompt({
15297
15358
  }
15298
15359
  )
15299
15360
  ] }),
15300
- /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
15301
- /* @__PURE__ */ jsx23("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
15302
- /* @__PURE__ */ jsx23(
15361
+ /* @__PURE__ */ jsxs22("div", { className: "space-y-2", children: [
15362
+ /* @__PURE__ */ jsx24("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
15363
+ /* @__PURE__ */ jsx24(
15303
15364
  "input",
15304
15365
  {
15305
15366
  id: "checkout-login-prompt-email",
@@ -15314,10 +15375,10 @@ function CheckoutLoginPrompt({
15314
15375
  )
15315
15376
  }
15316
15377
  ),
15317
- error && /* @__PURE__ */ jsx23("p", { className: "text-xs text-destructive", children: error })
15378
+ error && /* @__PURE__ */ jsx24("p", { className: "text-xs text-destructive", children: error })
15318
15379
  ] }),
15319
- /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
15320
- /* @__PURE__ */ jsx23(
15380
+ /* @__PURE__ */ jsxs22("div", { className: "space-y-2", children: [
15381
+ /* @__PURE__ */ jsx24(
15321
15382
  "button",
15322
15383
  {
15323
15384
  type: "button",
@@ -15330,7 +15391,7 @@ function CheckoutLoginPrompt({
15330
15391
  children: checking ? t.checking : t.continueWithEmail
15331
15392
  }
15332
15393
  ),
15333
- /* @__PURE__ */ jsx23(
15394
+ /* @__PURE__ */ jsx24(
15334
15395
  "button",
15335
15396
  {
15336
15397
  type: "button",
@@ -15349,7 +15410,7 @@ function CheckoutLoginPrompt({
15349
15410
  // src/components/checkout-form.tsx
15350
15411
  import { cn as cn19 } from "@reblu/site-ui/utils";
15351
15412
  import { PhoneInput } from "@reblu/site-ui/phone-input";
15352
- import { Fragment as Fragment4, jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
15413
+ import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
15353
15414
  var DEFAULT_LABELS7 = {
15354
15415
  contactTitle: "Datos de contacto",
15355
15416
  nameLabel: "Nombre completo",
@@ -15405,9 +15466,9 @@ function CheckoutForm({
15405
15466
  event.preventDefault();
15406
15467
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
15407
15468
  }
15408
- return /* @__PURE__ */ jsxs22(Fragment4, { children: [
15469
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
15409
15470
  loginPrompt,
15410
- /* @__PURE__ */ jsxs22(
15471
+ /* @__PURE__ */ jsxs23(
15411
15472
  "form",
15412
15473
  {
15413
15474
  "data-testid": "checkout-form",
@@ -15415,12 +15476,12 @@ function CheckoutForm({
15415
15476
  className: cn19("space-y-8", className),
15416
15477
  "data-slot": "checkout-form",
15417
15478
  children: [
15418
- /* @__PURE__ */ jsxs22("section", { className: "space-y-4", children: [
15419
- /* @__PURE__ */ jsx24("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
15420
- /* @__PURE__ */ jsxs22("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15421
- /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
15422
- /* @__PURE__ */ jsx24("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
15423
- /* @__PURE__ */ jsx24(
15479
+ /* @__PURE__ */ jsxs23("section", { className: "space-y-4", children: [
15480
+ /* @__PURE__ */ jsx25("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
15481
+ /* @__PURE__ */ jsxs23("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15482
+ /* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
15483
+ /* @__PURE__ */ jsx25("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
15484
+ /* @__PURE__ */ jsx25(
15424
15485
  "input",
15425
15486
  {
15426
15487
  id: "checkout-form-name",
@@ -15435,11 +15496,11 @@ function CheckoutForm({
15435
15496
  )
15436
15497
  }
15437
15498
  ),
15438
- contactErrors?.name && /* @__PURE__ */ jsx24("p", { className: "text-xs text-destructive", children: contactErrors.name })
15499
+ contactErrors?.name && /* @__PURE__ */ jsx25("p", { className: "text-xs text-destructive", children: contactErrors.name })
15439
15500
  ] }),
15440
- /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
15441
- /* @__PURE__ */ jsx24("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
15442
- /* @__PURE__ */ jsx24(
15501
+ /* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
15502
+ /* @__PURE__ */ jsx25("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
15503
+ /* @__PURE__ */ jsx25(
15443
15504
  "input",
15444
15505
  {
15445
15506
  id: "checkout-form-email",
@@ -15454,9 +15515,9 @@ function CheckoutForm({
15454
15515
  )
15455
15516
  }
15456
15517
  ),
15457
- contactErrors?.email && /* @__PURE__ */ jsx24("p", { className: "text-xs text-destructive", children: contactErrors.email })
15518
+ contactErrors?.email && /* @__PURE__ */ jsx25("p", { className: "text-xs text-destructive", children: contactErrors.email })
15458
15519
  ] }),
15459
- /* @__PURE__ */ jsx24("div", { className: "space-y-1", children: /* @__PURE__ */ jsx24(
15520
+ /* @__PURE__ */ jsx25("div", { className: "space-y-1", children: /* @__PURE__ */ jsx25(
15460
15521
  PhoneInput,
15461
15522
  {
15462
15523
  id: "checkout-form-phone",
@@ -15470,26 +15531,26 @@ function CheckoutForm({
15470
15531
  ] })
15471
15532
  ] }),
15472
15533
  children2,
15473
- generalError ? /* @__PURE__ */ jsx24("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
15474
- /* @__PURE__ */ jsxs22("section", { className: "space-y-3", children: [
15475
- /* @__PURE__ */ jsx24("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
15476
- autoDiscount ? /* @__PURE__ */ jsxs22(
15534
+ generalError ? /* @__PURE__ */ jsx25("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
15535
+ /* @__PURE__ */ jsxs23("section", { className: "space-y-3", children: [
15536
+ /* @__PURE__ */ jsx25("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
15537
+ autoDiscount ? /* @__PURE__ */ jsxs23(
15477
15538
  "div",
15478
15539
  {
15479
15540
  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",
15480
15541
  "data-slot": "checkout-staff-discount",
15481
15542
  children: [
15482
- /* @__PURE__ */ jsx24("span", { className: "font-semibold", children: t.staffDiscountApplied }),
15483
- /* @__PURE__ */ jsx24("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
15543
+ /* @__PURE__ */ jsx25("span", { className: "font-semibold", children: t.staffDiscountApplied }),
15544
+ /* @__PURE__ */ jsx25("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
15484
15545
  ]
15485
15546
  }
15486
15547
  ) : null,
15487
- appliedDiscount && !autoDiscount ? /* @__PURE__ */ jsxs22("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: [
15488
- /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
15489
- /* @__PURE__ */ jsx24("span", { className: "font-semibold", children: appliedDiscount.code }),
15490
- /* @__PURE__ */ jsx24("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
15548
+ appliedDiscount && !autoDiscount ? /* @__PURE__ */ jsxs23("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: [
15549
+ /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
15550
+ /* @__PURE__ */ jsx25("span", { className: "font-semibold", children: appliedDiscount.code }),
15551
+ /* @__PURE__ */ jsx25("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
15491
15552
  ] }),
15492
- /* @__PURE__ */ jsx24(
15553
+ /* @__PURE__ */ jsx25(
15493
15554
  "button",
15494
15555
  {
15495
15556
  type: "button",
@@ -15499,9 +15560,9 @@ function CheckoutForm({
15499
15560
  children: t.removeDiscount
15500
15561
  }
15501
15562
  )
15502
- ] }) : /* @__PURE__ */ jsxs22("div", { className: "flex gap-2", children: [
15503
- /* @__PURE__ */ jsx24("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
15504
- /* @__PURE__ */ jsx24(
15563
+ ] }) : /* @__PURE__ */ jsxs23("div", { className: "flex gap-2", children: [
15564
+ /* @__PURE__ */ jsx25("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
15565
+ /* @__PURE__ */ jsx25(
15505
15566
  "input",
15506
15567
  {
15507
15568
  id: "checkout-form-discount-code",
@@ -15513,7 +15574,7 @@ function CheckoutForm({
15513
15574
  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"
15514
15575
  }
15515
15576
  ),
15516
- /* @__PURE__ */ jsx24(
15577
+ /* @__PURE__ */ jsx25(
15517
15578
  "button",
15518
15579
  {
15519
15580
  type: "button",
@@ -15524,9 +15585,9 @@ function CheckoutForm({
15524
15585
  }
15525
15586
  )
15526
15587
  ] }),
15527
- discountError && /* @__PURE__ */ jsx24("p", { className: "text-xs text-destructive", children: discountError })
15588
+ discountError && /* @__PURE__ */ jsx25("p", { className: "text-xs text-destructive", children: discountError })
15528
15589
  ] }),
15529
- /* @__PURE__ */ jsx24(
15590
+ /* @__PURE__ */ jsx25(
15530
15591
  "button",
15531
15592
  {
15532
15593
  type: "submit",
@@ -15549,7 +15610,7 @@ import { cn as cn21 } from "@reblu/site-ui/utils";
15549
15610
 
15550
15611
  // src/components/order-invoice-link.tsx
15551
15612
  import { cn as cn20 } from "@reblu/site-ui/utils";
15552
- import { jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
15613
+ import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
15553
15614
  var DEFAULT_LABELS8 = {
15554
15615
  linkLabel: "Descargar la factura {number}",
15555
15616
  signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
@@ -15557,8 +15618,8 @@ var DEFAULT_LABELS8 = {
15557
15618
  function OrderInvoiceLink({ invoice, labels, className }) {
15558
15619
  if (!invoice) return null;
15559
15620
  const t = { ...DEFAULT_LABELS8, ...labels };
15560
- return /* @__PURE__ */ jsxs23("div", { className: cn20("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
15561
- /* @__PURE__ */ jsx25(
15621
+ return /* @__PURE__ */ jsxs24("div", { className: cn20("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
15622
+ /* @__PURE__ */ jsx26(
15562
15623
  "a",
15563
15624
  {
15564
15625
  href: invoice.url,
@@ -15566,12 +15627,12 @@ function OrderInvoiceLink({ invoice, labels, className }) {
15566
15627
  children: t.linkLabel.replace("{number}", invoice.number)
15567
15628
  }
15568
15629
  ),
15569
- /* @__PURE__ */ jsx25("p", { className: "text-muted-foreground", children: t.signInHint })
15630
+ /* @__PURE__ */ jsx26("p", { className: "text-muted-foreground", children: t.signInHint })
15570
15631
  ] });
15571
15632
  }
15572
15633
 
15573
15634
  // src/components/order-confirmation.tsx
15574
- import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
15635
+ import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
15575
15636
  var DEFAULT_LABELS9 = {
15576
15637
  pollingTitle: "Confirmando tu pedido\u2026",
15577
15638
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -15637,43 +15698,43 @@ function OrderConfirmation({
15637
15698
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
15638
15699
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
15639
15700
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
15640
- return /* @__PURE__ */ jsxs24("div", { className: cn21("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
15641
- /* @__PURE__ */ jsx26("h1", { className: "text-3xl font-bold", children: title }),
15642
- /* @__PURE__ */ jsx26("p", { className: "text-lg text-muted-foreground", children: description }),
15643
- showFullOrderSummary && order && /* @__PURE__ */ jsxs24("div", { className: "space-y-6", children: [
15644
- /* @__PURE__ */ jsxs24("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15645
- /* @__PURE__ */ jsx26("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
15646
- /* @__PURE__ */ jsx26("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15701
+ return /* @__PURE__ */ jsxs25("div", { className: cn21("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
15702
+ /* @__PURE__ */ jsx27("h1", { className: "text-3xl font-bold", children: title }),
15703
+ /* @__PURE__ */ jsx27("p", { className: "text-lg text-muted-foreground", children: description }),
15704
+ showFullOrderSummary && order && /* @__PURE__ */ jsxs25("div", { className: "space-y-6", children: [
15705
+ /* @__PURE__ */ jsxs25("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15706
+ /* @__PURE__ */ jsx27("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
15707
+ /* @__PURE__ */ jsx27("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15647
15708
  ] }),
15648
- /* @__PURE__ */ jsxs24("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
15649
- order.items.map((item, idx) => /* @__PURE__ */ jsxs24(
15709
+ /* @__PURE__ */ jsxs25("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
15710
+ order.items.map((item, idx) => /* @__PURE__ */ jsxs25(
15650
15711
  "div",
15651
15712
  {
15652
15713
  className: "flex justify-between gap-4 text-sm",
15653
15714
  children: [
15654
- /* @__PURE__ */ jsxs24("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
15715
+ /* @__PURE__ */ jsxs25("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
15655
15716
  item.product.name,
15656
15717
  item.variant ? ` (${item.variant.name})` : "",
15657
15718
  " x",
15658
15719
  item.quantity
15659
15720
  ] }),
15660
- /* @__PURE__ */ jsx26("span", { children: formatPrice(item.total, currencyCode, locale) })
15721
+ /* @__PURE__ */ jsx27("span", { children: formatPrice(item.total, currencyCode, locale) })
15661
15722
  ]
15662
15723
  },
15663
15724
  idx
15664
15725
  )),
15665
- /* @__PURE__ */ jsx26("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs24("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
15666
- /* @__PURE__ */ jsx26("span", { children: t.totalLabel }),
15667
- /* @__PURE__ */ jsx26("span", { children: formatPrice(order.total, currencyCode, locale) })
15726
+ /* @__PURE__ */ jsx27("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs25("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
15727
+ /* @__PURE__ */ jsx27("span", { children: t.totalLabel }),
15728
+ /* @__PURE__ */ jsx27("span", { children: formatPrice(order.total, currencyCode, locale) })
15668
15729
  ] }) })
15669
15730
  ] }),
15670
- /* @__PURE__ */ jsxs24("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15731
+ /* @__PURE__ */ jsxs25("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15671
15732
  t.confirmationEmailPrefix,
15672
15733
  " ",
15673
- /* @__PURE__ */ jsx26("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15734
+ /* @__PURE__ */ jsx27("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15674
15735
  "."
15675
15736
  ] }),
15676
- /* @__PURE__ */ jsx26(
15737
+ /* @__PURE__ */ jsx27(
15677
15738
  OrderInvoiceLink,
15678
15739
  {
15679
15740
  invoice: order.invoice,
@@ -15681,11 +15742,11 @@ function OrderConfirmation({
15681
15742
  }
15682
15743
  )
15683
15744
  ] }),
15684
- showOrderReference && order && /* @__PURE__ */ jsxs24("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15685
- /* @__PURE__ */ jsx26("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
15686
- /* @__PURE__ */ jsx26("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15745
+ showOrderReference && order && /* @__PURE__ */ jsxs25("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15746
+ /* @__PURE__ */ jsx27("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
15747
+ /* @__PURE__ */ jsx27("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
15687
15748
  ] }),
15688
- status === "failed" && cartHref && /* @__PURE__ */ jsx26(
15749
+ status === "failed" && cartHref && /* @__PURE__ */ jsx27(
15689
15750
  "a",
15690
15751
  {
15691
15752
  href: cartHref,
@@ -15693,7 +15754,7 @@ function OrderConfirmation({
15693
15754
  children: t.backToCartLabel
15694
15755
  }
15695
15756
  ),
15696
- showRecheck && /* @__PURE__ */ jsx26(
15757
+ showRecheck && /* @__PURE__ */ jsx27(
15697
15758
  "button",
15698
15759
  {
15699
15760
  type: "button",
@@ -15702,16 +15763,16 @@ function OrderConfirmation({
15702
15763
  children: t.recheckLabel
15703
15764
  }
15704
15765
  ),
15705
- showSessionReference && /* @__PURE__ */ jsxs24("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15706
- /* @__PURE__ */ jsx26("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
15707
- /* @__PURE__ */ jsx26("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
15766
+ showSessionReference && /* @__PURE__ */ jsxs25("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15767
+ /* @__PURE__ */ jsx27("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
15768
+ /* @__PURE__ */ jsx27("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
15708
15769
  ] })
15709
15770
  ] });
15710
15771
  }
15711
15772
 
15712
15773
  // src/components/full-invoice-fields.tsx
15713
15774
  import { cn as cn22 } from "@reblu/site-ui/utils";
15714
- import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
15775
+ import { jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
15715
15776
  var EMPTY_FULL_INVOICE_VALUE = {
15716
15777
  wantsFullInvoice: false,
15717
15778
  billingIdType: "NIF",
@@ -15828,12 +15889,12 @@ function FullInvoiceFields({
15828
15889
  const showFields = value.wantsFullInvoice || overCap;
15829
15890
  const isSpanishNif = value.billingIdType === "NIF";
15830
15891
  const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
15831
- const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx27("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
15892
+ const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx28("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
15832
15893
  const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
15833
- return /* @__PURE__ */ jsxs25("section", { className: cn22("space-y-4", className), "data-slot": "full-invoice-fields", children: [
15834
- overCap ? /* @__PURE__ */ jsx27("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15835
- /* @__PURE__ */ jsxs25("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
15836
- /* @__PURE__ */ jsx27(
15894
+ return /* @__PURE__ */ jsxs26("section", { className: cn22("space-y-4", className), "data-slot": "full-invoice-fields", children: [
15895
+ overCap ? /* @__PURE__ */ jsx28("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15896
+ /* @__PURE__ */ jsxs26("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
15897
+ /* @__PURE__ */ jsx28(
15837
15898
  "input",
15838
15899
  {
15839
15900
  type: "checkbox",
@@ -15843,12 +15904,12 @@ function FullInvoiceFields({
15843
15904
  ),
15844
15905
  t.toggle
15845
15906
  ] }),
15846
- /* @__PURE__ */ jsx27("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15907
+ /* @__PURE__ */ jsx28("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15847
15908
  ] }),
15848
- showFields && /* @__PURE__ */ jsxs25("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15849
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15850
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
15851
- /* @__PURE__ */ jsx27(
15909
+ showFields && /* @__PURE__ */ jsxs26("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15910
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15911
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
15912
+ /* @__PURE__ */ jsx28(
15852
15913
  "select",
15853
15914
  {
15854
15915
  id: "full-invoice-id-type",
@@ -15857,14 +15918,14 @@ function FullInvoiceFields({
15857
15918
  value: value.billingIdType,
15858
15919
  onChange: (e) => set("billingIdType", e.target.value),
15859
15920
  ...invalid2("billingIdType"),
15860
- children: ID_TYPES.map((type) => /* @__PURE__ */ jsx27("option", { value: type, children: t.idTypeOptions[type] }, type))
15921
+ children: ID_TYPES.map((type) => /* @__PURE__ */ jsx28("option", { value: type, children: t.idTypeOptions[type] }, type))
15861
15922
  }
15862
15923
  ),
15863
15924
  error("billingIdType")
15864
15925
  ] }),
15865
- !isSpanishNif && /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15866
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
15867
- /* @__PURE__ */ jsxs25(
15926
+ !isSpanishNif && /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15927
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
15928
+ /* @__PURE__ */ jsxs26(
15868
15929
  "select",
15869
15930
  {
15870
15931
  id: "full-invoice-id-country",
@@ -15874,16 +15935,16 @@ function FullInvoiceFields({
15874
15935
  onChange: (e) => set("billingIdCountry", e.target.value),
15875
15936
  ...invalid2("billingIdCountry"),
15876
15937
  children: [
15877
- /* @__PURE__ */ jsx27("option", { value: "", disabled: true, children: t.chooseCountry }),
15878
- countries.map((c) => /* @__PURE__ */ jsx27("option", { value: c.code, children: c.name }, c.code))
15938
+ /* @__PURE__ */ jsx28("option", { value: "", disabled: true, children: t.chooseCountry }),
15939
+ countries.map((c) => /* @__PURE__ */ jsx28("option", { value: c.code, children: c.name }, c.code))
15879
15940
  ]
15880
15941
  }
15881
15942
  ),
15882
15943
  error("billingIdCountry")
15883
15944
  ] }),
15884
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15885
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
15886
- /* @__PURE__ */ jsx27(
15945
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15946
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
15947
+ /* @__PURE__ */ jsx28(
15887
15948
  "input",
15888
15949
  {
15889
15950
  id: "full-invoice-nif",
@@ -15896,9 +15957,9 @@ function FullInvoiceFields({
15896
15957
  ),
15897
15958
  error("billingNif")
15898
15959
  ] }),
15899
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15900
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
15901
- /* @__PURE__ */ jsx27(
15960
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15961
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
15962
+ /* @__PURE__ */ jsx28(
15902
15963
  "input",
15903
15964
  {
15904
15965
  id: "full-invoice-name",
@@ -15911,9 +15972,9 @@ function FullInvoiceFields({
15911
15972
  ),
15912
15973
  error("billingName")
15913
15974
  ] }),
15914
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1 sm:col-span-2", children: [
15915
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
15916
- /* @__PURE__ */ jsx27(
15975
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1 sm:col-span-2", children: [
15976
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
15977
+ /* @__PURE__ */ jsx28(
15917
15978
  "input",
15918
15979
  {
15919
15980
  id: "full-invoice-street",
@@ -15925,9 +15986,9 @@ function FullInvoiceFields({
15925
15986
  }
15926
15987
  )
15927
15988
  ] }),
15928
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15929
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
15930
- /* @__PURE__ */ jsx27(
15989
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
15990
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
15991
+ /* @__PURE__ */ jsx28(
15931
15992
  "input",
15932
15993
  {
15933
15994
  id: "full-invoice-postal-code",
@@ -15938,9 +15999,9 @@ function FullInvoiceFields({
15938
15999
  }
15939
16000
  )
15940
16001
  ] }),
15941
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15942
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
15943
- /* @__PURE__ */ jsx27(
16002
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
16003
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
16004
+ /* @__PURE__ */ jsx28(
15944
16005
  "input",
15945
16006
  {
15946
16007
  id: "full-invoice-city",
@@ -15951,9 +16012,9 @@ function FullInvoiceFields({
15951
16012
  }
15952
16013
  )
15953
16014
  ] }),
15954
- /* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
15955
- /* @__PURE__ */ jsx27("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
15956
- /* @__PURE__ */ jsx27(
16015
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-1", children: [
16016
+ /* @__PURE__ */ jsx28("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
16017
+ /* @__PURE__ */ jsx28(
15957
16018
  "select",
15958
16019
  {
15959
16020
  id: "full-invoice-country",
@@ -15961,18 +16022,18 @@ function FullInvoiceFields({
15961
16022
  required: true,
15962
16023
  value: value.country,
15963
16024
  onChange: (e) => set("country", e.target.value),
15964
- children: countries.map((c) => /* @__PURE__ */ jsx27("option", { value: c.code, children: c.name }, c.code))
16025
+ children: countries.map((c) => /* @__PURE__ */ jsx28("option", { value: c.code, children: c.name }, c.code))
15965
16026
  }
15966
16027
  )
15967
16028
  ] }),
15968
- /* @__PURE__ */ jsx27("div", { className: "sm:col-span-2", children: error("address") })
16029
+ /* @__PURE__ */ jsx28("div", { className: "sm:col-span-2", children: error("address") })
15969
16030
  ] })
15970
16031
  ] });
15971
16032
  }
15972
16033
 
15973
16034
  // src/components/contact-interest-field.tsx
15974
16035
  import { cn as cn23 } from "@reblu/site-ui/utils";
15975
- import { jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
16036
+ import { jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
15976
16037
  function ContactInterestField({
15977
16038
  interest,
15978
16039
  value,
@@ -15989,18 +16050,18 @@ function ContactInterestField({
15989
16050
  else next2.delete(option2);
15990
16051
  onChange(interest.options.filter((candidate) => next2.has(candidate)));
15991
16052
  };
15992
- return /* @__PURE__ */ jsxs26("fieldset", { "data-slot": "contact-interest", className: cn23("space-y-2", className), children: [
15993
- /* @__PURE__ */ jsx28("legend", { className: "text-sm font-medium", children: interest.label }),
15994
- /* @__PURE__ */ jsx28("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
16053
+ return /* @__PURE__ */ jsxs27("fieldset", { "data-slot": "contact-interest", className: cn23("space-y-2", className), children: [
16054
+ /* @__PURE__ */ jsx29("legend", { className: "text-sm font-medium", children: interest.label }),
16055
+ /* @__PURE__ */ jsx29("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
15995
16056
  const id = `${idPrefix}-${index}`;
15996
- return /* @__PURE__ */ jsxs26(
16057
+ return /* @__PURE__ */ jsxs27(
15997
16058
  "label",
15998
16059
  {
15999
16060
  htmlFor: id,
16000
16061
  "data-slot": "contact-interest-option",
16001
16062
  className: "flex items-center gap-2 text-sm",
16002
16063
  children: [
16003
- /* @__PURE__ */ jsx28(
16064
+ /* @__PURE__ */ jsx29(
16004
16065
  "input",
16005
16066
  {
16006
16067
  id,
@@ -16048,6 +16109,7 @@ export {
16048
16109
  EMPTY_FULL_INVOICE_VALUE,
16049
16110
  FaqAccordion,
16050
16111
  FullInvoiceFields,
16112
+ LegalDocument,
16051
16113
  LessonPreview,
16052
16114
  MarkdownRenderer,
16053
16115
  OrderConfirmation,