@reblu/site-blocks 0.34.0 → 0.35.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
@@ -13539,8 +13539,82 @@ function CoursePurchaseTerms({
13539
13539
  );
13540
13540
  }
13541
13541
 
13542
- // src/components/legal-document.tsx
13542
+ // src/components/course-schedule.tsx
13543
13543
  import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
13544
+ function formatSession(session, timeZone, locale) {
13545
+ const day = new Intl.DateTimeFormat(locale, { weekday: "long", day: "numeric", month: "long", year: "numeric", timeZone });
13546
+ const time = new Intl.DateTimeFormat(locale, {
13547
+ hour: "2-digit",
13548
+ minute: "2-digit",
13549
+ hour12: false,
13550
+ timeZone,
13551
+ timeZoneName: "short"
13552
+ });
13553
+ const parts = (date) => {
13554
+ const p2 = time.formatToParts(date);
13555
+ const hhmm = p2.filter((x2) => x2.type === "hour" || x2.type === "minute").map((x2) => x2.value).join(":");
13556
+ return { hhmm, zone: p2.find((x2) => x2.type === "timeZoneName")?.value ?? timeZone };
13557
+ };
13558
+ const start = new Date(session.startsAt);
13559
+ const from = parts(start);
13560
+ if (!session.endsAt) return `${day.format(start)}, a las ${from.hhmm} (${from.zone})`;
13561
+ const end = new Date(session.endsAt);
13562
+ const to = parts(end);
13563
+ if (day.format(start) === day.format(end)) {
13564
+ return `${day.format(start)}, de ${from.hhmm} a ${to.hhmm} (${from.zone})`;
13565
+ }
13566
+ return `del ${day.format(start)}, ${from.hhmm} al ${day.format(end)}, ${to.hhmm} (${from.zone})`;
13567
+ }
13568
+ var DEFAULT_COURSE_SCHEDULE_LABELS = {
13569
+ modality: { IN_PERSON: "Presencial", WEBINAR: "Webinar, online y en directo" },
13570
+ dates: "Fechas",
13571
+ place: "Lugar",
13572
+ session: formatSession
13573
+ };
13574
+ function CourseSchedule({
13575
+ course,
13576
+ heading,
13577
+ headingLevel = 2,
13578
+ headingId = "course-schedule-heading",
13579
+ labels,
13580
+ locale = "es-ES",
13581
+ className,
13582
+ headingClassName,
13583
+ bodyClassName
13584
+ }) {
13585
+ const schedule = course.schedule;
13586
+ if (!schedule) return null;
13587
+ const text3 = { ...DEFAULT_COURSE_SCHEDULE_LABELS, ...labels };
13588
+ const place = [schedule.locationName, schedule.locationAddress].filter(Boolean).join(", ");
13589
+ const hasHeading = heading !== void 0 && heading !== null && heading !== "";
13590
+ const Tag = `h${headingLevel}`;
13591
+ const body3 = slotClassName("", "text-sm", bodyClassName);
13592
+ return /* @__PURE__ */ jsxs4(
13593
+ "section",
13594
+ {
13595
+ "data-slot": "course-schedule",
13596
+ "data-modality": schedule.modality,
13597
+ "aria-labelledby": hasHeading ? headingId : void 0,
13598
+ className: slotClassName("space-y-3", "", className),
13599
+ children: [
13600
+ hasHeading ? /* @__PURE__ */ jsx4(Tag, { id: headingId, className: slotClassName("", "text-lg font-semibold", headingClassName), children: heading }) : null,
13601
+ /* @__PURE__ */ jsx4("p", { "data-slot": "course-schedule-modality", className: body3, children: text3.modality[schedule.modality] }),
13602
+ schedule.sessions.length > 0 ? /* @__PURE__ */ jsxs4("div", { "data-slot": "course-schedule-dates", className: body3, children: [
13603
+ /* @__PURE__ */ jsx4("p", { className: "font-medium", children: text3.dates }),
13604
+ /* @__PURE__ */ jsx4("ul", { className: "list-disc space-y-1 pl-5", children: schedule.sessions.map((session) => /* @__PURE__ */ jsx4("li", { "data-slot": "course-schedule-session", children: /* @__PURE__ */ jsx4("time", { dateTime: session.startsAt, children: text3.session(session, schedule.timeZone, locale) }) }, session.startsAt)) })
13605
+ ] }) : null,
13606
+ place ? /* @__PURE__ */ jsxs4("div", { "data-slot": "course-schedule-place", className: body3, children: [
13607
+ /* @__PURE__ */ jsx4("p", { className: "font-medium", children: text3.place }),
13608
+ /* @__PURE__ */ jsx4("address", { className: "not-italic", children: place })
13609
+ ] }) : null,
13610
+ schedule.attendanceNotes ? /* @__PURE__ */ jsx4("p", { "data-slot": "course-schedule-notes", className: slotClassName("whitespace-pre-line", "text-sm", bodyClassName), children: schedule.attendanceNotes }) : null
13611
+ ]
13612
+ }
13613
+ );
13614
+ }
13615
+
13616
+ // src/components/legal-document.tsx
13617
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
13544
13618
  function isVisiblyEmpty2(html5) {
13545
13619
  if (/<(img|iframe|hr)\b/i.test(html5)) return false;
13546
13620
  return html5.replace(/<[^>]*>/g, "").trim() === "";
@@ -13559,17 +13633,17 @@ function LegalDocument({
13559
13633
  const hasFallback = fallback !== void 0 && fallback !== null && fallback !== false;
13560
13634
  if (isEmpty && !hasFallback) return null;
13561
13635
  const hasTitle = title !== void 0 && title !== null && title !== "";
13562
- return /* @__PURE__ */ jsxs4(
13636
+ return /* @__PURE__ */ jsxs5(
13563
13637
  "article",
13564
13638
  {
13565
13639
  "data-slot": "legal-document",
13566
13640
  "aria-labelledby": hasTitle ? titleId : void 0,
13567
13641
  className: slotClassName("space-y-6", "", className),
13568
13642
  children: [
13569
- hasTitle && /* @__PURE__ */ jsx4("h1", { id: titleId, className: slotClassName("", "text-3xl font-bold", titleClassName), children: title }),
13643
+ hasTitle && /* @__PURE__ */ jsx5("h1", { id: titleId, className: slotClassName("", "text-3xl font-bold", titleClassName), children: title }),
13570
13644
  isEmpty ? fallback : (
13571
13645
  // `html` is already sanitised by `markdownToSafeHtml` — SafeHtml only maps it.
13572
- /* @__PURE__ */ jsx4(
13646
+ /* @__PURE__ */ jsx5(
13573
13647
  SafeHtml,
13574
13648
  {
13575
13649
  html: html5,
@@ -13585,7 +13659,7 @@ function LegalDocument({
13585
13659
  }
13586
13660
 
13587
13661
  // src/components/lesson-preview.tsx
13588
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
13662
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
13589
13663
  var DEFAULT_LESSON_PREVIEW_LABELS = {
13590
13664
  badge: "Vista previa gratuita",
13591
13665
  player: "V\xEDdeo",
@@ -13628,15 +13702,15 @@ function LessonPreview({
13628
13702
  const html5 = markdownToSafeHtml(lesson.content);
13629
13703
  const hasBody = html5 !== null && html5 !== "" && !isVisiblyEmpty3(html5);
13630
13704
  const duration = typeof lesson.durationSeconds === "number" && lesson.durationSeconds > 0 ? clock(lesson.durationSeconds) : null;
13631
- return /* @__PURE__ */ jsxs5(
13705
+ return /* @__PURE__ */ jsxs6(
13632
13706
  "article",
13633
13707
  {
13634
13708
  "data-slot": "lesson-preview",
13635
13709
  "aria-labelledby": headingId,
13636
13710
  className: slotClassName("space-y-6", "", className),
13637
13711
  children: [
13638
- /* @__PURE__ */ jsxs5("header", { className: "space-y-2", children: [
13639
- /* @__PURE__ */ jsx5(
13712
+ /* @__PURE__ */ jsxs6("header", { className: "space-y-2", children: [
13713
+ /* @__PURE__ */ jsx6(
13640
13714
  "span",
13641
13715
  {
13642
13716
  "data-slot": "lesson-preview-badge",
@@ -13644,7 +13718,7 @@ function LessonPreview({
13644
13718
  children: labels.badge
13645
13719
  }
13646
13720
  ),
13647
- /* @__PURE__ */ jsx5(
13721
+ /* @__PURE__ */ jsx6(
13648
13722
  Tag,
13649
13723
  {
13650
13724
  id: headingId,
@@ -13652,12 +13726,12 @@ function LessonPreview({
13652
13726
  children: lesson.title
13653
13727
  }
13654
13728
  ),
13655
- duration && /* @__PURE__ */ jsxs5("p", { className: "text-sm text-muted-foreground", children: [
13656
- /* @__PURE__ */ jsxs5("span", { className: "sr-only", children: [
13729
+ duration && /* @__PURE__ */ jsxs6("p", { className: "text-sm text-muted-foreground", children: [
13730
+ /* @__PURE__ */ jsxs6("span", { className: "sr-only", children: [
13657
13731
  labels.duration,
13658
13732
  ": "
13659
13733
  ] }),
13660
- /* @__PURE__ */ jsx5(
13734
+ /* @__PURE__ */ jsx6(
13661
13735
  "time",
13662
13736
  {
13663
13737
  "data-slot": "lesson-preview-duration",
@@ -13668,12 +13742,12 @@ function LessonPreview({
13668
13742
  )
13669
13743
  ] })
13670
13744
  ] }),
13671
- video && /* @__PURE__ */ jsx5(
13745
+ video && /* @__PURE__ */ jsx6(
13672
13746
  "div",
13673
13747
  {
13674
13748
  "data-slot": "lesson-preview-player",
13675
13749
  className: "aspect-video w-full overflow-hidden rounded-xl border border-border bg-black",
13676
- children: /* @__PURE__ */ jsx5(
13750
+ children: /* @__PURE__ */ jsx6(
13677
13751
  "iframe",
13678
13752
  {
13679
13753
  src: video.embedUrl,
@@ -13687,7 +13761,7 @@ function LessonPreview({
13687
13761
  )
13688
13762
  }
13689
13763
  ),
13690
- hasBody && /* @__PURE__ */ jsx5("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ jsx5(
13764
+ hasBody && /* @__PURE__ */ jsx6("div", { "data-slot": "lesson-preview-content", children: /* @__PURE__ */ jsx6(
13691
13765
  SafeHtml,
13692
13766
  {
13693
13767
  html: html5,
@@ -13706,7 +13780,7 @@ import { cn as cn3 } from "@reblu/site-ui/utils";
13706
13780
  // src/components/_page-parts.tsx
13707
13781
  import { cn as cn2 } from "@reblu/site-ui/utils";
13708
13782
  import { buttonVariants } from "@reblu/site-ui/button-variants";
13709
- import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
13783
+ import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
13710
13784
  var KNOWN_BUTTON_VARIANTS = /* @__PURE__ */ new Set([
13711
13785
  "default",
13712
13786
  "destructive",
@@ -13719,11 +13793,11 @@ function toButtonVariant(variant) {
13719
13793
  return variant && KNOWN_BUTTON_VARIANTS.has(variant) ? variant : "default";
13720
13794
  }
13721
13795
  function PageHero({ page }) {
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(
13796
+ return /* @__PURE__ */ jsxs7("header", { className: "space-y-4", children: [
13797
+ page.category && /* @__PURE__ */ jsx7("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 }),
13798
+ /* @__PURE__ */ jsx7("h1", { className: "text-4xl font-bold tracking-tight", children: page.title }),
13799
+ page.subtitle && /* @__PURE__ */ jsx7("p", { className: "text-lg text-muted-foreground", children: page.subtitle }),
13800
+ page.coverImageUrl && /* @__PURE__ */ jsx7("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx7(
13727
13801
  "img",
13728
13802
  {
13729
13803
  src: page.coverImageUrl,
@@ -13737,7 +13811,7 @@ function PageHero({ page }) {
13737
13811
  function SectionCta({ section }) {
13738
13812
  if (!section.ctaLabel || !section.ctaUrl) return null;
13739
13813
  const variant = toButtonVariant(section.ctaVariant);
13740
- return /* @__PURE__ */ jsx6("div", { className: "pt-2", children: /* @__PURE__ */ jsx6(
13814
+ return /* @__PURE__ */ jsx7("div", { className: "pt-2", children: /* @__PURE__ */ jsx7(
13741
13815
  "a",
13742
13816
  {
13743
13817
  href: section.ctaUrl,
@@ -13752,46 +13826,46 @@ function SectionCta({ section }) {
13752
13826
  }
13753
13827
  function SectionImages({ section }) {
13754
13828
  if (section.images.length === 0) return null;
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 })
13829
+ return /* @__PURE__ */ jsx7("div", { className: cn2("grid gap-4", section.images.length > 1 ? "sm:grid-cols-2" : "grid-cols-1"), children: section.images.map((img) => /* @__PURE__ */ jsxs7("figure", { className: "space-y-1", children: [
13830
+ /* @__PURE__ */ jsx7("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx7("img", { src: img.url, alt: img.alt, loading: "lazy", className: "h-full w-full object-cover" }) }),
13831
+ img.caption && /* @__PURE__ */ jsx7("figcaption", { className: "text-sm text-muted-foreground", children: img.caption })
13758
13832
  ] }, `${img.url}-${img.order}`)) });
13759
13833
  }
13760
13834
  function PageSectionBlock({ section }) {
13761
13835
  const imageFirst = section.layout === "IMAGE_TEXT";
13762
13836
  const sideBySide = section.layout === "TEXT_IMAGE" || section.layout === "IMAGE_TEXT";
13763
13837
  const hasImages = section.images.length > 0;
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 })
13838
+ const body3 = /* @__PURE__ */ jsxs7("div", { className: "space-y-4", children: [
13839
+ section.heading && /* @__PURE__ */ jsx7("h2", { className: "text-2xl font-bold", children: section.heading }),
13840
+ /* @__PURE__ */ jsx7(SafeHtml, { html: sanitizeHtml(section.contentHtml), headingOffset: 2 }),
13841
+ /* @__PURE__ */ jsx7(SectionCta, { section })
13768
13842
  ] });
13769
13843
  if (sideBySide && hasImages) {
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 }),
13844
+ return /* @__PURE__ */ jsx7("section", { className: "grid items-center gap-8 md:grid-cols-2", children: imageFirst ? /* @__PURE__ */ jsxs7(Fragment3, { children: [
13845
+ /* @__PURE__ */ jsx7(SectionImages, { section }),
13772
13846
  body3
13773
- ] }) : /* @__PURE__ */ jsxs6(Fragment3, { children: [
13847
+ ] }) : /* @__PURE__ */ jsxs7(Fragment3, { children: [
13774
13848
  body3,
13775
- /* @__PURE__ */ jsx6(SectionImages, { section })
13849
+ /* @__PURE__ */ jsx7(SectionImages, { section })
13776
13850
  ] }) });
13777
13851
  }
13778
- return /* @__PURE__ */ jsxs6("section", { className: "space-y-4", children: [
13852
+ return /* @__PURE__ */ jsxs7("section", { className: "space-y-4", children: [
13779
13853
  body3,
13780
- /* @__PURE__ */ jsx6(SectionImages, { section })
13854
+ /* @__PURE__ */ jsx7(SectionImages, { section })
13781
13855
  ] });
13782
13856
  }
13783
13857
  function PageSectionList({ sections }) {
13784
13858
  if (sections.length === 0) return null;
13785
13859
  const ordered = sections.slice().sort((a, b2) => a.order - b2.order);
13786
- return /* @__PURE__ */ jsx6("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ jsx6(PageSectionBlock, { section }, section.id)) });
13860
+ return /* @__PURE__ */ jsx7("div", { className: "space-y-12", children: ordered.map((section) => /* @__PURE__ */ jsx7(PageSectionBlock, { section }, section.id)) });
13787
13861
  }
13788
13862
 
13789
13863
  // src/components/treatment.tsx
13790
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
13864
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
13791
13865
  function Treatment({ page, className }) {
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 })
13866
+ return /* @__PURE__ */ jsxs8("article", { className: cn3("space-y-12", className), "data-slot": "treatment", children: [
13867
+ /* @__PURE__ */ jsx8(PageHero, { page }),
13868
+ /* @__PURE__ */ jsx8(PageSectionList, { sections: page.sections })
13795
13869
  ] });
13796
13870
  }
13797
13871
 
@@ -13800,11 +13874,11 @@ import { cn as cn5 } from "@reblu/site-ui/utils";
13800
13874
 
13801
13875
  // src/components/page-card-grid.tsx
13802
13876
  import { cn as cn4 } from "@reblu/site-ui/utils";
13803
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
13877
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
13804
13878
  var defaultPageHref = (page) => `/${page.slug}`;
13805
13879
  var pageKey = (page) => `${page.category?.slug ?? ""}/${page.slug}`;
13806
13880
  function PageCardGrid(props) {
13807
- return /* @__PURE__ */ jsx8(PageCardGridSection, { ...props });
13881
+ return /* @__PURE__ */ jsx9(PageCardGridSection, { ...props });
13808
13882
  }
13809
13883
  function PageCardGridSection({
13810
13884
  pages,
@@ -13815,15 +13889,15 @@ function PageCardGridSection({
13815
13889
  }) {
13816
13890
  if (pages.length === 0) return null;
13817
13891
  const showHeading = keepEmptyHeading ? heading !== void 0 : !!heading;
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(
13892
+ return /* @__PURE__ */ jsxs9("section", { className: cn4("space-y-6", className), children: [
13893
+ showHeading && /* @__PURE__ */ jsx9("h2", { className: "text-2xl font-bold", children: heading }),
13894
+ /* @__PURE__ */ jsx9("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__ */ jsx9("li", { children: /* @__PURE__ */ jsxs9(
13821
13895
  "a",
13822
13896
  {
13823
13897
  href: pageHref(page),
13824
13898
  className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13825
13899
  children: [
13826
- page.coverImageUrl && /* @__PURE__ */ jsx8("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx8(
13900
+ page.coverImageUrl && /* @__PURE__ */ jsx9("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx9(
13827
13901
  "img",
13828
13902
  {
13829
13903
  src: page.coverImageUrl,
@@ -13832,9 +13906,9 @@ function PageCardGridSection({
13832
13906
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13833
13907
  }
13834
13908
  ) }),
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 })
13909
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13910
+ /* @__PURE__ */ jsx9("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13911
+ page.excerpt && /* @__PURE__ */ jsx9("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13838
13912
  ] })
13839
13913
  ]
13840
13914
  }
@@ -13843,7 +13917,7 @@ function PageCardGridSection({
13843
13917
  }
13844
13918
 
13845
13919
  // src/components/parent-page.tsx
13846
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
13920
+ import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
13847
13921
  var defaultChildPageHref = (slug) => `/${slug}`;
13848
13922
  function ParentPage({
13849
13923
  page,
@@ -13858,10 +13932,10 @@ function ParentPage({
13858
13932
  const pages = childPages ?? treatments ?? [];
13859
13933
  const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13860
13934
  const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
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(
13935
+ return /* @__PURE__ */ jsxs10("article", { className: cn5("space-y-12", className), "data-slot": "specialty", children: [
13936
+ /* @__PURE__ */ jsx10(PageHero, { page }),
13937
+ /* @__PURE__ */ jsx10(PageSectionList, { sections: page.sections }),
13938
+ /* @__PURE__ */ jsx10(
13865
13939
  PageCardGridSection,
13866
13940
  {
13867
13941
  pages,
@@ -13881,7 +13955,7 @@ import { cn as cn7 } from "@reblu/site-ui/utils";
13881
13955
 
13882
13956
  // src/components/professional-fields.tsx
13883
13957
  import { cn as cn6 } from "@reblu/site-ui/utils";
13884
- import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
13958
+ import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
13885
13959
  function ProfessionalFields({
13886
13960
  fields,
13887
13961
  variant = "profile",
@@ -13889,7 +13963,7 @@ function ProfessionalFields({
13889
13963
  }) {
13890
13964
  const shown = (fields ?? []).filter((f) => variant !== "card" || f.showOnCard);
13891
13965
  if (shown.length === 0) return null;
13892
- return /* @__PURE__ */ jsx10(
13966
+ return /* @__PURE__ */ jsx11(
13893
13967
  "dl",
13894
13968
  {
13895
13969
  className: cn6(
@@ -13899,13 +13973,13 @@ function ProfessionalFields({
13899
13973
  ),
13900
13974
  "data-slot": "professional-fields",
13901
13975
  "data-variant": variant,
13902
- children: shown.map((field, index) => /* @__PURE__ */ jsxs10(
13976
+ children: shown.map((field, index) => /* @__PURE__ */ jsxs11(
13903
13977
  "div",
13904
13978
  {
13905
13979
  className: variant === "card" ? "flex justify-center gap-1" : "contents",
13906
13980
  children: [
13907
- /* @__PURE__ */ jsx10("dt", { className: "text-muted-foreground", children: field.label }),
13908
- /* @__PURE__ */ jsx10("dd", { className: "m-0 font-medium", children: field.value })
13981
+ /* @__PURE__ */ jsx11("dt", { className: "text-muted-foreground", children: field.label }),
13982
+ /* @__PURE__ */ jsx11("dd", { className: "m-0 font-medium", children: field.value })
13909
13983
  ]
13910
13984
  },
13911
13985
  `${field.label}-${index}`
@@ -13915,7 +13989,7 @@ function ProfessionalFields({
13915
13989
  }
13916
13990
 
13917
13991
  // src/components/profile-card.tsx
13918
- import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
13992
+ import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
13919
13993
  function initials(name) {
13920
13994
  return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
13921
13995
  }
@@ -13930,7 +14004,7 @@ function ProfileCard({
13930
14004
  className
13931
14005
  }) {
13932
14006
  const NameTag = href ? "a" : "span";
13933
- return /* @__PURE__ */ jsxs11(
14007
+ return /* @__PURE__ */ jsxs12(
13934
14008
  "article",
13935
14009
  {
13936
14010
  className: cn7(
@@ -13939,7 +14013,7 @@ function ProfileCard({
13939
14013
  ),
13940
14014
  "data-slot": "profile-card",
13941
14015
  children: [
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(
14016
+ /* @__PURE__ */ jsx12("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx12("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx12(
13943
14017
  "span",
13944
14018
  {
13945
14019
  className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground",
@@ -13947,12 +14021,12 @@ function ProfileCard({
13947
14021
  children: initials(name)
13948
14022
  }
13949
14023
  ) }),
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 })
14024
+ /* @__PURE__ */ jsxs12("div", { className: "space-y-1", children: [
14025
+ /* @__PURE__ */ jsx12("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx12(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
14026
+ role && /* @__PURE__ */ jsx12("p", { className: "text-sm text-muted-foreground", children: role })
13953
14027
  ] }),
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(
14028
+ /* @__PURE__ */ jsx12(ProfessionalFields, { fields, variant: "card" }),
14029
+ specialties.length > 0 && /* @__PURE__ */ jsx12("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx12(
13956
14030
  "li",
13957
14031
  {
13958
14032
  className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
@@ -13960,7 +14034,7 @@ function ProfileCard({
13960
14034
  },
13961
14035
  s2
13962
14036
  )) }),
13963
- bio && /* @__PURE__ */ jsx11("p", { className: "text-sm text-muted-foreground", children: bio })
14037
+ bio && /* @__PURE__ */ jsx12("p", { className: "text-sm text-muted-foreground", children: bio })
13964
14038
  ]
13965
14039
  }
13966
14040
  );
@@ -13989,7 +14063,7 @@ function filterByLink(items, key2) {
13989
14063
  }
13990
14064
 
13991
14065
  // src/components/linked-pages.tsx
13992
- import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
14066
+ import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
13993
14067
  function LinkedPagesGrid({
13994
14068
  pages,
13995
14069
  pageHref = (page) => `/${page.slug}`,
@@ -13997,15 +14071,15 @@ function LinkedPagesGrid({
13997
14071
  className
13998
14072
  }) {
13999
14073
  if (!pages || pages.length === 0) return null;
14000
- return /* @__PURE__ */ jsxs12("section", { className: cn8("space-y-6", className), "data-slot": "linked-pages", children: [
14001
- heading && /* @__PURE__ */ jsx12("h2", { className: "text-2xl font-bold", children: heading }),
14002
- /* @__PURE__ */ jsx12("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__ */ jsx12("li", { children: /* @__PURE__ */ jsxs12(
14074
+ return /* @__PURE__ */ jsxs13("section", { className: cn8("space-y-6", className), "data-slot": "linked-pages", children: [
14075
+ heading && /* @__PURE__ */ jsx13("h2", { className: "text-2xl font-bold", children: heading }),
14076
+ /* @__PURE__ */ jsx13("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__ */ jsx13("li", { children: /* @__PURE__ */ jsxs13(
14003
14077
  "a",
14004
14078
  {
14005
14079
  href: pageHref(page),
14006
14080
  className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
14007
14081
  children: [
14008
- page.coverImageUrl && /* @__PURE__ */ jsx12("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx12(
14082
+ page.coverImageUrl && /* @__PURE__ */ jsx13("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx13(
14009
14083
  "img",
14010
14084
  {
14011
14085
  src: page.coverImageUrl,
@@ -14014,9 +14088,9 @@ function LinkedPagesGrid({
14014
14088
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
14015
14089
  }
14016
14090
  ) }),
14017
- /* @__PURE__ */ jsxs12("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14018
- /* @__PURE__ */ jsx12("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
14019
- page.excerpt && /* @__PURE__ */ jsx12("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
14091
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14092
+ /* @__PURE__ */ jsx13("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
14093
+ page.excerpt && /* @__PURE__ */ jsx13("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
14020
14094
  ] })
14021
14095
  ]
14022
14096
  }
@@ -14030,9 +14104,9 @@ function TeamGrid({
14030
14104
  className
14031
14105
  }) {
14032
14106
  if (!members || members.length === 0) return null;
14033
- return /* @__PURE__ */ jsxs12("section", { className: cn8("space-y-6", className), "data-slot": "team-grid", children: [
14034
- heading && /* @__PURE__ */ jsx12("h2", { className: "text-2xl font-bold", children: heading }),
14035
- /* @__PURE__ */ jsx12("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: members.map((member) => /* @__PURE__ */ jsx12("li", { children: /* @__PURE__ */ jsx12(
14107
+ return /* @__PURE__ */ jsxs13("section", { className: cn8("space-y-6", className), "data-slot": "team-grid", children: [
14108
+ heading && /* @__PURE__ */ jsx13("h2", { className: "text-2xl font-bold", children: heading }),
14109
+ /* @__PURE__ */ jsx13("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: members.map((member) => /* @__PURE__ */ jsx13("li", { children: /* @__PURE__ */ jsx13(
14036
14110
  ProfileCard,
14037
14111
  {
14038
14112
  name: member.title,
@@ -14047,11 +14121,11 @@ function TeamGrid({
14047
14121
 
14048
14122
  // src/components/product-card.tsx
14049
14123
  import { cn as cn9 } from "@reblu/site-ui/utils";
14050
- import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
14124
+ import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
14051
14125
  function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
14052
14126
  const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
14053
14127
  const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
14054
- return /* @__PURE__ */ jsxs13(
14128
+ return /* @__PURE__ */ jsxs14(
14055
14129
  "article",
14056
14130
  {
14057
14131
  className: cn9(
@@ -14060,7 +14134,7 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
14060
14134
  ),
14061
14135
  "data-slot": "product-card",
14062
14136
  children: [
14063
- /* @__PURE__ */ jsx13("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx13(
14137
+ /* @__PURE__ */ jsx14("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx14(
14064
14138
  "img",
14065
14139
  {
14066
14140
  src: image.url,
@@ -14068,14 +14142,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
14068
14142
  loading: "lazy",
14069
14143
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
14070
14144
  }
14071
- ) : /* @__PURE__ */ jsx13("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
14072
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14073
- product.category && /* @__PURE__ */ jsx13("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 }),
14074
- /* @__PURE__ */ jsx13("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx13("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
14075
- product.shortDescription && /* @__PURE__ */ jsx13("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
14076
- /* @__PURE__ */ jsxs13("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
14077
- /* @__PURE__ */ jsx13("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
14078
- hasDiscount && /* @__PURE__ */ jsx13("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
14145
+ ) : /* @__PURE__ */ jsx14("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
14146
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
14147
+ product.category && /* @__PURE__ */ jsx14("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 }),
14148
+ /* @__PURE__ */ jsx14("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx14("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
14149
+ product.shortDescription && /* @__PURE__ */ jsx14("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
14150
+ /* @__PURE__ */ jsxs14("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
14151
+ /* @__PURE__ */ jsx14("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
14152
+ hasDiscount && /* @__PURE__ */ jsx14("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
14079
14153
  ] })
14080
14154
  ] })
14081
14155
  ]
@@ -14277,7 +14351,7 @@ var __iconNode8 = [
14277
14351
  var Truck = createLucideIcon("truck", __iconNode8);
14278
14352
 
14279
14353
  // src/components/product-trust-items.tsx
14280
- import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
14354
+ import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
14281
14355
  var DEFAULT_TRUST_ICONS = Object.freeze({
14282
14356
  shipping: Truck,
14283
14357
  returns: RotateCcw,
@@ -14311,9 +14385,9 @@ function ProductTrustItems({
14311
14385
  return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
14312
14386
  });
14313
14387
  if (rows.length === 0) return null;
14314
- return /* @__PURE__ */ jsx14(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs14("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14315
- /* @__PURE__ */ jsx14(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14316
- /* @__PURE__ */ jsx14("span", { children: text3 })
14388
+ return /* @__PURE__ */ jsx15(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs15("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
14389
+ /* @__PURE__ */ jsx15(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
14390
+ /* @__PURE__ */ jsx15("span", { children: text3 })
14317
14391
  ] }, key2)) });
14318
14392
  }
14319
14393
 
@@ -14321,7 +14395,7 @@ function ProductTrustItems({
14321
14395
  import { cn as cn10 } from "@reblu/site-ui/utils";
14322
14396
 
14323
14397
  // src/components/_heading.tsx
14324
- import { jsx as jsx15 } from "react/jsx-runtime";
14398
+ import { jsx as jsx16 } from "react/jsx-runtime";
14325
14399
  function nextHeadingLevel(level) {
14326
14400
  return Math.min(level + 1, 6);
14327
14401
  }
@@ -14331,11 +14405,11 @@ function Heading({
14331
14405
  children: children2
14332
14406
  }) {
14333
14407
  const Tag = `h${level}`;
14334
- return /* @__PURE__ */ jsx15(Tag, { className, children: children2 });
14408
+ return /* @__PURE__ */ jsx16(Tag, { className, children: children2 });
14335
14409
  }
14336
14410
 
14337
14411
  // src/components/faq-accordion.tsx
14338
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
14412
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
14339
14413
  function FaqAccordion({
14340
14414
  items,
14341
14415
  heading,
@@ -14346,18 +14420,18 @@ function FaqAccordion({
14346
14420
  }) {
14347
14421
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
14348
14422
  if (visible.length === 0) return null;
14349
- return /* @__PURE__ */ jsxs15("div", { className: cn10("space-y-4", className), "data-slot": "faq-accordion", children: [
14350
- heading && /* @__PURE__ */ jsx16(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14351
- /* @__PURE__ */ jsx16("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs15(
14423
+ return /* @__PURE__ */ jsxs16("div", { className: cn10("space-y-4", className), "data-slot": "faq-accordion", children: [
14424
+ heading && /* @__PURE__ */ jsx17(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
14425
+ /* @__PURE__ */ jsx17("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs16(
14352
14426
  "details",
14353
14427
  {
14354
14428
  className: "group px-4",
14355
14429
  "data-slot": "faq-item",
14356
14430
  ...defaultOpen.includes(index) ? { open: true } : {},
14357
14431
  children: [
14358
- /* @__PURE__ */ jsxs15("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: [
14359
- questionHeadingLevel ? /* @__PURE__ */ jsx16(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx16("span", { children: item.q }),
14360
- /* @__PURE__ */ jsx16(
14432
+ /* @__PURE__ */ jsxs16("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: [
14433
+ questionHeadingLevel ? /* @__PURE__ */ jsx17(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx17("span", { children: item.q }),
14434
+ /* @__PURE__ */ jsx17(
14361
14435
  "span",
14362
14436
  {
14363
14437
  "aria-hidden": "true",
@@ -14366,7 +14440,7 @@ function FaqAccordion({
14366
14440
  }
14367
14441
  )
14368
14442
  ] }),
14369
- /* @__PURE__ */ jsx16("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14443
+ /* @__PURE__ */ jsx17("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
14370
14444
  ]
14371
14445
  },
14372
14446
  index
@@ -14403,7 +14477,7 @@ function trustBadgeAlt(badge, numberLabel = DEFAULT_ADHESION_NUMBER_LABEL) {
14403
14477
  }
14404
14478
 
14405
14479
  // src/components/trust-badges.tsx
14406
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
14480
+ import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
14407
14481
  var DEFAULT_TRUST_BADGE_HEADINGS = Object.freeze(
14408
14482
  {
14409
14483
  PARTNER: "Colaboradores",
@@ -14432,7 +14506,7 @@ function BadgeContent({ badge, logoClassName }) {
14432
14506
  if (src) {
14433
14507
  return (
14434
14508
  // eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
14435
- /* @__PURE__ */ jsx17(
14509
+ /* @__PURE__ */ jsx18(
14436
14510
  "img",
14437
14511
  {
14438
14512
  src,
@@ -14443,7 +14517,7 @@ function BadgeContent({ badge, logoClassName }) {
14443
14517
  )
14444
14518
  );
14445
14519
  }
14446
- return /* @__PURE__ */ jsx17("span", { className: "text-sm font-medium", children: badge.name });
14520
+ return /* @__PURE__ */ jsx18("span", { className: "text-sm font-medium", children: badge.name });
14447
14521
  }
14448
14522
  function TrustBadges({
14449
14523
  badges,
@@ -14471,14 +14545,14 @@ function TrustBadges({
14471
14545
  if (groups.length === 0) return null;
14472
14546
  const hasHeading = heading !== void 0 && heading !== null && heading !== "";
14473
14547
  const groupHeadingLevel = hasHeading ? nextHeadingLevel(headingLevel) : headingLevel;
14474
- const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs16(
14548
+ const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs17(
14475
14549
  "div",
14476
14550
  {
14477
14551
  "data-slot": "trust-badge-group",
14478
14552
  "data-type": type,
14479
14553
  className: cn11("space-y-3", groupClassName),
14480
14554
  children: [
14481
- groupHeading ? /* @__PURE__ */ jsx17(
14555
+ groupHeading ? /* @__PURE__ */ jsx18(
14482
14556
  Heading,
14483
14557
  {
14484
14558
  level: groupHeadingLevel,
@@ -14490,30 +14564,30 @@ function TrustBadges({
14490
14564
  children: groupHeading
14491
14565
  }
14492
14566
  ) : null,
14493
- /* @__PURE__ */ jsx17("ul", { className: cn11("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14567
+ /* @__PURE__ */ jsx18("ul", { className: cn11("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
14494
14568
  const href = safeHref(badge.url);
14495
- return /* @__PURE__ */ jsx17("li", { children: href ? /* @__PURE__ */ jsxs16("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14496
- /* @__PURE__ */ jsx17(BadgeContent, { badge, logoClassName }),
14569
+ return /* @__PURE__ */ jsx18("li", { children: href ? /* @__PURE__ */ jsxs17("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14570
+ /* @__PURE__ */ jsx18(BadgeContent, { badge, logoClassName }),
14497
14571
  " ",
14498
- /* @__PURE__ */ jsx17("span", { className: "sr-only", children: newWindowLabel })
14499
- ] }) : /* @__PURE__ */ jsx17(BadgeContent, { badge, logoClassName }) }, badge.id);
14572
+ /* @__PURE__ */ jsx18("span", { className: "sr-only", children: newWindowLabel })
14573
+ ] }) : /* @__PURE__ */ jsx18(BadgeContent, { badge, logoClassName }) }, badge.id);
14500
14574
  }) })
14501
14575
  ]
14502
14576
  },
14503
14577
  type
14504
14578
  ));
14505
14579
  if (!hasHeading) {
14506
- return /* @__PURE__ */ jsx17("div", { "data-slot": "trust-badges", className: cn11("space-y-6", className), children: content });
14580
+ return /* @__PURE__ */ jsx18("div", { "data-slot": "trust-badges", className: cn11("space-y-6", className), children: content });
14507
14581
  }
14508
14582
  const Tag = `h${headingLevel}`;
14509
- return /* @__PURE__ */ jsxs16(
14583
+ return /* @__PURE__ */ jsxs17(
14510
14584
  "section",
14511
14585
  {
14512
14586
  "data-slot": "trust-badges",
14513
14587
  "aria-labelledby": headingId,
14514
14588
  className: cn11("space-y-6", className),
14515
14589
  children: [
14516
- /* @__PURE__ */ jsx17(
14590
+ /* @__PURE__ */ jsx18(
14517
14591
  Tag,
14518
14592
  {
14519
14593
  id: headingId,
@@ -14529,7 +14603,7 @@ function TrustBadges({
14529
14603
 
14530
14604
  // src/components/arbitration-badge.tsx
14531
14605
  import { cn as cn12 } from "@reblu/site-ui/utils";
14532
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
14606
+ import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
14533
14607
  function isArbitrationBadge(value) {
14534
14608
  if (typeof value !== "object" || value === null) return false;
14535
14609
  const entry = value;
@@ -14547,7 +14621,7 @@ function ArbitrationBadge({
14547
14621
  if (!Array.isArray(badges)) return null;
14548
14622
  const items = badges.filter(isArbitrationBadge);
14549
14623
  if (items.length === 0) return null;
14550
- return /* @__PURE__ */ jsx18(
14624
+ return /* @__PURE__ */ jsx19(
14551
14625
  "ul",
14552
14626
  {
14553
14627
  "data-slot": "arbitration-badges",
@@ -14556,11 +14630,11 @@ function ArbitrationBadge({
14556
14630
  const src = safeLogoSrc(badge.logoUrl);
14557
14631
  const href = safeHref(badge.url);
14558
14632
  const number2 = adhesionNumberOf(badge);
14559
- const caption = number2 && (showNumber || !src) ? /* @__PURE__ */ jsx18("span", { className: cn12("text-xs", numberClassName), "aria-hidden": src ? "true" : void 0, children: `${numberLabel} ${number2}` }) : null;
14560
- const content = /* @__PURE__ */ jsxs17("span", { className: "inline-flex flex-col items-center gap-1 text-center", children: [
14633
+ const caption = number2 && (showNumber || !src) ? /* @__PURE__ */ jsx19("span", { className: cn12("text-xs", numberClassName), "aria-hidden": src ? "true" : void 0, children: `${numberLabel} ${number2}` }) : null;
14634
+ const content = /* @__PURE__ */ jsxs18("span", { className: "inline-flex flex-col items-center gap-1 text-center", children: [
14561
14635
  src ? (
14562
14636
  // eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
14563
- /* @__PURE__ */ jsx18(
14637
+ /* @__PURE__ */ jsx19(
14564
14638
  "img",
14565
14639
  {
14566
14640
  src,
@@ -14569,13 +14643,13 @@ function ArbitrationBadge({
14569
14643
  className: cn12("h-16 w-auto object-contain", logoClassName)
14570
14644
  }
14571
14645
  )
14572
- ) : /* @__PURE__ */ jsx18("span", { className: "text-sm font-medium", children: badge.name }),
14646
+ ) : /* @__PURE__ */ jsx19("span", { className: "text-sm font-medium", children: badge.name }),
14573
14647
  caption
14574
14648
  ] });
14575
- return /* @__PURE__ */ jsx18("li", { "data-slot": "arbitration-badge", children: href ? /* @__PURE__ */ jsxs17("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14649
+ return /* @__PURE__ */ jsx19("li", { "data-slot": "arbitration-badge", children: href ? /* @__PURE__ */ jsxs18("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14576
14650
  content,
14577
14651
  " ",
14578
- /* @__PURE__ */ jsx18("span", { className: "sr-only", children: newWindowLabel })
14652
+ /* @__PURE__ */ jsx19("span", { className: "sr-only", children: newWindowLabel })
14579
14653
  ] }) : content }, badge.id);
14580
14654
  })
14581
14655
  }
@@ -14587,7 +14661,7 @@ import { cn as cn14 } from "@reblu/site-ui/utils";
14587
14661
 
14588
14662
  // src/components/_review-card.tsx
14589
14663
  import { cn as cn13 } from "@reblu/site-ui/utils";
14590
- import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
14664
+ import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
14591
14665
  function isHttps(value) {
14592
14666
  if (typeof value !== "string") return false;
14593
14667
  try {
@@ -14610,7 +14684,7 @@ function formatDay(day, locale) {
14610
14684
  }
14611
14685
  var STAR_PATH = "M12 2.5l2.9 5.9 6.5.9-4.7 4.6 1.1 6.5L12 17.3l-5.8 3.1 1.1-6.5L2.6 9.3l6.5-.9z";
14612
14686
  function Stars({ rating }) {
14613
- return /* @__PURE__ */ jsx19("div", { role: "img", "aria-label": `${rating} de 5 estrellas`, className: "flex gap-0.5", children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx19(
14687
+ return /* @__PURE__ */ jsx20("div", { role: "img", "aria-label": `${rating} de 5 estrellas`, className: "flex gap-0.5", children: [1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx20(
14614
14688
  "svg",
14615
14689
  {
14616
14690
  "aria-hidden": "true",
@@ -14622,7 +14696,7 @@ function Stars({ rating }) {
14622
14696
  stroke: "currentColor",
14623
14697
  strokeWidth: "1.5",
14624
14698
  strokeLinejoin: "round",
14625
- children: /* @__PURE__ */ jsx19("path", { d: STAR_PATH })
14699
+ children: /* @__PURE__ */ jsx20("path", { d: STAR_PATH })
14626
14700
  },
14627
14701
  n
14628
14702
  )) });
@@ -14638,19 +14712,19 @@ function ReviewCard({
14638
14712
  className
14639
14713
  }) {
14640
14714
  const date = formatDay(review.reviewDate, locale);
14641
- return /* @__PURE__ */ jsxs18(
14715
+ return /* @__PURE__ */ jsxs19(
14642
14716
  "article",
14643
14717
  {
14644
14718
  "data-slot": "review",
14645
14719
  "data-source": review.source,
14646
14720
  className: cn13("flex h-full flex-col gap-3 rounded-lg border p-5", className),
14647
14721
  children: [
14648
- /* @__PURE__ */ jsx19(Stars, { rating: review.rating }),
14649
- review.text && review.text.trim() !== "" ? /* @__PURE__ */ jsx19("blockquote", { className: "flex-1", children: /* @__PURE__ */ jsx19("p", { children: review.text }) }) : null,
14650
- /* @__PURE__ */ jsxs18("footer", { className: "mt-auto space-y-1 text-sm", children: [
14651
- /* @__PURE__ */ jsx19("p", { className: "font-semibold", children: review.authorName }),
14652
- date ? /* @__PURE__ */ jsx19("time", { dateTime: review.reviewDate, className: "block text-muted-foreground", children: date }) : null,
14653
- /* @__PURE__ */ jsxs18(
14722
+ /* @__PURE__ */ jsx20(Stars, { rating: review.rating }),
14723
+ review.text && review.text.trim() !== "" ? /* @__PURE__ */ jsx20("blockquote", { className: "flex-1", children: /* @__PURE__ */ jsx20("p", { children: review.text }) }) : null,
14724
+ /* @__PURE__ */ jsxs19("footer", { className: "mt-auto space-y-1 text-sm", children: [
14725
+ /* @__PURE__ */ jsx20("p", { className: "font-semibold", children: review.authorName }),
14726
+ date ? /* @__PURE__ */ jsx20("time", { dateTime: review.reviewDate, className: "block text-muted-foreground", children: date }) : null,
14727
+ /* @__PURE__ */ jsxs19(
14654
14728
  "a",
14655
14729
  {
14656
14730
  href: review.sourceUrl,
@@ -14660,7 +14734,7 @@ function ReviewCard({
14660
14734
  children: [
14661
14735
  linkLabel(review.sourceName),
14662
14736
  " ",
14663
- /* @__PURE__ */ jsx19("span", { className: "sr-only", children: newWindowLabel })
14737
+ /* @__PURE__ */ jsx20("span", { className: "sr-only", children: newWindowLabel })
14664
14738
  ]
14665
14739
  }
14666
14740
  )
@@ -14671,7 +14745,7 @@ function ReviewCard({
14671
14745
  }
14672
14746
 
14673
14747
  // src/components/reviews.tsx
14674
- import { Fragment as Fragment4, jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
14748
+ import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
14675
14749
  function Reviews({
14676
14750
  reviews,
14677
14751
  heading,
@@ -14691,7 +14765,7 @@ function Reviews({
14691
14765
  const usable = usableReviews(reviews);
14692
14766
  if (usable.length === 0) return null;
14693
14767
  const hasNotice = notice !== void 0 && notice !== null && notice !== "";
14694
- const noticeNode = hasNotice ? /* @__PURE__ */ jsx20(
14768
+ const noticeNode = hasNotice ? /* @__PURE__ */ jsx21(
14695
14769
  "p",
14696
14770
  {
14697
14771
  "data-slot": "reviews-notice",
@@ -14699,13 +14773,13 @@ function Reviews({
14699
14773
  children: notice
14700
14774
  }
14701
14775
  ) : null;
14702
- const grid = /* @__PURE__ */ jsx20(
14776
+ const grid = /* @__PURE__ */ jsx21(
14703
14777
  "ul",
14704
14778
  {
14705
14779
  "data-slot": "reviews-grid",
14706
14780
  className: slotClassName("grid gap-6", "sm:grid-cols-2 lg:grid-cols-3", gridClassName),
14707
14781
  children: usable.map((review) => {
14708
- return /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(
14782
+ return /* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsx21(
14709
14783
  ReviewCard,
14710
14784
  {
14711
14785
  review,
@@ -14718,18 +14792,18 @@ function Reviews({
14718
14792
  })
14719
14793
  }
14720
14794
  );
14721
- const body3 = /* @__PURE__ */ jsxs19(Fragment4, { children: [
14795
+ const body3 = /* @__PURE__ */ jsxs20(Fragment4, { children: [
14722
14796
  noticePosition === "above" ? noticeNode : null,
14723
14797
  grid,
14724
14798
  noticePosition === "below" ? noticeNode : null
14725
14799
  ] });
14726
14800
  const hasHeading = heading !== void 0 && heading !== null && heading !== "";
14727
14801
  if (!hasHeading) {
14728
- return /* @__PURE__ */ jsx20("div", { "data-slot": "reviews", className: cn14("space-y-4", className), children: body3 });
14802
+ return /* @__PURE__ */ jsx21("div", { "data-slot": "reviews", className: cn14("space-y-4", className), children: body3 });
14729
14803
  }
14730
14804
  const Tag = `h${headingLevel}`;
14731
- return /* @__PURE__ */ jsxs19("section", { "data-slot": "reviews", "aria-labelledby": headingId, className: cn14("space-y-4", className), children: [
14732
- /* @__PURE__ */ jsx20(Tag, { id: headingId, className: slotClassName("", "text-xl font-semibold", headingClassName), children: heading }),
14805
+ return /* @__PURE__ */ jsxs20("section", { "data-slot": "reviews", "aria-labelledby": headingId, className: cn14("space-y-4", className), children: [
14806
+ /* @__PURE__ */ jsx21(Tag, { id: headingId, className: slotClassName("", "text-xl font-semibold", headingClassName), children: heading }),
14733
14807
  body3
14734
14808
  ] });
14735
14809
  }
@@ -14902,11 +14976,11 @@ var CARD_ICON_NODES = {
14902
14976
  };
14903
14977
 
14904
14978
  // src/components/content-blocks.tsx
14905
- import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
14979
+ import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
14906
14980
  var DEFAULT_BEFORE_AFTER_LABELS = Object.freeze({ before: "Antes", after: "Despu\xE9s" });
14907
14981
  function PairImage({ url, alt, label }) {
14908
- return /* @__PURE__ */ jsxs20("figure", { className: "space-y-2", children: [
14909
- /* @__PURE__ */ jsx21("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx21(
14982
+ return /* @__PURE__ */ jsxs21("figure", { className: "space-y-2", children: [
14983
+ /* @__PURE__ */ jsx22("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx22(
14910
14984
  "img",
14911
14985
  {
14912
14986
  src: url,
@@ -14916,7 +14990,7 @@ function PairImage({ url, alt, label }) {
14916
14990
  className: "h-full w-full object-cover"
14917
14991
  }
14918
14992
  ) }),
14919
- /* @__PURE__ */ jsx21("figcaption", { className: "text-sm font-semibold", children: label })
14993
+ /* @__PURE__ */ jsx22("figcaption", { className: "text-sm font-semibold", children: label })
14920
14994
  ] });
14921
14995
  }
14922
14996
  function BeforeAfterPairs({
@@ -14928,26 +15002,26 @@ function BeforeAfterPairs({
14928
15002
  }) {
14929
15003
  const visibleCaption = showCaption && caption && caption.trim() !== "" ? caption : null;
14930
15004
  if (pairs.length === 0 && !visibleCaption) return null;
14931
- return /* @__PURE__ */ jsxs20("div", { "data-slot": "before-after", className: cn15("space-y-4", className), children: [
14932
- pairs.length > 0 && /* @__PURE__ */ jsx21("ul", { className: "grid gap-6 lg:grid-cols-2", children: pairs.map((pair, i) => /* @__PURE__ */ jsxs20(
15005
+ return /* @__PURE__ */ jsxs21("div", { "data-slot": "before-after", className: cn15("space-y-4", className), children: [
15006
+ pairs.length > 0 && /* @__PURE__ */ jsx22("ul", { className: "grid gap-6 lg:grid-cols-2", children: pairs.map((pair, i) => /* @__PURE__ */ jsxs21(
14933
15007
  "li",
14934
15008
  {
14935
15009
  "data-slot": "before-after-pair",
14936
15010
  className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
14937
15011
  children: [
14938
- /* @__PURE__ */ jsx21(PairImage, { url: pair.beforeUrl, alt: pair.alt ?? "", label: labels.before }),
14939
- /* @__PURE__ */ jsx21(PairImage, { url: pair.afterUrl, alt: pair.alt ?? "", label: labels.after })
15012
+ /* @__PURE__ */ jsx22(PairImage, { url: pair.beforeUrl, alt: pair.alt ?? "", label: labels.before }),
15013
+ /* @__PURE__ */ jsx22(PairImage, { url: pair.afterUrl, alt: pair.alt ?? "", label: labels.after })
14940
15014
  ]
14941
15015
  },
14942
15016
  `${pair.beforeUrl}-${pair.afterUrl}-${i}`
14943
15017
  )) }),
14944
- visibleCaption && /* @__PURE__ */ jsx21("p", { "data-slot": "before-after-caption", className: "whitespace-pre-line text-sm opacity-80", children: visibleCaption })
15018
+ visibleCaption && /* @__PURE__ */ jsx22("p", { "data-slot": "before-after-caption", className: "whitespace-pre-line text-sm opacity-80", children: visibleCaption })
14945
15019
  ] });
14946
15020
  }
14947
15021
  function ChipList({ items, className }) {
14948
15022
  const visible = items.filter((item) => item.trim() !== "");
14949
15023
  if (visible.length === 0) return null;
14950
- return /* @__PURE__ */ jsx21("ul", { "data-slot": "chip-list", className: cn15("flex flex-wrap gap-3", className), children: visible.map((item, i) => /* @__PURE__ */ jsx21(
15024
+ return /* @__PURE__ */ jsx22("ul", { "data-slot": "chip-list", className: cn15("flex flex-wrap gap-3", className), children: visible.map((item, i) => /* @__PURE__ */ jsx22(
14951
15025
  "li",
14952
15026
  {
14953
15027
  "data-slot": "chip",
@@ -14963,7 +15037,7 @@ function hasCardIcon(icon) {
14963
15037
  }
14964
15038
  function CardIconSvg({ icon, className }) {
14965
15039
  if (!hasCardIcon(icon)) return null;
14966
- return /* @__PURE__ */ jsx21(
15040
+ return /* @__PURE__ */ jsx22(
14967
15041
  "svg",
14968
15042
  {
14969
15043
  xmlns: "http://www.w3.org/2000/svg",
@@ -14977,29 +15051,29 @@ function CardIconSvg({ icon, className }) {
14977
15051
  focusable: "false",
14978
15052
  "data-icon": icon,
14979
15053
  className: cn15("h-5 w-5", className),
14980
- children: CARD_ICON_NODES[icon].map(([Tag, attrs], i) => /* @__PURE__ */ jsx21(Tag, { ...attrs }, i))
15054
+ children: CARD_ICON_NODES[icon].map(([Tag, attrs], i) => /* @__PURE__ */ jsx22(Tag, { ...attrs }, i))
14981
15055
  }
14982
15056
  );
14983
15057
  }
14984
15058
  function IconCardGrid({ items, intro, headingLevel = 3, className }) {
14985
15059
  const hasIntro = !!intro && intro.trim() !== "";
14986
15060
  if (items.length === 0 && !hasIntro) return null;
14987
- return /* @__PURE__ */ jsxs20("div", { "data-slot": "icon-cards", className: cn15("space-y-6", className), children: [
14988
- hasIntro && /* @__PURE__ */ jsx21("p", { className: "max-w-prose text-lg opacity-80", children: intro }),
14989
- items.length > 0 && /* @__PURE__ */ jsx21(
15061
+ return /* @__PURE__ */ jsxs21("div", { "data-slot": "icon-cards", className: cn15("space-y-6", className), children: [
15062
+ hasIntro && /* @__PURE__ */ jsx22("p", { className: "max-w-prose text-lg opacity-80", children: intro }),
15063
+ items.length > 0 && /* @__PURE__ */ jsx22(
14990
15064
  "ul",
14991
15065
  {
14992
15066
  "data-slot": "icon-card-grid",
14993
15067
  className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3",
14994
- children: items.map((item, i) => /* @__PURE__ */ jsxs20(
15068
+ children: items.map((item, i) => /* @__PURE__ */ jsxs21(
14995
15069
  "li",
14996
15070
  {
14997
15071
  "data-slot": "icon-card",
14998
15072
  className: "space-y-3 rounded-xl border border-border bg-card p-6 text-card-foreground",
14999
15073
  children: [
15000
- hasCardIcon(item.icon) && /* @__PURE__ */ jsx21("span", { className: "inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary", children: /* @__PURE__ */ jsx21(CardIconSvg, { icon: item.icon }) }),
15001
- /* @__PURE__ */ jsx21(Heading, { level: headingLevel, className: "text-lg font-semibold", children: item.title }),
15002
- item.text && /* @__PURE__ */ jsx21("p", { className: "text-muted-foreground", children: item.text })
15074
+ hasCardIcon(item.icon) && /* @__PURE__ */ jsx22("span", { className: "inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary", children: /* @__PURE__ */ jsx22(CardIconSvg, { icon: item.icon }) }),
15075
+ /* @__PURE__ */ jsx22(Heading, { level: headingLevel, className: "text-lg font-semibold", children: item.title }),
15076
+ item.text && /* @__PURE__ */ jsx22("p", { className: "text-muted-foreground", children: item.text })
15003
15077
  ]
15004
15078
  },
15005
15079
  `${item.title}-${i}`
@@ -15025,19 +15099,19 @@ function ImageTextSplit({
15025
15099
  const imageRight = imageSide === "right";
15026
15100
  const hasKicker = !!kicker && kicker.trim() !== "";
15027
15101
  const bodyOffset = heading ? headingLevel : headingLevel - 1;
15028
- return /* @__PURE__ */ jsxs20(
15102
+ return /* @__PURE__ */ jsxs21(
15029
15103
  "div",
15030
15104
  {
15031
15105
  "data-slot": "image-text",
15032
15106
  "data-image-side": imageRight ? "right" : "left",
15033
15107
  className: cn15("grid grid-cols-1 items-center gap-8 md:grid-cols-2", className),
15034
15108
  children: [
15035
- /* @__PURE__ */ jsx21(
15109
+ /* @__PURE__ */ jsx22(
15036
15110
  "div",
15037
15111
  {
15038
15112
  "data-slot": "image-text-media",
15039
15113
  className: cn15(textFirst ? "order-2" : "order-1", imageRight ? "md:order-2" : "md:order-1"),
15040
- children: /* @__PURE__ */ jsx21("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx21(
15114
+ children: /* @__PURE__ */ jsx22("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx22(
15041
15115
  "img",
15042
15116
  {
15043
15117
  src: imageUrl,
@@ -15049,7 +15123,7 @@ function ImageTextSplit({
15049
15123
  ) })
15050
15124
  }
15051
15125
  ),
15052
- /* @__PURE__ */ jsxs20(
15126
+ /* @__PURE__ */ jsxs21(
15053
15127
  "div",
15054
15128
  {
15055
15129
  "data-slot": "image-text-body",
@@ -15059,11 +15133,11 @@ function ImageTextSplit({
15059
15133
  imageRight ? "md:order-1" : "md:order-2"
15060
15134
  ),
15061
15135
  children: [
15062
- (hasKicker || heading) && /* @__PURE__ */ jsxs20("div", { className: "space-y-2", children: [
15063
- hasKicker && /* @__PURE__ */ jsx21("p", { "data-slot": "page-block-kicker", className: KICKER_CLASS_NAME, children: kicker }),
15064
- heading && /* @__PURE__ */ jsx21(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx21("span", { id: headingId, children: heading }) })
15136
+ (hasKicker || heading) && /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
15137
+ hasKicker && /* @__PURE__ */ jsx22("p", { "data-slot": "page-block-kicker", className: KICKER_CLASS_NAME, children: kicker }),
15138
+ heading && /* @__PURE__ */ jsx22(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx22("span", { id: headingId, children: heading }) })
15065
15139
  ] }),
15066
- html5 && /* @__PURE__ */ jsx21(SafeHtml, { html: sanitizeHtml(html5), headingOffset: bodyOffset })
15140
+ html5 && /* @__PURE__ */ jsx22(SafeHtml, { html: sanitizeHtml(html5), headingOffset: bodyOffset })
15067
15141
  ]
15068
15142
  }
15069
15143
  )
@@ -15073,38 +15147,38 @@ function ImageTextSplit({
15073
15147
  }
15074
15148
 
15075
15149
  // src/components/page-blocks.tsx
15076
- import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
15150
+ import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
15077
15151
  var ALIASES = {
15078
15152
  doctor_embed: "profile_embed",
15079
15153
  specialty_embed: "page_embed"
15080
15154
  };
15081
15155
  function HeroBlock({ block, headingLevel }) {
15082
15156
  const { title, subtitle, imageUrl } = block.data;
15083
- return /* @__PURE__ */ jsxs21("div", { className: "space-y-4", children: [
15084
- /* @__PURE__ */ jsx22(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
15085
- subtitle && /* @__PURE__ */ jsx22("p", { className: "text-lg opacity-80", children: subtitle }),
15086
- imageUrl && /* @__PURE__ */ jsx22("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx22("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
15157
+ return /* @__PURE__ */ jsxs22("div", { className: "space-y-4", children: [
15158
+ /* @__PURE__ */ jsx23(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
15159
+ subtitle && /* @__PURE__ */ jsx23("p", { className: "text-lg opacity-80", children: subtitle }),
15160
+ imageUrl && /* @__PURE__ */ jsx23("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx23("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
15087
15161
  ] });
15088
15162
  }
15089
15163
  function RichtextBlock({ block, headingLevel }) {
15090
- return /* @__PURE__ */ jsx22(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
15164
+ return /* @__PURE__ */ jsx23(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
15091
15165
  }
15092
15166
  function FaqBlock({ block }) {
15093
- return /* @__PURE__ */ jsx22(FaqAccordion, { items: block.data.items });
15167
+ return /* @__PURE__ */ jsx23(FaqAccordion, { items: block.data.items });
15094
15168
  }
15095
15169
  function StatsBlock({ block }) {
15096
- return /* @__PURE__ */ jsx22("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs21("div", { className: "flex flex-col-reverse gap-1", children: [
15097
- /* @__PURE__ */ jsx22("dt", { className: "text-sm opacity-80", children: item.label }),
15098
- /* @__PURE__ */ jsx22("dd", { className: "text-3xl font-bold", children: item.value })
15170
+ return /* @__PURE__ */ jsx23("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs22("div", { className: "flex flex-col-reverse gap-1", children: [
15171
+ /* @__PURE__ */ jsx23("dt", { className: "text-sm opacity-80", children: item.label }),
15172
+ /* @__PURE__ */ jsx23("dd", { className: "text-3xl font-bold", children: item.value })
15099
15173
  ] }, i)) });
15100
15174
  }
15101
15175
  function TestimonialBlock({ block }) {
15102
15176
  const { quote, author, role, avatarUrl } = block.data;
15103
- return /* @__PURE__ */ jsxs21("figure", { className: "space-y-4", children: [
15104
- /* @__PURE__ */ jsx22("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx22("p", { children: quote }) }),
15105
- /* @__PURE__ */ jsxs21("figcaption", { className: "flex items-center gap-3", children: [
15177
+ return /* @__PURE__ */ jsxs22("figure", { className: "space-y-4", children: [
15178
+ /* @__PURE__ */ jsx23("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx23("p", { children: quote }) }),
15179
+ /* @__PURE__ */ jsxs22("figcaption", { className: "flex items-center gap-3", children: [
15106
15180
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
15107
- /* @__PURE__ */ jsx22(
15181
+ /* @__PURE__ */ jsx23(
15108
15182
  "img",
15109
15183
  {
15110
15184
  src: avatarUrl,
@@ -15113,9 +15187,9 @@ function TestimonialBlock({ block }) {
15113
15187
  className: "h-10 w-10 rounded-full object-cover"
15114
15188
  }
15115
15189
  ),
15116
- /* @__PURE__ */ jsxs21("span", { children: [
15117
- /* @__PURE__ */ jsx22("span", { className: "font-semibold", children: author }),
15118
- role && /* @__PURE__ */ jsx22("span", { className: "block text-sm opacity-80", children: role })
15190
+ /* @__PURE__ */ jsxs22("span", { children: [
15191
+ /* @__PURE__ */ jsx23("span", { className: "font-semibold", children: author }),
15192
+ role && /* @__PURE__ */ jsx23("span", { className: "block text-sm opacity-80", children: role })
15119
15193
  ] })
15120
15194
  ] })
15121
15195
  ] });
@@ -15124,19 +15198,19 @@ function CtaSlotBlock(_props) {
15124
15198
  return null;
15125
15199
  }
15126
15200
  function FeatureListBlock({ block }) {
15127
- return /* @__PURE__ */ jsx22("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx22("li", { children: item.text }, i)) });
15201
+ return /* @__PURE__ */ jsx23("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx23("li", { children: item.text }, i)) });
15128
15202
  }
15129
15203
  function GalleryBlock({ block }) {
15130
15204
  const { images } = block.data;
15131
- return /* @__PURE__ */ jsx22(
15205
+ return /* @__PURE__ */ jsx23(
15132
15206
  "div",
15133
15207
  {
15134
15208
  className: cn16(
15135
15209
  "grid gap-4",
15136
15210
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
15137
15211
  ),
15138
- children: images.map((img, i) => /* @__PURE__ */ jsxs21("figure", { className: "space-y-1", children: [
15139
- /* @__PURE__ */ jsx22("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx22(
15212
+ children: images.map((img, i) => /* @__PURE__ */ jsxs22("figure", { className: "space-y-1", children: [
15213
+ /* @__PURE__ */ jsx23("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx23(
15140
15214
  "img",
15141
15215
  {
15142
15216
  src: img.url,
@@ -15145,7 +15219,7 @@ function GalleryBlock({ block }) {
15145
15219
  className: "h-full w-full object-cover"
15146
15220
  }
15147
15221
  ) }),
15148
- img.caption && /* @__PURE__ */ jsx22("figcaption", { className: "text-sm opacity-80", children: img.caption })
15222
+ img.caption && /* @__PURE__ */ jsx23("figcaption", { className: "text-sm opacity-80", children: img.caption })
15149
15223
  ] }, `${img.url}-${i}`))
15150
15224
  }
15151
15225
  );
@@ -15155,13 +15229,13 @@ function EmbedCard({
15155
15229
  headingLevel,
15156
15230
  embedHref
15157
15231
  }) {
15158
- return /* @__PURE__ */ jsxs21(
15232
+ return /* @__PURE__ */ jsxs22(
15159
15233
  "a",
15160
15234
  {
15161
15235
  href: embedHref(resolved),
15162
15236
  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",
15163
15237
  children: [
15164
- resolved.coverImageUrl && /* @__PURE__ */ jsx22("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx22(
15238
+ resolved.coverImageUrl && /* @__PURE__ */ jsx23("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx23(
15165
15239
  "img",
15166
15240
  {
15167
15241
  src: resolved.coverImageUrl,
@@ -15170,35 +15244,35 @@ function EmbedCard({
15170
15244
  className: "h-full w-full object-cover"
15171
15245
  }
15172
15246
  ) }),
15173
- /* @__PURE__ */ jsxs21("div", { className: "space-y-1 p-4", children: [
15174
- /* @__PURE__ */ jsx22(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
15175
- resolved.role && /* @__PURE__ */ jsx22("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
15176
- resolved.excerpt && /* @__PURE__ */ jsx22("p", { className: "text-muted-foreground", children: resolved.excerpt })
15247
+ /* @__PURE__ */ jsxs22("div", { className: "space-y-1 p-4", children: [
15248
+ /* @__PURE__ */ jsx23(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
15249
+ resolved.role && /* @__PURE__ */ jsx23("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
15250
+ resolved.excerpt && /* @__PURE__ */ jsx23("p", { className: "text-muted-foreground", children: resolved.excerpt })
15177
15251
  ] })
15178
15252
  ]
15179
15253
  }
15180
15254
  );
15181
15255
  }
15182
15256
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
15183
- return /* @__PURE__ */ jsx22(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
15257
+ return /* @__PURE__ */ jsx23(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
15184
15258
  }
15185
15259
  function ProfileEmbedBlock({
15186
15260
  block,
15187
15261
  headingLevel,
15188
15262
  embedHref
15189
15263
  }) {
15190
- return /* @__PURE__ */ jsx22(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
15264
+ return /* @__PURE__ */ jsx23(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
15191
15265
  }
15192
15266
  function BeforeAfterBlock({ block }) {
15193
15267
  const { pairs, showCaption, caption } = block.data;
15194
- return /* @__PURE__ */ jsx22(BeforeAfterPairs, { pairs, showCaption, caption });
15268
+ return /* @__PURE__ */ jsx23(BeforeAfterPairs, { pairs, showCaption, caption });
15195
15269
  }
15196
15270
  function ChipsBlock({ block }) {
15197
- return /* @__PURE__ */ jsx22(ChipList, { items: block.data.items });
15271
+ return /* @__PURE__ */ jsx23(ChipList, { items: block.data.items });
15198
15272
  }
15199
15273
  function ImageTextBlock({ block, headingLevel, headingId }) {
15200
15274
  const { kicker, imageUrl, alt, imageSide, mobileOrder, html: html5 } = block.data;
15201
- return /* @__PURE__ */ jsx22(
15275
+ return /* @__PURE__ */ jsx23(
15202
15276
  ImageTextSplit,
15203
15277
  {
15204
15278
  imageUrl,
@@ -15214,11 +15288,11 @@ function ImageTextBlock({ block, headingLevel, headingId }) {
15214
15288
  );
15215
15289
  }
15216
15290
  function IconCardsBlock({ block, headingLevel }) {
15217
- return /* @__PURE__ */ jsx22(IconCardGrid, { items: block.data.items, intro: block.data.intro, headingLevel });
15291
+ return /* @__PURE__ */ jsx23(IconCardGrid, { items: block.data.items, intro: block.data.intro, headingLevel });
15218
15292
  }
15219
15293
  function ReviewsBlock({ block }) {
15220
15294
  const { layout, notice } = block.data;
15221
- return /* @__PURE__ */ jsx22("div", { "data-slot": "reviews-block", "data-reviews-layout": layout ?? "grid", children: /* @__PURE__ */ jsx22(
15295
+ return /* @__PURE__ */ jsx23("div", { "data-slot": "reviews-block", "data-reviews-layout": layout ?? "grid", children: /* @__PURE__ */ jsx23(
15222
15296
  Reviews,
15223
15297
  {
15224
15298
  reviews: block.reviews,
@@ -15299,7 +15373,7 @@ function toIdFragment(value) {
15299
15373
  function SectionCta2({ cta }) {
15300
15374
  if (!hasUsableCta(cta)) return null;
15301
15375
  const variant = toButtonVariant(cta.variant);
15302
- return /* @__PURE__ */ jsx22("div", { className: "pt-2", children: /* @__PURE__ */ jsx22(
15376
+ return /* @__PURE__ */ jsx23("div", { className: "pt-2", children: /* @__PURE__ */ jsx23(
15303
15377
  "a",
15304
15378
  {
15305
15379
  href: cta.url,
@@ -15336,7 +15410,7 @@ function PageBlocks({
15336
15410
  const kicker = kickerOf(type, block);
15337
15411
  const ownsHeading = OWN_HEADING_TYPES.has(type);
15338
15412
  return [
15339
- /* @__PURE__ */ jsxs21(
15413
+ /* @__PURE__ */ jsxs22(
15340
15414
  "section",
15341
15415
  {
15342
15416
  "data-slot": "page-block",
@@ -15345,9 +15419,9 @@ function PageBlocks({
15345
15419
  style: surfaceStyle(background),
15346
15420
  className: cn16("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
15347
15421
  children: [
15348
- kicker && /* @__PURE__ */ jsx22("p", { "data-slot": "page-block-kicker", className: cn16("-mb-4", KICKER_CLASS_NAME), children: kicker }),
15349
- block.heading && !ownsHeading && /* @__PURE__ */ jsx22(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx22("span", { id: headingId, children: block.heading }) }),
15350
- ownsHeading ? /* @__PURE__ */ jsx22(
15422
+ kicker && /* @__PURE__ */ jsx23("p", { "data-slot": "page-block-kicker", className: cn16("-mb-4", KICKER_CLASS_NAME), children: kicker }),
15423
+ block.heading && !ownsHeading && /* @__PURE__ */ jsx23(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx23("span", { id: headingId, children: block.heading }) }),
15424
+ ownsHeading ? /* @__PURE__ */ jsx23(
15351
15425
  Renderer,
15352
15426
  {
15353
15427
  block,
@@ -15355,7 +15429,7 @@ function PageBlocks({
15355
15429
  embedHref,
15356
15430
  headingId
15357
15431
  }
15358
- ) : /* @__PURE__ */ jsx22(
15432
+ ) : /* @__PURE__ */ jsx23(
15359
15433
  Renderer,
15360
15434
  {
15361
15435
  block,
@@ -15363,7 +15437,7 @@ function PageBlocks({
15363
15437
  embedHref
15364
15438
  }
15365
15439
  ),
15366
- /* @__PURE__ */ jsx22(SectionCta2, { cta: block.cta })
15440
+ /* @__PURE__ */ jsx23(SectionCta2, { cta: block.cta })
15367
15441
  ]
15368
15442
  },
15369
15443
  block.id
@@ -15371,12 +15445,12 @@ function PageBlocks({
15371
15445
  ];
15372
15446
  });
15373
15447
  if (sections.length === 0) return null;
15374
- return /* @__PURE__ */ jsx22("div", { className: cn16("space-y-12", className), "data-slot": "page-blocks", children: sections });
15448
+ return /* @__PURE__ */ jsx23("div", { className: cn16("space-y-12", className), "data-slot": "page-blocks", children: sections });
15375
15449
  }
15376
15450
 
15377
15451
  // src/components/shop-filters.tsx
15378
15452
  import { cn as cn17 } from "@reblu/site-ui/utils";
15379
- import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
15453
+ import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
15380
15454
  var DEFAULT_SHOP_PRICE_BANDS = [
15381
15455
  { max: 2500 },
15382
15456
  { min: 2500, max: 5e3 },
@@ -15420,7 +15494,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
15420
15494
  return "";
15421
15495
  }
15422
15496
  function OptionLink({ href, active, label, onActivate }) {
15423
- return /* @__PURE__ */ jsx23(
15497
+ return /* @__PURE__ */ jsx24(
15424
15498
  "a",
15425
15499
  {
15426
15500
  href,
@@ -15438,9 +15512,9 @@ function OptionLink({ href, active, label, onActivate }) {
15438
15512
  );
15439
15513
  }
15440
15514
  function FilterFieldset({ legend, children: children2 }) {
15441
- return /* @__PURE__ */ jsxs22("fieldset", { className: "space-y-2", children: [
15442
- /* @__PURE__ */ jsx23("legend", { className: "text-sm font-medium text-foreground", children: legend }),
15443
- /* @__PURE__ */ jsx23("div", { className: "flex flex-wrap gap-2", children: children2 })
15515
+ return /* @__PURE__ */ jsxs23("fieldset", { className: "space-y-2", children: [
15516
+ /* @__PURE__ */ jsx24("legend", { className: "text-sm font-medium text-foreground", children: legend }),
15517
+ /* @__PURE__ */ jsx24("div", { className: "flex flex-wrap gap-2", children: children2 })
15444
15518
  ] });
15445
15519
  }
15446
15520
  function ShopFilters({
@@ -15463,11 +15537,11 @@ function ShopFilters({
15463
15537
  if (!shouldRenderShopFilters(facets, active)) {
15464
15538
  return null;
15465
15539
  }
15466
- return /* @__PURE__ */ jsxs22("div", { className: cn17("space-y-6", className), "data-slot": "shop-filters", children: [
15540
+ return /* @__PURE__ */ jsxs23("div", { className: cn17("space-y-6", className), "data-slot": "shop-filters", children: [
15467
15541
  visibleTaxonomies.map((axis) => {
15468
15542
  const activeSlug = active.taxonomy?.[axis.key];
15469
- return /* @__PURE__ */ jsxs22(FilterFieldset, { legend: axis.label, children: [
15470
- /* @__PURE__ */ jsx23(
15543
+ return /* @__PURE__ */ jsxs23(FilterFieldset, { legend: axis.label, children: [
15544
+ /* @__PURE__ */ jsx24(
15471
15545
  OptionLink,
15472
15546
  {
15473
15547
  href: hrefs.taxonomy(axis.key, void 0),
@@ -15482,7 +15556,7 @@ function ShopFilters({
15482
15556
  ),
15483
15557
  axis.terms.map((term) => {
15484
15558
  const isActive = activeSlug === term.slug;
15485
- return /* @__PURE__ */ jsx23(
15559
+ return /* @__PURE__ */ jsx24(
15486
15560
  OptionLink,
15487
15561
  {
15488
15562
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -15502,9 +15576,9 @@ function ShopFilters({
15502
15576
  }),
15503
15577
  visibleAttributes.map((attr) => {
15504
15578
  const activeValues = toValueArray(active.attr?.[attr.key]);
15505
- return /* @__PURE__ */ jsx23(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
15579
+ return /* @__PURE__ */ jsx24(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
15506
15580
  const isActive = activeValues.includes(opt.value);
15507
- return /* @__PURE__ */ jsx23(
15581
+ return /* @__PURE__ */ jsx24(
15508
15582
  OptionLink,
15509
15583
  {
15510
15584
  href: hrefs.attr(attr.key, opt.value),
@@ -15522,11 +15596,11 @@ function ShopFilters({
15522
15596
  );
15523
15597
  }) }, attr.key);
15524
15598
  }),
15525
- showPriceGroup && /* @__PURE__ */ jsx23(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
15599
+ showPriceGroup && /* @__PURE__ */ jsx24(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
15526
15600
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
15527
15601
  const nextMin = isActive ? void 0 : band.min;
15528
15602
  const nextMax = isActive ? void 0 : band.max;
15529
- return /* @__PURE__ */ jsx23(
15603
+ return /* @__PURE__ */ jsx24(
15530
15604
  OptionLink,
15531
15605
  {
15532
15606
  href: hrefs.price(nextMin, nextMax),
@@ -15537,7 +15611,7 @@ function ShopFilters({
15537
15611
  i
15538
15612
  );
15539
15613
  }) }),
15540
- hasOnSale && /* @__PURE__ */ jsx23(
15614
+ hasOnSale && /* @__PURE__ */ jsx24(
15541
15615
  OptionLink,
15542
15616
  {
15543
15617
  href: hrefs.onSale(!active.onSale),
@@ -15546,7 +15620,7 @@ function ShopFilters({
15546
15620
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
15547
15621
  }
15548
15622
  ),
15549
- /* @__PURE__ */ jsx23(
15623
+ /* @__PURE__ */ jsx24(
15550
15624
  "a",
15551
15625
  {
15552
15626
  href: hrefs.clearAll(),
@@ -15563,7 +15637,7 @@ function ShopFilters({
15563
15637
 
15564
15638
  // src/components/course-catalog-filters.tsx
15565
15639
  import { cn as cn18 } from "@reblu/site-ui/utils";
15566
- import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
15640
+ import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
15567
15641
  var DEFAULT_COURSE_PRICE_BANDS = [
15568
15642
  { max: 5e3 },
15569
15643
  { min: 5e3, max: 15e3 },
@@ -15616,9 +15690,9 @@ function CourseCatalogFilters({
15616
15690
  const showPrice = enabled.price !== false;
15617
15691
  const isFree = Boolean(active.free);
15618
15692
  if (!showCategories && !showInstructors && !showPrice) return null;
15619
- return /* @__PURE__ */ jsxs23("div", { className: cn18("space-y-6", className), "data-slot": "course-catalog-filters", children: [
15620
- showCategories && /* @__PURE__ */ jsxs23(FilterFieldset, { legend: t.category, children: [
15621
- /* @__PURE__ */ jsx24(
15693
+ return /* @__PURE__ */ jsxs24("div", { className: cn18("space-y-6", className), "data-slot": "course-catalog-filters", children: [
15694
+ showCategories && /* @__PURE__ */ jsxs24(FilterFieldset, { legend: t.category, children: [
15695
+ /* @__PURE__ */ jsx25(
15622
15696
  OptionLink,
15623
15697
  {
15624
15698
  href: categoryHref(void 0),
@@ -15630,7 +15704,7 @@ function CourseCatalogFilters({
15630
15704
  sortedCategories.map((category) => {
15631
15705
  const isActive = active.category === category.slug;
15632
15706
  const next2 = isActive ? void 0 : category.slug;
15633
- return /* @__PURE__ */ jsx24(
15707
+ return /* @__PURE__ */ jsx25(
15634
15708
  OptionLink,
15635
15709
  {
15636
15710
  href: categoryHref(next2),
@@ -15642,8 +15716,8 @@ function CourseCatalogFilters({
15642
15716
  );
15643
15717
  })
15644
15718
  ] }),
15645
- showInstructors && /* @__PURE__ */ jsxs23(FilterFieldset, { legend: t.instructor, children: [
15646
- /* @__PURE__ */ jsx24(
15719
+ showInstructors && /* @__PURE__ */ jsxs24(FilterFieldset, { legend: t.instructor, children: [
15720
+ /* @__PURE__ */ jsx25(
15647
15721
  OptionLink,
15648
15722
  {
15649
15723
  href: hrefs.instructor(void 0),
@@ -15655,7 +15729,7 @@ function CourseCatalogFilters({
15655
15729
  named.map((instructor) => {
15656
15730
  const isActive = active.instructor === instructor.id;
15657
15731
  const next2 = isActive ? void 0 : instructor.id;
15658
- return /* @__PURE__ */ jsx24(
15732
+ return /* @__PURE__ */ jsx25(
15659
15733
  OptionLink,
15660
15734
  {
15661
15735
  href: hrefs.instructor(next2),
@@ -15667,8 +15741,8 @@ function CourseCatalogFilters({
15667
15741
  );
15668
15742
  })
15669
15743
  ] }),
15670
- showPrice && /* @__PURE__ */ jsxs23(FilterFieldset, { legend: t.price, children: [
15671
- /* @__PURE__ */ jsx24(
15744
+ showPrice && /* @__PURE__ */ jsxs24(FilterFieldset, { legend: t.price, children: [
15745
+ /* @__PURE__ */ jsx25(
15672
15746
  OptionLink,
15673
15747
  {
15674
15748
  href: hrefs.free(!isFree),
@@ -15683,7 +15757,7 @@ function CourseCatalogFilters({
15683
15757
  const isActive = !isFree && active.priceMin === band.min && active.priceMax === band.max;
15684
15758
  const nextMin = isActive ? void 0 : band.min;
15685
15759
  const nextMax = isActive ? void 0 : band.max;
15686
- return /* @__PURE__ */ jsx24(
15760
+ return /* @__PURE__ */ jsx25(
15687
15761
  OptionLink,
15688
15762
  {
15689
15763
  href: hrefs.price(nextMin, nextMax),
@@ -15695,7 +15769,7 @@ function CourseCatalogFilters({
15695
15769
  );
15696
15770
  })
15697
15771
  ] }),
15698
- /* @__PURE__ */ jsx24(
15772
+ /* @__PURE__ */ jsx25(
15699
15773
  "a",
15700
15774
  {
15701
15775
  href: hrefs.clearAll(),
@@ -15718,7 +15792,7 @@ function CourseCatalogFilters({
15718
15792
 
15719
15793
  // src/components/cart-line-list.tsx
15720
15794
  import { cn as cn19 } from "@reblu/site-ui/utils";
15721
- import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
15795
+ import { jsx as jsx26, jsxs as jsxs25 } from "react/jsx-runtime";
15722
15796
  var DEFAULT_LABELS2 = {
15723
15797
  quantityLabel: "Cantidad",
15724
15798
  decrease: "Reducir cantidad",
@@ -15731,20 +15805,20 @@ var DEFAULT_LABELS2 = {
15731
15805
  function CartLineIncludes({ entries, note, className }) {
15732
15806
  const hasNote = note != null && note !== false && note !== "";
15733
15807
  if (entries.length === 0 && !hasNote) return null;
15734
- return /* @__PURE__ */ jsxs24(
15808
+ return /* @__PURE__ */ jsxs25(
15735
15809
  "div",
15736
15810
  {
15737
15811
  className: cn19("mt-2 space-y-2 rounded-lg bg-muted px-4 py-3 text-sm", className),
15738
15812
  "data-slot": "cart-line-includes",
15739
15813
  children: [
15740
- entries.length > 0 && /* @__PURE__ */ jsx25("dl", { className: "grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5", children: entries.map((entry, idx) => (
15814
+ entries.length > 0 && /* @__PURE__ */ jsx26("dl", { className: "grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5", children: entries.map((entry, idx) => (
15741
15815
  // eslint-disable-next-line react/no-array-index-key -- entries are positional, SITE-built rows
15742
- /* @__PURE__ */ jsxs24("div", { className: "contents", children: [
15743
- /* @__PURE__ */ jsx25("dt", { className: "font-semibold text-muted-foreground", children: entry.label }),
15744
- /* @__PURE__ */ jsx25("dd", { className: "m-0", children: entry.value })
15816
+ /* @__PURE__ */ jsxs25("div", { className: "contents", children: [
15817
+ /* @__PURE__ */ jsx26("dt", { className: "font-semibold text-muted-foreground", children: entry.label }),
15818
+ /* @__PURE__ */ jsx26("dd", { className: "m-0", children: entry.value })
15745
15819
  ] }, idx)
15746
15820
  )) }),
15747
- hasNote && /* @__PURE__ */ jsx25("p", { className: "text-muted-foreground", children: note })
15821
+ hasNote && /* @__PURE__ */ jsx26("p", { className: "text-muted-foreground", children: note })
15748
15822
  ]
15749
15823
  }
15750
15824
  );
@@ -15773,9 +15847,9 @@ function CartLineList({
15773
15847
  }) {
15774
15848
  const t = { ...DEFAULT_LABELS2, ...labels };
15775
15849
  const noticeContent = notice === true ? t.cancelledNotice : notice;
15776
- return /* @__PURE__ */ jsxs24("div", { className: cn19("space-y-4", className), "data-slot": "cart-line-list", children: [
15777
- /* @__PURE__ */ jsx25("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
15778
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx25(
15850
+ return /* @__PURE__ */ jsxs25("div", { className: cn19("space-y-4", className), "data-slot": "cart-line-list", children: [
15851
+ /* @__PURE__ */ jsx26("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
15852
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx26(
15779
15853
  "div",
15780
15854
  {
15781
15855
  role: "status",
@@ -15784,34 +15858,34 @@ function CartLineList({
15784
15858
  children: noticeContent
15785
15859
  }
15786
15860
  ),
15787
- /* @__PURE__ */ jsx25("ul", { className: "space-y-4", children: items.map((item) => {
15861
+ /* @__PURE__ */ jsx26("ul", { className: "space-y-4", children: items.map((item) => {
15788
15862
  const maxQty = item.maxStock ?? Infinity;
15789
15863
  const atMax = item.quantity >= maxQty;
15790
15864
  const atMin = item.quantity <= 1;
15791
15865
  const message = lineMessage?.(item);
15792
15866
  const includes = lineIncludes?.(item);
15793
- return /* @__PURE__ */ jsxs24(
15867
+ return /* @__PURE__ */ jsxs25(
15794
15868
  "li",
15795
15869
  {
15796
15870
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
15797
15871
  children: [
15798
- /* @__PURE__ */ jsx25("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx25("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15799
- /* @__PURE__ */ jsxs24("div", { className: "min-w-0 flex-1", children: [
15800
- /* @__PURE__ */ jsx25("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15801
- item.variantName && /* @__PURE__ */ jsx25("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15802
- /* @__PURE__ */ jsxs24("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15872
+ /* @__PURE__ */ jsx26("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx26("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
15873
+ /* @__PURE__ */ jsxs25("div", { className: "min-w-0 flex-1", children: [
15874
+ /* @__PURE__ */ jsx26("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
15875
+ item.variantName && /* @__PURE__ */ jsx26("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
15876
+ /* @__PURE__ */ jsxs25("p", { className: "mt-1 text-sm text-muted-foreground", children: [
15803
15877
  formatPrice(item.unitPrice, currencyCode, locale),
15804
15878
  " ",
15805
15879
  t.unitPriceSuffix
15806
15880
  ] }),
15807
- /* @__PURE__ */ jsxs24(
15881
+ /* @__PURE__ */ jsxs25(
15808
15882
  "div",
15809
15883
  {
15810
15884
  role: "group",
15811
15885
  "aria-label": t.quantityLabel,
15812
15886
  className: "mt-3 flex items-center gap-3",
15813
15887
  children: [
15814
- /* @__PURE__ */ jsx25(
15888
+ /* @__PURE__ */ jsx26(
15815
15889
  "button",
15816
15890
  {
15817
15891
  type: "button",
@@ -15822,8 +15896,8 @@ function CartLineList({
15822
15896
  children: "\u2212"
15823
15897
  }
15824
15898
  ),
15825
- /* @__PURE__ */ jsx25("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15826
- /* @__PURE__ */ jsx25(
15899
+ /* @__PURE__ */ jsx26("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
15900
+ /* @__PURE__ */ jsx26(
15827
15901
  "button",
15828
15902
  {
15829
15903
  type: "button",
@@ -15834,7 +15908,7 @@ function CartLineList({
15834
15908
  children: "+"
15835
15909
  }
15836
15910
  ),
15837
- onRemove && /* @__PURE__ */ jsx25(
15911
+ onRemove && /* @__PURE__ */ jsx26(
15838
15912
  "button",
15839
15913
  {
15840
15914
  type: "button",
@@ -15847,7 +15921,7 @@ function CartLineList({
15847
15921
  ]
15848
15922
  }
15849
15923
  ),
15850
- message != null && message !== false && /* @__PURE__ */ jsx25(
15924
+ message != null && message !== false && /* @__PURE__ */ jsx26(
15851
15925
  "p",
15852
15926
  {
15853
15927
  className: "mt-2 text-sm text-destructive",
@@ -15855,12 +15929,12 @@ function CartLineList({
15855
15929
  children: message
15856
15930
  }
15857
15931
  ),
15858
- includes != null && includes !== false && /* @__PURE__ */ jsxs24("details", { className: "mt-2", "data-slot": "cart-line-list-includes", children: [
15859
- /* @__PURE__ */ jsx25("summary", { className: "cursor-pointer text-sm font-semibold text-primary", children: t.includesSummary }),
15932
+ includes != null && includes !== false && /* @__PURE__ */ jsxs25("details", { className: "mt-2", "data-slot": "cart-line-list-includes", children: [
15933
+ /* @__PURE__ */ jsx26("summary", { className: "cursor-pointer text-sm font-semibold text-primary", children: t.includesSummary }),
15860
15934
  includes
15861
15935
  ] })
15862
15936
  ] }),
15863
- /* @__PURE__ */ jsx25("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx25("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15937
+ /* @__PURE__ */ jsx26("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx26("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
15864
15938
  ]
15865
15939
  },
15866
15940
  lineKey(item.productId, item.variantId)
@@ -15871,7 +15945,7 @@ function CartLineList({
15871
15945
 
15872
15946
  // src/components/cart-summary.tsx
15873
15947
  import { cn as cn20 } from "@reblu/site-ui/utils";
15874
- import { jsx as jsx26, jsxs as jsxs25 } from "react/jsx-runtime";
15948
+ import { jsx as jsx27, jsxs as jsxs26 } from "react/jsx-runtime";
15875
15949
  var DEFAULT_LABELS3 = {
15876
15950
  subtotal: "Subtotal",
15877
15951
  discountPrefix: "Descuento",
@@ -15901,37 +15975,37 @@ function CartSummary({
15901
15975
  const hasDiscount = Boolean(discountAmount && discountAmount > 0);
15902
15976
  const noticeContent = notice === true ? t.cancelledNotice : notice;
15903
15977
  const hasNotice = noticeContent != null && noticeContent !== false;
15904
- const breakdown = /* @__PURE__ */ jsxs25(
15978
+ const breakdown = /* @__PURE__ */ jsxs26(
15905
15979
  "dl",
15906
15980
  {
15907
15981
  className: cn20("space-y-2 text-sm", !hasNotice && className),
15908
15982
  "data-slot": "cart-summary",
15909
15983
  children: [
15910
- /* @__PURE__ */ jsxs25("div", { className: "flex justify-between text-muted-foreground", children: [
15911
- /* @__PURE__ */ jsx26("dt", { children: t.subtotal }),
15912
- /* @__PURE__ */ jsx26("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15984
+ /* @__PURE__ */ jsxs26("div", { className: "flex justify-between text-muted-foreground", children: [
15985
+ /* @__PURE__ */ jsx27("dt", { children: t.subtotal }),
15986
+ /* @__PURE__ */ jsx27("dd", { children: formatPrice(subtotal, currencyCode, locale) })
15913
15987
  ] }),
15914
- hasDiscount && /* @__PURE__ */ jsxs25("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15915
- /* @__PURE__ */ jsx26("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15916
- /* @__PURE__ */ jsxs25("dd", { children: [
15988
+ hasDiscount && /* @__PURE__ */ jsxs26("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
15989
+ /* @__PURE__ */ jsx27("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
15990
+ /* @__PURE__ */ jsxs26("dd", { children: [
15917
15991
  "-",
15918
15992
  formatPrice(discountAmount, currencyCode, locale)
15919
15993
  ] })
15920
15994
  ] }),
15921
- shippingEnabled && /* @__PURE__ */ jsxs25("div", { className: "flex justify-between text-muted-foreground", children: [
15922
- /* @__PURE__ */ jsx26("dt", { children: t.shipping }),
15923
- /* @__PURE__ */ jsx26("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15995
+ shippingEnabled && /* @__PURE__ */ jsxs26("div", { className: "flex justify-between text-muted-foreground", children: [
15996
+ /* @__PURE__ */ jsx27("dt", { children: t.shipping }),
15997
+ /* @__PURE__ */ jsx27("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
15924
15998
  ] }),
15925
- /* @__PURE__ */ jsxs25("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
15926
- /* @__PURE__ */ jsx26("dt", { children: t.total }),
15927
- /* @__PURE__ */ jsx26("dd", { children: formatPrice(total, currencyCode, locale) })
15999
+ /* @__PURE__ */ jsxs26("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
16000
+ /* @__PURE__ */ jsx27("dt", { children: t.total }),
16001
+ /* @__PURE__ */ jsx27("dd", { children: formatPrice(total, currencyCode, locale) })
15928
16002
  ] })
15929
16003
  ]
15930
16004
  }
15931
16005
  );
15932
16006
  if (!hasNotice) return breakdown;
15933
- return /* @__PURE__ */ jsxs25("div", { className: cn20("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
15934
- /* @__PURE__ */ jsx26(
16007
+ return /* @__PURE__ */ jsxs26("div", { className: cn20("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
16008
+ /* @__PURE__ */ jsx27(
15935
16009
  "div",
15936
16010
  {
15937
16011
  role: "status",
@@ -15946,7 +16020,7 @@ function CartSummary({
15946
16020
 
15947
16021
  // src/components/cart-adjustments-notice.tsx
15948
16022
  import { cn as cn21 } from "@reblu/site-ui/utils";
15949
- import { jsx as jsx27 } from "react/jsx-runtime";
16023
+ import { jsx as jsx28 } from "react/jsx-runtime";
15950
16024
  var DEFAULT_LABELS4 = {
15951
16025
  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.`,
15952
16026
  quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
@@ -15980,20 +16054,20 @@ function CartAdjustmentsNotice({
15980
16054
  );
15981
16055
  }
15982
16056
  if (messages.length === 0) return null;
15983
- return /* @__PURE__ */ jsx27(
16057
+ return /* @__PURE__ */ jsx28(
15984
16058
  "div",
15985
16059
  {
15986
16060
  role: "status",
15987
16061
  className: cn21("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
15988
16062
  "data-slot": "cart-adjustments-notice",
15989
- children: messages.length === 1 ? /* @__PURE__ */ jsx27("p", { children: messages[0] }) : /* @__PURE__ */ jsx27("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx27("li", { children: message }, index)) })
16063
+ children: messages.length === 1 ? /* @__PURE__ */ jsx28("p", { children: messages[0] }) : /* @__PURE__ */ jsx28("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx28("li", { children: message }, index)) })
15990
16064
  }
15991
16065
  );
15992
16066
  }
15993
16067
 
15994
16068
  // src/components/added-to-cart-toast.tsx
15995
16069
  import { cn as cn22 } from "@reblu/site-ui/utils";
15996
- import { jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
16070
+ import { jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
15997
16071
  var DEFAULT_LABELS5 = {
15998
16072
  success: "A\xF1adido al carrito",
15999
16073
  error: "No se pudo a\xF1adir al carrito",
@@ -16013,7 +16087,7 @@ function AddedToCartToast({
16013
16087
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
16014
16088
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
16015
16089
  const variant = status === "success" ? "success" : "error";
16016
- return /* @__PURE__ */ jsxs26(
16090
+ return /* @__PURE__ */ jsxs27(
16017
16091
  "div",
16018
16092
  {
16019
16093
  "data-slot": "added-to-cart-toast",
@@ -16026,12 +16100,12 @@ function AddedToCartToast({
16026
16100
  ),
16027
16101
  children: [
16028
16102
  hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
16029
- /* @__PURE__ */ jsx28("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
16030
- /* @__PURE__ */ jsxs26("div", { className: "min-w-0 flex-1", children: [
16031
- /* @__PURE__ */ jsx28("p", { className: "truncate font-semibold text-foreground", children: productName }),
16032
- /* @__PURE__ */ jsx28("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
16103
+ /* @__PURE__ */ jsx29("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
16104
+ /* @__PURE__ */ jsxs27("div", { className: "min-w-0 flex-1", children: [
16105
+ /* @__PURE__ */ jsx29("p", { className: "truncate font-semibold text-foreground", children: productName }),
16106
+ /* @__PURE__ */ jsx29("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
16033
16107
  ] }),
16034
- /* @__PURE__ */ jsx28("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx28("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
16108
+ /* @__PURE__ */ jsx29("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx29("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
16035
16109
  ]
16036
16110
  }
16037
16111
  );
@@ -16039,7 +16113,7 @@ function AddedToCartToast({
16039
16113
 
16040
16114
  // src/components/checkout-login-prompt.tsx
16041
16115
  import { cn as cn23 } from "@reblu/site-ui/utils";
16042
- import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
16116
+ import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs28 } from "react/jsx-runtime";
16043
16117
  var DEFAULT_LABELS6 = {
16044
16118
  title: "Identificaci\xF3n",
16045
16119
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -16066,9 +16140,9 @@ function CheckoutLoginPrompt({
16066
16140
  if (!open) return null;
16067
16141
  const t = { ...DEFAULT_LABELS6, ...labels };
16068
16142
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
16069
- return /* @__PURE__ */ jsxs27(Fragment5, { children: [
16070
- /* @__PURE__ */ jsx29("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
16071
- /* @__PURE__ */ jsxs27(
16143
+ return /* @__PURE__ */ jsxs28(Fragment5, { children: [
16144
+ /* @__PURE__ */ jsx30("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
16145
+ /* @__PURE__ */ jsxs28(
16072
16146
  "div",
16073
16147
  {
16074
16148
  role: "dialog",
@@ -16080,12 +16154,12 @@ function CheckoutLoginPrompt({
16080
16154
  className
16081
16155
  ),
16082
16156
  children: [
16083
- /* @__PURE__ */ jsxs27("div", { className: "flex items-start justify-between gap-3", children: [
16084
- /* @__PURE__ */ jsxs27("div", { children: [
16085
- /* @__PURE__ */ jsx29("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
16086
- /* @__PURE__ */ jsx29("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
16157
+ /* @__PURE__ */ jsxs28("div", { className: "flex items-start justify-between gap-3", children: [
16158
+ /* @__PURE__ */ jsxs28("div", { children: [
16159
+ /* @__PURE__ */ jsx30("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
16160
+ /* @__PURE__ */ jsx30("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
16087
16161
  ] }),
16088
- /* @__PURE__ */ jsx29(
16162
+ /* @__PURE__ */ jsx30(
16089
16163
  "button",
16090
16164
  {
16091
16165
  type: "button",
@@ -16096,9 +16170,9 @@ function CheckoutLoginPrompt({
16096
16170
  }
16097
16171
  )
16098
16172
  ] }),
16099
- /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
16100
- /* @__PURE__ */ jsx29("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
16101
- /* @__PURE__ */ jsx29(
16173
+ /* @__PURE__ */ jsxs28("div", { className: "space-y-2", children: [
16174
+ /* @__PURE__ */ jsx30("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
16175
+ /* @__PURE__ */ jsx30(
16102
16176
  "input",
16103
16177
  {
16104
16178
  id: "checkout-login-prompt-email",
@@ -16113,10 +16187,10 @@ function CheckoutLoginPrompt({
16113
16187
  )
16114
16188
  }
16115
16189
  ),
16116
- error && /* @__PURE__ */ jsx29("p", { className: "text-xs text-destructive", children: error })
16190
+ error && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: error })
16117
16191
  ] }),
16118
- /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
16119
- /* @__PURE__ */ jsx29(
16192
+ /* @__PURE__ */ jsxs28("div", { className: "space-y-2", children: [
16193
+ /* @__PURE__ */ jsx30(
16120
16194
  "button",
16121
16195
  {
16122
16196
  type: "button",
@@ -16129,7 +16203,7 @@ function CheckoutLoginPrompt({
16129
16203
  children: checking ? t.checking : t.continueWithEmail
16130
16204
  }
16131
16205
  ),
16132
- /* @__PURE__ */ jsx29(
16206
+ /* @__PURE__ */ jsx30(
16133
16207
  "button",
16134
16208
  {
16135
16209
  type: "button",
@@ -16148,7 +16222,7 @@ function CheckoutLoginPrompt({
16148
16222
  // src/components/checkout-form.tsx
16149
16223
  import { cn as cn24 } from "@reblu/site-ui/utils";
16150
16224
  import { PhoneInput } from "@reblu/site-ui/phone-input";
16151
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs28 } from "react/jsx-runtime";
16225
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs29 } from "react/jsx-runtime";
16152
16226
  var DEFAULT_LABELS7 = {
16153
16227
  contactTitle: "Datos de contacto",
16154
16228
  nameLabel: "Nombre completo",
@@ -16204,9 +16278,9 @@ function CheckoutForm({
16204
16278
  event.preventDefault();
16205
16279
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
16206
16280
  }
16207
- return /* @__PURE__ */ jsxs28(Fragment6, { children: [
16281
+ return /* @__PURE__ */ jsxs29(Fragment6, { children: [
16208
16282
  loginPrompt,
16209
- /* @__PURE__ */ jsxs28(
16283
+ /* @__PURE__ */ jsxs29(
16210
16284
  "form",
16211
16285
  {
16212
16286
  "data-testid": "checkout-form",
@@ -16214,12 +16288,12 @@ function CheckoutForm({
16214
16288
  className: cn24("space-y-8", className),
16215
16289
  "data-slot": "checkout-form",
16216
16290
  children: [
16217
- /* @__PURE__ */ jsxs28("section", { className: "space-y-4", children: [
16218
- /* @__PURE__ */ jsx30("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
16219
- /* @__PURE__ */ jsxs28("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
16220
- /* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
16221
- /* @__PURE__ */ jsx30("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
16222
- /* @__PURE__ */ jsx30(
16291
+ /* @__PURE__ */ jsxs29("section", { className: "space-y-4", children: [
16292
+ /* @__PURE__ */ jsx31("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
16293
+ /* @__PURE__ */ jsxs29("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
16294
+ /* @__PURE__ */ jsxs29("div", { className: "space-y-1", children: [
16295
+ /* @__PURE__ */ jsx31("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
16296
+ /* @__PURE__ */ jsx31(
16223
16297
  "input",
16224
16298
  {
16225
16299
  id: "checkout-form-name",
@@ -16234,11 +16308,11 @@ function CheckoutForm({
16234
16308
  )
16235
16309
  }
16236
16310
  ),
16237
- contactErrors?.name && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: contactErrors.name })
16311
+ contactErrors?.name && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.name })
16238
16312
  ] }),
16239
- /* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
16240
- /* @__PURE__ */ jsx30("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
16241
- /* @__PURE__ */ jsx30(
16313
+ /* @__PURE__ */ jsxs29("div", { className: "space-y-1", children: [
16314
+ /* @__PURE__ */ jsx31("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
16315
+ /* @__PURE__ */ jsx31(
16242
16316
  "input",
16243
16317
  {
16244
16318
  id: "checkout-form-email",
@@ -16253,9 +16327,9 @@ function CheckoutForm({
16253
16327
  )
16254
16328
  }
16255
16329
  ),
16256
- contactErrors?.email && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: contactErrors.email })
16330
+ contactErrors?.email && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.email })
16257
16331
  ] }),
16258
- /* @__PURE__ */ jsx30("div", { className: "space-y-1", children: /* @__PURE__ */ jsx30(
16332
+ /* @__PURE__ */ jsx31("div", { className: "space-y-1", children: /* @__PURE__ */ jsx31(
16259
16333
  PhoneInput,
16260
16334
  {
16261
16335
  id: "checkout-form-phone",
@@ -16269,26 +16343,26 @@ function CheckoutForm({
16269
16343
  ] })
16270
16344
  ] }),
16271
16345
  children2,
16272
- generalError ? /* @__PURE__ */ jsx30("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
16273
- /* @__PURE__ */ jsxs28("section", { className: "space-y-3", children: [
16274
- /* @__PURE__ */ jsx30("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
16275
- autoDiscount ? /* @__PURE__ */ jsxs28(
16346
+ generalError ? /* @__PURE__ */ jsx31("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
16347
+ /* @__PURE__ */ jsxs29("section", { className: "space-y-3", children: [
16348
+ /* @__PURE__ */ jsx31("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
16349
+ autoDiscount ? /* @__PURE__ */ jsxs29(
16276
16350
  "div",
16277
16351
  {
16278
16352
  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",
16279
16353
  "data-slot": "checkout-staff-discount",
16280
16354
  children: [
16281
- /* @__PURE__ */ jsx30("span", { className: "font-semibold", children: t.staffDiscountApplied }),
16282
- /* @__PURE__ */ jsx30("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
16355
+ /* @__PURE__ */ jsx31("span", { className: "font-semibold", children: t.staffDiscountApplied }),
16356
+ /* @__PURE__ */ jsx31("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
16283
16357
  ]
16284
16358
  }
16285
16359
  ) : null,
16286
- appliedDiscount && !autoDiscount ? /* @__PURE__ */ jsxs28("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: [
16287
- /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
16288
- /* @__PURE__ */ jsx30("span", { className: "font-semibold", children: appliedDiscount.code }),
16289
- /* @__PURE__ */ jsx30("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
16360
+ appliedDiscount && !autoDiscount ? /* @__PURE__ */ jsxs29("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: [
16361
+ /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
16362
+ /* @__PURE__ */ jsx31("span", { className: "font-semibold", children: appliedDiscount.code }),
16363
+ /* @__PURE__ */ jsx31("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
16290
16364
  ] }),
16291
- /* @__PURE__ */ jsx30(
16365
+ /* @__PURE__ */ jsx31(
16292
16366
  "button",
16293
16367
  {
16294
16368
  type: "button",
@@ -16298,9 +16372,9 @@ function CheckoutForm({
16298
16372
  children: t.removeDiscount
16299
16373
  }
16300
16374
  )
16301
- ] }) : /* @__PURE__ */ jsxs28("div", { className: "flex gap-2", children: [
16302
- /* @__PURE__ */ jsx30("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
16303
- /* @__PURE__ */ jsx30(
16375
+ ] }) : /* @__PURE__ */ jsxs29("div", { className: "flex gap-2", children: [
16376
+ /* @__PURE__ */ jsx31("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
16377
+ /* @__PURE__ */ jsx31(
16304
16378
  "input",
16305
16379
  {
16306
16380
  id: "checkout-form-discount-code",
@@ -16312,7 +16386,7 @@ function CheckoutForm({
16312
16386
  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"
16313
16387
  }
16314
16388
  ),
16315
- /* @__PURE__ */ jsx30(
16389
+ /* @__PURE__ */ jsx31(
16316
16390
  "button",
16317
16391
  {
16318
16392
  type: "button",
@@ -16323,9 +16397,9 @@ function CheckoutForm({
16323
16397
  }
16324
16398
  )
16325
16399
  ] }),
16326
- discountError && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: discountError })
16400
+ discountError && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: discountError })
16327
16401
  ] }),
16328
- /* @__PURE__ */ jsx30(
16402
+ /* @__PURE__ */ jsx31(
16329
16403
  "button",
16330
16404
  {
16331
16405
  type: "submit",
@@ -16348,7 +16422,7 @@ import { cn as cn26 } from "@reblu/site-ui/utils";
16348
16422
 
16349
16423
  // src/components/order-invoice-link.tsx
16350
16424
  import { cn as cn25 } from "@reblu/site-ui/utils";
16351
- import { jsx as jsx31, jsxs as jsxs29 } from "react/jsx-runtime";
16425
+ import { jsx as jsx32, jsxs as jsxs30 } from "react/jsx-runtime";
16352
16426
  var DEFAULT_LABELS8 = {
16353
16427
  linkLabel: "Descargar la factura {number}",
16354
16428
  signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
@@ -16356,8 +16430,8 @@ var DEFAULT_LABELS8 = {
16356
16430
  function OrderInvoiceLink({ invoice, labels, className }) {
16357
16431
  if (!invoice) return null;
16358
16432
  const t = { ...DEFAULT_LABELS8, ...labels };
16359
- return /* @__PURE__ */ jsxs29("div", { className: cn25("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
16360
- /* @__PURE__ */ jsx31(
16433
+ return /* @__PURE__ */ jsxs30("div", { className: cn25("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
16434
+ /* @__PURE__ */ jsx32(
16361
16435
  "a",
16362
16436
  {
16363
16437
  href: invoice.url,
@@ -16365,12 +16439,12 @@ function OrderInvoiceLink({ invoice, labels, className }) {
16365
16439
  children: t.linkLabel.replace("{number}", invoice.number)
16366
16440
  }
16367
16441
  ),
16368
- /* @__PURE__ */ jsx31("p", { className: "text-muted-foreground", children: t.signInHint })
16442
+ /* @__PURE__ */ jsx32("p", { className: "text-muted-foreground", children: t.signInHint })
16369
16443
  ] });
16370
16444
  }
16371
16445
 
16372
16446
  // src/components/order-confirmation.tsx
16373
- import { jsx as jsx32, jsxs as jsxs30 } from "react/jsx-runtime";
16447
+ import { jsx as jsx33, jsxs as jsxs31 } from "react/jsx-runtime";
16374
16448
  var DEFAULT_LABELS9 = {
16375
16449
  pollingTitle: "Confirmando tu pedido\u2026",
16376
16450
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -16445,60 +16519,60 @@ function OrderConfirmation({
16445
16519
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
16446
16520
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
16447
16521
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
16448
- return /* @__PURE__ */ jsxs30("div", { className: cn26("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
16449
- /* @__PURE__ */ jsx32("h1", { className: "text-3xl font-bold", children: title }),
16450
- /* @__PURE__ */ jsx32("p", { className: "text-lg text-muted-foreground", children: description }),
16451
- showFullOrderSummary && order && /* @__PURE__ */ jsxs30("div", { className: "space-y-6", children: [
16452
- /* @__PURE__ */ jsxs30("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16453
- /* @__PURE__ */ jsx32("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
16454
- /* @__PURE__ */ jsx32("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
16522
+ return /* @__PURE__ */ jsxs31("div", { className: cn26("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
16523
+ /* @__PURE__ */ jsx33("h1", { className: "text-3xl font-bold", children: title }),
16524
+ /* @__PURE__ */ jsx33("p", { className: "text-lg text-muted-foreground", children: description }),
16525
+ showFullOrderSummary && order && /* @__PURE__ */ jsxs31("div", { className: "space-y-6", children: [
16526
+ /* @__PURE__ */ jsxs31("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16527
+ /* @__PURE__ */ jsx33("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
16528
+ /* @__PURE__ */ jsx33("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
16455
16529
  ] }),
16456
- /* @__PURE__ */ jsxs30("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
16457
- order.items.map((item, idx) => /* @__PURE__ */ jsxs30(
16530
+ /* @__PURE__ */ jsxs31("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
16531
+ order.items.map((item, idx) => /* @__PURE__ */ jsxs31(
16458
16532
  "div",
16459
16533
  {
16460
16534
  className: "flex justify-between gap-4 text-sm",
16461
16535
  children: [
16462
- /* @__PURE__ */ jsxs30("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
16536
+ /* @__PURE__ */ jsxs31("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
16463
16537
  item.product.name,
16464
16538
  item.variant ? ` (${item.variant.name})` : "",
16465
16539
  " x",
16466
16540
  item.quantity
16467
16541
  ] }),
16468
- /* @__PURE__ */ jsx32("span", { children: formatPrice(item.total, currencyCode, locale) })
16542
+ /* @__PURE__ */ jsx33("span", { children: formatPrice(item.total, currencyCode, locale) })
16469
16543
  ]
16470
16544
  },
16471
16545
  idx
16472
16546
  )),
16473
- /* @__PURE__ */ jsx32("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs30("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
16474
- /* @__PURE__ */ jsx32("span", { children: t.totalLabel }),
16475
- /* @__PURE__ */ jsx32("span", { children: formatPrice(order.total, currencyCode, locale) })
16547
+ /* @__PURE__ */ jsx33("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs31("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
16548
+ /* @__PURE__ */ jsx33("span", { children: t.totalLabel }),
16549
+ /* @__PURE__ */ jsx33("span", { children: formatPrice(order.total, currencyCode, locale) })
16476
16550
  ] }) })
16477
16551
  ] }),
16478
- showPurchaseTexts && order.purchaseTexts?.length ? /* @__PURE__ */ jsx32("div", { className: "mx-auto max-w-sm space-y-3 text-left", "data-slot": "order-confirmation-purchase-texts", children: order.purchaseTexts.map((entry) => /* @__PURE__ */ jsxs30(
16552
+ showPurchaseTexts && order.purchaseTexts?.length ? /* @__PURE__ */ jsx33("div", { className: "mx-auto max-w-sm space-y-3 text-left", "data-slot": "order-confirmation-purchase-texts", children: order.purchaseTexts.map((entry) => /* @__PURE__ */ jsxs31(
16479
16553
  "div",
16480
16554
  {
16481
16555
  className: "rounded-xl border border-border bg-card p-4",
16482
16556
  "data-slot": "order-confirmation-purchase-text",
16483
16557
  "data-kind": entry.kind,
16484
16558
  children: [
16485
- /* @__PURE__ */ jsx32("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: entry.label }),
16486
- entry.place ? /* @__PURE__ */ jsxs30("address", { className: "mb-2 text-sm not-italic", "data-slot": "order-confirmation-pickup-place", children: [
16487
- entry.place.name ? /* @__PURE__ */ jsx32("span", { className: "block font-medium", children: entry.place.name }) : null,
16488
- entry.place.address.map((line) => /* @__PURE__ */ jsx32("span", { className: "block", children: line }, line))
16559
+ /* @__PURE__ */ jsx33("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: entry.label }),
16560
+ entry.place ? /* @__PURE__ */ jsxs31("address", { className: "mb-2 text-sm not-italic", "data-slot": "order-confirmation-pickup-place", children: [
16561
+ entry.place.name ? /* @__PURE__ */ jsx33("span", { className: "block font-medium", children: entry.place.name }) : null,
16562
+ entry.place.address.map((line) => /* @__PURE__ */ jsx33("span", { className: "block", children: line }, line))
16489
16563
  ] }) : null,
16490
- /* @__PURE__ */ jsx32("p", { className: "whitespace-pre-line text-sm", children: entry.text })
16564
+ /* @__PURE__ */ jsx33("p", { className: "whitespace-pre-line text-sm", children: entry.text })
16491
16565
  ]
16492
16566
  },
16493
16567
  entry.kind
16494
16568
  )) }) : null,
16495
- t.foundDescription.includes("{email}") ? null : /* @__PURE__ */ jsxs30("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
16569
+ t.foundDescription.includes("{email}") ? null : /* @__PURE__ */ jsxs31("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
16496
16570
  t.confirmationEmailPrefix,
16497
16571
  " ",
16498
- /* @__PURE__ */ jsx32("span", { className: "font-medium text-foreground", children: order.customerEmail }),
16572
+ /* @__PURE__ */ jsx33("span", { className: "font-medium text-foreground", children: order.customerEmail }),
16499
16573
  "."
16500
16574
  ] }),
16501
- /* @__PURE__ */ jsx32(
16575
+ /* @__PURE__ */ jsx33(
16502
16576
  OrderInvoiceLink,
16503
16577
  {
16504
16578
  invoice: order.invoice,
@@ -16506,11 +16580,11 @@ function OrderConfirmation({
16506
16580
  }
16507
16581
  )
16508
16582
  ] }),
16509
- showOrderReference && order && /* @__PURE__ */ jsxs30("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16510
- /* @__PURE__ */ jsx32("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
16511
- /* @__PURE__ */ jsx32("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
16583
+ showOrderReference && order && /* @__PURE__ */ jsxs31("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16584
+ /* @__PURE__ */ jsx33("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
16585
+ /* @__PURE__ */ jsx33("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
16512
16586
  ] }),
16513
- status === "failed" && cartHref && /* @__PURE__ */ jsx32(
16587
+ status === "failed" && cartHref && /* @__PURE__ */ jsx33(
16514
16588
  "a",
16515
16589
  {
16516
16590
  href: cartHref,
@@ -16518,7 +16592,7 @@ function OrderConfirmation({
16518
16592
  children: t.backToCartLabel
16519
16593
  }
16520
16594
  ),
16521
- showRecheck && /* @__PURE__ */ jsx32(
16595
+ showRecheck && /* @__PURE__ */ jsx33(
16522
16596
  "button",
16523
16597
  {
16524
16598
  type: "button",
@@ -16527,16 +16601,16 @@ function OrderConfirmation({
16527
16601
  children: t.recheckLabel
16528
16602
  }
16529
16603
  ),
16530
- showSessionReference && /* @__PURE__ */ jsxs30("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16531
- /* @__PURE__ */ jsx32("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
16532
- /* @__PURE__ */ jsx32("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
16604
+ showSessionReference && /* @__PURE__ */ jsxs31("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
16605
+ /* @__PURE__ */ jsx33("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
16606
+ /* @__PURE__ */ jsx33("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
16533
16607
  ] })
16534
16608
  ] });
16535
16609
  }
16536
16610
 
16537
16611
  // src/components/full-invoice-fields.tsx
16538
16612
  import { cn as cn27 } from "@reblu/site-ui/utils";
16539
- import { jsx as jsx33, jsxs as jsxs31 } from "react/jsx-runtime";
16613
+ import { jsx as jsx34, jsxs as jsxs32 } from "react/jsx-runtime";
16540
16614
  var EMPTY_FULL_INVOICE_VALUE = {
16541
16615
  wantsFullInvoice: false,
16542
16616
  billingIdType: "NIF",
@@ -16653,12 +16727,12 @@ function FullInvoiceFields({
16653
16727
  const showFields = value.wantsFullInvoice || overCap;
16654
16728
  const isSpanishNif = value.billingIdType === "NIF";
16655
16729
  const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
16656
- const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx33("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
16730
+ const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx34("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
16657
16731
  const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
16658
- return /* @__PURE__ */ jsxs31("section", { className: cn27("space-y-4", className), "data-slot": "full-invoice-fields", children: [
16659
- overCap ? /* @__PURE__ */ jsx33("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16660
- /* @__PURE__ */ jsxs31("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
16661
- /* @__PURE__ */ jsx33(
16732
+ return /* @__PURE__ */ jsxs32("section", { className: cn27("space-y-4", className), "data-slot": "full-invoice-fields", children: [
16733
+ overCap ? /* @__PURE__ */ jsx34("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16734
+ /* @__PURE__ */ jsxs32("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
16735
+ /* @__PURE__ */ jsx34(
16662
16736
  "input",
16663
16737
  {
16664
16738
  type: "checkbox",
@@ -16668,12 +16742,12 @@ function FullInvoiceFields({
16668
16742
  ),
16669
16743
  t.toggle
16670
16744
  ] }),
16671
- /* @__PURE__ */ jsx33("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
16745
+ /* @__PURE__ */ jsx34("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
16672
16746
  ] }),
16673
- showFields && /* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
16674
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16675
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
16676
- /* @__PURE__ */ jsx33(
16747
+ showFields && /* @__PURE__ */ jsxs32("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
16748
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16749
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
16750
+ /* @__PURE__ */ jsx34(
16677
16751
  "select",
16678
16752
  {
16679
16753
  id: "full-invoice-id-type",
@@ -16682,14 +16756,14 @@ function FullInvoiceFields({
16682
16756
  value: value.billingIdType,
16683
16757
  onChange: (e) => set("billingIdType", e.target.value),
16684
16758
  ...invalid2("billingIdType"),
16685
- children: ID_TYPES.map((type) => /* @__PURE__ */ jsx33("option", { value: type, children: t.idTypeOptions[type] }, type))
16759
+ children: ID_TYPES.map((type) => /* @__PURE__ */ jsx34("option", { value: type, children: t.idTypeOptions[type] }, type))
16686
16760
  }
16687
16761
  ),
16688
16762
  error("billingIdType")
16689
16763
  ] }),
16690
- !isSpanishNif && /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16691
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
16692
- /* @__PURE__ */ jsxs31(
16764
+ !isSpanishNif && /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16765
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
16766
+ /* @__PURE__ */ jsxs32(
16693
16767
  "select",
16694
16768
  {
16695
16769
  id: "full-invoice-id-country",
@@ -16699,16 +16773,16 @@ function FullInvoiceFields({
16699
16773
  onChange: (e) => set("billingIdCountry", e.target.value),
16700
16774
  ...invalid2("billingIdCountry"),
16701
16775
  children: [
16702
- /* @__PURE__ */ jsx33("option", { value: "", disabled: true, children: t.chooseCountry }),
16703
- countries.map((c) => /* @__PURE__ */ jsx33("option", { value: c.code, children: c.name }, c.code))
16776
+ /* @__PURE__ */ jsx34("option", { value: "", disabled: true, children: t.chooseCountry }),
16777
+ countries.map((c) => /* @__PURE__ */ jsx34("option", { value: c.code, children: c.name }, c.code))
16704
16778
  ]
16705
16779
  }
16706
16780
  ),
16707
16781
  error("billingIdCountry")
16708
16782
  ] }),
16709
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16710
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
16711
- /* @__PURE__ */ jsx33(
16783
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16784
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
16785
+ /* @__PURE__ */ jsx34(
16712
16786
  "input",
16713
16787
  {
16714
16788
  id: "full-invoice-nif",
@@ -16721,9 +16795,9 @@ function FullInvoiceFields({
16721
16795
  ),
16722
16796
  error("billingNif")
16723
16797
  ] }),
16724
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16725
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
16726
- /* @__PURE__ */ jsx33(
16798
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16799
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
16800
+ /* @__PURE__ */ jsx34(
16727
16801
  "input",
16728
16802
  {
16729
16803
  id: "full-invoice-name",
@@ -16736,9 +16810,9 @@ function FullInvoiceFields({
16736
16810
  ),
16737
16811
  error("billingName")
16738
16812
  ] }),
16739
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1 sm:col-span-2", children: [
16740
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
16741
- /* @__PURE__ */ jsx33(
16813
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1 sm:col-span-2", children: [
16814
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
16815
+ /* @__PURE__ */ jsx34(
16742
16816
  "input",
16743
16817
  {
16744
16818
  id: "full-invoice-street",
@@ -16750,9 +16824,9 @@ function FullInvoiceFields({
16750
16824
  }
16751
16825
  )
16752
16826
  ] }),
16753
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16754
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
16755
- /* @__PURE__ */ jsx33(
16827
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16828
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
16829
+ /* @__PURE__ */ jsx34(
16756
16830
  "input",
16757
16831
  {
16758
16832
  id: "full-invoice-postal-code",
@@ -16763,9 +16837,9 @@ function FullInvoiceFields({
16763
16837
  }
16764
16838
  )
16765
16839
  ] }),
16766
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16767
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
16768
- /* @__PURE__ */ jsx33(
16840
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16841
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
16842
+ /* @__PURE__ */ jsx34(
16769
16843
  "input",
16770
16844
  {
16771
16845
  id: "full-invoice-city",
@@ -16776,9 +16850,9 @@ function FullInvoiceFields({
16776
16850
  }
16777
16851
  )
16778
16852
  ] }),
16779
- /* @__PURE__ */ jsxs31("div", { className: "space-y-1", children: [
16780
- /* @__PURE__ */ jsx33("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
16781
- /* @__PURE__ */ jsx33(
16853
+ /* @__PURE__ */ jsxs32("div", { className: "space-y-1", children: [
16854
+ /* @__PURE__ */ jsx34("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
16855
+ /* @__PURE__ */ jsx34(
16782
16856
  "select",
16783
16857
  {
16784
16858
  id: "full-invoice-country",
@@ -16786,18 +16860,18 @@ function FullInvoiceFields({
16786
16860
  required: true,
16787
16861
  value: value.country,
16788
16862
  onChange: (e) => set("country", e.target.value),
16789
- children: countries.map((c) => /* @__PURE__ */ jsx33("option", { value: c.code, children: c.name }, c.code))
16863
+ children: countries.map((c) => /* @__PURE__ */ jsx34("option", { value: c.code, children: c.name }, c.code))
16790
16864
  }
16791
16865
  )
16792
16866
  ] }),
16793
- /* @__PURE__ */ jsx33("div", { className: "sm:col-span-2", children: error("address") })
16867
+ /* @__PURE__ */ jsx34("div", { className: "sm:col-span-2", children: error("address") })
16794
16868
  ] })
16795
16869
  ] });
16796
16870
  }
16797
16871
 
16798
16872
  // src/components/checkout-delivery-choice.tsx
16799
16873
  import { cn as cn28 } from "@reblu/site-ui/utils";
16800
- import { jsx as jsx34, jsxs as jsxs32 } from "react/jsx-runtime";
16874
+ import { jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
16801
16875
  var EMPTY_CHECKOUT_ADDRESS = {
16802
16876
  firstName: "",
16803
16877
  lastName: "",
@@ -16860,17 +16934,17 @@ function CheckoutDeliveryChoice({
16860
16934
  const isPickup = value?.type === "PICKUP";
16861
16935
  const isShipping = value?.type === "SHIPPING";
16862
16936
  const errorId = `${uid}-delivery-error`;
16863
- return /* @__PURE__ */ jsxs32(
16937
+ return /* @__PURE__ */ jsxs33(
16864
16938
  "fieldset",
16865
16939
  {
16866
16940
  "data-slot": "checkout-delivery",
16867
16941
  "aria-describedby": error ? errorId : void 0,
16868
16942
  className: cn28("space-y-4", className),
16869
16943
  children: [
16870
- /* @__PURE__ */ jsx34("legend", { className: "mb-2 text-lg font-semibold", children: t.legend }),
16871
- /* @__PURE__ */ jsxs32("div", { className: "grid gap-3 sm:grid-cols-2", children: [
16872
- homeDelivery ? /* @__PURE__ */ jsxs32("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
16873
- /* @__PURE__ */ jsx34(
16944
+ /* @__PURE__ */ jsx35("legend", { className: "mb-2 text-lg font-semibold", children: t.legend }),
16945
+ /* @__PURE__ */ jsxs33("div", { className: "grid gap-3 sm:grid-cols-2", children: [
16946
+ homeDelivery ? /* @__PURE__ */ jsxs33("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
16947
+ /* @__PURE__ */ jsx35(
16874
16948
  "input",
16875
16949
  {
16876
16950
  type: "radio",
@@ -16880,16 +16954,16 @@ function CheckoutDeliveryChoice({
16880
16954
  className: "mt-0.5 size-4 accent-primary"
16881
16955
  }
16882
16956
  ),
16883
- /* @__PURE__ */ jsxs32("span", { className: "flex-1 space-y-1", children: [
16884
- /* @__PURE__ */ jsxs32("span", { className: "flex justify-between gap-2 font-medium", children: [
16885
- /* @__PURE__ */ jsx34("span", { children: copy.shippingOptionLabel }),
16886
- /* @__PURE__ */ jsx34("span", { className: "tabular-nums", children: homeCost })
16957
+ /* @__PURE__ */ jsxs33("span", { className: "flex-1 space-y-1", children: [
16958
+ /* @__PURE__ */ jsxs33("span", { className: "flex justify-between gap-2 font-medium", children: [
16959
+ /* @__PURE__ */ jsx35("span", { children: copy.shippingOptionLabel }),
16960
+ /* @__PURE__ */ jsx35("span", { className: "tabular-nums", children: homeCost })
16887
16961
  ] }),
16888
- delivery.estimatedDeliveryText ? /* @__PURE__ */ jsx34("span", { className: "block text-sm text-muted-foreground", children: delivery.estimatedDeliveryText }) : null
16962
+ delivery.estimatedDeliveryText ? /* @__PURE__ */ jsx35("span", { className: "block text-sm text-muted-foreground", children: delivery.estimatedDeliveryText }) : null
16889
16963
  ] })
16890
16964
  ] }) : null,
16891
- pickup ? /* @__PURE__ */ jsxs32("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
16892
- /* @__PURE__ */ jsx34(
16965
+ pickup ? /* @__PURE__ */ jsxs33("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
16966
+ /* @__PURE__ */ jsx35(
16893
16967
  "input",
16894
16968
  {
16895
16969
  type: "radio",
@@ -16899,23 +16973,23 @@ function CheckoutDeliveryChoice({
16899
16973
  className: "mt-0.5 size-4 accent-primary"
16900
16974
  }
16901
16975
  ),
16902
- /* @__PURE__ */ jsxs32("span", { className: "flex flex-1 justify-between gap-2 font-medium", children: [
16903
- /* @__PURE__ */ jsx34("span", { children: copy.pickupOptionLabel }),
16904
- /* @__PURE__ */ jsx34("span", { children: t.free })
16976
+ /* @__PURE__ */ jsxs33("span", { className: "flex flex-1 justify-between gap-2 font-medium", children: [
16977
+ /* @__PURE__ */ jsx35("span", { children: copy.pickupOptionLabel }),
16978
+ /* @__PURE__ */ jsx35("span", { children: t.free })
16905
16979
  ] })
16906
16980
  ] }) : null
16907
16981
  ] }),
16908
- error ? /* @__PURE__ */ jsx34("p", { id: errorId, role: "alert", className: "text-sm text-destructive", children: error }) : null,
16909
- isPickup ? /* @__PURE__ */ jsxs32("div", { role: "radiogroup", "aria-labelledby": `${uid}-points`, className: "space-y-2", children: [
16910
- /* @__PURE__ */ jsx34("p", { id: `${uid}-points`, className: "text-sm font-medium", children: t.pickupPointsLegend }),
16982
+ error ? /* @__PURE__ */ jsx35("p", { id: errorId, role: "alert", className: "text-sm text-destructive", children: error }) : null,
16983
+ isPickup ? /* @__PURE__ */ jsxs33("div", { role: "radiogroup", "aria-labelledby": `${uid}-points`, className: "space-y-2", children: [
16984
+ /* @__PURE__ */ jsx35("p", { id: `${uid}-points`, className: "text-sm font-medium", children: t.pickupPointsLegend }),
16911
16985
  delivery.pickupLocations.map((location2) => {
16912
16986
  const descId = `${uid}-point-${location2.id}`;
16913
- return /* @__PURE__ */ jsxs32(
16987
+ return /* @__PURE__ */ jsxs33(
16914
16988
  "label",
16915
16989
  {
16916
16990
  className: "flex cursor-pointer items-start gap-3 rounded-lg border border-border p-3 has-[:checked]:border-primary",
16917
16991
  children: [
16918
- /* @__PURE__ */ jsx34(
16992
+ /* @__PURE__ */ jsx35(
16919
16993
  "input",
16920
16994
  {
16921
16995
  type: "radio",
@@ -16926,9 +17000,9 @@ function CheckoutDeliveryChoice({
16926
17000
  className: "mt-0.5 size-4 accent-primary"
16927
17001
  }
16928
17002
  ),
16929
- /* @__PURE__ */ jsxs32("span", { className: "space-y-0.5 text-sm", children: [
16930
- /* @__PURE__ */ jsx34("span", { className: "block font-medium", children: location2.name }),
16931
- /* @__PURE__ */ jsx34("span", { id: descId, className: "block text-muted-foreground", children: pickupDescription(location2) })
17003
+ /* @__PURE__ */ jsxs33("span", { className: "space-y-0.5 text-sm", children: [
17004
+ /* @__PURE__ */ jsx35("span", { className: "block font-medium", children: location2.name }),
17005
+ /* @__PURE__ */ jsx35("span", { id: descId, className: "block text-muted-foreground", children: pickupDescription(location2) })
16932
17006
  ] })
16933
17007
  ]
16934
17008
  },
@@ -16936,14 +17010,14 @@ function CheckoutDeliveryChoice({
16936
17010
  );
16937
17011
  })
16938
17012
  ] }) : null,
16939
- isShipping ? /* @__PURE__ */ jsxs32("fieldset", { className: "space-y-3", children: [
16940
- /* @__PURE__ */ jsx34("legend", { className: "mb-2 text-sm font-medium", children: t.addressLegend }),
16941
- /* @__PURE__ */ jsx34("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: ADDRESS_FIELDS.map(({ key: key2, autoComplete, required, wide }) => {
17013
+ isShipping ? /* @__PURE__ */ jsxs33("fieldset", { className: "space-y-3", children: [
17014
+ /* @__PURE__ */ jsx35("legend", { className: "mb-2 text-sm font-medium", children: t.addressLegend }),
17015
+ /* @__PURE__ */ jsx35("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: ADDRESS_FIELDS.map(({ key: key2, autoComplete, required, wide }) => {
16942
17016
  const fieldId = `${uid}-${key2}`;
16943
17017
  const fieldError = addressErrors?.[key2];
16944
- return /* @__PURE__ */ jsxs32("div", { className: cn28("space-y-1", wide && "sm:col-span-2"), children: [
16945
- /* @__PURE__ */ jsx34("label", { htmlFor: fieldId, className: "text-sm font-medium", children: t[key2] }),
16946
- /* @__PURE__ */ jsx34(
17018
+ return /* @__PURE__ */ jsxs33("div", { className: cn28("space-y-1", wide && "sm:col-span-2"), children: [
17019
+ /* @__PURE__ */ jsx35("label", { htmlFor: fieldId, className: "text-sm font-medium", children: t[key2] }),
17020
+ /* @__PURE__ */ jsx35(
16947
17021
  "input",
16948
17022
  {
16949
17023
  id: fieldId,
@@ -16960,7 +17034,7 @@ function CheckoutDeliveryChoice({
16960
17034
  )
16961
17035
  }
16962
17036
  ),
16963
- fieldError ? /* @__PURE__ */ jsx34("p", { id: `${fieldId}-error`, className: "text-sm text-destructive", children: fieldError }) : null
17037
+ fieldError ? /* @__PURE__ */ jsx35("p", { id: `${fieldId}-error`, className: "text-sm text-destructive", children: fieldError }) : null
16964
17038
  ] }, key2);
16965
17039
  }) })
16966
17040
  ] }) : null
@@ -17003,7 +17077,7 @@ function toCheckoutFulfillmentFields(value, address, requiresDelivery = true) {
17003
17077
 
17004
17078
  // src/components/checkout-quote-summary.tsx
17005
17079
  import { cn as cn29 } from "@reblu/site-ui/utils";
17006
- import { Fragment as Fragment7, jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
17080
+ import { Fragment as Fragment7, jsx as jsx36, jsxs as jsxs34 } from "react/jsx-runtime";
17007
17081
  var DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS = {
17008
17082
  subtotal: "Subtotal",
17009
17083
  discount: (codeOrLabel, isAutomatic) => isAutomatic ? codeOrLabel : `Descuento (${codeOrLabel})`,
@@ -17020,9 +17094,9 @@ function Row({
17020
17094
  value,
17021
17095
  className
17022
17096
  }) {
17023
- return /* @__PURE__ */ jsxs33("div", { "data-slot": "checkout-quote-row", className: cn29("flex justify-between gap-4", className), children: [
17024
- /* @__PURE__ */ jsx35("dt", { children: name }),
17025
- /* @__PURE__ */ jsx35("dd", { className: "shrink-0 tabular-nums", children: value })
17097
+ return /* @__PURE__ */ jsxs34("div", { "data-slot": "checkout-quote-row", className: cn29("flex justify-between gap-4", className), children: [
17098
+ /* @__PURE__ */ jsx36("dt", { children: name }),
17099
+ /* @__PURE__ */ jsx36("dd", { className: "shrink-0 tabular-nums", children: value })
17026
17100
  ] });
17027
17101
  }
17028
17102
  function CheckoutQuoteSummary({
@@ -17038,22 +17112,22 @@ function CheckoutQuoteSummary({
17038
17112
  const price = (cents) => formatPrice(cents, currencyCode, locale);
17039
17113
  const { fulfillment, shipping, tax, discount } = quote;
17040
17114
  const Tag = `h${headingLevel}`;
17041
- return /* @__PURE__ */ jsxs33("section", { "data-slot": "checkout-quote-summary", className: slotClassName("space-y-4", "", className), children: [
17042
- heading ? /* @__PURE__ */ jsx35(Tag, { className: "text-lg font-semibold", children: heading }) : null,
17043
- /* @__PURE__ */ jsx35("ul", { className: "space-y-3 text-sm", children: quote.lines.map((line) => /* @__PURE__ */ jsxs33("li", { className: "flex justify-between gap-4", children: [
17044
- /* @__PURE__ */ jsxs33("div", { className: "min-w-0 space-y-0.5", children: [
17045
- /* @__PURE__ */ jsx35("p", { className: "font-medium", children: line.name }),
17046
- line.variantName ? /* @__PURE__ */ jsx35("p", { className: "text-muted-foreground", children: line.variantName }) : null,
17047
- /* @__PURE__ */ jsxs33("p", { className: "flex flex-wrap items-center gap-2 text-muted-foreground", children: [
17048
- line.kindLabel ? /* @__PURE__ */ jsx35("span", { "data-slot": "checkout-quote-kind", className: "rounded-full border border-border px-2 py-0.5 text-xs font-medium text-foreground", children: line.kindLabel }) : null,
17049
- /* @__PURE__ */ jsx35("span", { children: t.quantityTimesUnit(line.quantity, price(line.unitPrice)) })
17115
+ return /* @__PURE__ */ jsxs34("section", { "data-slot": "checkout-quote-summary", className: slotClassName("space-y-4", "", className), children: [
17116
+ heading ? /* @__PURE__ */ jsx36(Tag, { className: "text-lg font-semibold", children: heading }) : null,
17117
+ /* @__PURE__ */ jsx36("ul", { className: "space-y-3 text-sm", children: quote.lines.map((line) => /* @__PURE__ */ jsxs34("li", { className: "flex justify-between gap-4", children: [
17118
+ /* @__PURE__ */ jsxs34("div", { className: "min-w-0 space-y-0.5", children: [
17119
+ /* @__PURE__ */ jsx36("p", { className: "font-medium", children: line.name }),
17120
+ line.variantName ? /* @__PURE__ */ jsx36("p", { className: "text-muted-foreground", children: line.variantName }) : null,
17121
+ /* @__PURE__ */ jsxs34("p", { className: "flex flex-wrap items-center gap-2 text-muted-foreground", children: [
17122
+ line.kindLabel ? /* @__PURE__ */ jsx36("span", { "data-slot": "checkout-quote-kind", className: "rounded-full border border-border px-2 py-0.5 text-xs font-medium text-foreground", children: line.kindLabel }) : null,
17123
+ /* @__PURE__ */ jsx36("span", { children: t.quantityTimesUnit(line.quantity, price(line.unitPrice)) })
17050
17124
  ] })
17051
17125
  ] }),
17052
- /* @__PURE__ */ jsx35("span", { className: "shrink-0 tabular-nums", children: price(line.total) })
17126
+ /* @__PURE__ */ jsx36("span", { className: "shrink-0 tabular-nums", children: price(line.total) })
17053
17127
  ] }, `${line.productId}-${line.variantId ?? ""}`)) }),
17054
- /* @__PURE__ */ jsxs33("dl", { className: "space-y-2 border-t border-border pt-3 text-sm", children: [
17055
- /* @__PURE__ */ jsx35(Row, { name: t.subtotal, value: price(quote.subtotal) }),
17056
- discount && discount.amount > 0 ? /* @__PURE__ */ jsx35(
17128
+ /* @__PURE__ */ jsxs34("dl", { className: "space-y-2 border-t border-border pt-3 text-sm", children: [
17129
+ /* @__PURE__ */ jsx36(Row, { name: t.subtotal, value: price(quote.subtotal) }),
17130
+ discount && discount.amount > 0 ? /* @__PURE__ */ jsx36(
17057
17131
  Row,
17058
17132
  {
17059
17133
  className: "text-green-700 dark:text-green-400",
@@ -17061,17 +17135,17 @@ function CheckoutQuoteSummary({
17061
17135
  value: `\u2212${price(discount.amount)}`
17062
17136
  }
17063
17137
  ) : null,
17064
- fulfillment.type ? /* @__PURE__ */ jsx35(
17138
+ fulfillment.type ? /* @__PURE__ */ jsx36(
17065
17139
  Row,
17066
17140
  {
17067
- name: /* @__PURE__ */ jsxs33(Fragment7, { children: [
17141
+ name: /* @__PURE__ */ jsxs34(Fragment7, { children: [
17068
17142
  fulfillment.label ?? t.delivery,
17069
- fulfillment.type === "PICKUP" && fulfillment.pickupLocation ? /* @__PURE__ */ jsx35("span", { className: "block text-muted-foreground", children: fulfillment.pickupLocation.name }) : null
17143
+ fulfillment.type === "PICKUP" && fulfillment.pickupLocation ? /* @__PURE__ */ jsx36("span", { className: "block text-muted-foreground", children: fulfillment.pickupLocation.name }) : null
17070
17144
  ] }),
17071
17145
  value: fulfillment.type === "PICKUP" || shipping.isFree ? t.free : price(shipping.cost)
17072
17146
  }
17073
17147
  ) : null,
17074
- tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */ jsx35(
17148
+ tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */ jsx36(
17075
17149
  Row,
17076
17150
  {
17077
17151
  className: tax.isIncluded ? "text-muted-foreground" : void 0,
@@ -17080,13 +17154,13 @@ function CheckoutQuoteSummary({
17080
17154
  },
17081
17155
  entry.label
17082
17156
  )) : null,
17083
- /* @__PURE__ */ jsx35(Row, { className: "border-t border-border pt-2 text-base font-bold", name: t.total, value: price(quote.total) })
17157
+ /* @__PURE__ */ jsx36(Row, { className: "border-t border-border pt-2 text-base font-bold", name: t.total, value: price(quote.total) })
17084
17158
  ] }),
17085
- tax.isIncluded ? /* @__PURE__ */ jsx35("p", { className: "text-sm text-muted-foreground", children: t.taxesIncludedNote }) : null,
17086
- fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */ jsx35("p", { className: "text-sm text-muted-foreground", children: t.remainingForFree(price(shipping.remainingForFree)) }) : null,
17087
- fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */ jsx35("p", { "data-slot": "checkout-quote-estimate", className: "text-sm text-muted-foreground", children: quote.deliveryEstimateText }) : null,
17088
- quote.discountError ? /* @__PURE__ */ jsx35("p", { role: "status", className: "text-sm text-destructive", children: quote.discountError.message }) : null,
17089
- quote.blockingReason ? /* @__PURE__ */ jsx35("p", { role: "alert", className: "rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive", children: quote.blockingReason.message }) : null
17159
+ tax.isIncluded ? /* @__PURE__ */ jsx36("p", { className: "text-sm text-muted-foreground", children: t.taxesIncludedNote }) : null,
17160
+ fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */ jsx36("p", { className: "text-sm text-muted-foreground", children: t.remainingForFree(price(shipping.remainingForFree)) }) : null,
17161
+ fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */ jsx36("p", { "data-slot": "checkout-quote-estimate", className: "text-sm text-muted-foreground", children: quote.deliveryEstimateText }) : null,
17162
+ quote.discountError ? /* @__PURE__ */ jsx36("p", { role: "status", className: "text-sm text-destructive", children: quote.discountError.message }) : null,
17163
+ quote.blockingReason ? /* @__PURE__ */ jsx36("p", { role: "alert", className: "rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive", children: quote.blockingReason.message }) : null
17090
17164
  ] });
17091
17165
  }
17092
17166
  var DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS = {
@@ -17104,7 +17178,7 @@ function checkoutQuoteNotice({
17104
17178
  function CheckoutQuoteNotice({ reason, labels, className }) {
17105
17179
  if (!reason) return null;
17106
17180
  const t = { ...DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS, ...labels };
17107
- return /* @__PURE__ */ jsx35(
17181
+ return /* @__PURE__ */ jsx36(
17108
17182
  "p",
17109
17183
  {
17110
17184
  role: "status",
@@ -17117,7 +17191,7 @@ function CheckoutQuoteNotice({ reason, labels, className }) {
17117
17191
 
17118
17192
  // src/components/checkout-terms-acceptance.tsx
17119
17193
  import { cn as cn30 } from "@reblu/site-ui/utils";
17120
- import { Fragment as Fragment8, jsx as jsx36, jsxs as jsxs34 } from "react/jsx-runtime";
17194
+ import { Fragment as Fragment8, jsx as jsx37, jsxs as jsxs35 } from "react/jsx-runtime";
17121
17195
  function splitTermsLabel(label) {
17122
17196
  const at = label.indexOf("{terms}");
17123
17197
  return at === -1 ? [`${label} `, ""] : [label.slice(0, at), label.slice(at + "{terms}".length)];
@@ -17139,9 +17213,9 @@ function CheckoutTermsAcceptance({
17139
17213
  (part) => part.replaceAll("{tenant}", copy.tenantName)
17140
17214
  );
17141
17215
  const newTab = copy.isTermsLinkNewTab;
17142
- return /* @__PURE__ */ jsxs34("div", { "data-slot": "checkout-terms", className: cn30("space-y-1", className), children: [
17143
- /* @__PURE__ */ jsxs34("div", { className: "flex items-start gap-3", children: [
17144
- /* @__PURE__ */ jsx36(
17216
+ return /* @__PURE__ */ jsxs35("div", { "data-slot": "checkout-terms", className: cn30("space-y-1", className), children: [
17217
+ /* @__PURE__ */ jsxs35("div", { className: "flex items-start gap-3", children: [
17218
+ /* @__PURE__ */ jsx37(
17145
17219
  "input",
17146
17220
  {
17147
17221
  id: boxId,
@@ -17154,9 +17228,9 @@ function CheckoutTermsAcceptance({
17154
17228
  className: "mt-0.5 size-5 shrink-0 cursor-pointer accent-primary"
17155
17229
  }
17156
17230
  ),
17157
- /* @__PURE__ */ jsxs34("label", { htmlFor: boxId, className: "text-sm leading-relaxed", children: [
17231
+ /* @__PURE__ */ jsxs35("label", { htmlFor: boxId, className: "text-sm leading-relaxed", children: [
17158
17232
  before,
17159
- /* @__PURE__ */ jsxs34(
17233
+ /* @__PURE__ */ jsxs35(
17160
17234
  "a",
17161
17235
  {
17162
17236
  href: copy.termsLinkUrl ?? termsHref,
@@ -17164,9 +17238,9 @@ function CheckoutTermsAcceptance({
17164
17238
  className: "font-medium underline underline-offset-2 hover:text-primary",
17165
17239
  children: [
17166
17240
  copy.termsLinkText,
17167
- newTab ? /* @__PURE__ */ jsxs34(Fragment8, { children: [
17241
+ newTab ? /* @__PURE__ */ jsxs35(Fragment8, { children: [
17168
17242
  " ",
17169
- /* @__PURE__ */ jsx36("span", { className: "sr-only", children: newTabHint })
17243
+ /* @__PURE__ */ jsx37("span", { className: "sr-only", children: newTabHint })
17170
17244
  ] }) : null
17171
17245
  ]
17172
17246
  }
@@ -17174,7 +17248,7 @@ function CheckoutTermsAcceptance({
17174
17248
  after
17175
17249
  ] })
17176
17250
  ] }),
17177
- error ? /* @__PURE__ */ jsx36("p", { id: errorId, className: "pl-8 text-sm text-destructive", children: error }) : null
17251
+ error ? /* @__PURE__ */ jsx37("p", { id: errorId, className: "pl-8 text-sm text-destructive", children: error }) : null
17178
17252
  ] });
17179
17253
  }
17180
17254
  function toCheckoutTermsFields(copy, accepted) {
@@ -17184,7 +17258,7 @@ function toCheckoutTermsFields(copy, accepted) {
17184
17258
 
17185
17259
  // src/components/checkout-pay-action.tsx
17186
17260
  import { cn as cn31 } from "@reblu/site-ui/utils";
17187
- import { jsx as jsx37, jsxs as jsxs35 } from "react/jsx-runtime";
17261
+ import { jsx as jsx38, jsxs as jsxs36 } from "react/jsx-runtime";
17188
17262
  function CheckoutPayAction({
17189
17263
  label,
17190
17264
  notice,
@@ -17198,8 +17272,8 @@ function CheckoutPayAction({
17198
17272
  }) {
17199
17273
  const noticeId = `${id}-notice`;
17200
17274
  const isDisabled = submitting || disabled;
17201
- return /* @__PURE__ */ jsxs35("div", { "data-slot": "checkout-pay-action", className: cn31("space-y-3", className), children: [
17202
- /* @__PURE__ */ jsx37(
17275
+ return /* @__PURE__ */ jsxs36("div", { "data-slot": "checkout-pay-action", className: cn31("space-y-3", className), children: [
17276
+ /* @__PURE__ */ jsx38(
17203
17277
  "button",
17204
17278
  {
17205
17279
  type: "submit",
@@ -17213,7 +17287,7 @@ function CheckoutPayAction({
17213
17287
  children: submitting ? submittingLabel : label
17214
17288
  }
17215
17289
  ),
17216
- notice ? /* @__PURE__ */ jsx37("p", { id: noticeId, "data-slot": "checkout-pay-notice", className: noticeClassName ?? "text-sm text-muted-foreground", children: notice }) : null
17290
+ notice ? /* @__PURE__ */ jsx38("p", { id: noticeId, "data-slot": "checkout-pay-notice", className: noticeClassName ?? "text-sm text-muted-foreground", children: notice }) : null
17217
17291
  ] });
17218
17292
  }
17219
17293
 
@@ -17241,7 +17315,7 @@ function toAcademyCheckoutInvoiceFields(value, overCap, issuesInvoices = true) {
17241
17315
 
17242
17316
  // src/components/contact-interest-field.tsx
17243
17317
  import { cn as cn32 } from "@reblu/site-ui/utils";
17244
- import { jsx as jsx38, jsxs as jsxs36 } from "react/jsx-runtime";
17318
+ import { jsx as jsx39, jsxs as jsxs37 } from "react/jsx-runtime";
17245
17319
  function ContactInterestField({
17246
17320
  interest,
17247
17321
  value,
@@ -17258,18 +17332,18 @@ function ContactInterestField({
17258
17332
  else next2.delete(option2);
17259
17333
  onChange(interest.options.filter((candidate) => next2.has(candidate)));
17260
17334
  };
17261
- return /* @__PURE__ */ jsxs36("fieldset", { "data-slot": "contact-interest", className: cn32("space-y-2", className), children: [
17262
- /* @__PURE__ */ jsx38("legend", { className: "text-sm font-medium", children: interest.label }),
17263
- /* @__PURE__ */ jsx38("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
17335
+ return /* @__PURE__ */ jsxs37("fieldset", { "data-slot": "contact-interest", className: cn32("space-y-2", className), children: [
17336
+ /* @__PURE__ */ jsx39("legend", { className: "text-sm font-medium", children: interest.label }),
17337
+ /* @__PURE__ */ jsx39("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
17264
17338
  const id = `${idPrefix}-${index}`;
17265
- return /* @__PURE__ */ jsxs36(
17339
+ return /* @__PURE__ */ jsxs37(
17266
17340
  "label",
17267
17341
  {
17268
17342
  htmlFor: id,
17269
17343
  "data-slot": "contact-interest-option",
17270
17344
  className: "flex items-center gap-2 text-sm",
17271
17345
  children: [
17272
- /* @__PURE__ */ jsx38(
17346
+ /* @__PURE__ */ jsx39(
17273
17347
  "input",
17274
17348
  {
17275
17349
  id,
@@ -17313,6 +17387,7 @@ export {
17313
17387
  CourseCatalogFilters,
17314
17388
  CourseDescription,
17315
17389
  CoursePurchaseTerms,
17390
+ CourseSchedule,
17316
17391
  DATA_REQUEST_TYPES,
17317
17392
  DEFAULT_BEFORE_AFTER_LABELS,
17318
17393
  DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS,
@@ -17321,6 +17396,7 @@ export {
17321
17396
  DEFAULT_COURSE_CATALOG_FILTERS_LABELS,
17322
17397
  DEFAULT_COURSE_PRICE_BANDS,
17323
17398
  DEFAULT_COURSE_PURCHASE_TERMS_LABELS,
17399
+ DEFAULT_COURSE_SCHEDULE_LABELS,
17324
17400
  DEFAULT_INVOICE_COUNTRIES,
17325
17401
  DEFAULT_LESSON_PREVIEW_LABELS,
17326
17402
  DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE,