@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/CHANGELOG.md +13 -0
- package/README.md +44 -0
- package/dist/index.cjs +569 -491
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +48 -1
- package/dist/index.d.ts +48 -1
- package/dist/index.js +568 -492
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -13539,8 +13539,82 @@ function CoursePurchaseTerms({
|
|
|
13539
13539
|
);
|
|
13540
13540
|
}
|
|
13541
13541
|
|
|
13542
|
-
// src/components/
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
13639
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
13656
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
13723
|
-
page.category && /* @__PURE__ */
|
|
13724
|
-
/* @__PURE__ */
|
|
13725
|
-
page.subtitle && /* @__PURE__ */
|
|
13726
|
-
page.coverImageUrl && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
13756
|
-
/* @__PURE__ */
|
|
13757
|
-
img.caption && /* @__PURE__ */
|
|
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__ */
|
|
13765
|
-
section.heading && /* @__PURE__ */
|
|
13766
|
-
/* @__PURE__ */
|
|
13767
|
-
/* @__PURE__ */
|
|
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__ */
|
|
13771
|
-
/* @__PURE__ */
|
|
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__ */
|
|
13847
|
+
] }) : /* @__PURE__ */ jsxs7(Fragment3, { children: [
|
|
13774
13848
|
body3,
|
|
13775
|
-
/* @__PURE__ */
|
|
13849
|
+
/* @__PURE__ */ jsx7(SectionImages, { section })
|
|
13776
13850
|
] }) });
|
|
13777
13851
|
}
|
|
13778
|
-
return /* @__PURE__ */
|
|
13852
|
+
return /* @__PURE__ */ jsxs7("section", { className: "space-y-4", children: [
|
|
13779
13853
|
body3,
|
|
13780
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
13864
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
13791
13865
|
function Treatment({ page, className }) {
|
|
13792
|
-
return /* @__PURE__ */
|
|
13793
|
-
/* @__PURE__ */
|
|
13794
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
13819
|
-
showHeading && /* @__PURE__ */
|
|
13820
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
13836
|
-
/* @__PURE__ */
|
|
13837
|
-
page.excerpt && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
13862
|
-
/* @__PURE__ */
|
|
13863
|
-
/* @__PURE__ */
|
|
13864
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
13908
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
13951
|
-
/* @__PURE__ */
|
|
13952
|
-
role && /* @__PURE__ */
|
|
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__ */
|
|
13955
|
-
specialties.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
14001
|
-
heading && /* @__PURE__ */
|
|
14002
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
14018
|
-
/* @__PURE__ */
|
|
14019
|
-
page.excerpt && /* @__PURE__ */
|
|
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__ */
|
|
14034
|
-
heading && /* @__PURE__ */
|
|
14035
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14072
|
-
/* @__PURE__ */
|
|
14073
|
-
product.category && /* @__PURE__ */
|
|
14074
|
-
/* @__PURE__ */
|
|
14075
|
-
product.shortDescription && /* @__PURE__ */
|
|
14076
|
-
/* @__PURE__ */
|
|
14077
|
-
/* @__PURE__ */
|
|
14078
|
-
hasDiscount && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
14315
|
-
/* @__PURE__ */
|
|
14316
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
14408
|
+
return /* @__PURE__ */ jsx16(Tag, { className, children: children2 });
|
|
14335
14409
|
}
|
|
14336
14410
|
|
|
14337
14411
|
// src/components/faq-accordion.tsx
|
|
14338
|
-
import { jsx as
|
|
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__ */
|
|
14350
|
-
heading && /* @__PURE__ */
|
|
14351
|
-
/* @__PURE__ */
|
|
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__ */
|
|
14359
|
-
questionHeadingLevel ? /* @__PURE__ */
|
|
14360
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14496
|
-
/* @__PURE__ */
|
|
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__ */
|
|
14499
|
-
] }) : /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
14560
|
-
const content = /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
14646
|
+
) : /* @__PURE__ */ jsx19("span", { className: "text-sm font-medium", children: badge.name }),
|
|
14573
14647
|
caption
|
|
14574
14648
|
] });
|
|
14575
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14649
|
-
review.text && review.text.trim() !== "" ? /* @__PURE__ */
|
|
14650
|
-
/* @__PURE__ */
|
|
14651
|
-
/* @__PURE__ */
|
|
14652
|
-
date ? /* @__PURE__ */
|
|
14653
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14732
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
14909
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
14932
|
-
pairs.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
14939
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14988
|
-
hasIntro && /* @__PURE__ */
|
|
14989
|
-
items.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15001
|
-
/* @__PURE__ */
|
|
15002
|
-
item.text && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15063
|
-
hasKicker && /* @__PURE__ */
|
|
15064
|
-
heading && /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
15084
|
-
/* @__PURE__ */
|
|
15085
|
-
subtitle && /* @__PURE__ */
|
|
15086
|
-
imageUrl && /* @__PURE__ */
|
|
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__ */
|
|
15164
|
+
return /* @__PURE__ */ jsx23(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
|
|
15091
15165
|
}
|
|
15092
15166
|
function FaqBlock({ block }) {
|
|
15093
|
-
return /* @__PURE__ */
|
|
15167
|
+
return /* @__PURE__ */ jsx23(FaqAccordion, { items: block.data.items });
|
|
15094
15168
|
}
|
|
15095
15169
|
function StatsBlock({ block }) {
|
|
15096
|
-
return /* @__PURE__ */
|
|
15097
|
-
/* @__PURE__ */
|
|
15098
|
-
/* @__PURE__ */
|
|
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__ */
|
|
15104
|
-
/* @__PURE__ */
|
|
15105
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15117
|
-
/* @__PURE__ */
|
|
15118
|
-
role && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15139
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15174
|
-
/* @__PURE__ */
|
|
15175
|
-
resolved.role && /* @__PURE__ */
|
|
15176
|
-
resolved.excerpt && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15268
|
+
return /* @__PURE__ */ jsx23(BeforeAfterPairs, { pairs, showCaption, caption });
|
|
15195
15269
|
}
|
|
15196
15270
|
function ChipsBlock({ block }) {
|
|
15197
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15349
|
-
block.heading && !ownsHeading && /* @__PURE__ */
|
|
15350
|
-
ownsHeading ? /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
15442
|
-
/* @__PURE__ */
|
|
15443
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15470
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15579
|
+
return /* @__PURE__ */ jsx24(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
|
|
15506
15580
|
const isActive = activeValues.includes(opt.value);
|
|
15507
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
15620
|
-
showCategories && /* @__PURE__ */
|
|
15621
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15646
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15671
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15743
|
-
/* @__PURE__ */
|
|
15744
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15777
|
-
/* @__PURE__ */
|
|
15778
|
-
noticeContent != null && noticeContent !== false && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15799
|
-
/* @__PURE__ */
|
|
15800
|
-
/* @__PURE__ */
|
|
15801
|
-
item.variantName && /* @__PURE__ */
|
|
15802
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15826
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15859
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
15911
|
-
/* @__PURE__ */
|
|
15912
|
-
/* @__PURE__ */
|
|
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__ */
|
|
15915
|
-
/* @__PURE__ */
|
|
15916
|
-
/* @__PURE__ */
|
|
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__ */
|
|
15922
|
-
/* @__PURE__ */
|
|
15923
|
-
/* @__PURE__ */
|
|
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__ */
|
|
15926
|
-
/* @__PURE__ */
|
|
15927
|
-
/* @__PURE__ */
|
|
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__ */
|
|
15934
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
16030
|
-
/* @__PURE__ */
|
|
16031
|
-
/* @__PURE__ */
|
|
16032
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
16070
|
-
/* @__PURE__ */
|
|
16071
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16084
|
-
/* @__PURE__ */
|
|
16085
|
-
/* @__PURE__ */
|
|
16086
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16100
|
-
/* @__PURE__ */
|
|
16101
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16190
|
+
error && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: error })
|
|
16117
16191
|
] }),
|
|
16118
|
-
/* @__PURE__ */
|
|
16119
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
16281
|
+
return /* @__PURE__ */ jsxs29(Fragment6, { children: [
|
|
16208
16282
|
loginPrompt,
|
|
16209
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16218
|
-
/* @__PURE__ */
|
|
16219
|
-
/* @__PURE__ */
|
|
16220
|
-
/* @__PURE__ */
|
|
16221
|
-
/* @__PURE__ */
|
|
16222
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16311
|
+
contactErrors?.name && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.name })
|
|
16238
16312
|
] }),
|
|
16239
|
-
/* @__PURE__ */
|
|
16240
|
-
/* @__PURE__ */
|
|
16241
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16330
|
+
contactErrors?.email && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.email })
|
|
16257
16331
|
] }),
|
|
16258
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16273
|
-
/* @__PURE__ */
|
|
16274
|
-
/* @__PURE__ */
|
|
16275
|
-
autoDiscount ? /* @__PURE__ */
|
|
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__ */
|
|
16282
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16287
|
-
/* @__PURE__ */
|
|
16288
|
-
/* @__PURE__ */
|
|
16289
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16302
|
-
/* @__PURE__ */
|
|
16303
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16400
|
+
discountError && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: discountError })
|
|
16327
16401
|
] }),
|
|
16328
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
16360
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
16449
|
-
/* @__PURE__ */
|
|
16450
|
-
/* @__PURE__ */
|
|
16451
|
-
showFullOrderSummary && order && /* @__PURE__ */
|
|
16452
|
-
/* @__PURE__ */
|
|
16453
|
-
/* @__PURE__ */
|
|
16454
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16457
|
-
order.items.map((item, idx) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16542
|
+
/* @__PURE__ */ jsx33("span", { children: formatPrice(item.total, currencyCode, locale) })
|
|
16469
16543
|
]
|
|
16470
16544
|
},
|
|
16471
16545
|
idx
|
|
16472
16546
|
)),
|
|
16473
|
-
/* @__PURE__ */
|
|
16474
|
-
/* @__PURE__ */
|
|
16475
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16486
|
-
entry.place ? /* @__PURE__ */
|
|
16487
|
-
entry.place.name ? /* @__PURE__ */
|
|
16488
|
-
entry.place.address.map((line) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
16572
|
+
/* @__PURE__ */ jsx33("span", { className: "font-medium text-foreground", children: order.customerEmail }),
|
|
16499
16573
|
"."
|
|
16500
16574
|
] }),
|
|
16501
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16510
|
-
/* @__PURE__ */
|
|
16511
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
16531
|
-
/* @__PURE__ */
|
|
16532
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
16659
|
-
overCap ? /* @__PURE__ */
|
|
16660
|
-
/* @__PURE__ */
|
|
16661
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16745
|
+
/* @__PURE__ */ jsx34("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
|
|
16672
16746
|
] }),
|
|
16673
|
-
showFields && /* @__PURE__ */
|
|
16674
|
-
/* @__PURE__ */
|
|
16675
|
-
/* @__PURE__ */
|
|
16676
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16691
|
-
/* @__PURE__ */
|
|
16692
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16703
|
-
countries.map((c) => /* @__PURE__ */
|
|
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__ */
|
|
16710
|
-
/* @__PURE__ */
|
|
16711
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16725
|
-
/* @__PURE__ */
|
|
16726
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16740
|
-
/* @__PURE__ */
|
|
16741
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16754
|
-
/* @__PURE__ */
|
|
16755
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16767
|
-
/* @__PURE__ */
|
|
16768
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16780
|
-
/* @__PURE__ */
|
|
16781
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16863
|
+
children: countries.map((c) => /* @__PURE__ */ jsx34("option", { value: c.code, children: c.name }, c.code))
|
|
16790
16864
|
}
|
|
16791
16865
|
)
|
|
16792
16866
|
] }),
|
|
16793
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
16871
|
-
/* @__PURE__ */
|
|
16872
|
-
homeDelivery ? /* @__PURE__ */
|
|
16873
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16884
|
-
/* @__PURE__ */
|
|
16885
|
-
/* @__PURE__ */
|
|
16886
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
16892
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16903
|
-
/* @__PURE__ */
|
|
16904
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16909
|
-
isPickup ? /* @__PURE__ */
|
|
16910
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
16930
|
-
/* @__PURE__ */
|
|
16931
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16940
|
-
/* @__PURE__ */
|
|
16941
|
-
/* @__PURE__ */
|
|
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__ */
|
|
16945
|
-
/* @__PURE__ */
|
|
16946
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
17024
|
-
/* @__PURE__ */
|
|
17025
|
-
/* @__PURE__ */
|
|
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__ */
|
|
17042
|
-
heading ? /* @__PURE__ */
|
|
17043
|
-
/* @__PURE__ */
|
|
17044
|
-
/* @__PURE__ */
|
|
17045
|
-
/* @__PURE__ */
|
|
17046
|
-
line.variantName ? /* @__PURE__ */
|
|
17047
|
-
/* @__PURE__ */
|
|
17048
|
-
line.kindLabel ? /* @__PURE__ */
|
|
17049
|
-
/* @__PURE__ */
|
|
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__ */
|
|
17126
|
+
/* @__PURE__ */ jsx36("span", { className: "shrink-0 tabular-nums", children: price(line.total) })
|
|
17053
17127
|
] }, `${line.productId}-${line.variantId ?? ""}`)) }),
|
|
17054
|
-
/* @__PURE__ */
|
|
17055
|
-
/* @__PURE__ */
|
|
17056
|
-
discount && discount.amount > 0 ? /* @__PURE__ */
|
|
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__ */
|
|
17138
|
+
fulfillment.type ? /* @__PURE__ */ jsx36(
|
|
17065
17139
|
Row,
|
|
17066
17140
|
{
|
|
17067
|
-
name: /* @__PURE__ */
|
|
17141
|
+
name: /* @__PURE__ */ jsxs34(Fragment7, { children: [
|
|
17068
17142
|
fulfillment.label ?? t.delivery,
|
|
17069
|
-
fulfillment.type === "PICKUP" && fulfillment.pickupLocation ? /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
17086
|
-
fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */
|
|
17087
|
-
fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */
|
|
17088
|
-
quote.discountError ? /* @__PURE__ */
|
|
17089
|
-
quote.blockingReason ? /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
17143
|
-
/* @__PURE__ */
|
|
17144
|
-
/* @__PURE__ */
|
|
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__ */
|
|
17231
|
+
/* @__PURE__ */ jsxs35("label", { htmlFor: boxId, className: "text-sm leading-relaxed", children: [
|
|
17158
17232
|
before,
|
|
17159
|
-
/* @__PURE__ */
|
|
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__ */
|
|
17241
|
+
newTab ? /* @__PURE__ */ jsxs35(Fragment8, { children: [
|
|
17168
17242
|
" ",
|
|
17169
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
17202
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
17262
|
-
/* @__PURE__ */
|
|
17263
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|