@reblu/site-blocks 0.33.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 +36 -0
- package/README.md +207 -2
- package/dist/client.cjs +459 -0
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +142 -3
- package/dist/client.d.ts +142 -3
- package/dist/client.js +453 -0
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +758 -552
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +104 -78
- package/dist/index.d.ts +104 -78
- package/dist/index.js +752 -553
- package/dist/index.js.map +1 -1
- package/dist/{full-invoice-fields-DMX0sjPG.d.cts → page-links-C0nXQzAW.d.cts} +105 -2
- package/dist/{full-invoice-fields-DMX0sjPG.d.ts → page-links-C0nXQzAW.d.ts} +105 -2
- 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,28 +14034,107 @@ 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
|
);
|
|
13967
14041
|
}
|
|
13968
14042
|
|
|
13969
|
-
// src/components/
|
|
14043
|
+
// src/components/linked-pages.tsx
|
|
13970
14044
|
import { cn as cn8 } from "@reblu/site-ui/utils";
|
|
13971
|
-
|
|
14045
|
+
|
|
14046
|
+
// src/lib/page-links.ts
|
|
14047
|
+
function linkKey(link) {
|
|
14048
|
+
return `${link.category?.slug ?? ""}/${link.slug}`;
|
|
14049
|
+
}
|
|
14050
|
+
function linkFilterOptions(items) {
|
|
14051
|
+
const seen = /* @__PURE__ */ new Map();
|
|
14052
|
+
for (const item of items) {
|
|
14053
|
+
for (const link of item.links ?? []) {
|
|
14054
|
+
const key2 = linkKey(link);
|
|
14055
|
+
if (!seen.has(key2)) seen.set(key2, { key: key2, label: link.title });
|
|
14056
|
+
}
|
|
14057
|
+
}
|
|
14058
|
+
return [...seen.values()];
|
|
14059
|
+
}
|
|
14060
|
+
function filterByLink(items, key2) {
|
|
14061
|
+
if (key2 === null) return items;
|
|
14062
|
+
return items.filter((item) => (item.links ?? []).some((link) => linkKey(link) === key2));
|
|
14063
|
+
}
|
|
14064
|
+
|
|
14065
|
+
// src/components/linked-pages.tsx
|
|
14066
|
+
import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
14067
|
+
function LinkedPagesGrid({
|
|
14068
|
+
pages,
|
|
14069
|
+
pageHref = (page) => `/${page.slug}`,
|
|
14070
|
+
heading,
|
|
14071
|
+
className
|
|
14072
|
+
}) {
|
|
14073
|
+
if (!pages || pages.length === 0) return null;
|
|
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(
|
|
14077
|
+
"a",
|
|
14078
|
+
{
|
|
14079
|
+
href: pageHref(page),
|
|
14080
|
+
className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
|
|
14081
|
+
children: [
|
|
14082
|
+
page.coverImageUrl && /* @__PURE__ */ jsx13("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx13(
|
|
14083
|
+
"img",
|
|
14084
|
+
{
|
|
14085
|
+
src: page.coverImageUrl,
|
|
14086
|
+
alt: "",
|
|
14087
|
+
loading: "lazy",
|
|
14088
|
+
className: "h-full w-full object-cover transition-transform group-hover:scale-105"
|
|
14089
|
+
}
|
|
14090
|
+
) }),
|
|
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 })
|
|
14094
|
+
] })
|
|
14095
|
+
]
|
|
14096
|
+
}
|
|
14097
|
+
) }, linkKey(page))) })
|
|
14098
|
+
] });
|
|
14099
|
+
}
|
|
14100
|
+
function TeamGrid({
|
|
14101
|
+
members,
|
|
14102
|
+
memberHref,
|
|
14103
|
+
heading,
|
|
14104
|
+
className
|
|
14105
|
+
}) {
|
|
14106
|
+
if (!members || members.length === 0) return null;
|
|
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(
|
|
14110
|
+
ProfileCard,
|
|
14111
|
+
{
|
|
14112
|
+
name: member.title,
|
|
14113
|
+
role: member.role ?? void 0,
|
|
14114
|
+
imageUrl: member.coverImageUrl ?? void 0,
|
|
14115
|
+
href: memberHref?.(member),
|
|
14116
|
+
className: "h-full"
|
|
14117
|
+
}
|
|
14118
|
+
) }, linkKey(member))) })
|
|
14119
|
+
] });
|
|
14120
|
+
}
|
|
14121
|
+
|
|
14122
|
+
// src/components/product-card.tsx
|
|
14123
|
+
import { cn as cn9 } from "@reblu/site-ui/utils";
|
|
14124
|
+
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
13972
14125
|
function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
|
|
13973
14126
|
const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
|
|
13974
14127
|
const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
|
|
13975
|
-
return /* @__PURE__ */
|
|
14128
|
+
return /* @__PURE__ */ jsxs14(
|
|
13976
14129
|
"article",
|
|
13977
14130
|
{
|
|
13978
|
-
className:
|
|
14131
|
+
className: cn9(
|
|
13979
14132
|
"group flex flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
|
|
13980
14133
|
className
|
|
13981
14134
|
),
|
|
13982
14135
|
"data-slot": "product-card",
|
|
13983
14136
|
children: [
|
|
13984
|
-
/* @__PURE__ */
|
|
14137
|
+
/* @__PURE__ */ jsx14("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx14(
|
|
13985
14138
|
"img",
|
|
13986
14139
|
{
|
|
13987
14140
|
src: image.url,
|
|
@@ -13989,14 +14142,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
|
|
|
13989
14142
|
loading: "lazy",
|
|
13990
14143
|
className: "h-full w-full object-cover transition-transform group-hover:scale-105"
|
|
13991
14144
|
}
|
|
13992
|
-
) : /* @__PURE__ */
|
|
13993
|
-
/* @__PURE__ */
|
|
13994
|
-
product.category && /* @__PURE__ */
|
|
13995
|
-
/* @__PURE__ */
|
|
13996
|
-
product.shortDescription && /* @__PURE__ */
|
|
13997
|
-
/* @__PURE__ */
|
|
13998
|
-
/* @__PURE__ */
|
|
13999
|
-
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) })
|
|
14000
14153
|
] })
|
|
14001
14154
|
] })
|
|
14002
14155
|
]
|
|
@@ -14198,7 +14351,7 @@ var __iconNode8 = [
|
|
|
14198
14351
|
var Truck = createLucideIcon("truck", __iconNode8);
|
|
14199
14352
|
|
|
14200
14353
|
// src/components/product-trust-items.tsx
|
|
14201
|
-
import { jsx as
|
|
14354
|
+
import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
14202
14355
|
var DEFAULT_TRUST_ICONS = Object.freeze({
|
|
14203
14356
|
shipping: Truck,
|
|
14204
14357
|
returns: RotateCcw,
|
|
@@ -14232,17 +14385,17 @@ function ProductTrustItems({
|
|
|
14232
14385
|
return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
|
|
14233
14386
|
});
|
|
14234
14387
|
if (rows.length === 0) return null;
|
|
14235
|
-
return /* @__PURE__ */
|
|
14236
|
-
/* @__PURE__ */
|
|
14237
|
-
/* @__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 })
|
|
14238
14391
|
] }, key2)) });
|
|
14239
14392
|
}
|
|
14240
14393
|
|
|
14241
14394
|
// src/components/faq-accordion.tsx
|
|
14242
|
-
import { cn as
|
|
14395
|
+
import { cn as cn10 } from "@reblu/site-ui/utils";
|
|
14243
14396
|
|
|
14244
14397
|
// src/components/_heading.tsx
|
|
14245
|
-
import { jsx as
|
|
14398
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
14246
14399
|
function nextHeadingLevel(level) {
|
|
14247
14400
|
return Math.min(level + 1, 6);
|
|
14248
14401
|
}
|
|
@@ -14252,11 +14405,11 @@ function Heading({
|
|
|
14252
14405
|
children: children2
|
|
14253
14406
|
}) {
|
|
14254
14407
|
const Tag = `h${level}`;
|
|
14255
|
-
return /* @__PURE__ */
|
|
14408
|
+
return /* @__PURE__ */ jsx16(Tag, { className, children: children2 });
|
|
14256
14409
|
}
|
|
14257
14410
|
|
|
14258
14411
|
// src/components/faq-accordion.tsx
|
|
14259
|
-
import { jsx as
|
|
14412
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
14260
14413
|
function FaqAccordion({
|
|
14261
14414
|
items,
|
|
14262
14415
|
heading,
|
|
@@ -14267,18 +14420,18 @@ function FaqAccordion({
|
|
|
14267
14420
|
}) {
|
|
14268
14421
|
const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
|
|
14269
14422
|
if (visible.length === 0) return null;
|
|
14270
|
-
return /* @__PURE__ */
|
|
14271
|
-
heading && /* @__PURE__ */
|
|
14272
|
-
/* @__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(
|
|
14273
14426
|
"details",
|
|
14274
14427
|
{
|
|
14275
14428
|
className: "group px-4",
|
|
14276
14429
|
"data-slot": "faq-item",
|
|
14277
14430
|
...defaultOpen.includes(index) ? { open: true } : {},
|
|
14278
14431
|
children: [
|
|
14279
|
-
/* @__PURE__ */
|
|
14280
|
-
questionHeadingLevel ? /* @__PURE__ */
|
|
14281
|
-
/* @__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(
|
|
14282
14435
|
"span",
|
|
14283
14436
|
{
|
|
14284
14437
|
"aria-hidden": "true",
|
|
@@ -14287,7 +14440,7 @@ function FaqAccordion({
|
|
|
14287
14440
|
}
|
|
14288
14441
|
)
|
|
14289
14442
|
] }),
|
|
14290
|
-
/* @__PURE__ */
|
|
14443
|
+
/* @__PURE__ */ jsx17("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
|
|
14291
14444
|
]
|
|
14292
14445
|
},
|
|
14293
14446
|
index
|
|
@@ -14296,7 +14449,7 @@ function FaqAccordion({
|
|
|
14296
14449
|
}
|
|
14297
14450
|
|
|
14298
14451
|
// src/components/trust-badges.tsx
|
|
14299
|
-
import { cn as
|
|
14452
|
+
import { cn as cn11 } from "@reblu/site-ui/utils";
|
|
14300
14453
|
|
|
14301
14454
|
// src/lib/trust-badge-media.ts
|
|
14302
14455
|
var DEFAULT_ADHESION_NUMBER_LABEL = "N.\xBA de adhesi\xF3n";
|
|
@@ -14324,7 +14477,7 @@ function trustBadgeAlt(badge, numberLabel = DEFAULT_ADHESION_NUMBER_LABEL) {
|
|
|
14324
14477
|
}
|
|
14325
14478
|
|
|
14326
14479
|
// src/components/trust-badges.tsx
|
|
14327
|
-
import { jsx as
|
|
14480
|
+
import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
14328
14481
|
var DEFAULT_TRUST_BADGE_HEADINGS = Object.freeze(
|
|
14329
14482
|
{
|
|
14330
14483
|
PARTNER: "Colaboradores",
|
|
@@ -14353,18 +14506,18 @@ function BadgeContent({ badge, logoClassName }) {
|
|
|
14353
14506
|
if (src) {
|
|
14354
14507
|
return (
|
|
14355
14508
|
// eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
|
|
14356
|
-
/* @__PURE__ */
|
|
14509
|
+
/* @__PURE__ */ jsx18(
|
|
14357
14510
|
"img",
|
|
14358
14511
|
{
|
|
14359
14512
|
src,
|
|
14360
14513
|
alt: trustBadgeAlt(badge),
|
|
14361
14514
|
loading: "lazy",
|
|
14362
|
-
className:
|
|
14515
|
+
className: cn11("h-12 w-auto object-contain", logoClassName)
|
|
14363
14516
|
}
|
|
14364
14517
|
)
|
|
14365
14518
|
);
|
|
14366
14519
|
}
|
|
14367
|
-
return /* @__PURE__ */
|
|
14520
|
+
return /* @__PURE__ */ jsx18("span", { className: "text-sm font-medium", children: badge.name });
|
|
14368
14521
|
}
|
|
14369
14522
|
function TrustBadges({
|
|
14370
14523
|
badges,
|
|
@@ -14392,14 +14545,14 @@ function TrustBadges({
|
|
|
14392
14545
|
if (groups.length === 0) return null;
|
|
14393
14546
|
const hasHeading = heading !== void 0 && heading !== null && heading !== "";
|
|
14394
14547
|
const groupHeadingLevel = hasHeading ? nextHeadingLevel(headingLevel) : headingLevel;
|
|
14395
|
-
const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */
|
|
14548
|
+
const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs17(
|
|
14396
14549
|
"div",
|
|
14397
14550
|
{
|
|
14398
14551
|
"data-slot": "trust-badge-group",
|
|
14399
14552
|
"data-type": type,
|
|
14400
|
-
className:
|
|
14553
|
+
className: cn11("space-y-3", groupClassName),
|
|
14401
14554
|
children: [
|
|
14402
|
-
groupHeading ? /* @__PURE__ */
|
|
14555
|
+
groupHeading ? /* @__PURE__ */ jsx18(
|
|
14403
14556
|
Heading,
|
|
14404
14557
|
{
|
|
14405
14558
|
level: groupHeadingLevel,
|
|
@@ -14411,30 +14564,30 @@ function TrustBadges({
|
|
|
14411
14564
|
children: groupHeading
|
|
14412
14565
|
}
|
|
14413
14566
|
) : null,
|
|
14414
|
-
/* @__PURE__ */
|
|
14567
|
+
/* @__PURE__ */ jsx18("ul", { className: cn11("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
|
|
14415
14568
|
const href = safeHref(badge.url);
|
|
14416
|
-
return /* @__PURE__ */
|
|
14417
|
-
/* @__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 }),
|
|
14418
14571
|
" ",
|
|
14419
|
-
/* @__PURE__ */
|
|
14420
|
-
] }) : /* @__PURE__ */
|
|
14572
|
+
/* @__PURE__ */ jsx18("span", { className: "sr-only", children: newWindowLabel })
|
|
14573
|
+
] }) : /* @__PURE__ */ jsx18(BadgeContent, { badge, logoClassName }) }, badge.id);
|
|
14421
14574
|
}) })
|
|
14422
14575
|
]
|
|
14423
14576
|
},
|
|
14424
14577
|
type
|
|
14425
14578
|
));
|
|
14426
14579
|
if (!hasHeading) {
|
|
14427
|
-
return /* @__PURE__ */
|
|
14580
|
+
return /* @__PURE__ */ jsx18("div", { "data-slot": "trust-badges", className: cn11("space-y-6", className), children: content });
|
|
14428
14581
|
}
|
|
14429
14582
|
const Tag = `h${headingLevel}`;
|
|
14430
|
-
return /* @__PURE__ */
|
|
14583
|
+
return /* @__PURE__ */ jsxs17(
|
|
14431
14584
|
"section",
|
|
14432
14585
|
{
|
|
14433
14586
|
"data-slot": "trust-badges",
|
|
14434
14587
|
"aria-labelledby": headingId,
|
|
14435
|
-
className:
|
|
14588
|
+
className: cn11("space-y-6", className),
|
|
14436
14589
|
children: [
|
|
14437
|
-
/* @__PURE__ */
|
|
14590
|
+
/* @__PURE__ */ jsx18(
|
|
14438
14591
|
Tag,
|
|
14439
14592
|
{
|
|
14440
14593
|
id: headingId,
|
|
@@ -14449,8 +14602,8 @@ function TrustBadges({
|
|
|
14449
14602
|
}
|
|
14450
14603
|
|
|
14451
14604
|
// src/components/arbitration-badge.tsx
|
|
14452
|
-
import { cn as
|
|
14453
|
-
import { jsx as
|
|
14605
|
+
import { cn as cn12 } from "@reblu/site-ui/utils";
|
|
14606
|
+
import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
14454
14607
|
function isArbitrationBadge(value) {
|
|
14455
14608
|
if (typeof value !== "object" || value === null) return false;
|
|
14456
14609
|
const entry = value;
|
|
@@ -14468,35 +14621,35 @@ function ArbitrationBadge({
|
|
|
14468
14621
|
if (!Array.isArray(badges)) return null;
|
|
14469
14622
|
const items = badges.filter(isArbitrationBadge);
|
|
14470
14623
|
if (items.length === 0) return null;
|
|
14471
|
-
return /* @__PURE__ */
|
|
14624
|
+
return /* @__PURE__ */ jsx19(
|
|
14472
14625
|
"ul",
|
|
14473
14626
|
{
|
|
14474
14627
|
"data-slot": "arbitration-badges",
|
|
14475
|
-
className:
|
|
14628
|
+
className: cn12("flex flex-wrap items-start gap-6", className),
|
|
14476
14629
|
children: items.map((badge) => {
|
|
14477
14630
|
const src = safeLogoSrc(badge.logoUrl);
|
|
14478
14631
|
const href = safeHref(badge.url);
|
|
14479
14632
|
const number2 = adhesionNumberOf(badge);
|
|
14480
|
-
const caption = number2 && (showNumber || !src) ? /* @__PURE__ */
|
|
14481
|
-
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: [
|
|
14482
14635
|
src ? (
|
|
14483
14636
|
// eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
|
|
14484
|
-
/* @__PURE__ */
|
|
14637
|
+
/* @__PURE__ */ jsx19(
|
|
14485
14638
|
"img",
|
|
14486
14639
|
{
|
|
14487
14640
|
src,
|
|
14488
14641
|
alt: trustBadgeAlt(badge, numberLabel),
|
|
14489
14642
|
loading: "lazy",
|
|
14490
|
-
className:
|
|
14643
|
+
className: cn12("h-16 w-auto object-contain", logoClassName)
|
|
14491
14644
|
}
|
|
14492
14645
|
)
|
|
14493
|
-
) : /* @__PURE__ */
|
|
14646
|
+
) : /* @__PURE__ */ jsx19("span", { className: "text-sm font-medium", children: badge.name }),
|
|
14494
14647
|
caption
|
|
14495
14648
|
] });
|
|
14496
|
-
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: [
|
|
14497
14650
|
content,
|
|
14498
14651
|
" ",
|
|
14499
|
-
/* @__PURE__ */
|
|
14652
|
+
/* @__PURE__ */ jsx19("span", { className: "sr-only", children: newWindowLabel })
|
|
14500
14653
|
] }) : content }, badge.id);
|
|
14501
14654
|
})
|
|
14502
14655
|
}
|
|
@@ -14504,8 +14657,11 @@ function ArbitrationBadge({
|
|
|
14504
14657
|
}
|
|
14505
14658
|
|
|
14506
14659
|
// src/components/reviews.tsx
|
|
14507
|
-
import { cn as
|
|
14508
|
-
|
|
14660
|
+
import { cn as cn14 } from "@reblu/site-ui/utils";
|
|
14661
|
+
|
|
14662
|
+
// src/components/_review-card.tsx
|
|
14663
|
+
import { cn as cn13 } from "@reblu/site-ui/utils";
|
|
14664
|
+
import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
14509
14665
|
function isHttps(value) {
|
|
14510
14666
|
if (typeof value !== "string") return false;
|
|
14511
14667
|
try {
|
|
@@ -14515,7 +14671,7 @@ function isHttps(value) {
|
|
|
14515
14671
|
return false;
|
|
14516
14672
|
}
|
|
14517
14673
|
}
|
|
14518
|
-
function
|
|
14674
|
+
function isUsableReview(value) {
|
|
14519
14675
|
if (typeof value !== "object" || value === null) return false;
|
|
14520
14676
|
const review = value;
|
|
14521
14677
|
return typeof review.id === "string" && typeof review.authorName === "string" && review.authorName.trim() !== "" && typeof review.rating === "number" && Number.isInteger(review.rating) && review.rating >= 1 && review.rating <= 5 && typeof review.sourceName === "string" && isHttps(review.sourceUrl);
|
|
@@ -14528,7 +14684,7 @@ function formatDay(day, locale) {
|
|
|
14528
14684
|
}
|
|
14529
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";
|
|
14530
14686
|
function Stars({ rating }) {
|
|
14531
|
-
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(
|
|
14532
14688
|
"svg",
|
|
14533
14689
|
{
|
|
14534
14690
|
"aria-hidden": "true",
|
|
@@ -14540,11 +14696,56 @@ function Stars({ rating }) {
|
|
|
14540
14696
|
stroke: "currentColor",
|
|
14541
14697
|
strokeWidth: "1.5",
|
|
14542
14698
|
strokeLinejoin: "round",
|
|
14543
|
-
children: /* @__PURE__ */
|
|
14699
|
+
children: /* @__PURE__ */ jsx20("path", { d: STAR_PATH })
|
|
14544
14700
|
},
|
|
14545
14701
|
n
|
|
14546
14702
|
)) });
|
|
14547
14703
|
}
|
|
14704
|
+
function usableReviews(reviews) {
|
|
14705
|
+
return Array.isArray(reviews) ? reviews.filter(isUsableReview) : [];
|
|
14706
|
+
}
|
|
14707
|
+
function ReviewCard({
|
|
14708
|
+
review,
|
|
14709
|
+
linkLabel,
|
|
14710
|
+
newWindowLabel,
|
|
14711
|
+
locale,
|
|
14712
|
+
className
|
|
14713
|
+
}) {
|
|
14714
|
+
const date = formatDay(review.reviewDate, locale);
|
|
14715
|
+
return /* @__PURE__ */ jsxs19(
|
|
14716
|
+
"article",
|
|
14717
|
+
{
|
|
14718
|
+
"data-slot": "review",
|
|
14719
|
+
"data-source": review.source,
|
|
14720
|
+
className: cn13("flex h-full flex-col gap-3 rounded-lg border p-5", className),
|
|
14721
|
+
children: [
|
|
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(
|
|
14728
|
+
"a",
|
|
14729
|
+
{
|
|
14730
|
+
href: review.sourceUrl,
|
|
14731
|
+
target: "_blank",
|
|
14732
|
+
rel: "noopener nofollow",
|
|
14733
|
+
className: "inline-flex underline underline-offset-4",
|
|
14734
|
+
children: [
|
|
14735
|
+
linkLabel(review.sourceName),
|
|
14736
|
+
" ",
|
|
14737
|
+
/* @__PURE__ */ jsx20("span", { className: "sr-only", children: newWindowLabel })
|
|
14738
|
+
]
|
|
14739
|
+
}
|
|
14740
|
+
)
|
|
14741
|
+
] })
|
|
14742
|
+
]
|
|
14743
|
+
}
|
|
14744
|
+
);
|
|
14745
|
+
}
|
|
14746
|
+
|
|
14747
|
+
// src/components/reviews.tsx
|
|
14748
|
+
import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
14548
14749
|
function Reviews({
|
|
14549
14750
|
reviews,
|
|
14550
14751
|
heading,
|
|
@@ -14561,11 +14762,10 @@ function Reviews({
|
|
|
14561
14762
|
cardClassName,
|
|
14562
14763
|
noticeClassName
|
|
14563
14764
|
}) {
|
|
14564
|
-
|
|
14565
|
-
const usable = reviews.filter(isUsable2);
|
|
14765
|
+
const usable = usableReviews(reviews);
|
|
14566
14766
|
if (usable.length === 0) return null;
|
|
14567
14767
|
const hasNotice = notice !== void 0 && notice !== null && notice !== "";
|
|
14568
|
-
const noticeNode = hasNotice ? /* @__PURE__ */
|
|
14768
|
+
const noticeNode = hasNotice ? /* @__PURE__ */ jsx21(
|
|
14569
14769
|
"p",
|
|
14570
14770
|
{
|
|
14571
14771
|
"data-slot": "reviews-notice",
|
|
@@ -14573,68 +14773,47 @@ function Reviews({
|
|
|
14573
14773
|
children: notice
|
|
14574
14774
|
}
|
|
14575
14775
|
) : null;
|
|
14576
|
-
const grid = /* @__PURE__ */
|
|
14776
|
+
const grid = /* @__PURE__ */ jsx21(
|
|
14577
14777
|
"ul",
|
|
14578
14778
|
{
|
|
14579
14779
|
"data-slot": "reviews-grid",
|
|
14580
14780
|
className: slotClassName("grid gap-6", "sm:grid-cols-2 lg:grid-cols-3", gridClassName),
|
|
14581
14781
|
children: usable.map((review) => {
|
|
14582
|
-
|
|
14583
|
-
|
|
14584
|
-
"article",
|
|
14782
|
+
return /* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsx21(
|
|
14783
|
+
ReviewCard,
|
|
14585
14784
|
{
|
|
14586
|
-
|
|
14587
|
-
|
|
14588
|
-
|
|
14589
|
-
|
|
14590
|
-
|
|
14591
|
-
review.text && review.text.trim() !== "" ? /* @__PURE__ */ jsx18("blockquote", { className: "flex-1", children: /* @__PURE__ */ jsx18("p", { children: review.text }) }) : null,
|
|
14592
|
-
/* @__PURE__ */ jsxs17("footer", { className: "mt-auto space-y-1 text-sm", children: [
|
|
14593
|
-
/* @__PURE__ */ jsx18("p", { className: "font-semibold", children: review.authorName }),
|
|
14594
|
-
date ? /* @__PURE__ */ jsx18("time", { dateTime: review.reviewDate, className: "block text-muted-foreground", children: date }) : null,
|
|
14595
|
-
/* @__PURE__ */ jsxs17(
|
|
14596
|
-
"a",
|
|
14597
|
-
{
|
|
14598
|
-
href: review.sourceUrl,
|
|
14599
|
-
target: "_blank",
|
|
14600
|
-
rel: "noopener nofollow",
|
|
14601
|
-
className: "inline-flex underline underline-offset-4",
|
|
14602
|
-
children: [
|
|
14603
|
-
linkLabel(review.sourceName),
|
|
14604
|
-
" ",
|
|
14605
|
-
/* @__PURE__ */ jsx18("span", { className: "sr-only", children: newWindowLabel })
|
|
14606
|
-
]
|
|
14607
|
-
}
|
|
14608
|
-
)
|
|
14609
|
-
] })
|
|
14610
|
-
]
|
|
14785
|
+
review,
|
|
14786
|
+
linkLabel,
|
|
14787
|
+
newWindowLabel,
|
|
14788
|
+
locale,
|
|
14789
|
+
className: cardClassName
|
|
14611
14790
|
}
|
|
14612
14791
|
) }, review.id);
|
|
14613
14792
|
})
|
|
14614
14793
|
}
|
|
14615
14794
|
);
|
|
14616
|
-
const body3 = /* @__PURE__ */
|
|
14795
|
+
const body3 = /* @__PURE__ */ jsxs20(Fragment4, { children: [
|
|
14617
14796
|
noticePosition === "above" ? noticeNode : null,
|
|
14618
14797
|
grid,
|
|
14619
14798
|
noticePosition === "below" ? noticeNode : null
|
|
14620
14799
|
] });
|
|
14621
14800
|
const hasHeading = heading !== void 0 && heading !== null && heading !== "";
|
|
14622
14801
|
if (!hasHeading) {
|
|
14623
|
-
return /* @__PURE__ */
|
|
14802
|
+
return /* @__PURE__ */ jsx21("div", { "data-slot": "reviews", className: cn14("space-y-4", className), children: body3 });
|
|
14624
14803
|
}
|
|
14625
14804
|
const Tag = `h${headingLevel}`;
|
|
14626
|
-
return /* @__PURE__ */
|
|
14627
|
-
/* @__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 }),
|
|
14628
14807
|
body3
|
|
14629
14808
|
] });
|
|
14630
14809
|
}
|
|
14631
14810
|
|
|
14632
14811
|
// src/components/page-blocks.tsx
|
|
14633
|
-
import { cn as
|
|
14812
|
+
import { cn as cn16 } from "@reblu/site-ui/utils";
|
|
14634
14813
|
import { buttonVariants as buttonVariants2 } from "@reblu/site-ui/button-variants";
|
|
14635
14814
|
|
|
14636
14815
|
// src/components/content-blocks.tsx
|
|
14637
|
-
import { cn as
|
|
14816
|
+
import { cn as cn15 } from "@reblu/site-ui/utils";
|
|
14638
14817
|
|
|
14639
14818
|
// src/components/_card-icons.ts
|
|
14640
14819
|
var CARD_ICON_NODES = {
|
|
@@ -14797,11 +14976,11 @@ var CARD_ICON_NODES = {
|
|
|
14797
14976
|
};
|
|
14798
14977
|
|
|
14799
14978
|
// src/components/content-blocks.tsx
|
|
14800
|
-
import { jsx as
|
|
14979
|
+
import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
14801
14980
|
var DEFAULT_BEFORE_AFTER_LABELS = Object.freeze({ before: "Antes", after: "Despu\xE9s" });
|
|
14802
14981
|
function PairImage({ url, alt, label }) {
|
|
14803
|
-
return /* @__PURE__ */
|
|
14804
|
-
/* @__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(
|
|
14805
14984
|
"img",
|
|
14806
14985
|
{
|
|
14807
14986
|
src: url,
|
|
@@ -14811,7 +14990,7 @@ function PairImage({ url, alt, label }) {
|
|
|
14811
14990
|
className: "h-full w-full object-cover"
|
|
14812
14991
|
}
|
|
14813
14992
|
) }),
|
|
14814
|
-
/* @__PURE__ */
|
|
14993
|
+
/* @__PURE__ */ jsx22("figcaption", { className: "text-sm font-semibold", children: label })
|
|
14815
14994
|
] });
|
|
14816
14995
|
}
|
|
14817
14996
|
function BeforeAfterPairs({
|
|
@@ -14823,26 +15002,26 @@ function BeforeAfterPairs({
|
|
|
14823
15002
|
}) {
|
|
14824
15003
|
const visibleCaption = showCaption && caption && caption.trim() !== "" ? caption : null;
|
|
14825
15004
|
if (pairs.length === 0 && !visibleCaption) return null;
|
|
14826
|
-
return /* @__PURE__ */
|
|
14827
|
-
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(
|
|
14828
15007
|
"li",
|
|
14829
15008
|
{
|
|
14830
15009
|
"data-slot": "before-after-pair",
|
|
14831
15010
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
14832
15011
|
children: [
|
|
14833
|
-
/* @__PURE__ */
|
|
14834
|
-
/* @__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 })
|
|
14835
15014
|
]
|
|
14836
15015
|
},
|
|
14837
15016
|
`${pair.beforeUrl}-${pair.afterUrl}-${i}`
|
|
14838
15017
|
)) }),
|
|
14839
|
-
visibleCaption && /* @__PURE__ */
|
|
15018
|
+
visibleCaption && /* @__PURE__ */ jsx22("p", { "data-slot": "before-after-caption", className: "whitespace-pre-line text-sm opacity-80", children: visibleCaption })
|
|
14840
15019
|
] });
|
|
14841
15020
|
}
|
|
14842
15021
|
function ChipList({ items, className }) {
|
|
14843
15022
|
const visible = items.filter((item) => item.trim() !== "");
|
|
14844
15023
|
if (visible.length === 0) return null;
|
|
14845
|
-
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(
|
|
14846
15025
|
"li",
|
|
14847
15026
|
{
|
|
14848
15027
|
"data-slot": "chip",
|
|
@@ -14858,7 +15037,7 @@ function hasCardIcon(icon) {
|
|
|
14858
15037
|
}
|
|
14859
15038
|
function CardIconSvg({ icon, className }) {
|
|
14860
15039
|
if (!hasCardIcon(icon)) return null;
|
|
14861
|
-
return /* @__PURE__ */
|
|
15040
|
+
return /* @__PURE__ */ jsx22(
|
|
14862
15041
|
"svg",
|
|
14863
15042
|
{
|
|
14864
15043
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -14871,30 +15050,30 @@ function CardIconSvg({ icon, className }) {
|
|
|
14871
15050
|
"aria-hidden": "true",
|
|
14872
15051
|
focusable: "false",
|
|
14873
15052
|
"data-icon": icon,
|
|
14874
|
-
className:
|
|
14875
|
-
children: CARD_ICON_NODES[icon].map(([Tag, attrs], i) => /* @__PURE__ */
|
|
15053
|
+
className: cn15("h-5 w-5", className),
|
|
15054
|
+
children: CARD_ICON_NODES[icon].map(([Tag, attrs], i) => /* @__PURE__ */ jsx22(Tag, { ...attrs }, i))
|
|
14876
15055
|
}
|
|
14877
15056
|
);
|
|
14878
15057
|
}
|
|
14879
15058
|
function IconCardGrid({ items, intro, headingLevel = 3, className }) {
|
|
14880
15059
|
const hasIntro = !!intro && intro.trim() !== "";
|
|
14881
15060
|
if (items.length === 0 && !hasIntro) return null;
|
|
14882
|
-
return /* @__PURE__ */
|
|
14883
|
-
hasIntro && /* @__PURE__ */
|
|
14884
|
-
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(
|
|
14885
15064
|
"ul",
|
|
14886
15065
|
{
|
|
14887
15066
|
"data-slot": "icon-card-grid",
|
|
14888
15067
|
className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3",
|
|
14889
|
-
children: items.map((item, i) => /* @__PURE__ */
|
|
15068
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxs21(
|
|
14890
15069
|
"li",
|
|
14891
15070
|
{
|
|
14892
15071
|
"data-slot": "icon-card",
|
|
14893
15072
|
className: "space-y-3 rounded-xl border border-border bg-card p-6 text-card-foreground",
|
|
14894
15073
|
children: [
|
|
14895
|
-
hasCardIcon(item.icon) && /* @__PURE__ */
|
|
14896
|
-
/* @__PURE__ */
|
|
14897
|
-
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 })
|
|
14898
15077
|
]
|
|
14899
15078
|
},
|
|
14900
15079
|
`${item.title}-${i}`
|
|
@@ -14920,19 +15099,19 @@ function ImageTextSplit({
|
|
|
14920
15099
|
const imageRight = imageSide === "right";
|
|
14921
15100
|
const hasKicker = !!kicker && kicker.trim() !== "";
|
|
14922
15101
|
const bodyOffset = heading ? headingLevel : headingLevel - 1;
|
|
14923
|
-
return /* @__PURE__ */
|
|
15102
|
+
return /* @__PURE__ */ jsxs21(
|
|
14924
15103
|
"div",
|
|
14925
15104
|
{
|
|
14926
15105
|
"data-slot": "image-text",
|
|
14927
15106
|
"data-image-side": imageRight ? "right" : "left",
|
|
14928
|
-
className:
|
|
15107
|
+
className: cn15("grid grid-cols-1 items-center gap-8 md:grid-cols-2", className),
|
|
14929
15108
|
children: [
|
|
14930
|
-
/* @__PURE__ */
|
|
15109
|
+
/* @__PURE__ */ jsx22(
|
|
14931
15110
|
"div",
|
|
14932
15111
|
{
|
|
14933
15112
|
"data-slot": "image-text-media",
|
|
14934
|
-
className:
|
|
14935
|
-
children: /* @__PURE__ */
|
|
15113
|
+
className: cn15(textFirst ? "order-2" : "order-1", imageRight ? "md:order-2" : "md:order-1"),
|
|
15114
|
+
children: /* @__PURE__ */ jsx22("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx22(
|
|
14936
15115
|
"img",
|
|
14937
15116
|
{
|
|
14938
15117
|
src: imageUrl,
|
|
@@ -14944,21 +15123,21 @@ function ImageTextSplit({
|
|
|
14944
15123
|
) })
|
|
14945
15124
|
}
|
|
14946
15125
|
),
|
|
14947
|
-
/* @__PURE__ */
|
|
15126
|
+
/* @__PURE__ */ jsxs21(
|
|
14948
15127
|
"div",
|
|
14949
15128
|
{
|
|
14950
15129
|
"data-slot": "image-text-body",
|
|
14951
|
-
className:
|
|
15130
|
+
className: cn15(
|
|
14952
15131
|
"space-y-4",
|
|
14953
15132
|
textFirst ? "order-1" : "order-2",
|
|
14954
15133
|
imageRight ? "md:order-1" : "md:order-2"
|
|
14955
15134
|
),
|
|
14956
15135
|
children: [
|
|
14957
|
-
(hasKicker || heading) && /* @__PURE__ */
|
|
14958
|
-
hasKicker && /* @__PURE__ */
|
|
14959
|
-
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 }) })
|
|
14960
15139
|
] }),
|
|
14961
|
-
html5 && /* @__PURE__ */
|
|
15140
|
+
html5 && /* @__PURE__ */ jsx22(SafeHtml, { html: sanitizeHtml(html5), headingOffset: bodyOffset })
|
|
14962
15141
|
]
|
|
14963
15142
|
}
|
|
14964
15143
|
)
|
|
@@ -14968,38 +15147,38 @@ function ImageTextSplit({
|
|
|
14968
15147
|
}
|
|
14969
15148
|
|
|
14970
15149
|
// src/components/page-blocks.tsx
|
|
14971
|
-
import { jsx as
|
|
15150
|
+
import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
14972
15151
|
var ALIASES = {
|
|
14973
15152
|
doctor_embed: "profile_embed",
|
|
14974
15153
|
specialty_embed: "page_embed"
|
|
14975
15154
|
};
|
|
14976
15155
|
function HeroBlock({ block, headingLevel }) {
|
|
14977
15156
|
const { title, subtitle, imageUrl } = block.data;
|
|
14978
|
-
return /* @__PURE__ */
|
|
14979
|
-
/* @__PURE__ */
|
|
14980
|
-
subtitle && /* @__PURE__ */
|
|
14981
|
-
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" }) })
|
|
14982
15161
|
] });
|
|
14983
15162
|
}
|
|
14984
15163
|
function RichtextBlock({ block, headingLevel }) {
|
|
14985
|
-
return /* @__PURE__ */
|
|
15164
|
+
return /* @__PURE__ */ jsx23(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
|
|
14986
15165
|
}
|
|
14987
15166
|
function FaqBlock({ block }) {
|
|
14988
|
-
return /* @__PURE__ */
|
|
15167
|
+
return /* @__PURE__ */ jsx23(FaqAccordion, { items: block.data.items });
|
|
14989
15168
|
}
|
|
14990
15169
|
function StatsBlock({ block }) {
|
|
14991
|
-
return /* @__PURE__ */
|
|
14992
|
-
/* @__PURE__ */
|
|
14993
|
-
/* @__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 })
|
|
14994
15173
|
] }, i)) });
|
|
14995
15174
|
}
|
|
14996
15175
|
function TestimonialBlock({ block }) {
|
|
14997
15176
|
const { quote, author, role, avatarUrl } = block.data;
|
|
14998
|
-
return /* @__PURE__ */
|
|
14999
|
-
/* @__PURE__ */
|
|
15000
|
-
/* @__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: [
|
|
15001
15180
|
avatarUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
15002
|
-
/* @__PURE__ */
|
|
15181
|
+
/* @__PURE__ */ jsx23(
|
|
15003
15182
|
"img",
|
|
15004
15183
|
{
|
|
15005
15184
|
src: avatarUrl,
|
|
@@ -15008,9 +15187,9 @@ function TestimonialBlock({ block }) {
|
|
|
15008
15187
|
className: "h-10 w-10 rounded-full object-cover"
|
|
15009
15188
|
}
|
|
15010
15189
|
),
|
|
15011
|
-
/* @__PURE__ */
|
|
15012
|
-
/* @__PURE__ */
|
|
15013
|
-
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 })
|
|
15014
15193
|
] })
|
|
15015
15194
|
] })
|
|
15016
15195
|
] });
|
|
@@ -15019,19 +15198,19 @@ function CtaSlotBlock(_props) {
|
|
|
15019
15198
|
return null;
|
|
15020
15199
|
}
|
|
15021
15200
|
function FeatureListBlock({ block }) {
|
|
15022
|
-
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)) });
|
|
15023
15202
|
}
|
|
15024
15203
|
function GalleryBlock({ block }) {
|
|
15025
15204
|
const { images } = block.data;
|
|
15026
|
-
return /* @__PURE__ */
|
|
15205
|
+
return /* @__PURE__ */ jsx23(
|
|
15027
15206
|
"div",
|
|
15028
15207
|
{
|
|
15029
|
-
className:
|
|
15208
|
+
className: cn16(
|
|
15030
15209
|
"grid gap-4",
|
|
15031
15210
|
images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
|
|
15032
15211
|
),
|
|
15033
|
-
children: images.map((img, i) => /* @__PURE__ */
|
|
15034
|
-
/* @__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(
|
|
15035
15214
|
"img",
|
|
15036
15215
|
{
|
|
15037
15216
|
src: img.url,
|
|
@@ -15040,7 +15219,7 @@ function GalleryBlock({ block }) {
|
|
|
15040
15219
|
className: "h-full w-full object-cover"
|
|
15041
15220
|
}
|
|
15042
15221
|
) }),
|
|
15043
|
-
img.caption && /* @__PURE__ */
|
|
15222
|
+
img.caption && /* @__PURE__ */ jsx23("figcaption", { className: "text-sm opacity-80", children: img.caption })
|
|
15044
15223
|
] }, `${img.url}-${i}`))
|
|
15045
15224
|
}
|
|
15046
15225
|
);
|
|
@@ -15050,13 +15229,13 @@ function EmbedCard({
|
|
|
15050
15229
|
headingLevel,
|
|
15051
15230
|
embedHref
|
|
15052
15231
|
}) {
|
|
15053
|
-
return /* @__PURE__ */
|
|
15232
|
+
return /* @__PURE__ */ jsxs22(
|
|
15054
15233
|
"a",
|
|
15055
15234
|
{
|
|
15056
15235
|
href: embedHref(resolved),
|
|
15057
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",
|
|
15058
15237
|
children: [
|
|
15059
|
-
resolved.coverImageUrl && /* @__PURE__ */
|
|
15238
|
+
resolved.coverImageUrl && /* @__PURE__ */ jsx23("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx23(
|
|
15060
15239
|
"img",
|
|
15061
15240
|
{
|
|
15062
15241
|
src: resolved.coverImageUrl,
|
|
@@ -15065,35 +15244,35 @@ function EmbedCard({
|
|
|
15065
15244
|
className: "h-full w-full object-cover"
|
|
15066
15245
|
}
|
|
15067
15246
|
) }),
|
|
15068
|
-
/* @__PURE__ */
|
|
15069
|
-
/* @__PURE__ */
|
|
15070
|
-
resolved.role && /* @__PURE__ */
|
|
15071
|
-
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 })
|
|
15072
15251
|
] })
|
|
15073
15252
|
]
|
|
15074
15253
|
}
|
|
15075
15254
|
);
|
|
15076
15255
|
}
|
|
15077
15256
|
function PageEmbedBlock({ block, headingLevel, embedHref }) {
|
|
15078
|
-
return /* @__PURE__ */
|
|
15257
|
+
return /* @__PURE__ */ jsx23(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
15079
15258
|
}
|
|
15080
15259
|
function ProfileEmbedBlock({
|
|
15081
15260
|
block,
|
|
15082
15261
|
headingLevel,
|
|
15083
15262
|
embedHref
|
|
15084
15263
|
}) {
|
|
15085
|
-
return /* @__PURE__ */
|
|
15264
|
+
return /* @__PURE__ */ jsx23(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
15086
15265
|
}
|
|
15087
15266
|
function BeforeAfterBlock({ block }) {
|
|
15088
15267
|
const { pairs, showCaption, caption } = block.data;
|
|
15089
|
-
return /* @__PURE__ */
|
|
15268
|
+
return /* @__PURE__ */ jsx23(BeforeAfterPairs, { pairs, showCaption, caption });
|
|
15090
15269
|
}
|
|
15091
15270
|
function ChipsBlock({ block }) {
|
|
15092
|
-
return /* @__PURE__ */
|
|
15271
|
+
return /* @__PURE__ */ jsx23(ChipList, { items: block.data.items });
|
|
15093
15272
|
}
|
|
15094
15273
|
function ImageTextBlock({ block, headingLevel, headingId }) {
|
|
15095
15274
|
const { kicker, imageUrl, alt, imageSide, mobileOrder, html: html5 } = block.data;
|
|
15096
|
-
return /* @__PURE__ */
|
|
15275
|
+
return /* @__PURE__ */ jsx23(
|
|
15097
15276
|
ImageTextSplit,
|
|
15098
15277
|
{
|
|
15099
15278
|
imageUrl,
|
|
@@ -15109,7 +15288,17 @@ function ImageTextBlock({ block, headingLevel, headingId }) {
|
|
|
15109
15288
|
);
|
|
15110
15289
|
}
|
|
15111
15290
|
function IconCardsBlock({ block, headingLevel }) {
|
|
15112
|
-
return /* @__PURE__ */
|
|
15291
|
+
return /* @__PURE__ */ jsx23(IconCardGrid, { items: block.data.items, intro: block.data.intro, headingLevel });
|
|
15292
|
+
}
|
|
15293
|
+
function ReviewsBlock({ block }) {
|
|
15294
|
+
const { layout, notice } = block.data;
|
|
15295
|
+
return /* @__PURE__ */ jsx23("div", { "data-slot": "reviews-block", "data-reviews-layout": layout ?? "grid", children: /* @__PURE__ */ jsx23(
|
|
15296
|
+
Reviews,
|
|
15297
|
+
{
|
|
15298
|
+
reviews: block.reviews,
|
|
15299
|
+
notice: notice && notice.trim() !== "" ? notice : void 0
|
|
15300
|
+
}
|
|
15301
|
+
) });
|
|
15113
15302
|
}
|
|
15114
15303
|
var DEFAULT_RENDERERS = {
|
|
15115
15304
|
hero: HeroBlock,
|
|
@@ -15125,7 +15314,8 @@ var DEFAULT_RENDERERS = {
|
|
|
15125
15314
|
before_after: BeforeAfterBlock,
|
|
15126
15315
|
chips: ChipsBlock,
|
|
15127
15316
|
icon_cards: IconCardsBlock,
|
|
15128
|
-
image_text: ImageTextBlock
|
|
15317
|
+
image_text: ImageTextBlock,
|
|
15318
|
+
reviews: ReviewsBlock
|
|
15129
15319
|
};
|
|
15130
15320
|
var KICKER_TYPES = /* @__PURE__ */ new Set([
|
|
15131
15321
|
"before_after",
|
|
@@ -15183,14 +15373,14 @@ function toIdFragment(value) {
|
|
|
15183
15373
|
function SectionCta2({ cta }) {
|
|
15184
15374
|
if (!hasUsableCta(cta)) return null;
|
|
15185
15375
|
const variant = toButtonVariant(cta.variant);
|
|
15186
|
-
return /* @__PURE__ */
|
|
15376
|
+
return /* @__PURE__ */ jsx23("div", { className: "pt-2", children: /* @__PURE__ */ jsx23(
|
|
15187
15377
|
"a",
|
|
15188
15378
|
{
|
|
15189
15379
|
href: cta.url,
|
|
15190
15380
|
"data-slot": "button",
|
|
15191
15381
|
"data-variant": variant,
|
|
15192
15382
|
"data-size": "default",
|
|
15193
|
-
className:
|
|
15383
|
+
className: cn16(buttonVariants2({ variant, size: "default" })),
|
|
15194
15384
|
...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
|
|
15195
15385
|
children: cta.label
|
|
15196
15386
|
}
|
|
@@ -15211,6 +15401,8 @@ function PageBlocks({
|
|
|
15211
15401
|
const type = canonicalTypeOf(block.blockType);
|
|
15212
15402
|
if (type === null) return [];
|
|
15213
15403
|
if (EMBED_TYPES.has(type) && !block.resolved) return [];
|
|
15404
|
+
if (type === "reviews" && (!Array.isArray(block.reviews) || block.reviews.length === 0))
|
|
15405
|
+
return [];
|
|
15214
15406
|
if (type === "cta" && !components?.cta && !block.heading && !hasUsableCta(block.cta)) return [];
|
|
15215
15407
|
const Renderer = components?.[type] ?? DEFAULT_RENDERERS[type];
|
|
15216
15408
|
const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
|
|
@@ -15218,18 +15410,18 @@ function PageBlocks({
|
|
|
15218
15410
|
const kicker = kickerOf(type, block);
|
|
15219
15411
|
const ownsHeading = OWN_HEADING_TYPES.has(type);
|
|
15220
15412
|
return [
|
|
15221
|
-
/* @__PURE__ */
|
|
15413
|
+
/* @__PURE__ */ jsxs22(
|
|
15222
15414
|
"section",
|
|
15223
15415
|
{
|
|
15224
15416
|
"data-slot": "page-block",
|
|
15225
15417
|
"data-block-type": type,
|
|
15226
15418
|
"aria-labelledby": headingId,
|
|
15227
15419
|
style: surfaceStyle(background),
|
|
15228
|
-
className:
|
|
15420
|
+
className: cn16("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
|
|
15229
15421
|
children: [
|
|
15230
|
-
kicker && /* @__PURE__ */
|
|
15231
|
-
block.heading && !ownsHeading && /* @__PURE__ */
|
|
15232
|
-
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(
|
|
15233
15425
|
Renderer,
|
|
15234
15426
|
{
|
|
15235
15427
|
block,
|
|
@@ -15237,7 +15429,7 @@ function PageBlocks({
|
|
|
15237
15429
|
embedHref,
|
|
15238
15430
|
headingId
|
|
15239
15431
|
}
|
|
15240
|
-
) : /* @__PURE__ */
|
|
15432
|
+
) : /* @__PURE__ */ jsx23(
|
|
15241
15433
|
Renderer,
|
|
15242
15434
|
{
|
|
15243
15435
|
block,
|
|
@@ -15245,7 +15437,7 @@ function PageBlocks({
|
|
|
15245
15437
|
embedHref
|
|
15246
15438
|
}
|
|
15247
15439
|
),
|
|
15248
|
-
/* @__PURE__ */
|
|
15440
|
+
/* @__PURE__ */ jsx23(SectionCta2, { cta: block.cta })
|
|
15249
15441
|
]
|
|
15250
15442
|
},
|
|
15251
15443
|
block.id
|
|
@@ -15253,12 +15445,12 @@ function PageBlocks({
|
|
|
15253
15445
|
];
|
|
15254
15446
|
});
|
|
15255
15447
|
if (sections.length === 0) return null;
|
|
15256
|
-
return /* @__PURE__ */
|
|
15448
|
+
return /* @__PURE__ */ jsx23("div", { className: cn16("space-y-12", className), "data-slot": "page-blocks", children: sections });
|
|
15257
15449
|
}
|
|
15258
15450
|
|
|
15259
15451
|
// src/components/shop-filters.tsx
|
|
15260
|
-
import { cn as
|
|
15261
|
-
import { jsx as
|
|
15452
|
+
import { cn as cn17 } from "@reblu/site-ui/utils";
|
|
15453
|
+
import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
15262
15454
|
var DEFAULT_SHOP_PRICE_BANDS = [
|
|
15263
15455
|
{ max: 2500 },
|
|
15264
15456
|
{ min: 2500, max: 5e3 },
|
|
@@ -15302,7 +15494,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
|
|
|
15302
15494
|
return "";
|
|
15303
15495
|
}
|
|
15304
15496
|
function OptionLink({ href, active, label, onActivate }) {
|
|
15305
|
-
return /* @__PURE__ */
|
|
15497
|
+
return /* @__PURE__ */ jsx24(
|
|
15306
15498
|
"a",
|
|
15307
15499
|
{
|
|
15308
15500
|
href,
|
|
@@ -15311,7 +15503,7 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
15311
15503
|
event.preventDefault();
|
|
15312
15504
|
onActivate();
|
|
15313
15505
|
} : void 0,
|
|
15314
|
-
className:
|
|
15506
|
+
className: cn17(
|
|
15315
15507
|
"inline-flex items-center rounded-full border px-3 py-1 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
15316
15508
|
active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
15317
15509
|
),
|
|
@@ -15320,9 +15512,9 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
15320
15512
|
);
|
|
15321
15513
|
}
|
|
15322
15514
|
function FilterFieldset({ legend, children: children2 }) {
|
|
15323
|
-
return /* @__PURE__ */
|
|
15324
|
-
/* @__PURE__ */
|
|
15325
|
-
/* @__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 })
|
|
15326
15518
|
] });
|
|
15327
15519
|
}
|
|
15328
15520
|
function ShopFilters({
|
|
@@ -15345,11 +15537,11 @@ function ShopFilters({
|
|
|
15345
15537
|
if (!shouldRenderShopFilters(facets, active)) {
|
|
15346
15538
|
return null;
|
|
15347
15539
|
}
|
|
15348
|
-
return /* @__PURE__ */
|
|
15540
|
+
return /* @__PURE__ */ jsxs23("div", { className: cn17("space-y-6", className), "data-slot": "shop-filters", children: [
|
|
15349
15541
|
visibleTaxonomies.map((axis) => {
|
|
15350
15542
|
const activeSlug = active.taxonomy?.[axis.key];
|
|
15351
|
-
return /* @__PURE__ */
|
|
15352
|
-
/* @__PURE__ */
|
|
15543
|
+
return /* @__PURE__ */ jsxs23(FilterFieldset, { legend: axis.label, children: [
|
|
15544
|
+
/* @__PURE__ */ jsx24(
|
|
15353
15545
|
OptionLink,
|
|
15354
15546
|
{
|
|
15355
15547
|
href: hrefs.taxonomy(axis.key, void 0),
|
|
@@ -15364,7 +15556,7 @@ function ShopFilters({
|
|
|
15364
15556
|
),
|
|
15365
15557
|
axis.terms.map((term) => {
|
|
15366
15558
|
const isActive = activeSlug === term.slug;
|
|
15367
|
-
return /* @__PURE__ */
|
|
15559
|
+
return /* @__PURE__ */ jsx24(
|
|
15368
15560
|
OptionLink,
|
|
15369
15561
|
{
|
|
15370
15562
|
href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
|
|
@@ -15384,9 +15576,9 @@ function ShopFilters({
|
|
|
15384
15576
|
}),
|
|
15385
15577
|
visibleAttributes.map((attr) => {
|
|
15386
15578
|
const activeValues = toValueArray(active.attr?.[attr.key]);
|
|
15387
|
-
return /* @__PURE__ */
|
|
15579
|
+
return /* @__PURE__ */ jsx24(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
|
|
15388
15580
|
const isActive = activeValues.includes(opt.value);
|
|
15389
|
-
return /* @__PURE__ */
|
|
15581
|
+
return /* @__PURE__ */ jsx24(
|
|
15390
15582
|
OptionLink,
|
|
15391
15583
|
{
|
|
15392
15584
|
href: hrefs.attr(attr.key, opt.value),
|
|
@@ -15404,11 +15596,11 @@ function ShopFilters({
|
|
|
15404
15596
|
);
|
|
15405
15597
|
}) }, attr.key);
|
|
15406
15598
|
}),
|
|
15407
|
-
showPriceGroup && /* @__PURE__ */
|
|
15599
|
+
showPriceGroup && /* @__PURE__ */ jsx24(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
|
|
15408
15600
|
const isActive = active.priceMin === band.min && active.priceMax === band.max;
|
|
15409
15601
|
const nextMin = isActive ? void 0 : band.min;
|
|
15410
15602
|
const nextMax = isActive ? void 0 : band.max;
|
|
15411
|
-
return /* @__PURE__ */
|
|
15603
|
+
return /* @__PURE__ */ jsx24(
|
|
15412
15604
|
OptionLink,
|
|
15413
15605
|
{
|
|
15414
15606
|
href: hrefs.price(nextMin, nextMax),
|
|
@@ -15419,7 +15611,7 @@ function ShopFilters({
|
|
|
15419
15611
|
i
|
|
15420
15612
|
);
|
|
15421
15613
|
}) }),
|
|
15422
|
-
hasOnSale && /* @__PURE__ */
|
|
15614
|
+
hasOnSale && /* @__PURE__ */ jsx24(
|
|
15423
15615
|
OptionLink,
|
|
15424
15616
|
{
|
|
15425
15617
|
href: hrefs.onSale(!active.onSale),
|
|
@@ -15428,7 +15620,7 @@ function ShopFilters({
|
|
|
15428
15620
|
onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
|
|
15429
15621
|
}
|
|
15430
15622
|
),
|
|
15431
|
-
/* @__PURE__ */
|
|
15623
|
+
/* @__PURE__ */ jsx24(
|
|
15432
15624
|
"a",
|
|
15433
15625
|
{
|
|
15434
15626
|
href: hrefs.clearAll(),
|
|
@@ -15444,8 +15636,8 @@ function ShopFilters({
|
|
|
15444
15636
|
}
|
|
15445
15637
|
|
|
15446
15638
|
// src/components/course-catalog-filters.tsx
|
|
15447
|
-
import { cn as
|
|
15448
|
-
import { jsx as
|
|
15639
|
+
import { cn as cn18 } from "@reblu/site-ui/utils";
|
|
15640
|
+
import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
15449
15641
|
var DEFAULT_COURSE_PRICE_BANDS = [
|
|
15450
15642
|
{ max: 5e3 },
|
|
15451
15643
|
{ min: 5e3, max: 15e3 },
|
|
@@ -15498,9 +15690,9 @@ function CourseCatalogFilters({
|
|
|
15498
15690
|
const showPrice = enabled.price !== false;
|
|
15499
15691
|
const isFree = Boolean(active.free);
|
|
15500
15692
|
if (!showCategories && !showInstructors && !showPrice) return null;
|
|
15501
|
-
return /* @__PURE__ */
|
|
15502
|
-
showCategories && /* @__PURE__ */
|
|
15503
|
-
/* @__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(
|
|
15504
15696
|
OptionLink,
|
|
15505
15697
|
{
|
|
15506
15698
|
href: categoryHref(void 0),
|
|
@@ -15512,7 +15704,7 @@ function CourseCatalogFilters({
|
|
|
15512
15704
|
sortedCategories.map((category) => {
|
|
15513
15705
|
const isActive = active.category === category.slug;
|
|
15514
15706
|
const next2 = isActive ? void 0 : category.slug;
|
|
15515
|
-
return /* @__PURE__ */
|
|
15707
|
+
return /* @__PURE__ */ jsx25(
|
|
15516
15708
|
OptionLink,
|
|
15517
15709
|
{
|
|
15518
15710
|
href: categoryHref(next2),
|
|
@@ -15524,8 +15716,8 @@ function CourseCatalogFilters({
|
|
|
15524
15716
|
);
|
|
15525
15717
|
})
|
|
15526
15718
|
] }),
|
|
15527
|
-
showInstructors && /* @__PURE__ */
|
|
15528
|
-
/* @__PURE__ */
|
|
15719
|
+
showInstructors && /* @__PURE__ */ jsxs24(FilterFieldset, { legend: t.instructor, children: [
|
|
15720
|
+
/* @__PURE__ */ jsx25(
|
|
15529
15721
|
OptionLink,
|
|
15530
15722
|
{
|
|
15531
15723
|
href: hrefs.instructor(void 0),
|
|
@@ -15537,7 +15729,7 @@ function CourseCatalogFilters({
|
|
|
15537
15729
|
named.map((instructor) => {
|
|
15538
15730
|
const isActive = active.instructor === instructor.id;
|
|
15539
15731
|
const next2 = isActive ? void 0 : instructor.id;
|
|
15540
|
-
return /* @__PURE__ */
|
|
15732
|
+
return /* @__PURE__ */ jsx25(
|
|
15541
15733
|
OptionLink,
|
|
15542
15734
|
{
|
|
15543
15735
|
href: hrefs.instructor(next2),
|
|
@@ -15549,8 +15741,8 @@ function CourseCatalogFilters({
|
|
|
15549
15741
|
);
|
|
15550
15742
|
})
|
|
15551
15743
|
] }),
|
|
15552
|
-
showPrice && /* @__PURE__ */
|
|
15553
|
-
/* @__PURE__ */
|
|
15744
|
+
showPrice && /* @__PURE__ */ jsxs24(FilterFieldset, { legend: t.price, children: [
|
|
15745
|
+
/* @__PURE__ */ jsx25(
|
|
15554
15746
|
OptionLink,
|
|
15555
15747
|
{
|
|
15556
15748
|
href: hrefs.free(!isFree),
|
|
@@ -15565,7 +15757,7 @@ function CourseCatalogFilters({
|
|
|
15565
15757
|
const isActive = !isFree && active.priceMin === band.min && active.priceMax === band.max;
|
|
15566
15758
|
const nextMin = isActive ? void 0 : band.min;
|
|
15567
15759
|
const nextMax = isActive ? void 0 : band.max;
|
|
15568
|
-
return /* @__PURE__ */
|
|
15760
|
+
return /* @__PURE__ */ jsx25(
|
|
15569
15761
|
OptionLink,
|
|
15570
15762
|
{
|
|
15571
15763
|
href: hrefs.price(nextMin, nextMax),
|
|
@@ -15577,7 +15769,7 @@ function CourseCatalogFilters({
|
|
|
15577
15769
|
);
|
|
15578
15770
|
})
|
|
15579
15771
|
] }),
|
|
15580
|
-
/* @__PURE__ */
|
|
15772
|
+
/* @__PURE__ */ jsx25(
|
|
15581
15773
|
"a",
|
|
15582
15774
|
{
|
|
15583
15775
|
href: hrefs.clearAll(),
|
|
@@ -15599,8 +15791,8 @@ function CourseCatalogFilters({
|
|
|
15599
15791
|
}
|
|
15600
15792
|
|
|
15601
15793
|
// src/components/cart-line-list.tsx
|
|
15602
|
-
import { cn as
|
|
15603
|
-
import { jsx as
|
|
15794
|
+
import { cn as cn19 } from "@reblu/site-ui/utils";
|
|
15795
|
+
import { jsx as jsx26, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
15604
15796
|
var DEFAULT_LABELS2 = {
|
|
15605
15797
|
quantityLabel: "Cantidad",
|
|
15606
15798
|
decrease: "Reducir cantidad",
|
|
@@ -15613,20 +15805,20 @@ var DEFAULT_LABELS2 = {
|
|
|
15613
15805
|
function CartLineIncludes({ entries, note, className }) {
|
|
15614
15806
|
const hasNote = note != null && note !== false && note !== "";
|
|
15615
15807
|
if (entries.length === 0 && !hasNote) return null;
|
|
15616
|
-
return /* @__PURE__ */
|
|
15808
|
+
return /* @__PURE__ */ jsxs25(
|
|
15617
15809
|
"div",
|
|
15618
15810
|
{
|
|
15619
|
-
className:
|
|
15811
|
+
className: cn19("mt-2 space-y-2 rounded-lg bg-muted px-4 py-3 text-sm", className),
|
|
15620
15812
|
"data-slot": "cart-line-includes",
|
|
15621
15813
|
children: [
|
|
15622
|
-
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) => (
|
|
15623
15815
|
// eslint-disable-next-line react/no-array-index-key -- entries are positional, SITE-built rows
|
|
15624
|
-
/* @__PURE__ */
|
|
15625
|
-
/* @__PURE__ */
|
|
15626
|
-
/* @__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 })
|
|
15627
15819
|
] }, idx)
|
|
15628
15820
|
)) }),
|
|
15629
|
-
hasNote && /* @__PURE__ */
|
|
15821
|
+
hasNote && /* @__PURE__ */ jsx26("p", { className: "text-muted-foreground", children: note })
|
|
15630
15822
|
]
|
|
15631
15823
|
}
|
|
15632
15824
|
);
|
|
@@ -15655,9 +15847,9 @@ function CartLineList({
|
|
|
15655
15847
|
}) {
|
|
15656
15848
|
const t = { ...DEFAULT_LABELS2, ...labels };
|
|
15657
15849
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
15658
|
-
return /* @__PURE__ */
|
|
15659
|
-
/* @__PURE__ */
|
|
15660
|
-
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(
|
|
15661
15853
|
"div",
|
|
15662
15854
|
{
|
|
15663
15855
|
role: "status",
|
|
@@ -15666,34 +15858,34 @@ function CartLineList({
|
|
|
15666
15858
|
children: noticeContent
|
|
15667
15859
|
}
|
|
15668
15860
|
),
|
|
15669
|
-
/* @__PURE__ */
|
|
15861
|
+
/* @__PURE__ */ jsx26("ul", { className: "space-y-4", children: items.map((item) => {
|
|
15670
15862
|
const maxQty = item.maxStock ?? Infinity;
|
|
15671
15863
|
const atMax = item.quantity >= maxQty;
|
|
15672
15864
|
const atMin = item.quantity <= 1;
|
|
15673
15865
|
const message = lineMessage?.(item);
|
|
15674
15866
|
const includes = lineIncludes?.(item);
|
|
15675
|
-
return /* @__PURE__ */
|
|
15867
|
+
return /* @__PURE__ */ jsxs25(
|
|
15676
15868
|
"li",
|
|
15677
15869
|
{
|
|
15678
15870
|
className: "flex gap-4 rounded-xl border border-border bg-card p-4",
|
|
15679
15871
|
children: [
|
|
15680
|
-
/* @__PURE__ */
|
|
15681
|
-
/* @__PURE__ */
|
|
15682
|
-
/* @__PURE__ */
|
|
15683
|
-
item.variantName && /* @__PURE__ */
|
|
15684
|
-
/* @__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: [
|
|
15685
15877
|
formatPrice(item.unitPrice, currencyCode, locale),
|
|
15686
15878
|
" ",
|
|
15687
15879
|
t.unitPriceSuffix
|
|
15688
15880
|
] }),
|
|
15689
|
-
/* @__PURE__ */
|
|
15881
|
+
/* @__PURE__ */ jsxs25(
|
|
15690
15882
|
"div",
|
|
15691
15883
|
{
|
|
15692
15884
|
role: "group",
|
|
15693
15885
|
"aria-label": t.quantityLabel,
|
|
15694
15886
|
className: "mt-3 flex items-center gap-3",
|
|
15695
15887
|
children: [
|
|
15696
|
-
/* @__PURE__ */
|
|
15888
|
+
/* @__PURE__ */ jsx26(
|
|
15697
15889
|
"button",
|
|
15698
15890
|
{
|
|
15699
15891
|
type: "button",
|
|
@@ -15704,8 +15896,8 @@ function CartLineList({
|
|
|
15704
15896
|
children: "\u2212"
|
|
15705
15897
|
}
|
|
15706
15898
|
),
|
|
15707
|
-
/* @__PURE__ */
|
|
15708
|
-
/* @__PURE__ */
|
|
15899
|
+
/* @__PURE__ */ jsx26("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
|
|
15900
|
+
/* @__PURE__ */ jsx26(
|
|
15709
15901
|
"button",
|
|
15710
15902
|
{
|
|
15711
15903
|
type: "button",
|
|
@@ -15716,7 +15908,7 @@ function CartLineList({
|
|
|
15716
15908
|
children: "+"
|
|
15717
15909
|
}
|
|
15718
15910
|
),
|
|
15719
|
-
onRemove && /* @__PURE__ */
|
|
15911
|
+
onRemove && /* @__PURE__ */ jsx26(
|
|
15720
15912
|
"button",
|
|
15721
15913
|
{
|
|
15722
15914
|
type: "button",
|
|
@@ -15729,7 +15921,7 @@ function CartLineList({
|
|
|
15729
15921
|
]
|
|
15730
15922
|
}
|
|
15731
15923
|
),
|
|
15732
|
-
message != null && message !== false && /* @__PURE__ */
|
|
15924
|
+
message != null && message !== false && /* @__PURE__ */ jsx26(
|
|
15733
15925
|
"p",
|
|
15734
15926
|
{
|
|
15735
15927
|
className: "mt-2 text-sm text-destructive",
|
|
@@ -15737,12 +15929,12 @@ function CartLineList({
|
|
|
15737
15929
|
children: message
|
|
15738
15930
|
}
|
|
15739
15931
|
),
|
|
15740
|
-
includes != null && includes !== false && /* @__PURE__ */
|
|
15741
|
-
/* @__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 }),
|
|
15742
15934
|
includes
|
|
15743
15935
|
] })
|
|
15744
15936
|
] }),
|
|
15745
|
-
/* @__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) }) })
|
|
15746
15938
|
]
|
|
15747
15939
|
},
|
|
15748
15940
|
lineKey(item.productId, item.variantId)
|
|
@@ -15752,8 +15944,8 @@ function CartLineList({
|
|
|
15752
15944
|
}
|
|
15753
15945
|
|
|
15754
15946
|
// src/components/cart-summary.tsx
|
|
15755
|
-
import { cn as
|
|
15756
|
-
import { jsx as
|
|
15947
|
+
import { cn as cn20 } from "@reblu/site-ui/utils";
|
|
15948
|
+
import { jsx as jsx27, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
15757
15949
|
var DEFAULT_LABELS3 = {
|
|
15758
15950
|
subtotal: "Subtotal",
|
|
15759
15951
|
discountPrefix: "Descuento",
|
|
@@ -15783,37 +15975,37 @@ function CartSummary({
|
|
|
15783
15975
|
const hasDiscount = Boolean(discountAmount && discountAmount > 0);
|
|
15784
15976
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
15785
15977
|
const hasNotice = noticeContent != null && noticeContent !== false;
|
|
15786
|
-
const breakdown = /* @__PURE__ */
|
|
15978
|
+
const breakdown = /* @__PURE__ */ jsxs26(
|
|
15787
15979
|
"dl",
|
|
15788
15980
|
{
|
|
15789
|
-
className:
|
|
15981
|
+
className: cn20("space-y-2 text-sm", !hasNotice && className),
|
|
15790
15982
|
"data-slot": "cart-summary",
|
|
15791
15983
|
children: [
|
|
15792
|
-
/* @__PURE__ */
|
|
15793
|
-
/* @__PURE__ */
|
|
15794
|
-
/* @__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) })
|
|
15795
15987
|
] }),
|
|
15796
|
-
hasDiscount && /* @__PURE__ */
|
|
15797
|
-
/* @__PURE__ */
|
|
15798
|
-
/* @__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: [
|
|
15799
15991
|
"-",
|
|
15800
15992
|
formatPrice(discountAmount, currencyCode, locale)
|
|
15801
15993
|
] })
|
|
15802
15994
|
] }),
|
|
15803
|
-
shippingEnabled && /* @__PURE__ */
|
|
15804
|
-
/* @__PURE__ */
|
|
15805
|
-
/* @__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) })
|
|
15806
15998
|
] }),
|
|
15807
|
-
/* @__PURE__ */
|
|
15808
|
-
/* @__PURE__ */
|
|
15809
|
-
/* @__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) })
|
|
15810
16002
|
] })
|
|
15811
16003
|
]
|
|
15812
16004
|
}
|
|
15813
16005
|
);
|
|
15814
16006
|
if (!hasNotice) return breakdown;
|
|
15815
|
-
return /* @__PURE__ */
|
|
15816
|
-
/* @__PURE__ */
|
|
16007
|
+
return /* @__PURE__ */ jsxs26("div", { className: cn20("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
|
|
16008
|
+
/* @__PURE__ */ jsx27(
|
|
15817
16009
|
"div",
|
|
15818
16010
|
{
|
|
15819
16011
|
role: "status",
|
|
@@ -15827,8 +16019,8 @@ function CartSummary({
|
|
|
15827
16019
|
}
|
|
15828
16020
|
|
|
15829
16021
|
// src/components/cart-adjustments-notice.tsx
|
|
15830
|
-
import { cn as
|
|
15831
|
-
import { jsx as
|
|
16022
|
+
import { cn as cn21 } from "@reblu/site-ui/utils";
|
|
16023
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
15832
16024
|
var DEFAULT_LABELS4 = {
|
|
15833
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.`,
|
|
15834
16026
|
quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
|
|
@@ -15862,20 +16054,20 @@ function CartAdjustmentsNotice({
|
|
|
15862
16054
|
);
|
|
15863
16055
|
}
|
|
15864
16056
|
if (messages.length === 0) return null;
|
|
15865
|
-
return /* @__PURE__ */
|
|
16057
|
+
return /* @__PURE__ */ jsx28(
|
|
15866
16058
|
"div",
|
|
15867
16059
|
{
|
|
15868
16060
|
role: "status",
|
|
15869
|
-
className:
|
|
16061
|
+
className: cn21("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
|
|
15870
16062
|
"data-slot": "cart-adjustments-notice",
|
|
15871
|
-
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)) })
|
|
15872
16064
|
}
|
|
15873
16065
|
);
|
|
15874
16066
|
}
|
|
15875
16067
|
|
|
15876
16068
|
// src/components/added-to-cart-toast.tsx
|
|
15877
|
-
import { cn as
|
|
15878
|
-
import { jsx as
|
|
16069
|
+
import { cn as cn22 } from "@reblu/site-ui/utils";
|
|
16070
|
+
import { jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
15879
16071
|
var DEFAULT_LABELS5 = {
|
|
15880
16072
|
success: "A\xF1adido al carrito",
|
|
15881
16073
|
error: "No se pudo a\xF1adir al carrito",
|
|
@@ -15895,12 +16087,12 @@ function AddedToCartToast({
|
|
|
15895
16087
|
const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
|
|
15896
16088
|
const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
|
|
15897
16089
|
const variant = status === "success" ? "success" : "error";
|
|
15898
|
-
return /* @__PURE__ */
|
|
16090
|
+
return /* @__PURE__ */ jsxs27(
|
|
15899
16091
|
"div",
|
|
15900
16092
|
{
|
|
15901
16093
|
"data-slot": "added-to-cart-toast",
|
|
15902
16094
|
"data-variant": variant,
|
|
15903
|
-
className:
|
|
16095
|
+
className: cn22(
|
|
15904
16096
|
"flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
|
|
15905
16097
|
variant === "success" && "border-green-600/30 dark:border-green-400/30",
|
|
15906
16098
|
variant === "error" && "border-destructive/30",
|
|
@@ -15908,20 +16100,20 @@ function AddedToCartToast({
|
|
|
15908
16100
|
),
|
|
15909
16101
|
children: [
|
|
15910
16102
|
hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
|
|
15911
|
-
/* @__PURE__ */
|
|
15912
|
-
/* @__PURE__ */
|
|
15913
|
-
/* @__PURE__ */
|
|
15914
|
-
/* @__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 })
|
|
15915
16107
|
] }),
|
|
15916
|
-
/* @__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 }) })
|
|
15917
16109
|
]
|
|
15918
16110
|
}
|
|
15919
16111
|
);
|
|
15920
16112
|
}
|
|
15921
16113
|
|
|
15922
16114
|
// src/components/checkout-login-prompt.tsx
|
|
15923
|
-
import { cn as
|
|
15924
|
-
import { Fragment as Fragment5, jsx as
|
|
16115
|
+
import { cn as cn23 } from "@reblu/site-ui/utils";
|
|
16116
|
+
import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
15925
16117
|
var DEFAULT_LABELS6 = {
|
|
15926
16118
|
title: "Identificaci\xF3n",
|
|
15927
16119
|
description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
|
|
@@ -15948,26 +16140,26 @@ function CheckoutLoginPrompt({
|
|
|
15948
16140
|
if (!open) return null;
|
|
15949
16141
|
const t = { ...DEFAULT_LABELS6, ...labels };
|
|
15950
16142
|
const isValidEmail = EMAIL_PATTERN.test(email.trim());
|
|
15951
|
-
return /* @__PURE__ */
|
|
15952
|
-
/* @__PURE__ */
|
|
15953
|
-
/* @__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(
|
|
15954
16146
|
"div",
|
|
15955
16147
|
{
|
|
15956
16148
|
role: "dialog",
|
|
15957
16149
|
"aria-modal": "true",
|
|
15958
16150
|
"aria-labelledby": "checkout-login-prompt-title",
|
|
15959
16151
|
"data-slot": "checkout-login-prompt",
|
|
15960
|
-
className:
|
|
16152
|
+
className: cn23(
|
|
15961
16153
|
"fixed left-1/2 top-1/2 z-50 w-full max-w-md -translate-x-1/2 -translate-y-1/2 space-y-5 rounded-2xl border border-border bg-background p-6 shadow-2xl",
|
|
15962
16154
|
className
|
|
15963
16155
|
),
|
|
15964
16156
|
children: [
|
|
15965
|
-
/* @__PURE__ */
|
|
15966
|
-
/* @__PURE__ */
|
|
15967
|
-
/* @__PURE__ */
|
|
15968
|
-
/* @__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 })
|
|
15969
16161
|
] }),
|
|
15970
|
-
/* @__PURE__ */
|
|
16162
|
+
/* @__PURE__ */ jsx30(
|
|
15971
16163
|
"button",
|
|
15972
16164
|
{
|
|
15973
16165
|
type: "button",
|
|
@@ -15978,9 +16170,9 @@ function CheckoutLoginPrompt({
|
|
|
15978
16170
|
}
|
|
15979
16171
|
)
|
|
15980
16172
|
] }),
|
|
15981
|
-
/* @__PURE__ */
|
|
15982
|
-
/* @__PURE__ */
|
|
15983
|
-
/* @__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(
|
|
15984
16176
|
"input",
|
|
15985
16177
|
{
|
|
15986
16178
|
id: "checkout-login-prompt-email",
|
|
@@ -15989,29 +16181,29 @@ function CheckoutLoginPrompt({
|
|
|
15989
16181
|
value: email,
|
|
15990
16182
|
onChange: (e) => onEmailChange(e.target.value),
|
|
15991
16183
|
placeholder: t.emailPlaceholder,
|
|
15992
|
-
className:
|
|
16184
|
+
className: cn23(
|
|
15993
16185
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15994
16186
|
error ? "border-destructive" : "border-border focus:border-primary"
|
|
15995
16187
|
)
|
|
15996
16188
|
}
|
|
15997
16189
|
),
|
|
15998
|
-
error && /* @__PURE__ */
|
|
16190
|
+
error && /* @__PURE__ */ jsx30("p", { className: "text-xs text-destructive", children: error })
|
|
15999
16191
|
] }),
|
|
16000
|
-
/* @__PURE__ */
|
|
16001
|
-
/* @__PURE__ */
|
|
16192
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-2", children: [
|
|
16193
|
+
/* @__PURE__ */ jsx30(
|
|
16002
16194
|
"button",
|
|
16003
16195
|
{
|
|
16004
16196
|
type: "button",
|
|
16005
16197
|
onClick: onSubmitEmail,
|
|
16006
16198
|
disabled: checking || !isValidEmail,
|
|
16007
|
-
className:
|
|
16199
|
+
className: cn23(
|
|
16008
16200
|
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
|
|
16009
16201
|
checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
16010
16202
|
),
|
|
16011
16203
|
children: checking ? t.checking : t.continueWithEmail
|
|
16012
16204
|
}
|
|
16013
16205
|
),
|
|
16014
|
-
/* @__PURE__ */
|
|
16206
|
+
/* @__PURE__ */ jsx30(
|
|
16015
16207
|
"button",
|
|
16016
16208
|
{
|
|
16017
16209
|
type: "button",
|
|
@@ -16028,9 +16220,9 @@ function CheckoutLoginPrompt({
|
|
|
16028
16220
|
}
|
|
16029
16221
|
|
|
16030
16222
|
// src/components/checkout-form.tsx
|
|
16031
|
-
import { cn as
|
|
16223
|
+
import { cn as cn24 } from "@reblu/site-ui/utils";
|
|
16032
16224
|
import { PhoneInput } from "@reblu/site-ui/phone-input";
|
|
16033
|
-
import { Fragment as Fragment6, jsx as
|
|
16225
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
16034
16226
|
var DEFAULT_LABELS7 = {
|
|
16035
16227
|
contactTitle: "Datos de contacto",
|
|
16036
16228
|
nameLabel: "Nombre completo",
|
|
@@ -16086,22 +16278,22 @@ function CheckoutForm({
|
|
|
16086
16278
|
event.preventDefault();
|
|
16087
16279
|
if (discountCode.trim() && !discountApplying) onApplyDiscount();
|
|
16088
16280
|
}
|
|
16089
|
-
return /* @__PURE__ */
|
|
16281
|
+
return /* @__PURE__ */ jsxs29(Fragment6, { children: [
|
|
16090
16282
|
loginPrompt,
|
|
16091
|
-
/* @__PURE__ */
|
|
16283
|
+
/* @__PURE__ */ jsxs29(
|
|
16092
16284
|
"form",
|
|
16093
16285
|
{
|
|
16094
16286
|
"data-testid": "checkout-form",
|
|
16095
16287
|
onSubmit,
|
|
16096
|
-
className:
|
|
16288
|
+
className: cn24("space-y-8", className),
|
|
16097
16289
|
"data-slot": "checkout-form",
|
|
16098
16290
|
children: [
|
|
16099
|
-
/* @__PURE__ */
|
|
16100
|
-
/* @__PURE__ */
|
|
16101
|
-
/* @__PURE__ */
|
|
16102
|
-
/* @__PURE__ */
|
|
16103
|
-
/* @__PURE__ */
|
|
16104
|
-
/* @__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(
|
|
16105
16297
|
"input",
|
|
16106
16298
|
{
|
|
16107
16299
|
id: "checkout-form-name",
|
|
@@ -16110,17 +16302,17 @@ function CheckoutForm({
|
|
|
16110
16302
|
value: contact.name,
|
|
16111
16303
|
onChange: (e) => patchContact({ name: e.target.value }),
|
|
16112
16304
|
placeholder: t.namePlaceholder,
|
|
16113
|
-
className:
|
|
16305
|
+
className: cn24(
|
|
16114
16306
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
16115
16307
|
contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
|
|
16116
16308
|
)
|
|
16117
16309
|
}
|
|
16118
16310
|
),
|
|
16119
|
-
contactErrors?.name && /* @__PURE__ */
|
|
16311
|
+
contactErrors?.name && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.name })
|
|
16120
16312
|
] }),
|
|
16121
|
-
/* @__PURE__ */
|
|
16122
|
-
/* @__PURE__ */
|
|
16123
|
-
/* @__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(
|
|
16124
16316
|
"input",
|
|
16125
16317
|
{
|
|
16126
16318
|
id: "checkout-form-email",
|
|
@@ -16129,15 +16321,15 @@ function CheckoutForm({
|
|
|
16129
16321
|
value: contact.email,
|
|
16130
16322
|
onChange: (e) => patchContact({ email: e.target.value }),
|
|
16131
16323
|
placeholder: t.emailPlaceholder,
|
|
16132
|
-
className:
|
|
16324
|
+
className: cn24(
|
|
16133
16325
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
16134
16326
|
contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
|
|
16135
16327
|
)
|
|
16136
16328
|
}
|
|
16137
16329
|
),
|
|
16138
|
-
contactErrors?.email && /* @__PURE__ */
|
|
16330
|
+
contactErrors?.email && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: contactErrors.email })
|
|
16139
16331
|
] }),
|
|
16140
|
-
/* @__PURE__ */
|
|
16332
|
+
/* @__PURE__ */ jsx31("div", { className: "space-y-1", children: /* @__PURE__ */ jsx31(
|
|
16141
16333
|
PhoneInput,
|
|
16142
16334
|
{
|
|
16143
16335
|
id: "checkout-form-phone",
|
|
@@ -16151,26 +16343,26 @@ function CheckoutForm({
|
|
|
16151
16343
|
] })
|
|
16152
16344
|
] }),
|
|
16153
16345
|
children2,
|
|
16154
|
-
generalError ? /* @__PURE__ */
|
|
16155
|
-
/* @__PURE__ */
|
|
16156
|
-
/* @__PURE__ */
|
|
16157
|
-
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(
|
|
16158
16350
|
"div",
|
|
16159
16351
|
{
|
|
16160
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",
|
|
16161
16353
|
"data-slot": "checkout-staff-discount",
|
|
16162
16354
|
children: [
|
|
16163
|
-
/* @__PURE__ */
|
|
16164
|
-
/* @__PURE__ */
|
|
16355
|
+
/* @__PURE__ */ jsx31("span", { className: "font-semibold", children: t.staffDiscountApplied }),
|
|
16356
|
+
/* @__PURE__ */ jsx31("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
|
|
16165
16357
|
]
|
|
16166
16358
|
}
|
|
16167
16359
|
) : null,
|
|
16168
|
-
appliedDiscount && !autoDiscount ? /* @__PURE__ */
|
|
16169
|
-
/* @__PURE__ */
|
|
16170
|
-
/* @__PURE__ */
|
|
16171
|
-
/* @__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)) })
|
|
16172
16364
|
] }),
|
|
16173
|
-
/* @__PURE__ */
|
|
16365
|
+
/* @__PURE__ */ jsx31(
|
|
16174
16366
|
"button",
|
|
16175
16367
|
{
|
|
16176
16368
|
type: "button",
|
|
@@ -16180,9 +16372,9 @@ function CheckoutForm({
|
|
|
16180
16372
|
children: t.removeDiscount
|
|
16181
16373
|
}
|
|
16182
16374
|
)
|
|
16183
|
-
] }) : /* @__PURE__ */
|
|
16184
|
-
/* @__PURE__ */
|
|
16185
|
-
/* @__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(
|
|
16186
16378
|
"input",
|
|
16187
16379
|
{
|
|
16188
16380
|
id: "checkout-form-discount-code",
|
|
@@ -16194,7 +16386,7 @@ function CheckoutForm({
|
|
|
16194
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"
|
|
16195
16387
|
}
|
|
16196
16388
|
),
|
|
16197
|
-
/* @__PURE__ */
|
|
16389
|
+
/* @__PURE__ */ jsx31(
|
|
16198
16390
|
"button",
|
|
16199
16391
|
{
|
|
16200
16392
|
type: "button",
|
|
@@ -16205,14 +16397,14 @@ function CheckoutForm({
|
|
|
16205
16397
|
}
|
|
16206
16398
|
)
|
|
16207
16399
|
] }),
|
|
16208
|
-
discountError && /* @__PURE__ */
|
|
16400
|
+
discountError && /* @__PURE__ */ jsx31("p", { className: "text-xs text-destructive", children: discountError })
|
|
16209
16401
|
] }),
|
|
16210
|
-
/* @__PURE__ */
|
|
16402
|
+
/* @__PURE__ */ jsx31(
|
|
16211
16403
|
"button",
|
|
16212
16404
|
{
|
|
16213
16405
|
type: "submit",
|
|
16214
16406
|
disabled: submitting || submitDisabled,
|
|
16215
|
-
className:
|
|
16407
|
+
className: cn24(
|
|
16216
16408
|
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
|
|
16217
16409
|
submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
16218
16410
|
),
|
|
@@ -16226,11 +16418,11 @@ function CheckoutForm({
|
|
|
16226
16418
|
}
|
|
16227
16419
|
|
|
16228
16420
|
// src/components/order-confirmation.tsx
|
|
16229
|
-
import { cn as
|
|
16421
|
+
import { cn as cn26 } from "@reblu/site-ui/utils";
|
|
16230
16422
|
|
|
16231
16423
|
// src/components/order-invoice-link.tsx
|
|
16232
|
-
import { cn as
|
|
16233
|
-
import { jsx as
|
|
16424
|
+
import { cn as cn25 } from "@reblu/site-ui/utils";
|
|
16425
|
+
import { jsx as jsx32, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
16234
16426
|
var DEFAULT_LABELS8 = {
|
|
16235
16427
|
linkLabel: "Descargar la factura {number}",
|
|
16236
16428
|
signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
|
|
@@ -16238,8 +16430,8 @@ var DEFAULT_LABELS8 = {
|
|
|
16238
16430
|
function OrderInvoiceLink({ invoice, labels, className }) {
|
|
16239
16431
|
if (!invoice) return null;
|
|
16240
16432
|
const t = { ...DEFAULT_LABELS8, ...labels };
|
|
16241
|
-
return /* @__PURE__ */
|
|
16242
|
-
/* @__PURE__ */
|
|
16433
|
+
return /* @__PURE__ */ jsxs30("div", { className: cn25("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
|
|
16434
|
+
/* @__PURE__ */ jsx32(
|
|
16243
16435
|
"a",
|
|
16244
16436
|
{
|
|
16245
16437
|
href: invoice.url,
|
|
@@ -16247,12 +16439,12 @@ function OrderInvoiceLink({ invoice, labels, className }) {
|
|
|
16247
16439
|
children: t.linkLabel.replace("{number}", invoice.number)
|
|
16248
16440
|
}
|
|
16249
16441
|
),
|
|
16250
|
-
/* @__PURE__ */
|
|
16442
|
+
/* @__PURE__ */ jsx32("p", { className: "text-muted-foreground", children: t.signInHint })
|
|
16251
16443
|
] });
|
|
16252
16444
|
}
|
|
16253
16445
|
|
|
16254
16446
|
// src/components/order-confirmation.tsx
|
|
16255
|
-
import { jsx as
|
|
16447
|
+
import { jsx as jsx33, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
16256
16448
|
var DEFAULT_LABELS9 = {
|
|
16257
16449
|
pollingTitle: "Confirmando tu pedido\u2026",
|
|
16258
16450
|
pollingDescription: "Estamos procesando el pago, un momento\u2026",
|
|
@@ -16327,60 +16519,60 @@ function OrderConfirmation({
|
|
|
16327
16519
|
const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
|
|
16328
16520
|
const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
|
|
16329
16521
|
const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
|
|
16330
|
-
return /* @__PURE__ */
|
|
16331
|
-
/* @__PURE__ */
|
|
16332
|
-
/* @__PURE__ */
|
|
16333
|
-
showFullOrderSummary && order && /* @__PURE__ */
|
|
16334
|
-
/* @__PURE__ */
|
|
16335
|
-
/* @__PURE__ */
|
|
16336
|
-
/* @__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 })
|
|
16337
16529
|
] }),
|
|
16338
|
-
/* @__PURE__ */
|
|
16339
|
-
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(
|
|
16340
16532
|
"div",
|
|
16341
16533
|
{
|
|
16342
16534
|
className: "flex justify-between gap-4 text-sm",
|
|
16343
16535
|
children: [
|
|
16344
|
-
/* @__PURE__ */
|
|
16536
|
+
/* @__PURE__ */ jsxs31("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
|
|
16345
16537
|
item.product.name,
|
|
16346
16538
|
item.variant ? ` (${item.variant.name})` : "",
|
|
16347
16539
|
" x",
|
|
16348
16540
|
item.quantity
|
|
16349
16541
|
] }),
|
|
16350
|
-
/* @__PURE__ */
|
|
16542
|
+
/* @__PURE__ */ jsx33("span", { children: formatPrice(item.total, currencyCode, locale) })
|
|
16351
16543
|
]
|
|
16352
16544
|
},
|
|
16353
16545
|
idx
|
|
16354
16546
|
)),
|
|
16355
|
-
/* @__PURE__ */
|
|
16356
|
-
/* @__PURE__ */
|
|
16357
|
-
/* @__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) })
|
|
16358
16550
|
] }) })
|
|
16359
16551
|
] }),
|
|
16360
|
-
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(
|
|
16361
16553
|
"div",
|
|
16362
16554
|
{
|
|
16363
16555
|
className: "rounded-xl border border-border bg-card p-4",
|
|
16364
16556
|
"data-slot": "order-confirmation-purchase-text",
|
|
16365
16557
|
"data-kind": entry.kind,
|
|
16366
16558
|
children: [
|
|
16367
|
-
/* @__PURE__ */
|
|
16368
|
-
entry.place ? /* @__PURE__ */
|
|
16369
|
-
entry.place.name ? /* @__PURE__ */
|
|
16370
|
-
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))
|
|
16371
16563
|
] }) : null,
|
|
16372
|
-
/* @__PURE__ */
|
|
16564
|
+
/* @__PURE__ */ jsx33("p", { className: "whitespace-pre-line text-sm", children: entry.text })
|
|
16373
16565
|
]
|
|
16374
16566
|
},
|
|
16375
16567
|
entry.kind
|
|
16376
16568
|
)) }) : null,
|
|
16377
|
-
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: [
|
|
16378
16570
|
t.confirmationEmailPrefix,
|
|
16379
16571
|
" ",
|
|
16380
|
-
/* @__PURE__ */
|
|
16572
|
+
/* @__PURE__ */ jsx33("span", { className: "font-medium text-foreground", children: order.customerEmail }),
|
|
16381
16573
|
"."
|
|
16382
16574
|
] }),
|
|
16383
|
-
/* @__PURE__ */
|
|
16575
|
+
/* @__PURE__ */ jsx33(
|
|
16384
16576
|
OrderInvoiceLink,
|
|
16385
16577
|
{
|
|
16386
16578
|
invoice: order.invoice,
|
|
@@ -16388,11 +16580,11 @@ function OrderConfirmation({
|
|
|
16388
16580
|
}
|
|
16389
16581
|
)
|
|
16390
16582
|
] }),
|
|
16391
|
-
showOrderReference && order && /* @__PURE__ */
|
|
16392
|
-
/* @__PURE__ */
|
|
16393
|
-
/* @__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 })
|
|
16394
16586
|
] }),
|
|
16395
|
-
status === "failed" && cartHref && /* @__PURE__ */
|
|
16587
|
+
status === "failed" && cartHref && /* @__PURE__ */ jsx33(
|
|
16396
16588
|
"a",
|
|
16397
16589
|
{
|
|
16398
16590
|
href: cartHref,
|
|
@@ -16400,7 +16592,7 @@ function OrderConfirmation({
|
|
|
16400
16592
|
children: t.backToCartLabel
|
|
16401
16593
|
}
|
|
16402
16594
|
),
|
|
16403
|
-
showRecheck && /* @__PURE__ */
|
|
16595
|
+
showRecheck && /* @__PURE__ */ jsx33(
|
|
16404
16596
|
"button",
|
|
16405
16597
|
{
|
|
16406
16598
|
type: "button",
|
|
@@ -16409,16 +16601,16 @@ function OrderConfirmation({
|
|
|
16409
16601
|
children: t.recheckLabel
|
|
16410
16602
|
}
|
|
16411
16603
|
),
|
|
16412
|
-
showSessionReference && /* @__PURE__ */
|
|
16413
|
-
/* @__PURE__ */
|
|
16414
|
-
/* @__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 })
|
|
16415
16607
|
] })
|
|
16416
16608
|
] });
|
|
16417
16609
|
}
|
|
16418
16610
|
|
|
16419
16611
|
// src/components/full-invoice-fields.tsx
|
|
16420
|
-
import { cn as
|
|
16421
|
-
import { jsx as
|
|
16612
|
+
import { cn as cn27 } from "@reblu/site-ui/utils";
|
|
16613
|
+
import { jsx as jsx34, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
16422
16614
|
var EMPTY_FULL_INVOICE_VALUE = {
|
|
16423
16615
|
wantsFullInvoice: false,
|
|
16424
16616
|
billingIdType: "NIF",
|
|
@@ -16535,12 +16727,12 @@ function FullInvoiceFields({
|
|
|
16535
16727
|
const showFields = value.wantsFullInvoice || overCap;
|
|
16536
16728
|
const isSpanishNif = value.billingIdType === "NIF";
|
|
16537
16729
|
const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
|
|
16538
|
-
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;
|
|
16539
16731
|
const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
|
|
16540
|
-
return /* @__PURE__ */
|
|
16541
|
-
overCap ? /* @__PURE__ */
|
|
16542
|
-
/* @__PURE__ */
|
|
16543
|
-
/* @__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(
|
|
16544
16736
|
"input",
|
|
16545
16737
|
{
|
|
16546
16738
|
type: "checkbox",
|
|
@@ -16550,12 +16742,12 @@ function FullInvoiceFields({
|
|
|
16550
16742
|
),
|
|
16551
16743
|
t.toggle
|
|
16552
16744
|
] }),
|
|
16553
|
-
/* @__PURE__ */
|
|
16745
|
+
/* @__PURE__ */ jsx34("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
|
|
16554
16746
|
] }),
|
|
16555
|
-
showFields && /* @__PURE__ */
|
|
16556
|
-
/* @__PURE__ */
|
|
16557
|
-
/* @__PURE__ */
|
|
16558
|
-
/* @__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(
|
|
16559
16751
|
"select",
|
|
16560
16752
|
{
|
|
16561
16753
|
id: "full-invoice-id-type",
|
|
@@ -16564,14 +16756,14 @@ function FullInvoiceFields({
|
|
|
16564
16756
|
value: value.billingIdType,
|
|
16565
16757
|
onChange: (e) => set("billingIdType", e.target.value),
|
|
16566
16758
|
...invalid2("billingIdType"),
|
|
16567
|
-
children: ID_TYPES.map((type) => /* @__PURE__ */
|
|
16759
|
+
children: ID_TYPES.map((type) => /* @__PURE__ */ jsx34("option", { value: type, children: t.idTypeOptions[type] }, type))
|
|
16568
16760
|
}
|
|
16569
16761
|
),
|
|
16570
16762
|
error("billingIdType")
|
|
16571
16763
|
] }),
|
|
16572
|
-
!isSpanishNif && /* @__PURE__ */
|
|
16573
|
-
/* @__PURE__ */
|
|
16574
|
-
/* @__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(
|
|
16575
16767
|
"select",
|
|
16576
16768
|
{
|
|
16577
16769
|
id: "full-invoice-id-country",
|
|
@@ -16581,16 +16773,16 @@ function FullInvoiceFields({
|
|
|
16581
16773
|
onChange: (e) => set("billingIdCountry", e.target.value),
|
|
16582
16774
|
...invalid2("billingIdCountry"),
|
|
16583
16775
|
children: [
|
|
16584
|
-
/* @__PURE__ */
|
|
16585
|
-
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))
|
|
16586
16778
|
]
|
|
16587
16779
|
}
|
|
16588
16780
|
),
|
|
16589
16781
|
error("billingIdCountry")
|
|
16590
16782
|
] }),
|
|
16591
|
-
/* @__PURE__ */
|
|
16592
|
-
/* @__PURE__ */
|
|
16593
|
-
/* @__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(
|
|
16594
16786
|
"input",
|
|
16595
16787
|
{
|
|
16596
16788
|
id: "full-invoice-nif",
|
|
@@ -16603,9 +16795,9 @@ function FullInvoiceFields({
|
|
|
16603
16795
|
),
|
|
16604
16796
|
error("billingNif")
|
|
16605
16797
|
] }),
|
|
16606
|
-
/* @__PURE__ */
|
|
16607
|
-
/* @__PURE__ */
|
|
16608
|
-
/* @__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(
|
|
16609
16801
|
"input",
|
|
16610
16802
|
{
|
|
16611
16803
|
id: "full-invoice-name",
|
|
@@ -16618,9 +16810,9 @@ function FullInvoiceFields({
|
|
|
16618
16810
|
),
|
|
16619
16811
|
error("billingName")
|
|
16620
16812
|
] }),
|
|
16621
|
-
/* @__PURE__ */
|
|
16622
|
-
/* @__PURE__ */
|
|
16623
|
-
/* @__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(
|
|
16624
16816
|
"input",
|
|
16625
16817
|
{
|
|
16626
16818
|
id: "full-invoice-street",
|
|
@@ -16632,9 +16824,9 @@ function FullInvoiceFields({
|
|
|
16632
16824
|
}
|
|
16633
16825
|
)
|
|
16634
16826
|
] }),
|
|
16635
|
-
/* @__PURE__ */
|
|
16636
|
-
/* @__PURE__ */
|
|
16637
|
-
/* @__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(
|
|
16638
16830
|
"input",
|
|
16639
16831
|
{
|
|
16640
16832
|
id: "full-invoice-postal-code",
|
|
@@ -16645,9 +16837,9 @@ function FullInvoiceFields({
|
|
|
16645
16837
|
}
|
|
16646
16838
|
)
|
|
16647
16839
|
] }),
|
|
16648
|
-
/* @__PURE__ */
|
|
16649
|
-
/* @__PURE__ */
|
|
16650
|
-
/* @__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(
|
|
16651
16843
|
"input",
|
|
16652
16844
|
{
|
|
16653
16845
|
id: "full-invoice-city",
|
|
@@ -16658,9 +16850,9 @@ function FullInvoiceFields({
|
|
|
16658
16850
|
}
|
|
16659
16851
|
)
|
|
16660
16852
|
] }),
|
|
16661
|
-
/* @__PURE__ */
|
|
16662
|
-
/* @__PURE__ */
|
|
16663
|
-
/* @__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(
|
|
16664
16856
|
"select",
|
|
16665
16857
|
{
|
|
16666
16858
|
id: "full-invoice-country",
|
|
@@ -16668,18 +16860,18 @@ function FullInvoiceFields({
|
|
|
16668
16860
|
required: true,
|
|
16669
16861
|
value: value.country,
|
|
16670
16862
|
onChange: (e) => set("country", e.target.value),
|
|
16671
|
-
children: countries.map((c) => /* @__PURE__ */
|
|
16863
|
+
children: countries.map((c) => /* @__PURE__ */ jsx34("option", { value: c.code, children: c.name }, c.code))
|
|
16672
16864
|
}
|
|
16673
16865
|
)
|
|
16674
16866
|
] }),
|
|
16675
|
-
/* @__PURE__ */
|
|
16867
|
+
/* @__PURE__ */ jsx34("div", { className: "sm:col-span-2", children: error("address") })
|
|
16676
16868
|
] })
|
|
16677
16869
|
] });
|
|
16678
16870
|
}
|
|
16679
16871
|
|
|
16680
16872
|
// src/components/checkout-delivery-choice.tsx
|
|
16681
|
-
import { cn as
|
|
16682
|
-
import { jsx as
|
|
16873
|
+
import { cn as cn28 } from "@reblu/site-ui/utils";
|
|
16874
|
+
import { jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
16683
16875
|
var EMPTY_CHECKOUT_ADDRESS = {
|
|
16684
16876
|
firstName: "",
|
|
16685
16877
|
lastName: "",
|
|
@@ -16742,17 +16934,17 @@ function CheckoutDeliveryChoice({
|
|
|
16742
16934
|
const isPickup = value?.type === "PICKUP";
|
|
16743
16935
|
const isShipping = value?.type === "SHIPPING";
|
|
16744
16936
|
const errorId = `${uid}-delivery-error`;
|
|
16745
|
-
return /* @__PURE__ */
|
|
16937
|
+
return /* @__PURE__ */ jsxs33(
|
|
16746
16938
|
"fieldset",
|
|
16747
16939
|
{
|
|
16748
16940
|
"data-slot": "checkout-delivery",
|
|
16749
16941
|
"aria-describedby": error ? errorId : void 0,
|
|
16750
|
-
className:
|
|
16942
|
+
className: cn28("space-y-4", className),
|
|
16751
16943
|
children: [
|
|
16752
|
-
/* @__PURE__ */
|
|
16753
|
-
/* @__PURE__ */
|
|
16754
|
-
homeDelivery ? /* @__PURE__ */
|
|
16755
|
-
/* @__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(
|
|
16756
16948
|
"input",
|
|
16757
16949
|
{
|
|
16758
16950
|
type: "radio",
|
|
@@ -16762,16 +16954,16 @@ function CheckoutDeliveryChoice({
|
|
|
16762
16954
|
className: "mt-0.5 size-4 accent-primary"
|
|
16763
16955
|
}
|
|
16764
16956
|
),
|
|
16765
|
-
/* @__PURE__ */
|
|
16766
|
-
/* @__PURE__ */
|
|
16767
|
-
/* @__PURE__ */
|
|
16768
|
-
/* @__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 })
|
|
16769
16961
|
] }),
|
|
16770
|
-
delivery.estimatedDeliveryText ? /* @__PURE__ */
|
|
16962
|
+
delivery.estimatedDeliveryText ? /* @__PURE__ */ jsx35("span", { className: "block text-sm text-muted-foreground", children: delivery.estimatedDeliveryText }) : null
|
|
16771
16963
|
] })
|
|
16772
16964
|
] }) : null,
|
|
16773
|
-
pickup ? /* @__PURE__ */
|
|
16774
|
-
/* @__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(
|
|
16775
16967
|
"input",
|
|
16776
16968
|
{
|
|
16777
16969
|
type: "radio",
|
|
@@ -16781,23 +16973,23 @@ function CheckoutDeliveryChoice({
|
|
|
16781
16973
|
className: "mt-0.5 size-4 accent-primary"
|
|
16782
16974
|
}
|
|
16783
16975
|
),
|
|
16784
|
-
/* @__PURE__ */
|
|
16785
|
-
/* @__PURE__ */
|
|
16786
|
-
/* @__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 })
|
|
16787
16979
|
] })
|
|
16788
16980
|
] }) : null
|
|
16789
16981
|
] }),
|
|
16790
|
-
error ? /* @__PURE__ */
|
|
16791
|
-
isPickup ? /* @__PURE__ */
|
|
16792
|
-
/* @__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 }),
|
|
16793
16985
|
delivery.pickupLocations.map((location2) => {
|
|
16794
16986
|
const descId = `${uid}-point-${location2.id}`;
|
|
16795
|
-
return /* @__PURE__ */
|
|
16987
|
+
return /* @__PURE__ */ jsxs33(
|
|
16796
16988
|
"label",
|
|
16797
16989
|
{
|
|
16798
16990
|
className: "flex cursor-pointer items-start gap-3 rounded-lg border border-border p-3 has-[:checked]:border-primary",
|
|
16799
16991
|
children: [
|
|
16800
|
-
/* @__PURE__ */
|
|
16992
|
+
/* @__PURE__ */ jsx35(
|
|
16801
16993
|
"input",
|
|
16802
16994
|
{
|
|
16803
16995
|
type: "radio",
|
|
@@ -16808,9 +17000,9 @@ function CheckoutDeliveryChoice({
|
|
|
16808
17000
|
className: "mt-0.5 size-4 accent-primary"
|
|
16809
17001
|
}
|
|
16810
17002
|
),
|
|
16811
|
-
/* @__PURE__ */
|
|
16812
|
-
/* @__PURE__ */
|
|
16813
|
-
/* @__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) })
|
|
16814
17006
|
] })
|
|
16815
17007
|
]
|
|
16816
17008
|
},
|
|
@@ -16818,14 +17010,14 @@ function CheckoutDeliveryChoice({
|
|
|
16818
17010
|
);
|
|
16819
17011
|
})
|
|
16820
17012
|
] }) : null,
|
|
16821
|
-
isShipping ? /* @__PURE__ */
|
|
16822
|
-
/* @__PURE__ */
|
|
16823
|
-
/* @__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 }) => {
|
|
16824
17016
|
const fieldId = `${uid}-${key2}`;
|
|
16825
17017
|
const fieldError = addressErrors?.[key2];
|
|
16826
|
-
return /* @__PURE__ */
|
|
16827
|
-
/* @__PURE__ */
|
|
16828
|
-
/* @__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(
|
|
16829
17021
|
"input",
|
|
16830
17022
|
{
|
|
16831
17023
|
id: fieldId,
|
|
@@ -16836,13 +17028,13 @@ function CheckoutDeliveryChoice({
|
|
|
16836
17028
|
onChange: (e) => onAddressChange({ ...address, [key2]: e.target.value }),
|
|
16837
17029
|
"aria-invalid": fieldError ? true : void 0,
|
|
16838
17030
|
"aria-describedby": fieldError ? `${fieldId}-error` : void 0,
|
|
16839
|
-
className:
|
|
17031
|
+
className: cn28(
|
|
16840
17032
|
INPUT_CLASS,
|
|
16841
17033
|
fieldError ? "border-destructive" : "border-border focus:border-primary"
|
|
16842
17034
|
)
|
|
16843
17035
|
}
|
|
16844
17036
|
),
|
|
16845
|
-
fieldError ? /* @__PURE__ */
|
|
17037
|
+
fieldError ? /* @__PURE__ */ jsx35("p", { id: `${fieldId}-error`, className: "text-sm text-destructive", children: fieldError }) : null
|
|
16846
17038
|
] }, key2);
|
|
16847
17039
|
}) })
|
|
16848
17040
|
] }) : null
|
|
@@ -16884,8 +17076,8 @@ function toCheckoutFulfillmentFields(value, address, requiresDelivery = true) {
|
|
|
16884
17076
|
}
|
|
16885
17077
|
|
|
16886
17078
|
// src/components/checkout-quote-summary.tsx
|
|
16887
|
-
import { cn as
|
|
16888
|
-
import { Fragment as Fragment7, jsx as
|
|
17079
|
+
import { cn as cn29 } from "@reblu/site-ui/utils";
|
|
17080
|
+
import { Fragment as Fragment7, jsx as jsx36, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
16889
17081
|
var DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS = {
|
|
16890
17082
|
subtotal: "Subtotal",
|
|
16891
17083
|
discount: (codeOrLabel, isAutomatic) => isAutomatic ? codeOrLabel : `Descuento (${codeOrLabel})`,
|
|
@@ -16902,9 +17094,9 @@ function Row({
|
|
|
16902
17094
|
value,
|
|
16903
17095
|
className
|
|
16904
17096
|
}) {
|
|
16905
|
-
return /* @__PURE__ */
|
|
16906
|
-
/* @__PURE__ */
|
|
16907
|
-
/* @__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 })
|
|
16908
17100
|
] });
|
|
16909
17101
|
}
|
|
16910
17102
|
function CheckoutQuoteSummary({
|
|
@@ -16920,22 +17112,22 @@ function CheckoutQuoteSummary({
|
|
|
16920
17112
|
const price = (cents) => formatPrice(cents, currencyCode, locale);
|
|
16921
17113
|
const { fulfillment, shipping, tax, discount } = quote;
|
|
16922
17114
|
const Tag = `h${headingLevel}`;
|
|
16923
|
-
return /* @__PURE__ */
|
|
16924
|
-
heading ? /* @__PURE__ */
|
|
16925
|
-
/* @__PURE__ */
|
|
16926
|
-
/* @__PURE__ */
|
|
16927
|
-
/* @__PURE__ */
|
|
16928
|
-
line.variantName ? /* @__PURE__ */
|
|
16929
|
-
/* @__PURE__ */
|
|
16930
|
-
line.kindLabel ? /* @__PURE__ */
|
|
16931
|
-
/* @__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)) })
|
|
16932
17124
|
] })
|
|
16933
17125
|
] }),
|
|
16934
|
-
/* @__PURE__ */
|
|
17126
|
+
/* @__PURE__ */ jsx36("span", { className: "shrink-0 tabular-nums", children: price(line.total) })
|
|
16935
17127
|
] }, `${line.productId}-${line.variantId ?? ""}`)) }),
|
|
16936
|
-
/* @__PURE__ */
|
|
16937
|
-
/* @__PURE__ */
|
|
16938
|
-
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(
|
|
16939
17131
|
Row,
|
|
16940
17132
|
{
|
|
16941
17133
|
className: "text-green-700 dark:text-green-400",
|
|
@@ -16943,17 +17135,17 @@ function CheckoutQuoteSummary({
|
|
|
16943
17135
|
value: `\u2212${price(discount.amount)}`
|
|
16944
17136
|
}
|
|
16945
17137
|
) : null,
|
|
16946
|
-
fulfillment.type ? /* @__PURE__ */
|
|
17138
|
+
fulfillment.type ? /* @__PURE__ */ jsx36(
|
|
16947
17139
|
Row,
|
|
16948
17140
|
{
|
|
16949
|
-
name: /* @__PURE__ */
|
|
17141
|
+
name: /* @__PURE__ */ jsxs34(Fragment7, { children: [
|
|
16950
17142
|
fulfillment.label ?? t.delivery,
|
|
16951
|
-
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
|
|
16952
17144
|
] }),
|
|
16953
17145
|
value: fulfillment.type === "PICKUP" || shipping.isFree ? t.free : price(shipping.cost)
|
|
16954
17146
|
}
|
|
16955
17147
|
) : null,
|
|
16956
|
-
tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */
|
|
17148
|
+
tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */ jsx36(
|
|
16957
17149
|
Row,
|
|
16958
17150
|
{
|
|
16959
17151
|
className: tax.isIncluded ? "text-muted-foreground" : void 0,
|
|
@@ -16962,13 +17154,13 @@ function CheckoutQuoteSummary({
|
|
|
16962
17154
|
},
|
|
16963
17155
|
entry.label
|
|
16964
17156
|
)) : null,
|
|
16965
|
-
/* @__PURE__ */
|
|
17157
|
+
/* @__PURE__ */ jsx36(Row, { className: "border-t border-border pt-2 text-base font-bold", name: t.total, value: price(quote.total) })
|
|
16966
17158
|
] }),
|
|
16967
|
-
tax.isIncluded ? /* @__PURE__ */
|
|
16968
|
-
fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */
|
|
16969
|
-
fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */
|
|
16970
|
-
quote.discountError ? /* @__PURE__ */
|
|
16971
|
-
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
|
|
16972
17164
|
] });
|
|
16973
17165
|
}
|
|
16974
17166
|
var DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS = {
|
|
@@ -16986,7 +17178,7 @@ function checkoutQuoteNotice({
|
|
|
16986
17178
|
function CheckoutQuoteNotice({ reason, labels, className }) {
|
|
16987
17179
|
if (!reason) return null;
|
|
16988
17180
|
const t = { ...DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS, ...labels };
|
|
16989
|
-
return /* @__PURE__ */
|
|
17181
|
+
return /* @__PURE__ */ jsx36(
|
|
16990
17182
|
"p",
|
|
16991
17183
|
{
|
|
16992
17184
|
role: "status",
|
|
@@ -16998,8 +17190,8 @@ function CheckoutQuoteNotice({ reason, labels, className }) {
|
|
|
16998
17190
|
}
|
|
16999
17191
|
|
|
17000
17192
|
// src/components/checkout-terms-acceptance.tsx
|
|
17001
|
-
import { cn as
|
|
17002
|
-
import { Fragment as Fragment8, jsx as
|
|
17193
|
+
import { cn as cn30 } from "@reblu/site-ui/utils";
|
|
17194
|
+
import { Fragment as Fragment8, jsx as jsx37, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
17003
17195
|
function splitTermsLabel(label) {
|
|
17004
17196
|
const at = label.indexOf("{terms}");
|
|
17005
17197
|
return at === -1 ? [`${label} `, ""] : [label.slice(0, at), label.slice(at + "{terms}".length)];
|
|
@@ -17021,9 +17213,9 @@ function CheckoutTermsAcceptance({
|
|
|
17021
17213
|
(part) => part.replaceAll("{tenant}", copy.tenantName)
|
|
17022
17214
|
);
|
|
17023
17215
|
const newTab = copy.isTermsLinkNewTab;
|
|
17024
|
-
return /* @__PURE__ */
|
|
17025
|
-
/* @__PURE__ */
|
|
17026
|
-
/* @__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(
|
|
17027
17219
|
"input",
|
|
17028
17220
|
{
|
|
17029
17221
|
id: boxId,
|
|
@@ -17036,9 +17228,9 @@ function CheckoutTermsAcceptance({
|
|
|
17036
17228
|
className: "mt-0.5 size-5 shrink-0 cursor-pointer accent-primary"
|
|
17037
17229
|
}
|
|
17038
17230
|
),
|
|
17039
|
-
/* @__PURE__ */
|
|
17231
|
+
/* @__PURE__ */ jsxs35("label", { htmlFor: boxId, className: "text-sm leading-relaxed", children: [
|
|
17040
17232
|
before,
|
|
17041
|
-
/* @__PURE__ */
|
|
17233
|
+
/* @__PURE__ */ jsxs35(
|
|
17042
17234
|
"a",
|
|
17043
17235
|
{
|
|
17044
17236
|
href: copy.termsLinkUrl ?? termsHref,
|
|
@@ -17046,9 +17238,9 @@ function CheckoutTermsAcceptance({
|
|
|
17046
17238
|
className: "font-medium underline underline-offset-2 hover:text-primary",
|
|
17047
17239
|
children: [
|
|
17048
17240
|
copy.termsLinkText,
|
|
17049
|
-
newTab ? /* @__PURE__ */
|
|
17241
|
+
newTab ? /* @__PURE__ */ jsxs35(Fragment8, { children: [
|
|
17050
17242
|
" ",
|
|
17051
|
-
/* @__PURE__ */
|
|
17243
|
+
/* @__PURE__ */ jsx37("span", { className: "sr-only", children: newTabHint })
|
|
17052
17244
|
] }) : null
|
|
17053
17245
|
]
|
|
17054
17246
|
}
|
|
@@ -17056,7 +17248,7 @@ function CheckoutTermsAcceptance({
|
|
|
17056
17248
|
after
|
|
17057
17249
|
] })
|
|
17058
17250
|
] }),
|
|
17059
|
-
error ? /* @__PURE__ */
|
|
17251
|
+
error ? /* @__PURE__ */ jsx37("p", { id: errorId, className: "pl-8 text-sm text-destructive", children: error }) : null
|
|
17060
17252
|
] });
|
|
17061
17253
|
}
|
|
17062
17254
|
function toCheckoutTermsFields(copy, accepted) {
|
|
@@ -17065,8 +17257,8 @@ function toCheckoutTermsFields(copy, accepted) {
|
|
|
17065
17257
|
}
|
|
17066
17258
|
|
|
17067
17259
|
// src/components/checkout-pay-action.tsx
|
|
17068
|
-
import { cn as
|
|
17069
|
-
import { jsx as
|
|
17260
|
+
import { cn as cn31 } from "@reblu/site-ui/utils";
|
|
17261
|
+
import { jsx as jsx38, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
17070
17262
|
function CheckoutPayAction({
|
|
17071
17263
|
label,
|
|
17072
17264
|
notice,
|
|
@@ -17080,22 +17272,22 @@ function CheckoutPayAction({
|
|
|
17080
17272
|
}) {
|
|
17081
17273
|
const noticeId = `${id}-notice`;
|
|
17082
17274
|
const isDisabled = submitting || disabled;
|
|
17083
|
-
return /* @__PURE__ */
|
|
17084
|
-
/* @__PURE__ */
|
|
17275
|
+
return /* @__PURE__ */ jsxs36("div", { "data-slot": "checkout-pay-action", className: cn31("space-y-3", className), children: [
|
|
17276
|
+
/* @__PURE__ */ jsx38(
|
|
17085
17277
|
"button",
|
|
17086
17278
|
{
|
|
17087
17279
|
type: "submit",
|
|
17088
17280
|
disabled: isDisabled,
|
|
17089
17281
|
"aria-busy": submitting || void 0,
|
|
17090
17282
|
"aria-describedby": notice ? noticeId : void 0,
|
|
17091
|
-
className: buttonClassName ??
|
|
17283
|
+
className: buttonClassName ?? cn31(
|
|
17092
17284
|
"flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 text-base font-semibold transition-all",
|
|
17093
17285
|
isDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90"
|
|
17094
17286
|
),
|
|
17095
17287
|
children: submitting ? submittingLabel : label
|
|
17096
17288
|
}
|
|
17097
17289
|
),
|
|
17098
|
-
notice ? /* @__PURE__ */
|
|
17290
|
+
notice ? /* @__PURE__ */ jsx38("p", { id: noticeId, "data-slot": "checkout-pay-notice", className: noticeClassName ?? "text-sm text-muted-foreground", children: notice }) : null
|
|
17099
17291
|
] });
|
|
17100
17292
|
}
|
|
17101
17293
|
|
|
@@ -17122,8 +17314,8 @@ function toAcademyCheckoutInvoiceFields(value, overCap, issuesInvoices = true) {
|
|
|
17122
17314
|
}
|
|
17123
17315
|
|
|
17124
17316
|
// src/components/contact-interest-field.tsx
|
|
17125
|
-
import { cn as
|
|
17126
|
-
import { jsx as
|
|
17317
|
+
import { cn as cn32 } from "@reblu/site-ui/utils";
|
|
17318
|
+
import { jsx as jsx39, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
17127
17319
|
function ContactInterestField({
|
|
17128
17320
|
interest,
|
|
17129
17321
|
value,
|
|
@@ -17140,18 +17332,18 @@ function ContactInterestField({
|
|
|
17140
17332
|
else next2.delete(option2);
|
|
17141
17333
|
onChange(interest.options.filter((candidate) => next2.has(candidate)));
|
|
17142
17334
|
};
|
|
17143
|
-
return /* @__PURE__ */
|
|
17144
|
-
/* @__PURE__ */
|
|
17145
|
-
/* @__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) => {
|
|
17146
17338
|
const id = `${idPrefix}-${index}`;
|
|
17147
|
-
return /* @__PURE__ */
|
|
17339
|
+
return /* @__PURE__ */ jsxs37(
|
|
17148
17340
|
"label",
|
|
17149
17341
|
{
|
|
17150
17342
|
htmlFor: id,
|
|
17151
17343
|
"data-slot": "contact-interest-option",
|
|
17152
17344
|
className: "flex items-center gap-2 text-sm",
|
|
17153
17345
|
children: [
|
|
17154
|
-
/* @__PURE__ */
|
|
17346
|
+
/* @__PURE__ */ jsx39(
|
|
17155
17347
|
"input",
|
|
17156
17348
|
{
|
|
17157
17349
|
id,
|
|
@@ -17195,6 +17387,7 @@ export {
|
|
|
17195
17387
|
CourseCatalogFilters,
|
|
17196
17388
|
CourseDescription,
|
|
17197
17389
|
CoursePurchaseTerms,
|
|
17390
|
+
CourseSchedule,
|
|
17198
17391
|
DATA_REQUEST_TYPES,
|
|
17199
17392
|
DEFAULT_BEFORE_AFTER_LABELS,
|
|
17200
17393
|
DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS,
|
|
@@ -17203,6 +17396,7 @@ export {
|
|
|
17203
17396
|
DEFAULT_COURSE_CATALOG_FILTERS_LABELS,
|
|
17204
17397
|
DEFAULT_COURSE_PRICE_BANDS,
|
|
17205
17398
|
DEFAULT_COURSE_PURCHASE_TERMS_LABELS,
|
|
17399
|
+
DEFAULT_COURSE_SCHEDULE_LABELS,
|
|
17206
17400
|
DEFAULT_INVOICE_COUNTRIES,
|
|
17207
17401
|
DEFAULT_LESSON_PREVIEW_LABELS,
|
|
17208
17402
|
DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE,
|
|
@@ -17219,6 +17413,7 @@ export {
|
|
|
17219
17413
|
ImageTextSplit,
|
|
17220
17414
|
LegalDocument,
|
|
17221
17415
|
LessonPreview,
|
|
17416
|
+
LinkedPagesGrid,
|
|
17222
17417
|
MarkdownRenderer,
|
|
17223
17418
|
OrderConfirmation,
|
|
17224
17419
|
OrderInvoiceLink,
|
|
@@ -17233,6 +17428,7 @@ export {
|
|
|
17233
17428
|
SafeHtml,
|
|
17234
17429
|
ShopFilters,
|
|
17235
17430
|
Specialty,
|
|
17431
|
+
TeamGrid,
|
|
17236
17432
|
Treatment,
|
|
17237
17433
|
TrustBadges,
|
|
17238
17434
|
buildFaqPageJsonLd,
|
|
@@ -17242,11 +17438,14 @@ export {
|
|
|
17242
17438
|
collectFaqItems,
|
|
17243
17439
|
courseSellsAsGuest,
|
|
17244
17440
|
defaultCheckoutFulfillment,
|
|
17441
|
+
filterByLink,
|
|
17245
17442
|
formatPrice,
|
|
17246
17443
|
getShopErrorMessage,
|
|
17247
17444
|
isAllowedYouTubeHost,
|
|
17248
17445
|
isCheckoutDeliveryComplete,
|
|
17249
17446
|
isOverSimplifiedInvoiceCap,
|
|
17447
|
+
linkFilterOptions,
|
|
17448
|
+
linkKey,
|
|
17250
17449
|
markdownToPlainText,
|
|
17251
17450
|
markdownToSafeHtml,
|
|
17252
17451
|
quoteRequiresDelivery,
|