@reblu/site-blocks 0.29.0 → 0.31.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 +31 -0
- package/README.md +217 -6
- package/dist/client.cjs +632 -0
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +105 -3
- package/dist/client.d.ts +105 -3
- package/dist/client.js +629 -0
- package/dist/client.js.map +1 -1
- package/dist/full-invoice-fields-DMX0sjPG.d.cts +140 -0
- package/dist/full-invoice-fields-DMX0sjPG.d.ts +140 -0
- package/dist/index.cjs +859 -342
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +202 -131
- package/dist/index.d.ts +202 -131
- package/dist/index.js +844 -342
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/_heading-BsNbc1wc.d.cts +0 -4
- package/dist/_heading-BsNbc1wc.d.ts +0 -4
package/dist/index.js
CHANGED
|
@@ -14504,40 +14504,376 @@ function ArbitrationBadge({
|
|
|
14504
14504
|
}
|
|
14505
14505
|
|
|
14506
14506
|
// src/components/page-blocks.tsx
|
|
14507
|
-
import { cn as
|
|
14507
|
+
import { cn as cn13 } from "@reblu/site-ui/utils";
|
|
14508
14508
|
import { buttonVariants as buttonVariants2 } from "@reblu/site-ui/button-variants";
|
|
14509
|
+
|
|
14510
|
+
// src/components/content-blocks.tsx
|
|
14511
|
+
import { cn as cn12 } from "@reblu/site-ui/utils";
|
|
14512
|
+
|
|
14513
|
+
// src/components/_card-icons.ts
|
|
14514
|
+
var CARD_ICON_NODES = {
|
|
14515
|
+
check: [["path", { d: "M20 6 9 17l-5-5" }]],
|
|
14516
|
+
star: [
|
|
14517
|
+
[
|
|
14518
|
+
"path",
|
|
14519
|
+
{
|
|
14520
|
+
d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"
|
|
14521
|
+
}
|
|
14522
|
+
]
|
|
14523
|
+
],
|
|
14524
|
+
heart: [
|
|
14525
|
+
[
|
|
14526
|
+
"path",
|
|
14527
|
+
{
|
|
14528
|
+
d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"
|
|
14529
|
+
}
|
|
14530
|
+
]
|
|
14531
|
+
],
|
|
14532
|
+
"shield-check": [
|
|
14533
|
+
[
|
|
14534
|
+
"path",
|
|
14535
|
+
{
|
|
14536
|
+
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"
|
|
14537
|
+
}
|
|
14538
|
+
],
|
|
14539
|
+
["path", { d: "m9 12 2 2 4-4" }]
|
|
14540
|
+
],
|
|
14541
|
+
sparkles: [
|
|
14542
|
+
[
|
|
14543
|
+
"path",
|
|
14544
|
+
{
|
|
14545
|
+
d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"
|
|
14546
|
+
}
|
|
14547
|
+
],
|
|
14548
|
+
["path", { d: "M20 2v4" }],
|
|
14549
|
+
["path", { d: "M22 4h-4" }],
|
|
14550
|
+
["circle", { cx: "4", cy: "20", r: "2" }]
|
|
14551
|
+
],
|
|
14552
|
+
clock: [
|
|
14553
|
+
["path", { d: "M12 6v6l4 2" }],
|
|
14554
|
+
["circle", { cx: "12", cy: "12", r: "10" }]
|
|
14555
|
+
],
|
|
14556
|
+
calendar: [
|
|
14557
|
+
["path", { d: "M8 2v4" }],
|
|
14558
|
+
["path", { d: "M16 2v4" }],
|
|
14559
|
+
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }],
|
|
14560
|
+
["path", { d: "M3 10h18" }]
|
|
14561
|
+
],
|
|
14562
|
+
user: [
|
|
14563
|
+
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }],
|
|
14564
|
+
["circle", { cx: "12", cy: "7", r: "4" }]
|
|
14565
|
+
],
|
|
14566
|
+
users: [
|
|
14567
|
+
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }],
|
|
14568
|
+
["path", { d: "M16 3.128a4 4 0 0 1 0 7.744" }],
|
|
14569
|
+
["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }],
|
|
14570
|
+
["circle", { cx: "9", cy: "7", r: "4" }]
|
|
14571
|
+
],
|
|
14572
|
+
phone: [
|
|
14573
|
+
[
|
|
14574
|
+
"path",
|
|
14575
|
+
{
|
|
14576
|
+
d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"
|
|
14577
|
+
}
|
|
14578
|
+
]
|
|
14579
|
+
],
|
|
14580
|
+
mail: [
|
|
14581
|
+
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7" }],
|
|
14582
|
+
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }]
|
|
14583
|
+
],
|
|
14584
|
+
"map-pin": [
|
|
14585
|
+
[
|
|
14586
|
+
"path",
|
|
14587
|
+
{
|
|
14588
|
+
d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"
|
|
14589
|
+
}
|
|
14590
|
+
],
|
|
14591
|
+
["circle", { cx: "12", cy: "10", r: "3" }]
|
|
14592
|
+
],
|
|
14593
|
+
leaf: [
|
|
14594
|
+
[
|
|
14595
|
+
"path",
|
|
14596
|
+
{ d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" }
|
|
14597
|
+
],
|
|
14598
|
+
["path", { d: "M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" }]
|
|
14599
|
+
],
|
|
14600
|
+
droplet: [
|
|
14601
|
+
[
|
|
14602
|
+
"path",
|
|
14603
|
+
{
|
|
14604
|
+
d: "M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"
|
|
14605
|
+
}
|
|
14606
|
+
]
|
|
14607
|
+
],
|
|
14608
|
+
sun: [
|
|
14609
|
+
["circle", { cx: "12", cy: "12", r: "4" }],
|
|
14610
|
+
["path", { d: "M12 2v2" }],
|
|
14611
|
+
["path", { d: "M12 20v2" }],
|
|
14612
|
+
["path", { d: "m4.93 4.93 1.41 1.41" }],
|
|
14613
|
+
["path", { d: "m17.66 17.66 1.41 1.41" }],
|
|
14614
|
+
["path", { d: "M2 12h2" }],
|
|
14615
|
+
["path", { d: "M20 12h2" }],
|
|
14616
|
+
["path", { d: "m6.34 17.66-1.41 1.41" }],
|
|
14617
|
+
["path", { d: "m19.07 4.93-1.41 1.41" }]
|
|
14618
|
+
],
|
|
14619
|
+
zap: [
|
|
14620
|
+
[
|
|
14621
|
+
"path",
|
|
14622
|
+
{
|
|
14623
|
+
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"
|
|
14624
|
+
}
|
|
14625
|
+
]
|
|
14626
|
+
],
|
|
14627
|
+
award: [
|
|
14628
|
+
[
|
|
14629
|
+
"path",
|
|
14630
|
+
{
|
|
14631
|
+
d: "m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526"
|
|
14632
|
+
}
|
|
14633
|
+
],
|
|
14634
|
+
["circle", { cx: "12", cy: "8", r: "6" }]
|
|
14635
|
+
],
|
|
14636
|
+
target: [
|
|
14637
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
14638
|
+
["circle", { cx: "12", cy: "12", r: "6" }],
|
|
14639
|
+
["circle", { cx: "12", cy: "12", r: "2" }]
|
|
14640
|
+
],
|
|
14641
|
+
lightbulb: [
|
|
14642
|
+
[
|
|
14643
|
+
"path",
|
|
14644
|
+
{
|
|
14645
|
+
d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"
|
|
14646
|
+
}
|
|
14647
|
+
],
|
|
14648
|
+
["path", { d: "M9 18h6" }],
|
|
14649
|
+
["path", { d: "M10 22h4" }]
|
|
14650
|
+
],
|
|
14651
|
+
smile: [
|
|
14652
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
14653
|
+
["path", { d: "M8 14s1.5 2 4 2 4-2 4-2" }],
|
|
14654
|
+
["line", { x1: "9", x2: "9.01", y1: "9", y2: "9" }],
|
|
14655
|
+
["line", { x1: "15", x2: "15.01", y1: "9", y2: "9" }]
|
|
14656
|
+
],
|
|
14657
|
+
"thumbs-up": [
|
|
14658
|
+
[
|
|
14659
|
+
"path",
|
|
14660
|
+
{
|
|
14661
|
+
d: "M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"
|
|
14662
|
+
}
|
|
14663
|
+
],
|
|
14664
|
+
["path", { d: "M7 10v12" }]
|
|
14665
|
+
],
|
|
14666
|
+
info: [
|
|
14667
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
14668
|
+
["path", { d: "M12 16v-4" }],
|
|
14669
|
+
["path", { d: "M12 8h.01" }]
|
|
14670
|
+
]
|
|
14671
|
+
};
|
|
14672
|
+
|
|
14673
|
+
// src/components/content-blocks.tsx
|
|
14509
14674
|
import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
14675
|
+
var DEFAULT_BEFORE_AFTER_LABELS = Object.freeze({ before: "Antes", after: "Despu\xE9s" });
|
|
14676
|
+
function PairImage({ url, alt, label }) {
|
|
14677
|
+
return /* @__PURE__ */ jsxs17("figure", { className: "space-y-2", children: [
|
|
14678
|
+
/* @__PURE__ */ jsx18("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx18(
|
|
14679
|
+
"img",
|
|
14680
|
+
{
|
|
14681
|
+
src: url,
|
|
14682
|
+
alt,
|
|
14683
|
+
loading: "lazy",
|
|
14684
|
+
decoding: "async",
|
|
14685
|
+
className: "h-full w-full object-cover"
|
|
14686
|
+
}
|
|
14687
|
+
) }),
|
|
14688
|
+
/* @__PURE__ */ jsx18("figcaption", { className: "text-sm font-semibold", children: label })
|
|
14689
|
+
] });
|
|
14690
|
+
}
|
|
14691
|
+
function BeforeAfterPairs({
|
|
14692
|
+
pairs,
|
|
14693
|
+
showCaption = false,
|
|
14694
|
+
caption,
|
|
14695
|
+
labels = DEFAULT_BEFORE_AFTER_LABELS,
|
|
14696
|
+
className
|
|
14697
|
+
}) {
|
|
14698
|
+
const visibleCaption = showCaption && caption && caption.trim() !== "" ? caption : null;
|
|
14699
|
+
if (pairs.length === 0 && !visibleCaption) return null;
|
|
14700
|
+
return /* @__PURE__ */ jsxs17("div", { "data-slot": "before-after", className: cn12("space-y-4", className), children: [
|
|
14701
|
+
pairs.length > 0 && /* @__PURE__ */ jsx18("ul", { className: "grid gap-6 lg:grid-cols-2", children: pairs.map((pair, i) => /* @__PURE__ */ jsxs17(
|
|
14702
|
+
"li",
|
|
14703
|
+
{
|
|
14704
|
+
"data-slot": "before-after-pair",
|
|
14705
|
+
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
14706
|
+
children: [
|
|
14707
|
+
/* @__PURE__ */ jsx18(PairImage, { url: pair.beforeUrl, alt: pair.alt ?? "", label: labels.before }),
|
|
14708
|
+
/* @__PURE__ */ jsx18(PairImage, { url: pair.afterUrl, alt: pair.alt ?? "", label: labels.after })
|
|
14709
|
+
]
|
|
14710
|
+
},
|
|
14711
|
+
`${pair.beforeUrl}-${pair.afterUrl}-${i}`
|
|
14712
|
+
)) }),
|
|
14713
|
+
visibleCaption && /* @__PURE__ */ jsx18("p", { "data-slot": "before-after-caption", className: "whitespace-pre-line text-sm opacity-80", children: visibleCaption })
|
|
14714
|
+
] });
|
|
14715
|
+
}
|
|
14716
|
+
function ChipList({ items, className }) {
|
|
14717
|
+
const visible = items.filter((item) => item.trim() !== "");
|
|
14718
|
+
if (visible.length === 0) return null;
|
|
14719
|
+
return /* @__PURE__ */ jsx18("ul", { "data-slot": "chip-list", className: cn12("flex flex-wrap gap-3", className), children: visible.map((item, i) => /* @__PURE__ */ jsx18(
|
|
14720
|
+
"li",
|
|
14721
|
+
{
|
|
14722
|
+
"data-slot": "chip",
|
|
14723
|
+
className: "rounded-full border border-primary/20 bg-primary/10 px-4 py-2 text-sm font-medium text-primary",
|
|
14724
|
+
children: item
|
|
14725
|
+
},
|
|
14726
|
+
`${item}-${i}`
|
|
14727
|
+
)) });
|
|
14728
|
+
}
|
|
14729
|
+
var CARD_ICON_NAMES = Object.freeze(Object.keys(CARD_ICON_NODES));
|
|
14730
|
+
function hasCardIcon(icon) {
|
|
14731
|
+
return Object.prototype.hasOwnProperty.call(CARD_ICON_NODES, icon);
|
|
14732
|
+
}
|
|
14733
|
+
function CardIconSvg({ icon, className }) {
|
|
14734
|
+
if (!hasCardIcon(icon)) return null;
|
|
14735
|
+
return /* @__PURE__ */ jsx18(
|
|
14736
|
+
"svg",
|
|
14737
|
+
{
|
|
14738
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
14739
|
+
viewBox: "0 0 24 24",
|
|
14740
|
+
fill: "none",
|
|
14741
|
+
stroke: "currentColor",
|
|
14742
|
+
strokeWidth: 2,
|
|
14743
|
+
strokeLinecap: "round",
|
|
14744
|
+
strokeLinejoin: "round",
|
|
14745
|
+
"aria-hidden": "true",
|
|
14746
|
+
focusable: "false",
|
|
14747
|
+
"data-icon": icon,
|
|
14748
|
+
className: cn12("h-5 w-5", className),
|
|
14749
|
+
children: CARD_ICON_NODES[icon].map(([Tag, attrs], i) => /* @__PURE__ */ jsx18(Tag, { ...attrs }, i))
|
|
14750
|
+
}
|
|
14751
|
+
);
|
|
14752
|
+
}
|
|
14753
|
+
function IconCardGrid({ items, intro, headingLevel = 3, className }) {
|
|
14754
|
+
const hasIntro = !!intro && intro.trim() !== "";
|
|
14755
|
+
if (items.length === 0 && !hasIntro) return null;
|
|
14756
|
+
return /* @__PURE__ */ jsxs17("div", { "data-slot": "icon-cards", className: cn12("space-y-6", className), children: [
|
|
14757
|
+
hasIntro && /* @__PURE__ */ jsx18("p", { className: "max-w-prose text-lg opacity-80", children: intro }),
|
|
14758
|
+
items.length > 0 && /* @__PURE__ */ jsx18(
|
|
14759
|
+
"ul",
|
|
14760
|
+
{
|
|
14761
|
+
"data-slot": "icon-card-grid",
|
|
14762
|
+
className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3",
|
|
14763
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxs17(
|
|
14764
|
+
"li",
|
|
14765
|
+
{
|
|
14766
|
+
"data-slot": "icon-card",
|
|
14767
|
+
className: "space-y-3 rounded-xl border border-border bg-card p-6 text-card-foreground",
|
|
14768
|
+
children: [
|
|
14769
|
+
hasCardIcon(item.icon) && /* @__PURE__ */ jsx18("span", { className: "inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary", children: /* @__PURE__ */ jsx18(CardIconSvg, { icon: item.icon }) }),
|
|
14770
|
+
/* @__PURE__ */ jsx18(Heading, { level: headingLevel, className: "text-lg font-semibold", children: item.title }),
|
|
14771
|
+
item.text && /* @__PURE__ */ jsx18("p", { className: "text-muted-foreground", children: item.text })
|
|
14772
|
+
]
|
|
14773
|
+
},
|
|
14774
|
+
`${item.title}-${i}`
|
|
14775
|
+
))
|
|
14776
|
+
}
|
|
14777
|
+
)
|
|
14778
|
+
] });
|
|
14779
|
+
}
|
|
14780
|
+
var KICKER_CLASS_NAME = "text-sm font-semibold uppercase tracking-wider opacity-80";
|
|
14781
|
+
function ImageTextSplit({
|
|
14782
|
+
imageUrl,
|
|
14783
|
+
alt,
|
|
14784
|
+
imageSide,
|
|
14785
|
+
mobileOrder = "image_first",
|
|
14786
|
+
html: html5,
|
|
14787
|
+
kicker,
|
|
14788
|
+
heading,
|
|
14789
|
+
headingLevel = 2,
|
|
14790
|
+
headingId,
|
|
14791
|
+
className
|
|
14792
|
+
}) {
|
|
14793
|
+
const textFirst = mobileOrder === "text_first";
|
|
14794
|
+
const imageRight = imageSide === "right";
|
|
14795
|
+
const hasKicker = !!kicker && kicker.trim() !== "";
|
|
14796
|
+
const bodyOffset = heading ? headingLevel : headingLevel - 1;
|
|
14797
|
+
return /* @__PURE__ */ jsxs17(
|
|
14798
|
+
"div",
|
|
14799
|
+
{
|
|
14800
|
+
"data-slot": "image-text",
|
|
14801
|
+
"data-image-side": imageRight ? "right" : "left",
|
|
14802
|
+
className: cn12("grid grid-cols-1 items-center gap-8 md:grid-cols-2", className),
|
|
14803
|
+
children: [
|
|
14804
|
+
/* @__PURE__ */ jsx18(
|
|
14805
|
+
"div",
|
|
14806
|
+
{
|
|
14807
|
+
"data-slot": "image-text-media",
|
|
14808
|
+
className: cn12(textFirst ? "order-2" : "order-1", imageRight ? "md:order-2" : "md:order-1"),
|
|
14809
|
+
children: /* @__PURE__ */ jsx18("div", { className: "relative aspect-[4/3] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx18(
|
|
14810
|
+
"img",
|
|
14811
|
+
{
|
|
14812
|
+
src: imageUrl,
|
|
14813
|
+
alt: alt ?? "",
|
|
14814
|
+
loading: "lazy",
|
|
14815
|
+
decoding: "async",
|
|
14816
|
+
className: "h-full w-full object-cover"
|
|
14817
|
+
}
|
|
14818
|
+
) })
|
|
14819
|
+
}
|
|
14820
|
+
),
|
|
14821
|
+
/* @__PURE__ */ jsxs17(
|
|
14822
|
+
"div",
|
|
14823
|
+
{
|
|
14824
|
+
"data-slot": "image-text-body",
|
|
14825
|
+
className: cn12(
|
|
14826
|
+
"space-y-4",
|
|
14827
|
+
textFirst ? "order-1" : "order-2",
|
|
14828
|
+
imageRight ? "md:order-1" : "md:order-2"
|
|
14829
|
+
),
|
|
14830
|
+
children: [
|
|
14831
|
+
(hasKicker || heading) && /* @__PURE__ */ jsxs17("div", { className: "space-y-2", children: [
|
|
14832
|
+
hasKicker && /* @__PURE__ */ jsx18("p", { "data-slot": "page-block-kicker", className: KICKER_CLASS_NAME, children: kicker }),
|
|
14833
|
+
heading && /* @__PURE__ */ jsx18(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx18("span", { id: headingId, children: heading }) })
|
|
14834
|
+
] }),
|
|
14835
|
+
html5 && /* @__PURE__ */ jsx18(SafeHtml, { html: sanitizeHtml(html5), headingOffset: bodyOffset })
|
|
14836
|
+
]
|
|
14837
|
+
}
|
|
14838
|
+
)
|
|
14839
|
+
]
|
|
14840
|
+
}
|
|
14841
|
+
);
|
|
14842
|
+
}
|
|
14843
|
+
|
|
14844
|
+
// src/components/page-blocks.tsx
|
|
14845
|
+
import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
14510
14846
|
var ALIASES = {
|
|
14511
14847
|
doctor_embed: "profile_embed",
|
|
14512
14848
|
specialty_embed: "page_embed"
|
|
14513
14849
|
};
|
|
14514
14850
|
function HeroBlock({ block, headingLevel }) {
|
|
14515
14851
|
const { title, subtitle, imageUrl } = block.data;
|
|
14516
|
-
return /* @__PURE__ */
|
|
14517
|
-
/* @__PURE__ */
|
|
14518
|
-
subtitle && /* @__PURE__ */
|
|
14519
|
-
imageUrl && /* @__PURE__ */
|
|
14852
|
+
return /* @__PURE__ */ jsxs18("div", { className: "space-y-4", children: [
|
|
14853
|
+
/* @__PURE__ */ jsx19(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
|
|
14854
|
+
subtitle && /* @__PURE__ */ jsx19("p", { className: "text-lg opacity-80", children: subtitle }),
|
|
14855
|
+
imageUrl && /* @__PURE__ */ jsx19("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx19("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
|
|
14520
14856
|
] });
|
|
14521
14857
|
}
|
|
14522
14858
|
function RichtextBlock({ block, headingLevel }) {
|
|
14523
|
-
return /* @__PURE__ */
|
|
14859
|
+
return /* @__PURE__ */ jsx19(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
|
|
14524
14860
|
}
|
|
14525
14861
|
function FaqBlock({ block }) {
|
|
14526
|
-
return /* @__PURE__ */
|
|
14862
|
+
return /* @__PURE__ */ jsx19(FaqAccordion, { items: block.data.items });
|
|
14527
14863
|
}
|
|
14528
14864
|
function StatsBlock({ block }) {
|
|
14529
|
-
return /* @__PURE__ */
|
|
14530
|
-
/* @__PURE__ */
|
|
14531
|
-
/* @__PURE__ */
|
|
14865
|
+
return /* @__PURE__ */ jsx19("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs18("div", { className: "flex flex-col-reverse gap-1", children: [
|
|
14866
|
+
/* @__PURE__ */ jsx19("dt", { className: "text-sm opacity-80", children: item.label }),
|
|
14867
|
+
/* @__PURE__ */ jsx19("dd", { className: "text-3xl font-bold", children: item.value })
|
|
14532
14868
|
] }, i)) });
|
|
14533
14869
|
}
|
|
14534
14870
|
function TestimonialBlock({ block }) {
|
|
14535
14871
|
const { quote, author, role, avatarUrl } = block.data;
|
|
14536
|
-
return /* @__PURE__ */
|
|
14537
|
-
/* @__PURE__ */
|
|
14538
|
-
/* @__PURE__ */
|
|
14872
|
+
return /* @__PURE__ */ jsxs18("figure", { className: "space-y-4", children: [
|
|
14873
|
+
/* @__PURE__ */ jsx19("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx19("p", { children: quote }) }),
|
|
14874
|
+
/* @__PURE__ */ jsxs18("figcaption", { className: "flex items-center gap-3", children: [
|
|
14539
14875
|
avatarUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
14540
|
-
/* @__PURE__ */
|
|
14876
|
+
/* @__PURE__ */ jsx19(
|
|
14541
14877
|
"img",
|
|
14542
14878
|
{
|
|
14543
14879
|
src: avatarUrl,
|
|
@@ -14546,9 +14882,9 @@ function TestimonialBlock({ block }) {
|
|
|
14546
14882
|
className: "h-10 w-10 rounded-full object-cover"
|
|
14547
14883
|
}
|
|
14548
14884
|
),
|
|
14549
|
-
/* @__PURE__ */
|
|
14550
|
-
/* @__PURE__ */
|
|
14551
|
-
role && /* @__PURE__ */
|
|
14885
|
+
/* @__PURE__ */ jsxs18("span", { children: [
|
|
14886
|
+
/* @__PURE__ */ jsx19("span", { className: "font-semibold", children: author }),
|
|
14887
|
+
role && /* @__PURE__ */ jsx19("span", { className: "block text-sm opacity-80", children: role })
|
|
14552
14888
|
] })
|
|
14553
14889
|
] })
|
|
14554
14890
|
] });
|
|
@@ -14557,19 +14893,19 @@ function CtaSlotBlock(_props) {
|
|
|
14557
14893
|
return null;
|
|
14558
14894
|
}
|
|
14559
14895
|
function FeatureListBlock({ block }) {
|
|
14560
|
-
return /* @__PURE__ */
|
|
14896
|
+
return /* @__PURE__ */ jsx19("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx19("li", { children: item.text }, i)) });
|
|
14561
14897
|
}
|
|
14562
14898
|
function GalleryBlock({ block }) {
|
|
14563
14899
|
const { images } = block.data;
|
|
14564
|
-
return /* @__PURE__ */
|
|
14900
|
+
return /* @__PURE__ */ jsx19(
|
|
14565
14901
|
"div",
|
|
14566
14902
|
{
|
|
14567
|
-
className:
|
|
14903
|
+
className: cn13(
|
|
14568
14904
|
"grid gap-4",
|
|
14569
14905
|
images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
|
|
14570
14906
|
),
|
|
14571
|
-
children: images.map((img, i) => /* @__PURE__ */
|
|
14572
|
-
/* @__PURE__ */
|
|
14907
|
+
children: images.map((img, i) => /* @__PURE__ */ jsxs18("figure", { className: "space-y-1", children: [
|
|
14908
|
+
/* @__PURE__ */ jsx19("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx19(
|
|
14573
14909
|
"img",
|
|
14574
14910
|
{
|
|
14575
14911
|
src: img.url,
|
|
@@ -14578,7 +14914,7 @@ function GalleryBlock({ block }) {
|
|
|
14578
14914
|
className: "h-full w-full object-cover"
|
|
14579
14915
|
}
|
|
14580
14916
|
) }),
|
|
14581
|
-
img.caption && /* @__PURE__ */
|
|
14917
|
+
img.caption && /* @__PURE__ */ jsx19("figcaption", { className: "text-sm opacity-80", children: img.caption })
|
|
14582
14918
|
] }, `${img.url}-${i}`))
|
|
14583
14919
|
}
|
|
14584
14920
|
);
|
|
@@ -14588,13 +14924,13 @@ function EmbedCard({
|
|
|
14588
14924
|
headingLevel,
|
|
14589
14925
|
embedHref
|
|
14590
14926
|
}) {
|
|
14591
|
-
return /* @__PURE__ */
|
|
14927
|
+
return /* @__PURE__ */ jsxs18(
|
|
14592
14928
|
"a",
|
|
14593
14929
|
{
|
|
14594
14930
|
href: embedHref(resolved),
|
|
14595
14931
|
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",
|
|
14596
14932
|
children: [
|
|
14597
|
-
resolved.coverImageUrl && /* @__PURE__ */
|
|
14933
|
+
resolved.coverImageUrl && /* @__PURE__ */ jsx19("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx19(
|
|
14598
14934
|
"img",
|
|
14599
14935
|
{
|
|
14600
14936
|
src: resolved.coverImageUrl,
|
|
@@ -14603,24 +14939,51 @@ function EmbedCard({
|
|
|
14603
14939
|
className: "h-full w-full object-cover"
|
|
14604
14940
|
}
|
|
14605
14941
|
) }),
|
|
14606
|
-
/* @__PURE__ */
|
|
14607
|
-
/* @__PURE__ */
|
|
14608
|
-
resolved.role && /* @__PURE__ */
|
|
14609
|
-
resolved.excerpt && /* @__PURE__ */
|
|
14942
|
+
/* @__PURE__ */ jsxs18("div", { className: "space-y-1 p-4", children: [
|
|
14943
|
+
/* @__PURE__ */ jsx19(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
|
|
14944
|
+
resolved.role && /* @__PURE__ */ jsx19("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
|
|
14945
|
+
resolved.excerpt && /* @__PURE__ */ jsx19("p", { className: "text-muted-foreground", children: resolved.excerpt })
|
|
14610
14946
|
] })
|
|
14611
14947
|
]
|
|
14612
14948
|
}
|
|
14613
14949
|
);
|
|
14614
14950
|
}
|
|
14615
14951
|
function PageEmbedBlock({ block, headingLevel, embedHref }) {
|
|
14616
|
-
return /* @__PURE__ */
|
|
14952
|
+
return /* @__PURE__ */ jsx19(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
14617
14953
|
}
|
|
14618
14954
|
function ProfileEmbedBlock({
|
|
14619
14955
|
block,
|
|
14620
14956
|
headingLevel,
|
|
14621
14957
|
embedHref
|
|
14622
14958
|
}) {
|
|
14623
|
-
return /* @__PURE__ */
|
|
14959
|
+
return /* @__PURE__ */ jsx19(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
14960
|
+
}
|
|
14961
|
+
function BeforeAfterBlock({ block }) {
|
|
14962
|
+
const { pairs, showCaption, caption } = block.data;
|
|
14963
|
+
return /* @__PURE__ */ jsx19(BeforeAfterPairs, { pairs, showCaption, caption });
|
|
14964
|
+
}
|
|
14965
|
+
function ChipsBlock({ block }) {
|
|
14966
|
+
return /* @__PURE__ */ jsx19(ChipList, { items: block.data.items });
|
|
14967
|
+
}
|
|
14968
|
+
function ImageTextBlock({ block, headingLevel, headingId }) {
|
|
14969
|
+
const { kicker, imageUrl, alt, imageSide, mobileOrder, html: html5 } = block.data;
|
|
14970
|
+
return /* @__PURE__ */ jsx19(
|
|
14971
|
+
ImageTextSplit,
|
|
14972
|
+
{
|
|
14973
|
+
imageUrl,
|
|
14974
|
+
alt,
|
|
14975
|
+
imageSide,
|
|
14976
|
+
mobileOrder,
|
|
14977
|
+
html: html5,
|
|
14978
|
+
kicker,
|
|
14979
|
+
heading: block.heading,
|
|
14980
|
+
headingLevel,
|
|
14981
|
+
headingId
|
|
14982
|
+
}
|
|
14983
|
+
);
|
|
14984
|
+
}
|
|
14985
|
+
function IconCardsBlock({ block, headingLevel }) {
|
|
14986
|
+
return /* @__PURE__ */ jsx19(IconCardGrid, { items: block.data.items, intro: block.data.intro, headingLevel });
|
|
14624
14987
|
}
|
|
14625
14988
|
var DEFAULT_RENDERERS = {
|
|
14626
14989
|
hero: HeroBlock,
|
|
@@ -14632,8 +14995,25 @@ var DEFAULT_RENDERERS = {
|
|
|
14632
14995
|
feature_list: FeatureListBlock,
|
|
14633
14996
|
gallery: GalleryBlock,
|
|
14634
14997
|
page_embed: PageEmbedBlock,
|
|
14635
|
-
profile_embed: ProfileEmbedBlock
|
|
14998
|
+
profile_embed: ProfileEmbedBlock,
|
|
14999
|
+
before_after: BeforeAfterBlock,
|
|
15000
|
+
chips: ChipsBlock,
|
|
15001
|
+
icon_cards: IconCardsBlock,
|
|
15002
|
+
image_text: ImageTextBlock
|
|
14636
15003
|
};
|
|
15004
|
+
var KICKER_TYPES = /* @__PURE__ */ new Set([
|
|
15005
|
+
"before_after",
|
|
15006
|
+
"chips",
|
|
15007
|
+
"icon_cards"
|
|
15008
|
+
]);
|
|
15009
|
+
var OWN_HEADING_TYPES = /* @__PURE__ */ new Set([
|
|
15010
|
+
"image_text"
|
|
15011
|
+
]);
|
|
15012
|
+
function kickerOf(type, block) {
|
|
15013
|
+
if (!KICKER_TYPES.has(type)) return null;
|
|
15014
|
+
const kicker = block.data.kicker;
|
|
15015
|
+
return typeof kicker === "string" && kicker.trim() !== "" ? kicker : null;
|
|
15016
|
+
}
|
|
14637
15017
|
var EMBED_TYPES = /* @__PURE__ */ new Set([
|
|
14638
15018
|
"page_embed",
|
|
14639
15019
|
"profile_embed"
|
|
@@ -14677,14 +15057,14 @@ function toIdFragment(value) {
|
|
|
14677
15057
|
function SectionCta2({ cta }) {
|
|
14678
15058
|
if (!hasUsableCta(cta)) return null;
|
|
14679
15059
|
const variant = toButtonVariant(cta.variant);
|
|
14680
|
-
return /* @__PURE__ */
|
|
15060
|
+
return /* @__PURE__ */ jsx19("div", { className: "pt-2", children: /* @__PURE__ */ jsx19(
|
|
14681
15061
|
"a",
|
|
14682
15062
|
{
|
|
14683
15063
|
href: cta.url,
|
|
14684
15064
|
"data-slot": "button",
|
|
14685
15065
|
"data-variant": variant,
|
|
14686
15066
|
"data-size": "default",
|
|
14687
|
-
className:
|
|
15067
|
+
className: cn13(buttonVariants2({ variant, size: "default" })),
|
|
14688
15068
|
...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
|
|
14689
15069
|
children: cta.label
|
|
14690
15070
|
}
|
|
@@ -14709,18 +15089,29 @@ function PageBlocks({
|
|
|
14709
15089
|
const Renderer = components?.[type] ?? DEFAULT_RENDERERS[type];
|
|
14710
15090
|
const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
|
|
14711
15091
|
const background = block.backgroundColor;
|
|
15092
|
+
const kicker = kickerOf(type, block);
|
|
15093
|
+
const ownsHeading = OWN_HEADING_TYPES.has(type);
|
|
14712
15094
|
return [
|
|
14713
|
-
/* @__PURE__ */
|
|
15095
|
+
/* @__PURE__ */ jsxs18(
|
|
14714
15096
|
"section",
|
|
14715
15097
|
{
|
|
14716
15098
|
"data-slot": "page-block",
|
|
14717
15099
|
"data-block-type": type,
|
|
14718
15100
|
"aria-labelledby": headingId,
|
|
14719
15101
|
style: surfaceStyle(background),
|
|
14720
|
-
className:
|
|
15102
|
+
className: cn13("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
|
|
14721
15103
|
children: [
|
|
14722
|
-
|
|
14723
|
-
/* @__PURE__ */
|
|
15104
|
+
kicker && /* @__PURE__ */ jsx19("p", { "data-slot": "page-block-kicker", className: cn13("-mb-4", KICKER_CLASS_NAME), children: kicker }),
|
|
15105
|
+
block.heading && !ownsHeading && /* @__PURE__ */ jsx19(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx19("span", { id: headingId, children: block.heading }) }),
|
|
15106
|
+
ownsHeading ? /* @__PURE__ */ jsx19(
|
|
15107
|
+
Renderer,
|
|
15108
|
+
{
|
|
15109
|
+
block,
|
|
15110
|
+
headingLevel,
|
|
15111
|
+
embedHref,
|
|
15112
|
+
headingId
|
|
15113
|
+
}
|
|
15114
|
+
) : /* @__PURE__ */ jsx19(
|
|
14724
15115
|
Renderer,
|
|
14725
15116
|
{
|
|
14726
15117
|
block,
|
|
@@ -14728,7 +15119,7 @@ function PageBlocks({
|
|
|
14728
15119
|
embedHref
|
|
14729
15120
|
}
|
|
14730
15121
|
),
|
|
14731
|
-
/* @__PURE__ */
|
|
15122
|
+
/* @__PURE__ */ jsx19(SectionCta2, { cta: block.cta })
|
|
14732
15123
|
]
|
|
14733
15124
|
},
|
|
14734
15125
|
block.id
|
|
@@ -14736,12 +15127,12 @@ function PageBlocks({
|
|
|
14736
15127
|
];
|
|
14737
15128
|
});
|
|
14738
15129
|
if (sections.length === 0) return null;
|
|
14739
|
-
return /* @__PURE__ */
|
|
15130
|
+
return /* @__PURE__ */ jsx19("div", { className: cn13("space-y-12", className), "data-slot": "page-blocks", children: sections });
|
|
14740
15131
|
}
|
|
14741
15132
|
|
|
14742
15133
|
// src/components/shop-filters.tsx
|
|
14743
|
-
import { cn as
|
|
14744
|
-
import { jsx as
|
|
15134
|
+
import { cn as cn14 } from "@reblu/site-ui/utils";
|
|
15135
|
+
import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
14745
15136
|
var DEFAULT_SHOP_PRICE_BANDS = [
|
|
14746
15137
|
{ max: 2500 },
|
|
14747
15138
|
{ min: 2500, max: 5e3 },
|
|
@@ -14785,7 +15176,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
|
|
|
14785
15176
|
return "";
|
|
14786
15177
|
}
|
|
14787
15178
|
function OptionLink({ href, active, label, onActivate }) {
|
|
14788
|
-
return /* @__PURE__ */
|
|
15179
|
+
return /* @__PURE__ */ jsx20(
|
|
14789
15180
|
"a",
|
|
14790
15181
|
{
|
|
14791
15182
|
href,
|
|
@@ -14794,7 +15185,7 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
14794
15185
|
event.preventDefault();
|
|
14795
15186
|
onActivate();
|
|
14796
15187
|
} : void 0,
|
|
14797
|
-
className:
|
|
15188
|
+
className: cn14(
|
|
14798
15189
|
"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",
|
|
14799
15190
|
active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
14800
15191
|
),
|
|
@@ -14803,9 +15194,9 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
14803
15194
|
);
|
|
14804
15195
|
}
|
|
14805
15196
|
function FilterFieldset({ legend, children: children2 }) {
|
|
14806
|
-
return /* @__PURE__ */
|
|
14807
|
-
/* @__PURE__ */
|
|
14808
|
-
/* @__PURE__ */
|
|
15197
|
+
return /* @__PURE__ */ jsxs19("fieldset", { className: "space-y-2", children: [
|
|
15198
|
+
/* @__PURE__ */ jsx20("legend", { className: "text-sm font-medium text-foreground", children: legend }),
|
|
15199
|
+
/* @__PURE__ */ jsx20("div", { className: "flex flex-wrap gap-2", children: children2 })
|
|
14809
15200
|
] });
|
|
14810
15201
|
}
|
|
14811
15202
|
function ShopFilters({
|
|
@@ -14828,11 +15219,11 @@ function ShopFilters({
|
|
|
14828
15219
|
if (!shouldRenderShopFilters(facets, active)) {
|
|
14829
15220
|
return null;
|
|
14830
15221
|
}
|
|
14831
|
-
return /* @__PURE__ */
|
|
15222
|
+
return /* @__PURE__ */ jsxs19("div", { className: cn14("space-y-6", className), "data-slot": "shop-filters", children: [
|
|
14832
15223
|
visibleTaxonomies.map((axis) => {
|
|
14833
15224
|
const activeSlug = active.taxonomy?.[axis.key];
|
|
14834
|
-
return /* @__PURE__ */
|
|
14835
|
-
/* @__PURE__ */
|
|
15225
|
+
return /* @__PURE__ */ jsxs19(FilterFieldset, { legend: axis.label, children: [
|
|
15226
|
+
/* @__PURE__ */ jsx20(
|
|
14836
15227
|
OptionLink,
|
|
14837
15228
|
{
|
|
14838
15229
|
href: hrefs.taxonomy(axis.key, void 0),
|
|
@@ -14847,7 +15238,7 @@ function ShopFilters({
|
|
|
14847
15238
|
),
|
|
14848
15239
|
axis.terms.map((term) => {
|
|
14849
15240
|
const isActive = activeSlug === term.slug;
|
|
14850
|
-
return /* @__PURE__ */
|
|
15241
|
+
return /* @__PURE__ */ jsx20(
|
|
14851
15242
|
OptionLink,
|
|
14852
15243
|
{
|
|
14853
15244
|
href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
|
|
@@ -14867,9 +15258,9 @@ function ShopFilters({
|
|
|
14867
15258
|
}),
|
|
14868
15259
|
visibleAttributes.map((attr) => {
|
|
14869
15260
|
const activeValues = toValueArray(active.attr?.[attr.key]);
|
|
14870
|
-
return /* @__PURE__ */
|
|
15261
|
+
return /* @__PURE__ */ jsx20(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
|
|
14871
15262
|
const isActive = activeValues.includes(opt.value);
|
|
14872
|
-
return /* @__PURE__ */
|
|
15263
|
+
return /* @__PURE__ */ jsx20(
|
|
14873
15264
|
OptionLink,
|
|
14874
15265
|
{
|
|
14875
15266
|
href: hrefs.attr(attr.key, opt.value),
|
|
@@ -14887,11 +15278,11 @@ function ShopFilters({
|
|
|
14887
15278
|
);
|
|
14888
15279
|
}) }, attr.key);
|
|
14889
15280
|
}),
|
|
14890
|
-
showPriceGroup && /* @__PURE__ */
|
|
15281
|
+
showPriceGroup && /* @__PURE__ */ jsx20(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
|
|
14891
15282
|
const isActive = active.priceMin === band.min && active.priceMax === band.max;
|
|
14892
15283
|
const nextMin = isActive ? void 0 : band.min;
|
|
14893
15284
|
const nextMax = isActive ? void 0 : band.max;
|
|
14894
|
-
return /* @__PURE__ */
|
|
15285
|
+
return /* @__PURE__ */ jsx20(
|
|
14895
15286
|
OptionLink,
|
|
14896
15287
|
{
|
|
14897
15288
|
href: hrefs.price(nextMin, nextMax),
|
|
@@ -14902,7 +15293,7 @@ function ShopFilters({
|
|
|
14902
15293
|
i
|
|
14903
15294
|
);
|
|
14904
15295
|
}) }),
|
|
14905
|
-
hasOnSale && /* @__PURE__ */
|
|
15296
|
+
hasOnSale && /* @__PURE__ */ jsx20(
|
|
14906
15297
|
OptionLink,
|
|
14907
15298
|
{
|
|
14908
15299
|
href: hrefs.onSale(!active.onSale),
|
|
@@ -14911,7 +15302,7 @@ function ShopFilters({
|
|
|
14911
15302
|
onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
|
|
14912
15303
|
}
|
|
14913
15304
|
),
|
|
14914
|
-
/* @__PURE__ */
|
|
15305
|
+
/* @__PURE__ */ jsx20(
|
|
14915
15306
|
"a",
|
|
14916
15307
|
{
|
|
14917
15308
|
href: hrefs.clearAll(),
|
|
@@ -14927,8 +15318,8 @@ function ShopFilters({
|
|
|
14927
15318
|
}
|
|
14928
15319
|
|
|
14929
15320
|
// src/components/course-catalog-filters.tsx
|
|
14930
|
-
import { cn as
|
|
14931
|
-
import { jsx as
|
|
15321
|
+
import { cn as cn15 } from "@reblu/site-ui/utils";
|
|
15322
|
+
import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
14932
15323
|
var DEFAULT_COURSE_PRICE_BANDS = [
|
|
14933
15324
|
{ max: 5e3 },
|
|
14934
15325
|
{ min: 5e3, max: 15e3 },
|
|
@@ -14981,9 +15372,9 @@ function CourseCatalogFilters({
|
|
|
14981
15372
|
const showPrice = enabled.price !== false;
|
|
14982
15373
|
const isFree = Boolean(active.free);
|
|
14983
15374
|
if (!showCategories && !showInstructors && !showPrice) return null;
|
|
14984
|
-
return /* @__PURE__ */
|
|
14985
|
-
showCategories && /* @__PURE__ */
|
|
14986
|
-
/* @__PURE__ */
|
|
15375
|
+
return /* @__PURE__ */ jsxs20("div", { className: cn15("space-y-6", className), "data-slot": "course-catalog-filters", children: [
|
|
15376
|
+
showCategories && /* @__PURE__ */ jsxs20(FilterFieldset, { legend: t.category, children: [
|
|
15377
|
+
/* @__PURE__ */ jsx21(
|
|
14987
15378
|
OptionLink,
|
|
14988
15379
|
{
|
|
14989
15380
|
href: categoryHref(void 0),
|
|
@@ -14995,7 +15386,7 @@ function CourseCatalogFilters({
|
|
|
14995
15386
|
sortedCategories.map((category) => {
|
|
14996
15387
|
const isActive = active.category === category.slug;
|
|
14997
15388
|
const next2 = isActive ? void 0 : category.slug;
|
|
14998
|
-
return /* @__PURE__ */
|
|
15389
|
+
return /* @__PURE__ */ jsx21(
|
|
14999
15390
|
OptionLink,
|
|
15000
15391
|
{
|
|
15001
15392
|
href: categoryHref(next2),
|
|
@@ -15007,8 +15398,8 @@ function CourseCatalogFilters({
|
|
|
15007
15398
|
);
|
|
15008
15399
|
})
|
|
15009
15400
|
] }),
|
|
15010
|
-
showInstructors && /* @__PURE__ */
|
|
15011
|
-
/* @__PURE__ */
|
|
15401
|
+
showInstructors && /* @__PURE__ */ jsxs20(FilterFieldset, { legend: t.instructor, children: [
|
|
15402
|
+
/* @__PURE__ */ jsx21(
|
|
15012
15403
|
OptionLink,
|
|
15013
15404
|
{
|
|
15014
15405
|
href: hrefs.instructor(void 0),
|
|
@@ -15020,7 +15411,7 @@ function CourseCatalogFilters({
|
|
|
15020
15411
|
named.map((instructor) => {
|
|
15021
15412
|
const isActive = active.instructor === instructor.id;
|
|
15022
15413
|
const next2 = isActive ? void 0 : instructor.id;
|
|
15023
|
-
return /* @__PURE__ */
|
|
15414
|
+
return /* @__PURE__ */ jsx21(
|
|
15024
15415
|
OptionLink,
|
|
15025
15416
|
{
|
|
15026
15417
|
href: hrefs.instructor(next2),
|
|
@@ -15032,8 +15423,8 @@ function CourseCatalogFilters({
|
|
|
15032
15423
|
);
|
|
15033
15424
|
})
|
|
15034
15425
|
] }),
|
|
15035
|
-
showPrice && /* @__PURE__ */
|
|
15036
|
-
/* @__PURE__ */
|
|
15426
|
+
showPrice && /* @__PURE__ */ jsxs20(FilterFieldset, { legend: t.price, children: [
|
|
15427
|
+
/* @__PURE__ */ jsx21(
|
|
15037
15428
|
OptionLink,
|
|
15038
15429
|
{
|
|
15039
15430
|
href: hrefs.free(!isFree),
|
|
@@ -15048,7 +15439,7 @@ function CourseCatalogFilters({
|
|
|
15048
15439
|
const isActive = !isFree && active.priceMin === band.min && active.priceMax === band.max;
|
|
15049
15440
|
const nextMin = isActive ? void 0 : band.min;
|
|
15050
15441
|
const nextMax = isActive ? void 0 : band.max;
|
|
15051
|
-
return /* @__PURE__ */
|
|
15442
|
+
return /* @__PURE__ */ jsx21(
|
|
15052
15443
|
OptionLink,
|
|
15053
15444
|
{
|
|
15054
15445
|
href: hrefs.price(nextMin, nextMax),
|
|
@@ -15060,7 +15451,7 @@ function CourseCatalogFilters({
|
|
|
15060
15451
|
);
|
|
15061
15452
|
})
|
|
15062
15453
|
] }),
|
|
15063
|
-
/* @__PURE__ */
|
|
15454
|
+
/* @__PURE__ */ jsx21(
|
|
15064
15455
|
"a",
|
|
15065
15456
|
{
|
|
15066
15457
|
href: hrefs.clearAll(),
|
|
@@ -15082,16 +15473,44 @@ function CourseCatalogFilters({
|
|
|
15082
15473
|
}
|
|
15083
15474
|
|
|
15084
15475
|
// src/components/cart-line-list.tsx
|
|
15085
|
-
import { cn as
|
|
15086
|
-
import { jsx as
|
|
15476
|
+
import { cn as cn16 } from "@reblu/site-ui/utils";
|
|
15477
|
+
import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
15087
15478
|
var DEFAULT_LABELS2 = {
|
|
15088
15479
|
quantityLabel: "Cantidad",
|
|
15089
15480
|
decrease: "Reducir cantidad",
|
|
15090
15481
|
increase: "Aumentar cantidad",
|
|
15091
15482
|
remove: "Eliminar",
|
|
15092
15483
|
unitPriceSuffix: "/ ud.",
|
|
15093
|
-
cancelledNotice: "Pago cancelado: tu carrito sigue aqu\xED"
|
|
15484
|
+
cancelledNotice: "Pago cancelado: tu carrito sigue aqu\xED",
|
|
15485
|
+
includesSummary: "Qu\xE9 incluye"
|
|
15094
15486
|
};
|
|
15487
|
+
function CartLineIncludes({ entries, note, className }) {
|
|
15488
|
+
const hasNote = note != null && note !== false && note !== "";
|
|
15489
|
+
if (entries.length === 0 && !hasNote) return null;
|
|
15490
|
+
return /* @__PURE__ */ jsxs21(
|
|
15491
|
+
"div",
|
|
15492
|
+
{
|
|
15493
|
+
className: cn16("mt-2 space-y-2 rounded-lg bg-muted px-4 py-3 text-sm", className),
|
|
15494
|
+
"data-slot": "cart-line-includes",
|
|
15495
|
+
children: [
|
|
15496
|
+
entries.length > 0 && /* @__PURE__ */ jsx22("dl", { className: "grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5", children: entries.map((entry, idx) => (
|
|
15497
|
+
// eslint-disable-next-line react/no-array-index-key -- entries are positional, SITE-built rows
|
|
15498
|
+
/* @__PURE__ */ jsxs21("div", { className: "contents", children: [
|
|
15499
|
+
/* @__PURE__ */ jsx22("dt", { className: "font-semibold text-muted-foreground", children: entry.label }),
|
|
15500
|
+
/* @__PURE__ */ jsx22("dd", { className: "m-0", children: entry.value })
|
|
15501
|
+
] }, idx)
|
|
15502
|
+
)) }),
|
|
15503
|
+
hasNote && /* @__PURE__ */ jsx22("p", { className: "text-muted-foreground", children: note })
|
|
15504
|
+
]
|
|
15505
|
+
}
|
|
15506
|
+
);
|
|
15507
|
+
}
|
|
15508
|
+
function bundleComponentsToIncludes(components) {
|
|
15509
|
+
return components.map(({ quantity, component }) => ({
|
|
15510
|
+
label: component.name,
|
|
15511
|
+
value: `x${quantity}`
|
|
15512
|
+
}));
|
|
15513
|
+
}
|
|
15095
15514
|
function lineKey(productId, variantId) {
|
|
15096
15515
|
return `${productId}-${variantId ?? "no-variant"}`;
|
|
15097
15516
|
}
|
|
@@ -15102,6 +15521,7 @@ function CartLineList({
|
|
|
15102
15521
|
liveMessage,
|
|
15103
15522
|
notice,
|
|
15104
15523
|
lineMessage,
|
|
15524
|
+
lineIncludes,
|
|
15105
15525
|
labels,
|
|
15106
15526
|
currencyCode,
|
|
15107
15527
|
locale,
|
|
@@ -15109,9 +15529,9 @@ function CartLineList({
|
|
|
15109
15529
|
}) {
|
|
15110
15530
|
const t = { ...DEFAULT_LABELS2, ...labels };
|
|
15111
15531
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
15112
|
-
return /* @__PURE__ */
|
|
15113
|
-
/* @__PURE__ */
|
|
15114
|
-
noticeContent != null && noticeContent !== false && /* @__PURE__ */
|
|
15532
|
+
return /* @__PURE__ */ jsxs21("div", { className: cn16("space-y-4", className), "data-slot": "cart-line-list", children: [
|
|
15533
|
+
/* @__PURE__ */ jsx22("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
|
|
15534
|
+
noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx22(
|
|
15115
15535
|
"div",
|
|
15116
15536
|
{
|
|
15117
15537
|
role: "status",
|
|
@@ -15120,33 +15540,34 @@ function CartLineList({
|
|
|
15120
15540
|
children: noticeContent
|
|
15121
15541
|
}
|
|
15122
15542
|
),
|
|
15123
|
-
/* @__PURE__ */
|
|
15543
|
+
/* @__PURE__ */ jsx22("ul", { className: "space-y-4", children: items.map((item) => {
|
|
15124
15544
|
const maxQty = item.maxStock ?? Infinity;
|
|
15125
15545
|
const atMax = item.quantity >= maxQty;
|
|
15126
15546
|
const atMin = item.quantity <= 1;
|
|
15127
15547
|
const message = lineMessage?.(item);
|
|
15128
|
-
|
|
15548
|
+
const includes = lineIncludes?.(item);
|
|
15549
|
+
return /* @__PURE__ */ jsxs21(
|
|
15129
15550
|
"li",
|
|
15130
15551
|
{
|
|
15131
15552
|
className: "flex gap-4 rounded-xl border border-border bg-card p-4",
|
|
15132
15553
|
children: [
|
|
15133
|
-
/* @__PURE__ */
|
|
15134
|
-
/* @__PURE__ */
|
|
15135
|
-
/* @__PURE__ */
|
|
15136
|
-
item.variantName && /* @__PURE__ */
|
|
15137
|
-
/* @__PURE__ */
|
|
15554
|
+
/* @__PURE__ */ jsx22("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx22("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
|
|
15555
|
+
/* @__PURE__ */ jsxs21("div", { className: "min-w-0 flex-1", children: [
|
|
15556
|
+
/* @__PURE__ */ jsx22("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
|
|
15557
|
+
item.variantName && /* @__PURE__ */ jsx22("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
|
|
15558
|
+
/* @__PURE__ */ jsxs21("p", { className: "mt-1 text-sm text-muted-foreground", children: [
|
|
15138
15559
|
formatPrice(item.unitPrice, currencyCode, locale),
|
|
15139
15560
|
" ",
|
|
15140
15561
|
t.unitPriceSuffix
|
|
15141
15562
|
] }),
|
|
15142
|
-
/* @__PURE__ */
|
|
15563
|
+
/* @__PURE__ */ jsxs21(
|
|
15143
15564
|
"div",
|
|
15144
15565
|
{
|
|
15145
15566
|
role: "group",
|
|
15146
15567
|
"aria-label": t.quantityLabel,
|
|
15147
15568
|
className: "mt-3 flex items-center gap-3",
|
|
15148
15569
|
children: [
|
|
15149
|
-
/* @__PURE__ */
|
|
15570
|
+
/* @__PURE__ */ jsx22(
|
|
15150
15571
|
"button",
|
|
15151
15572
|
{
|
|
15152
15573
|
type: "button",
|
|
@@ -15157,8 +15578,8 @@ function CartLineList({
|
|
|
15157
15578
|
children: "\u2212"
|
|
15158
15579
|
}
|
|
15159
15580
|
),
|
|
15160
|
-
/* @__PURE__ */
|
|
15161
|
-
/* @__PURE__ */
|
|
15581
|
+
/* @__PURE__ */ jsx22("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
|
|
15582
|
+
/* @__PURE__ */ jsx22(
|
|
15162
15583
|
"button",
|
|
15163
15584
|
{
|
|
15164
15585
|
type: "button",
|
|
@@ -15169,7 +15590,7 @@ function CartLineList({
|
|
|
15169
15590
|
children: "+"
|
|
15170
15591
|
}
|
|
15171
15592
|
),
|
|
15172
|
-
onRemove && /* @__PURE__ */
|
|
15593
|
+
onRemove && /* @__PURE__ */ jsx22(
|
|
15173
15594
|
"button",
|
|
15174
15595
|
{
|
|
15175
15596
|
type: "button",
|
|
@@ -15182,16 +15603,20 @@ function CartLineList({
|
|
|
15182
15603
|
]
|
|
15183
15604
|
}
|
|
15184
15605
|
),
|
|
15185
|
-
message != null && message !== false && /* @__PURE__ */
|
|
15606
|
+
message != null && message !== false && /* @__PURE__ */ jsx22(
|
|
15186
15607
|
"p",
|
|
15187
15608
|
{
|
|
15188
15609
|
className: "mt-2 text-sm text-destructive",
|
|
15189
15610
|
"data-slot": "cart-line-list-line-message",
|
|
15190
15611
|
children: message
|
|
15191
15612
|
}
|
|
15192
|
-
)
|
|
15613
|
+
),
|
|
15614
|
+
includes != null && includes !== false && /* @__PURE__ */ jsxs21("details", { className: "mt-2", "data-slot": "cart-line-list-includes", children: [
|
|
15615
|
+
/* @__PURE__ */ jsx22("summary", { className: "cursor-pointer text-sm font-semibold text-primary", children: t.includesSummary }),
|
|
15616
|
+
includes
|
|
15617
|
+
] })
|
|
15193
15618
|
] }),
|
|
15194
|
-
/* @__PURE__ */
|
|
15619
|
+
/* @__PURE__ */ jsx22("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx22("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
|
|
15195
15620
|
]
|
|
15196
15621
|
},
|
|
15197
15622
|
lineKey(item.productId, item.variantId)
|
|
@@ -15201,8 +15626,8 @@ function CartLineList({
|
|
|
15201
15626
|
}
|
|
15202
15627
|
|
|
15203
15628
|
// src/components/cart-summary.tsx
|
|
15204
|
-
import { cn as
|
|
15205
|
-
import { jsx as
|
|
15629
|
+
import { cn as cn17 } from "@reblu/site-ui/utils";
|
|
15630
|
+
import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
15206
15631
|
var DEFAULT_LABELS3 = {
|
|
15207
15632
|
subtotal: "Subtotal",
|
|
15208
15633
|
discountPrefix: "Descuento",
|
|
@@ -15232,37 +15657,37 @@ function CartSummary({
|
|
|
15232
15657
|
const hasDiscount = Boolean(discountAmount && discountAmount > 0);
|
|
15233
15658
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
15234
15659
|
const hasNotice = noticeContent != null && noticeContent !== false;
|
|
15235
|
-
const breakdown = /* @__PURE__ */
|
|
15660
|
+
const breakdown = /* @__PURE__ */ jsxs22(
|
|
15236
15661
|
"dl",
|
|
15237
15662
|
{
|
|
15238
|
-
className:
|
|
15663
|
+
className: cn17("space-y-2 text-sm", !hasNotice && className),
|
|
15239
15664
|
"data-slot": "cart-summary",
|
|
15240
15665
|
children: [
|
|
15241
|
-
/* @__PURE__ */
|
|
15242
|
-
/* @__PURE__ */
|
|
15243
|
-
/* @__PURE__ */
|
|
15666
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex justify-between text-muted-foreground", children: [
|
|
15667
|
+
/* @__PURE__ */ jsx23("dt", { children: t.subtotal }),
|
|
15668
|
+
/* @__PURE__ */ jsx23("dd", { children: formatPrice(subtotal, currencyCode, locale) })
|
|
15244
15669
|
] }),
|
|
15245
|
-
hasDiscount && /* @__PURE__ */
|
|
15246
|
-
/* @__PURE__ */
|
|
15247
|
-
/* @__PURE__ */
|
|
15670
|
+
hasDiscount && /* @__PURE__ */ jsxs22("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
|
|
15671
|
+
/* @__PURE__ */ jsx23("dt", { children: autoDiscount ? t.staffDiscountApplied : `${t.discountPrefix}${discountCode ? ` (${discountCode})` : ""}` }),
|
|
15672
|
+
/* @__PURE__ */ jsxs22("dd", { children: [
|
|
15248
15673
|
"-",
|
|
15249
15674
|
formatPrice(discountAmount, currencyCode, locale)
|
|
15250
15675
|
] })
|
|
15251
15676
|
] }),
|
|
15252
|
-
shippingEnabled && /* @__PURE__ */
|
|
15253
|
-
/* @__PURE__ */
|
|
15254
|
-
/* @__PURE__ */
|
|
15677
|
+
shippingEnabled && /* @__PURE__ */ jsxs22("div", { className: "flex justify-between text-muted-foreground", children: [
|
|
15678
|
+
/* @__PURE__ */ jsx23("dt", { children: t.shipping }),
|
|
15679
|
+
/* @__PURE__ */ jsx23("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
|
|
15255
15680
|
] }),
|
|
15256
|
-
/* @__PURE__ */
|
|
15257
|
-
/* @__PURE__ */
|
|
15258
|
-
/* @__PURE__ */
|
|
15681
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
|
|
15682
|
+
/* @__PURE__ */ jsx23("dt", { children: t.total }),
|
|
15683
|
+
/* @__PURE__ */ jsx23("dd", { children: formatPrice(total, currencyCode, locale) })
|
|
15259
15684
|
] })
|
|
15260
15685
|
]
|
|
15261
15686
|
}
|
|
15262
15687
|
);
|
|
15263
15688
|
if (!hasNotice) return breakdown;
|
|
15264
|
-
return /* @__PURE__ */
|
|
15265
|
-
/* @__PURE__ */
|
|
15689
|
+
return /* @__PURE__ */ jsxs22("div", { className: cn17("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
|
|
15690
|
+
/* @__PURE__ */ jsx23(
|
|
15266
15691
|
"div",
|
|
15267
15692
|
{
|
|
15268
15693
|
role: "status",
|
|
@@ -15276,8 +15701,8 @@ function CartSummary({
|
|
|
15276
15701
|
}
|
|
15277
15702
|
|
|
15278
15703
|
// src/components/cart-adjustments-notice.tsx
|
|
15279
|
-
import { cn as
|
|
15280
|
-
import { jsx as
|
|
15704
|
+
import { cn as cn18 } from "@reblu/site-ui/utils";
|
|
15705
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
15281
15706
|
var DEFAULT_LABELS4 = {
|
|
15282
15707
|
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.`,
|
|
15283
15708
|
quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
|
|
@@ -15311,20 +15736,20 @@ function CartAdjustmentsNotice({
|
|
|
15311
15736
|
);
|
|
15312
15737
|
}
|
|
15313
15738
|
if (messages.length === 0) return null;
|
|
15314
|
-
return /* @__PURE__ */
|
|
15739
|
+
return /* @__PURE__ */ jsx24(
|
|
15315
15740
|
"div",
|
|
15316
15741
|
{
|
|
15317
15742
|
role: "status",
|
|
15318
|
-
className:
|
|
15743
|
+
className: cn18("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
|
|
15319
15744
|
"data-slot": "cart-adjustments-notice",
|
|
15320
|
-
children: messages.length === 1 ? /* @__PURE__ */
|
|
15745
|
+
children: messages.length === 1 ? /* @__PURE__ */ jsx24("p", { children: messages[0] }) : /* @__PURE__ */ jsx24("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx24("li", { children: message }, index)) })
|
|
15321
15746
|
}
|
|
15322
15747
|
);
|
|
15323
15748
|
}
|
|
15324
15749
|
|
|
15325
15750
|
// src/components/added-to-cart-toast.tsx
|
|
15326
|
-
import { cn as
|
|
15327
|
-
import { jsx as
|
|
15751
|
+
import { cn as cn19 } from "@reblu/site-ui/utils";
|
|
15752
|
+
import { jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
15328
15753
|
var DEFAULT_LABELS5 = {
|
|
15329
15754
|
success: "A\xF1adido al carrito",
|
|
15330
15755
|
error: "No se pudo a\xF1adir al carrito",
|
|
@@ -15344,12 +15769,12 @@ function AddedToCartToast({
|
|
|
15344
15769
|
const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
|
|
15345
15770
|
const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
|
|
15346
15771
|
const variant = status === "success" ? "success" : "error";
|
|
15347
|
-
return /* @__PURE__ */
|
|
15772
|
+
return /* @__PURE__ */ jsxs23(
|
|
15348
15773
|
"div",
|
|
15349
15774
|
{
|
|
15350
15775
|
"data-slot": "added-to-cart-toast",
|
|
15351
15776
|
"data-variant": variant,
|
|
15352
|
-
className:
|
|
15777
|
+
className: cn19(
|
|
15353
15778
|
"flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
|
|
15354
15779
|
variant === "success" && "border-green-600/30 dark:border-green-400/30",
|
|
15355
15780
|
variant === "error" && "border-destructive/30",
|
|
@@ -15357,20 +15782,20 @@ function AddedToCartToast({
|
|
|
15357
15782
|
),
|
|
15358
15783
|
children: [
|
|
15359
15784
|
hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
|
|
15360
|
-
/* @__PURE__ */
|
|
15361
|
-
/* @__PURE__ */
|
|
15362
|
-
/* @__PURE__ */
|
|
15363
|
-
/* @__PURE__ */
|
|
15785
|
+
/* @__PURE__ */ jsx25("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
|
|
15786
|
+
/* @__PURE__ */ jsxs23("div", { className: "min-w-0 flex-1", children: [
|
|
15787
|
+
/* @__PURE__ */ jsx25("p", { className: "truncate font-semibold text-foreground", children: productName }),
|
|
15788
|
+
/* @__PURE__ */ jsx25("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
|
|
15364
15789
|
] }),
|
|
15365
|
-
/* @__PURE__ */
|
|
15790
|
+
/* @__PURE__ */ jsx25("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx25("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
|
|
15366
15791
|
]
|
|
15367
15792
|
}
|
|
15368
15793
|
);
|
|
15369
15794
|
}
|
|
15370
15795
|
|
|
15371
15796
|
// src/components/checkout-login-prompt.tsx
|
|
15372
|
-
import { cn as
|
|
15373
|
-
import { Fragment as Fragment4, jsx as
|
|
15797
|
+
import { cn as cn20 } from "@reblu/site-ui/utils";
|
|
15798
|
+
import { Fragment as Fragment4, jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
15374
15799
|
var DEFAULT_LABELS6 = {
|
|
15375
15800
|
title: "Identificaci\xF3n",
|
|
15376
15801
|
description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
|
|
@@ -15397,26 +15822,26 @@ function CheckoutLoginPrompt({
|
|
|
15397
15822
|
if (!open) return null;
|
|
15398
15823
|
const t = { ...DEFAULT_LABELS6, ...labels };
|
|
15399
15824
|
const isValidEmail = EMAIL_PATTERN.test(email.trim());
|
|
15400
|
-
return /* @__PURE__ */
|
|
15401
|
-
/* @__PURE__ */
|
|
15402
|
-
/* @__PURE__ */
|
|
15825
|
+
return /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
15826
|
+
/* @__PURE__ */ jsx26("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
|
|
15827
|
+
/* @__PURE__ */ jsxs24(
|
|
15403
15828
|
"div",
|
|
15404
15829
|
{
|
|
15405
15830
|
role: "dialog",
|
|
15406
15831
|
"aria-modal": "true",
|
|
15407
15832
|
"aria-labelledby": "checkout-login-prompt-title",
|
|
15408
15833
|
"data-slot": "checkout-login-prompt",
|
|
15409
|
-
className:
|
|
15834
|
+
className: cn20(
|
|
15410
15835
|
"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",
|
|
15411
15836
|
className
|
|
15412
15837
|
),
|
|
15413
15838
|
children: [
|
|
15414
|
-
/* @__PURE__ */
|
|
15415
|
-
/* @__PURE__ */
|
|
15416
|
-
/* @__PURE__ */
|
|
15417
|
-
/* @__PURE__ */
|
|
15839
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-start justify-between gap-3", children: [
|
|
15840
|
+
/* @__PURE__ */ jsxs24("div", { children: [
|
|
15841
|
+
/* @__PURE__ */ jsx26("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
|
|
15842
|
+
/* @__PURE__ */ jsx26("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
|
|
15418
15843
|
] }),
|
|
15419
|
-
/* @__PURE__ */
|
|
15844
|
+
/* @__PURE__ */ jsx26(
|
|
15420
15845
|
"button",
|
|
15421
15846
|
{
|
|
15422
15847
|
type: "button",
|
|
@@ -15427,9 +15852,9 @@ function CheckoutLoginPrompt({
|
|
|
15427
15852
|
}
|
|
15428
15853
|
)
|
|
15429
15854
|
] }),
|
|
15430
|
-
/* @__PURE__ */
|
|
15431
|
-
/* @__PURE__ */
|
|
15432
|
-
/* @__PURE__ */
|
|
15855
|
+
/* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
15856
|
+
/* @__PURE__ */ jsx26("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
|
|
15857
|
+
/* @__PURE__ */ jsx26(
|
|
15433
15858
|
"input",
|
|
15434
15859
|
{
|
|
15435
15860
|
id: "checkout-login-prompt-email",
|
|
@@ -15438,29 +15863,29 @@ function CheckoutLoginPrompt({
|
|
|
15438
15863
|
value: email,
|
|
15439
15864
|
onChange: (e) => onEmailChange(e.target.value),
|
|
15440
15865
|
placeholder: t.emailPlaceholder,
|
|
15441
|
-
className:
|
|
15866
|
+
className: cn20(
|
|
15442
15867
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15443
15868
|
error ? "border-destructive" : "border-border focus:border-primary"
|
|
15444
15869
|
)
|
|
15445
15870
|
}
|
|
15446
15871
|
),
|
|
15447
|
-
error && /* @__PURE__ */
|
|
15872
|
+
error && /* @__PURE__ */ jsx26("p", { className: "text-xs text-destructive", children: error })
|
|
15448
15873
|
] }),
|
|
15449
|
-
/* @__PURE__ */
|
|
15450
|
-
/* @__PURE__ */
|
|
15874
|
+
/* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
15875
|
+
/* @__PURE__ */ jsx26(
|
|
15451
15876
|
"button",
|
|
15452
15877
|
{
|
|
15453
15878
|
type: "button",
|
|
15454
15879
|
onClick: onSubmitEmail,
|
|
15455
15880
|
disabled: checking || !isValidEmail,
|
|
15456
|
-
className:
|
|
15881
|
+
className: cn20(
|
|
15457
15882
|
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
|
|
15458
15883
|
checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
15459
15884
|
),
|
|
15460
15885
|
children: checking ? t.checking : t.continueWithEmail
|
|
15461
15886
|
}
|
|
15462
15887
|
),
|
|
15463
|
-
/* @__PURE__ */
|
|
15888
|
+
/* @__PURE__ */ jsx26(
|
|
15464
15889
|
"button",
|
|
15465
15890
|
{
|
|
15466
15891
|
type: "button",
|
|
@@ -15477,9 +15902,9 @@ function CheckoutLoginPrompt({
|
|
|
15477
15902
|
}
|
|
15478
15903
|
|
|
15479
15904
|
// src/components/checkout-form.tsx
|
|
15480
|
-
import { cn as
|
|
15905
|
+
import { cn as cn21 } from "@reblu/site-ui/utils";
|
|
15481
15906
|
import { PhoneInput } from "@reblu/site-ui/phone-input";
|
|
15482
|
-
import { Fragment as Fragment5, jsx as
|
|
15907
|
+
import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
15483
15908
|
var DEFAULT_LABELS7 = {
|
|
15484
15909
|
contactTitle: "Datos de contacto",
|
|
15485
15910
|
nameLabel: "Nombre completo",
|
|
@@ -15535,22 +15960,22 @@ function CheckoutForm({
|
|
|
15535
15960
|
event.preventDefault();
|
|
15536
15961
|
if (discountCode.trim() && !discountApplying) onApplyDiscount();
|
|
15537
15962
|
}
|
|
15538
|
-
return /* @__PURE__ */
|
|
15963
|
+
return /* @__PURE__ */ jsxs25(Fragment5, { children: [
|
|
15539
15964
|
loginPrompt,
|
|
15540
|
-
/* @__PURE__ */
|
|
15965
|
+
/* @__PURE__ */ jsxs25(
|
|
15541
15966
|
"form",
|
|
15542
15967
|
{
|
|
15543
15968
|
"data-testid": "checkout-form",
|
|
15544
15969
|
onSubmit,
|
|
15545
|
-
className:
|
|
15970
|
+
className: cn21("space-y-8", className),
|
|
15546
15971
|
"data-slot": "checkout-form",
|
|
15547
15972
|
children: [
|
|
15548
|
-
/* @__PURE__ */
|
|
15549
|
-
/* @__PURE__ */
|
|
15550
|
-
/* @__PURE__ */
|
|
15551
|
-
/* @__PURE__ */
|
|
15552
|
-
/* @__PURE__ */
|
|
15553
|
-
/* @__PURE__ */
|
|
15973
|
+
/* @__PURE__ */ jsxs25("section", { className: "space-y-4", children: [
|
|
15974
|
+
/* @__PURE__ */ jsx27("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
|
|
15975
|
+
/* @__PURE__ */ jsxs25("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
15976
|
+
/* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
|
|
15977
|
+
/* @__PURE__ */ jsx27("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
|
|
15978
|
+
/* @__PURE__ */ jsx27(
|
|
15554
15979
|
"input",
|
|
15555
15980
|
{
|
|
15556
15981
|
id: "checkout-form-name",
|
|
@@ -15559,17 +15984,17 @@ function CheckoutForm({
|
|
|
15559
15984
|
value: contact.name,
|
|
15560
15985
|
onChange: (e) => patchContact({ name: e.target.value }),
|
|
15561
15986
|
placeholder: t.namePlaceholder,
|
|
15562
|
-
className:
|
|
15987
|
+
className: cn21(
|
|
15563
15988
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15564
15989
|
contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
|
|
15565
15990
|
)
|
|
15566
15991
|
}
|
|
15567
15992
|
),
|
|
15568
|
-
contactErrors?.name && /* @__PURE__ */
|
|
15993
|
+
contactErrors?.name && /* @__PURE__ */ jsx27("p", { className: "text-xs text-destructive", children: contactErrors.name })
|
|
15569
15994
|
] }),
|
|
15570
|
-
/* @__PURE__ */
|
|
15571
|
-
/* @__PURE__ */
|
|
15572
|
-
/* @__PURE__ */
|
|
15995
|
+
/* @__PURE__ */ jsxs25("div", { className: "space-y-1", children: [
|
|
15996
|
+
/* @__PURE__ */ jsx27("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
|
|
15997
|
+
/* @__PURE__ */ jsx27(
|
|
15573
15998
|
"input",
|
|
15574
15999
|
{
|
|
15575
16000
|
id: "checkout-form-email",
|
|
@@ -15578,15 +16003,15 @@ function CheckoutForm({
|
|
|
15578
16003
|
value: contact.email,
|
|
15579
16004
|
onChange: (e) => patchContact({ email: e.target.value }),
|
|
15580
16005
|
placeholder: t.emailPlaceholder,
|
|
15581
|
-
className:
|
|
16006
|
+
className: cn21(
|
|
15582
16007
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15583
16008
|
contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
|
|
15584
16009
|
)
|
|
15585
16010
|
}
|
|
15586
16011
|
),
|
|
15587
|
-
contactErrors?.email && /* @__PURE__ */
|
|
16012
|
+
contactErrors?.email && /* @__PURE__ */ jsx27("p", { className: "text-xs text-destructive", children: contactErrors.email })
|
|
15588
16013
|
] }),
|
|
15589
|
-
/* @__PURE__ */
|
|
16014
|
+
/* @__PURE__ */ jsx27("div", { className: "space-y-1", children: /* @__PURE__ */ jsx27(
|
|
15590
16015
|
PhoneInput,
|
|
15591
16016
|
{
|
|
15592
16017
|
id: "checkout-form-phone",
|
|
@@ -15600,26 +16025,26 @@ function CheckoutForm({
|
|
|
15600
16025
|
] })
|
|
15601
16026
|
] }),
|
|
15602
16027
|
children2,
|
|
15603
|
-
generalError ? /* @__PURE__ */
|
|
15604
|
-
/* @__PURE__ */
|
|
15605
|
-
/* @__PURE__ */
|
|
15606
|
-
autoDiscount ? /* @__PURE__ */
|
|
16028
|
+
generalError ? /* @__PURE__ */ jsx27("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
|
|
16029
|
+
/* @__PURE__ */ jsxs25("section", { className: "space-y-3", children: [
|
|
16030
|
+
/* @__PURE__ */ jsx27("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
|
|
16031
|
+
autoDiscount ? /* @__PURE__ */ jsxs25(
|
|
15607
16032
|
"div",
|
|
15608
16033
|
{
|
|
15609
16034
|
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",
|
|
15610
16035
|
"data-slot": "checkout-staff-discount",
|
|
15611
16036
|
children: [
|
|
15612
|
-
/* @__PURE__ */
|
|
15613
|
-
/* @__PURE__ */
|
|
16037
|
+
/* @__PURE__ */ jsx27("span", { className: "font-semibold", children: t.staffDiscountApplied }),
|
|
16038
|
+
/* @__PURE__ */ jsx27("span", { children: t.discountAppliedSuffix(formatPrice(autoDiscount.amount, currencyCode, locale)) })
|
|
15614
16039
|
]
|
|
15615
16040
|
}
|
|
15616
16041
|
) : null,
|
|
15617
|
-
appliedDiscount && !autoDiscount ? /* @__PURE__ */
|
|
15618
|
-
/* @__PURE__ */
|
|
15619
|
-
/* @__PURE__ */
|
|
15620
|
-
/* @__PURE__ */
|
|
16042
|
+
appliedDiscount && !autoDiscount ? /* @__PURE__ */ jsxs25("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: [
|
|
16043
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
|
|
16044
|
+
/* @__PURE__ */ jsx27("span", { className: "font-semibold", children: appliedDiscount.code }),
|
|
16045
|
+
/* @__PURE__ */ jsx27("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
|
|
15621
16046
|
] }),
|
|
15622
|
-
/* @__PURE__ */
|
|
16047
|
+
/* @__PURE__ */ jsx27(
|
|
15623
16048
|
"button",
|
|
15624
16049
|
{
|
|
15625
16050
|
type: "button",
|
|
@@ -15629,9 +16054,9 @@ function CheckoutForm({
|
|
|
15629
16054
|
children: t.removeDiscount
|
|
15630
16055
|
}
|
|
15631
16056
|
)
|
|
15632
|
-
] }) : /* @__PURE__ */
|
|
15633
|
-
/* @__PURE__ */
|
|
15634
|
-
/* @__PURE__ */
|
|
16057
|
+
] }) : /* @__PURE__ */ jsxs25("div", { className: "flex gap-2", children: [
|
|
16058
|
+
/* @__PURE__ */ jsx27("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
|
|
16059
|
+
/* @__PURE__ */ jsx27(
|
|
15635
16060
|
"input",
|
|
15636
16061
|
{
|
|
15637
16062
|
id: "checkout-form-discount-code",
|
|
@@ -15643,7 +16068,7 @@ function CheckoutForm({
|
|
|
15643
16068
|
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"
|
|
15644
16069
|
}
|
|
15645
16070
|
),
|
|
15646
|
-
/* @__PURE__ */
|
|
16071
|
+
/* @__PURE__ */ jsx27(
|
|
15647
16072
|
"button",
|
|
15648
16073
|
{
|
|
15649
16074
|
type: "button",
|
|
@@ -15654,14 +16079,14 @@ function CheckoutForm({
|
|
|
15654
16079
|
}
|
|
15655
16080
|
)
|
|
15656
16081
|
] }),
|
|
15657
|
-
discountError && /* @__PURE__ */
|
|
16082
|
+
discountError && /* @__PURE__ */ jsx27("p", { className: "text-xs text-destructive", children: discountError })
|
|
15658
16083
|
] }),
|
|
15659
|
-
/* @__PURE__ */
|
|
16084
|
+
/* @__PURE__ */ jsx27(
|
|
15660
16085
|
"button",
|
|
15661
16086
|
{
|
|
15662
16087
|
type: "submit",
|
|
15663
16088
|
disabled: submitting || submitDisabled,
|
|
15664
|
-
className:
|
|
16089
|
+
className: cn21(
|
|
15665
16090
|
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
|
|
15666
16091
|
submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
15667
16092
|
),
|
|
@@ -15675,11 +16100,11 @@ function CheckoutForm({
|
|
|
15675
16100
|
}
|
|
15676
16101
|
|
|
15677
16102
|
// src/components/order-confirmation.tsx
|
|
15678
|
-
import { cn as
|
|
16103
|
+
import { cn as cn23 } from "@reblu/site-ui/utils";
|
|
15679
16104
|
|
|
15680
16105
|
// src/components/order-invoice-link.tsx
|
|
15681
|
-
import { cn as
|
|
15682
|
-
import { jsx as
|
|
16106
|
+
import { cn as cn22 } from "@reblu/site-ui/utils";
|
|
16107
|
+
import { jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
15683
16108
|
var DEFAULT_LABELS8 = {
|
|
15684
16109
|
linkLabel: "Descargar la factura {number}",
|
|
15685
16110
|
signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
|
|
@@ -15687,8 +16112,8 @@ var DEFAULT_LABELS8 = {
|
|
|
15687
16112
|
function OrderInvoiceLink({ invoice, labels, className }) {
|
|
15688
16113
|
if (!invoice) return null;
|
|
15689
16114
|
const t = { ...DEFAULT_LABELS8, ...labels };
|
|
15690
|
-
return /* @__PURE__ */
|
|
15691
|
-
/* @__PURE__ */
|
|
16115
|
+
return /* @__PURE__ */ jsxs26("div", { className: cn22("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
|
|
16116
|
+
/* @__PURE__ */ jsx28(
|
|
15692
16117
|
"a",
|
|
15693
16118
|
{
|
|
15694
16119
|
href: invoice.url,
|
|
@@ -15696,19 +16121,21 @@ function OrderInvoiceLink({ invoice, labels, className }) {
|
|
|
15696
16121
|
children: t.linkLabel.replace("{number}", invoice.number)
|
|
15697
16122
|
}
|
|
15698
16123
|
),
|
|
15699
|
-
/* @__PURE__ */
|
|
16124
|
+
/* @__PURE__ */ jsx28("p", { className: "text-muted-foreground", children: t.signInHint })
|
|
15700
16125
|
] });
|
|
15701
16126
|
}
|
|
15702
16127
|
|
|
15703
16128
|
// src/components/order-confirmation.tsx
|
|
15704
|
-
import { jsx as
|
|
16129
|
+
import { jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
15705
16130
|
var DEFAULT_LABELS9 = {
|
|
15706
16131
|
pollingTitle: "Confirmando tu pedido\u2026",
|
|
15707
16132
|
pollingDescription: "Estamos procesando el pago, un momento\u2026",
|
|
15708
16133
|
foundTitle: "\xA1Pedido confirmado!",
|
|
15709
|
-
// REB-
|
|
15710
|
-
//
|
|
15711
|
-
|
|
16134
|
+
// REB-1200 (owner OK 6-Nov): no «con tu acceso» sentence — buyers who
|
|
16135
|
+
// already have an account (staff, returning clients) get no new access.
|
|
16136
|
+
// `{number}` and `{email}` come from the order. Files are never served here.
|
|
16137
|
+
foundDescription: "Tu pedido {number} est\xE1 confirmado. Te hemos enviado el resumen a {email}.",
|
|
16138
|
+
foundWithoutOrderDescription: "Tu pedido est\xE1 confirmado.",
|
|
15712
16139
|
timeoutTitle: "Pago recibido",
|
|
15713
16140
|
timeoutDescription: "Tu pago se ha procesado. Recibir\xE1s un email de confirmaci\xF3n en breve.",
|
|
15714
16141
|
orderNumberLabel: "Pedido confirmado",
|
|
@@ -15734,6 +16161,12 @@ var DEFAULT_LABELS9 = {
|
|
|
15734
16161
|
invoiceLinkLabel: "Descargar la factura {number}",
|
|
15735
16162
|
invoiceSignInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
|
|
15736
16163
|
};
|
|
16164
|
+
function foundDescription(t, order) {
|
|
16165
|
+
const template = t.foundDescription;
|
|
16166
|
+
if (!/\{(number|email)\}/.test(template)) return template;
|
|
16167
|
+
if (!order) return t.foundWithoutOrderDescription;
|
|
16168
|
+
return template.replaceAll("{number}", order.orderNumber).replaceAll("{email}", order.customerEmail);
|
|
16169
|
+
}
|
|
15737
16170
|
function OrderConfirmation({
|
|
15738
16171
|
status,
|
|
15739
16172
|
order,
|
|
@@ -15760,50 +16193,50 @@ function OrderConfirmation({
|
|
|
15760
16193
|
}
|
|
15761
16194
|
if (status === "not_found") return { title: t.notFoundTitle, description: t.notFoundDescription };
|
|
15762
16195
|
if (status === "error") return { title: t.errorTitle, description: t.errorDescription };
|
|
15763
|
-
if (isFound || order) return { title: t.foundTitle, description: t
|
|
16196
|
+
if (isFound || order) return { title: t.foundTitle, description: foundDescription(t, order) };
|
|
15764
16197
|
return { title: t.timeoutTitle, description: t.timeoutDescription };
|
|
15765
16198
|
})();
|
|
15766
16199
|
const showFullOrderSummary = Boolean(order) && (isFound || status === "timeout");
|
|
15767
16200
|
const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
|
|
15768
16201
|
const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
|
|
15769
16202
|
const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
|
|
15770
|
-
return /* @__PURE__ */
|
|
15771
|
-
/* @__PURE__ */
|
|
15772
|
-
/* @__PURE__ */
|
|
15773
|
-
showFullOrderSummary && order && /* @__PURE__ */
|
|
15774
|
-
/* @__PURE__ */
|
|
15775
|
-
/* @__PURE__ */
|
|
15776
|
-
/* @__PURE__ */
|
|
16203
|
+
return /* @__PURE__ */ jsxs27("div", { className: cn23("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
|
|
16204
|
+
/* @__PURE__ */ jsx29("h1", { className: "text-3xl font-bold", children: title }),
|
|
16205
|
+
/* @__PURE__ */ jsx29("p", { className: "text-lg text-muted-foreground", children: description }),
|
|
16206
|
+
showFullOrderSummary && order && /* @__PURE__ */ jsxs27("div", { className: "space-y-6", children: [
|
|
16207
|
+
/* @__PURE__ */ jsxs27("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
16208
|
+
/* @__PURE__ */ jsx29("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
|
|
16209
|
+
/* @__PURE__ */ jsx29("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
|
|
15777
16210
|
] }),
|
|
15778
|
-
/* @__PURE__ */
|
|
15779
|
-
order.items.map((item, idx) => /* @__PURE__ */
|
|
16211
|
+
/* @__PURE__ */ jsxs27("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
|
|
16212
|
+
order.items.map((item, idx) => /* @__PURE__ */ jsxs27(
|
|
15780
16213
|
"div",
|
|
15781
16214
|
{
|
|
15782
16215
|
className: "flex justify-between gap-4 text-sm",
|
|
15783
16216
|
children: [
|
|
15784
|
-
/* @__PURE__ */
|
|
16217
|
+
/* @__PURE__ */ jsxs27("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
|
|
15785
16218
|
item.product.name,
|
|
15786
16219
|
item.variant ? ` (${item.variant.name})` : "",
|
|
15787
16220
|
" x",
|
|
15788
16221
|
item.quantity
|
|
15789
16222
|
] }),
|
|
15790
|
-
/* @__PURE__ */
|
|
16223
|
+
/* @__PURE__ */ jsx29("span", { children: formatPrice(item.total, currencyCode, locale) })
|
|
15791
16224
|
]
|
|
15792
16225
|
},
|
|
15793
16226
|
idx
|
|
15794
16227
|
)),
|
|
15795
|
-
/* @__PURE__ */
|
|
15796
|
-
/* @__PURE__ */
|
|
15797
|
-
/* @__PURE__ */
|
|
16228
|
+
/* @__PURE__ */ jsx29("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs27("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
|
|
16229
|
+
/* @__PURE__ */ jsx29("span", { children: t.totalLabel }),
|
|
16230
|
+
/* @__PURE__ */ jsx29("span", { children: formatPrice(order.total, currencyCode, locale) })
|
|
15798
16231
|
] }) })
|
|
15799
16232
|
] }),
|
|
15800
|
-
/* @__PURE__ */
|
|
16233
|
+
t.foundDescription.includes("{email}") ? null : /* @__PURE__ */ jsxs27("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
|
|
15801
16234
|
t.confirmationEmailPrefix,
|
|
15802
16235
|
" ",
|
|
15803
|
-
/* @__PURE__ */
|
|
16236
|
+
/* @__PURE__ */ jsx29("span", { className: "font-medium text-foreground", children: order.customerEmail }),
|
|
15804
16237
|
"."
|
|
15805
16238
|
] }),
|
|
15806
|
-
/* @__PURE__ */
|
|
16239
|
+
/* @__PURE__ */ jsx29(
|
|
15807
16240
|
OrderInvoiceLink,
|
|
15808
16241
|
{
|
|
15809
16242
|
invoice: order.invoice,
|
|
@@ -15811,11 +16244,11 @@ function OrderConfirmation({
|
|
|
15811
16244
|
}
|
|
15812
16245
|
)
|
|
15813
16246
|
] }),
|
|
15814
|
-
showOrderReference && order && /* @__PURE__ */
|
|
15815
|
-
/* @__PURE__ */
|
|
15816
|
-
/* @__PURE__ */
|
|
16247
|
+
showOrderReference && order && /* @__PURE__ */ jsxs27("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
16248
|
+
/* @__PURE__ */ jsx29("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
|
|
16249
|
+
/* @__PURE__ */ jsx29("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
|
|
15817
16250
|
] }),
|
|
15818
|
-
status === "failed" && cartHref && /* @__PURE__ */
|
|
16251
|
+
status === "failed" && cartHref && /* @__PURE__ */ jsx29(
|
|
15819
16252
|
"a",
|
|
15820
16253
|
{
|
|
15821
16254
|
href: cartHref,
|
|
@@ -15823,7 +16256,7 @@ function OrderConfirmation({
|
|
|
15823
16256
|
children: t.backToCartLabel
|
|
15824
16257
|
}
|
|
15825
16258
|
),
|
|
15826
|
-
showRecheck && /* @__PURE__ */
|
|
16259
|
+
showRecheck && /* @__PURE__ */ jsx29(
|
|
15827
16260
|
"button",
|
|
15828
16261
|
{
|
|
15829
16262
|
type: "button",
|
|
@@ -15832,16 +16265,16 @@ function OrderConfirmation({
|
|
|
15832
16265
|
children: t.recheckLabel
|
|
15833
16266
|
}
|
|
15834
16267
|
),
|
|
15835
|
-
showSessionReference && /* @__PURE__ */
|
|
15836
|
-
/* @__PURE__ */
|
|
15837
|
-
/* @__PURE__ */
|
|
16268
|
+
showSessionReference && /* @__PURE__ */ jsxs27("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
16269
|
+
/* @__PURE__ */ jsx29("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
|
|
16270
|
+
/* @__PURE__ */ jsx29("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
|
|
15838
16271
|
] })
|
|
15839
16272
|
] });
|
|
15840
16273
|
}
|
|
15841
16274
|
|
|
15842
16275
|
// src/components/full-invoice-fields.tsx
|
|
15843
|
-
import { cn as
|
|
15844
|
-
import { jsx as
|
|
16276
|
+
import { cn as cn24 } from "@reblu/site-ui/utils";
|
|
16277
|
+
import { jsx as jsx30, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
15845
16278
|
var EMPTY_FULL_INVOICE_VALUE = {
|
|
15846
16279
|
wantsFullInvoice: false,
|
|
15847
16280
|
billingIdType: "NIF",
|
|
@@ -15958,12 +16391,12 @@ function FullInvoiceFields({
|
|
|
15958
16391
|
const showFields = value.wantsFullInvoice || overCap;
|
|
15959
16392
|
const isSpanishNif = value.billingIdType === "NIF";
|
|
15960
16393
|
const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
|
|
15961
|
-
const error = (key2) => errors[key2] ? /* @__PURE__ */
|
|
16394
|
+
const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx30("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
|
|
15962
16395
|
const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
|
|
15963
|
-
return /* @__PURE__ */
|
|
15964
|
-
overCap ? /* @__PURE__ */
|
|
15965
|
-
/* @__PURE__ */
|
|
15966
|
-
/* @__PURE__ */
|
|
16396
|
+
return /* @__PURE__ */ jsxs28("section", { className: cn24("space-y-4", className), "data-slot": "full-invoice-fields", children: [
|
|
16397
|
+
overCap ? /* @__PURE__ */ jsx30("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16398
|
+
/* @__PURE__ */ jsxs28("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
|
|
16399
|
+
/* @__PURE__ */ jsx30(
|
|
15967
16400
|
"input",
|
|
15968
16401
|
{
|
|
15969
16402
|
type: "checkbox",
|
|
@@ -15973,12 +16406,12 @@ function FullInvoiceFields({
|
|
|
15973
16406
|
),
|
|
15974
16407
|
t.toggle
|
|
15975
16408
|
] }),
|
|
15976
|
-
/* @__PURE__ */
|
|
16409
|
+
/* @__PURE__ */ jsx30("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
|
|
15977
16410
|
] }),
|
|
15978
|
-
showFields && /* @__PURE__ */
|
|
15979
|
-
/* @__PURE__ */
|
|
15980
|
-
/* @__PURE__ */
|
|
15981
|
-
/* @__PURE__ */
|
|
16411
|
+
showFields && /* @__PURE__ */ jsxs28("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
16412
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16413
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
|
|
16414
|
+
/* @__PURE__ */ jsx30(
|
|
15982
16415
|
"select",
|
|
15983
16416
|
{
|
|
15984
16417
|
id: "full-invoice-id-type",
|
|
@@ -15987,14 +16420,14 @@ function FullInvoiceFields({
|
|
|
15987
16420
|
value: value.billingIdType,
|
|
15988
16421
|
onChange: (e) => set("billingIdType", e.target.value),
|
|
15989
16422
|
...invalid2("billingIdType"),
|
|
15990
|
-
children: ID_TYPES.map((type) => /* @__PURE__ */
|
|
16423
|
+
children: ID_TYPES.map((type) => /* @__PURE__ */ jsx30("option", { value: type, children: t.idTypeOptions[type] }, type))
|
|
15991
16424
|
}
|
|
15992
16425
|
),
|
|
15993
16426
|
error("billingIdType")
|
|
15994
16427
|
] }),
|
|
15995
|
-
!isSpanishNif && /* @__PURE__ */
|
|
15996
|
-
/* @__PURE__ */
|
|
15997
|
-
/* @__PURE__ */
|
|
16428
|
+
!isSpanishNif && /* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16429
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
|
|
16430
|
+
/* @__PURE__ */ jsxs28(
|
|
15998
16431
|
"select",
|
|
15999
16432
|
{
|
|
16000
16433
|
id: "full-invoice-id-country",
|
|
@@ -16004,16 +16437,16 @@ function FullInvoiceFields({
|
|
|
16004
16437
|
onChange: (e) => set("billingIdCountry", e.target.value),
|
|
16005
16438
|
...invalid2("billingIdCountry"),
|
|
16006
16439
|
children: [
|
|
16007
|
-
/* @__PURE__ */
|
|
16008
|
-
countries.map((c) => /* @__PURE__ */
|
|
16440
|
+
/* @__PURE__ */ jsx30("option", { value: "", disabled: true, children: t.chooseCountry }),
|
|
16441
|
+
countries.map((c) => /* @__PURE__ */ jsx30("option", { value: c.code, children: c.name }, c.code))
|
|
16009
16442
|
]
|
|
16010
16443
|
}
|
|
16011
16444
|
),
|
|
16012
16445
|
error("billingIdCountry")
|
|
16013
16446
|
] }),
|
|
16014
|
-
/* @__PURE__ */
|
|
16015
|
-
/* @__PURE__ */
|
|
16016
|
-
/* @__PURE__ */
|
|
16447
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16448
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
|
|
16449
|
+
/* @__PURE__ */ jsx30(
|
|
16017
16450
|
"input",
|
|
16018
16451
|
{
|
|
16019
16452
|
id: "full-invoice-nif",
|
|
@@ -16026,9 +16459,9 @@ function FullInvoiceFields({
|
|
|
16026
16459
|
),
|
|
16027
16460
|
error("billingNif")
|
|
16028
16461
|
] }),
|
|
16029
|
-
/* @__PURE__ */
|
|
16030
|
-
/* @__PURE__ */
|
|
16031
|
-
/* @__PURE__ */
|
|
16462
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16463
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
|
|
16464
|
+
/* @__PURE__ */ jsx30(
|
|
16032
16465
|
"input",
|
|
16033
16466
|
{
|
|
16034
16467
|
id: "full-invoice-name",
|
|
@@ -16041,9 +16474,9 @@ function FullInvoiceFields({
|
|
|
16041
16474
|
),
|
|
16042
16475
|
error("billingName")
|
|
16043
16476
|
] }),
|
|
16044
|
-
/* @__PURE__ */
|
|
16045
|
-
/* @__PURE__ */
|
|
16046
|
-
/* @__PURE__ */
|
|
16477
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1 sm:col-span-2", children: [
|
|
16478
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
|
|
16479
|
+
/* @__PURE__ */ jsx30(
|
|
16047
16480
|
"input",
|
|
16048
16481
|
{
|
|
16049
16482
|
id: "full-invoice-street",
|
|
@@ -16055,9 +16488,9 @@ function FullInvoiceFields({
|
|
|
16055
16488
|
}
|
|
16056
16489
|
)
|
|
16057
16490
|
] }),
|
|
16058
|
-
/* @__PURE__ */
|
|
16059
|
-
/* @__PURE__ */
|
|
16060
|
-
/* @__PURE__ */
|
|
16491
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16492
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
|
|
16493
|
+
/* @__PURE__ */ jsx30(
|
|
16061
16494
|
"input",
|
|
16062
16495
|
{
|
|
16063
16496
|
id: "full-invoice-postal-code",
|
|
@@ -16068,9 +16501,9 @@ function FullInvoiceFields({
|
|
|
16068
16501
|
}
|
|
16069
16502
|
)
|
|
16070
16503
|
] }),
|
|
16071
|
-
/* @__PURE__ */
|
|
16072
|
-
/* @__PURE__ */
|
|
16073
|
-
/* @__PURE__ */
|
|
16504
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16505
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
|
|
16506
|
+
/* @__PURE__ */ jsx30(
|
|
16074
16507
|
"input",
|
|
16075
16508
|
{
|
|
16076
16509
|
id: "full-invoice-city",
|
|
@@ -16081,9 +16514,9 @@ function FullInvoiceFields({
|
|
|
16081
16514
|
}
|
|
16082
16515
|
)
|
|
16083
16516
|
] }),
|
|
16084
|
-
/* @__PURE__ */
|
|
16085
|
-
/* @__PURE__ */
|
|
16086
|
-
/* @__PURE__ */
|
|
16517
|
+
/* @__PURE__ */ jsxs28("div", { className: "space-y-1", children: [
|
|
16518
|
+
/* @__PURE__ */ jsx30("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
|
|
16519
|
+
/* @__PURE__ */ jsx30(
|
|
16087
16520
|
"select",
|
|
16088
16521
|
{
|
|
16089
16522
|
id: "full-invoice-country",
|
|
@@ -16091,18 +16524,18 @@ function FullInvoiceFields({
|
|
|
16091
16524
|
required: true,
|
|
16092
16525
|
value: value.country,
|
|
16093
16526
|
onChange: (e) => set("country", e.target.value),
|
|
16094
|
-
children: countries.map((c) => /* @__PURE__ */
|
|
16527
|
+
children: countries.map((c) => /* @__PURE__ */ jsx30("option", { value: c.code, children: c.name }, c.code))
|
|
16095
16528
|
}
|
|
16096
16529
|
)
|
|
16097
16530
|
] }),
|
|
16098
|
-
/* @__PURE__ */
|
|
16531
|
+
/* @__PURE__ */ jsx30("div", { className: "sm:col-span-2", children: error("address") })
|
|
16099
16532
|
] })
|
|
16100
16533
|
] });
|
|
16101
16534
|
}
|
|
16102
16535
|
|
|
16103
16536
|
// src/components/checkout-delivery-choice.tsx
|
|
16104
|
-
import { cn as
|
|
16105
|
-
import { jsx as
|
|
16537
|
+
import { cn as cn25 } from "@reblu/site-ui/utils";
|
|
16538
|
+
import { jsx as jsx31, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
16106
16539
|
var EMPTY_CHECKOUT_ADDRESS = {
|
|
16107
16540
|
firstName: "",
|
|
16108
16541
|
lastName: "",
|
|
@@ -16165,17 +16598,17 @@ function CheckoutDeliveryChoice({
|
|
|
16165
16598
|
const isPickup = value?.type === "PICKUP";
|
|
16166
16599
|
const isShipping = value?.type === "SHIPPING";
|
|
16167
16600
|
const errorId = `${uid}-delivery-error`;
|
|
16168
|
-
return /* @__PURE__ */
|
|
16601
|
+
return /* @__PURE__ */ jsxs29(
|
|
16169
16602
|
"fieldset",
|
|
16170
16603
|
{
|
|
16171
16604
|
"data-slot": "checkout-delivery",
|
|
16172
16605
|
"aria-describedby": error ? errorId : void 0,
|
|
16173
|
-
className:
|
|
16606
|
+
className: cn25("space-y-4", className),
|
|
16174
16607
|
children: [
|
|
16175
|
-
/* @__PURE__ */
|
|
16176
|
-
/* @__PURE__ */
|
|
16177
|
-
homeDelivery ? /* @__PURE__ */
|
|
16178
|
-
/* @__PURE__ */
|
|
16608
|
+
/* @__PURE__ */ jsx31("legend", { className: "mb-2 text-lg font-semibold", children: t.legend }),
|
|
16609
|
+
/* @__PURE__ */ jsxs29("div", { className: "grid gap-3 sm:grid-cols-2", children: [
|
|
16610
|
+
homeDelivery ? /* @__PURE__ */ jsxs29("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
|
|
16611
|
+
/* @__PURE__ */ jsx31(
|
|
16179
16612
|
"input",
|
|
16180
16613
|
{
|
|
16181
16614
|
type: "radio",
|
|
@@ -16185,42 +16618,42 @@ function CheckoutDeliveryChoice({
|
|
|
16185
16618
|
className: "mt-0.5 size-4 accent-primary"
|
|
16186
16619
|
}
|
|
16187
16620
|
),
|
|
16188
|
-
/* @__PURE__ */
|
|
16189
|
-
/* @__PURE__ */
|
|
16190
|
-
/* @__PURE__ */
|
|
16191
|
-
/* @__PURE__ */
|
|
16621
|
+
/* @__PURE__ */ jsxs29("span", { className: "flex-1 space-y-1", children: [
|
|
16622
|
+
/* @__PURE__ */ jsxs29("span", { className: "flex justify-between gap-2 font-medium", children: [
|
|
16623
|
+
/* @__PURE__ */ jsx31("span", { children: copy.shippingOptionLabel }),
|
|
16624
|
+
/* @__PURE__ */ jsx31("span", { className: "tabular-nums", children: homeCost })
|
|
16192
16625
|
] }),
|
|
16193
|
-
delivery.estimatedDeliveryText ? /* @__PURE__ */
|
|
16626
|
+
delivery.estimatedDeliveryText ? /* @__PURE__ */ jsx31("span", { className: "block text-sm text-muted-foreground", children: delivery.estimatedDeliveryText }) : null
|
|
16194
16627
|
] })
|
|
16195
16628
|
] }) : null,
|
|
16196
|
-
pickup ? /* @__PURE__ */
|
|
16197
|
-
/* @__PURE__ */
|
|
16629
|
+
pickup ? /* @__PURE__ */ jsxs29("label", { className: "flex cursor-pointer items-start gap-3 rounded-xl border border-border p-4 has-[:checked]:border-primary", children: [
|
|
16630
|
+
/* @__PURE__ */ jsx31(
|
|
16198
16631
|
"input",
|
|
16199
16632
|
{
|
|
16200
16633
|
type: "radio",
|
|
16201
16634
|
name: `${uid}-method`,
|
|
16202
16635
|
checked: isPickup,
|
|
16203
|
-
onChange: () => onChange(
|
|
16636
|
+
onChange: () => onChange(pickupFulfillment(delivery)),
|
|
16204
16637
|
className: "mt-0.5 size-4 accent-primary"
|
|
16205
16638
|
}
|
|
16206
16639
|
),
|
|
16207
|
-
/* @__PURE__ */
|
|
16208
|
-
/* @__PURE__ */
|
|
16209
|
-
/* @__PURE__ */
|
|
16640
|
+
/* @__PURE__ */ jsxs29("span", { className: "flex flex-1 justify-between gap-2 font-medium", children: [
|
|
16641
|
+
/* @__PURE__ */ jsx31("span", { children: copy.pickupOptionLabel }),
|
|
16642
|
+
/* @__PURE__ */ jsx31("span", { children: t.free })
|
|
16210
16643
|
] })
|
|
16211
16644
|
] }) : null
|
|
16212
16645
|
] }),
|
|
16213
|
-
error ? /* @__PURE__ */
|
|
16214
|
-
isPickup ? /* @__PURE__ */
|
|
16215
|
-
/* @__PURE__ */
|
|
16646
|
+
error ? /* @__PURE__ */ jsx31("p", { id: errorId, role: "alert", className: "text-sm text-destructive", children: error }) : null,
|
|
16647
|
+
isPickup ? /* @__PURE__ */ jsxs29("div", { role: "radiogroup", "aria-labelledby": `${uid}-points`, className: "space-y-2", children: [
|
|
16648
|
+
/* @__PURE__ */ jsx31("p", { id: `${uid}-points`, className: "text-sm font-medium", children: t.pickupPointsLegend }),
|
|
16216
16649
|
delivery.pickupLocations.map((location2) => {
|
|
16217
16650
|
const descId = `${uid}-point-${location2.id}`;
|
|
16218
|
-
return /* @__PURE__ */
|
|
16651
|
+
return /* @__PURE__ */ jsxs29(
|
|
16219
16652
|
"label",
|
|
16220
16653
|
{
|
|
16221
16654
|
className: "flex cursor-pointer items-start gap-3 rounded-lg border border-border p-3 has-[:checked]:border-primary",
|
|
16222
16655
|
children: [
|
|
16223
|
-
/* @__PURE__ */
|
|
16656
|
+
/* @__PURE__ */ jsx31(
|
|
16224
16657
|
"input",
|
|
16225
16658
|
{
|
|
16226
16659
|
type: "radio",
|
|
@@ -16231,9 +16664,9 @@ function CheckoutDeliveryChoice({
|
|
|
16231
16664
|
className: "mt-0.5 size-4 accent-primary"
|
|
16232
16665
|
}
|
|
16233
16666
|
),
|
|
16234
|
-
/* @__PURE__ */
|
|
16235
|
-
/* @__PURE__ */
|
|
16236
|
-
/* @__PURE__ */
|
|
16667
|
+
/* @__PURE__ */ jsxs29("span", { className: "space-y-0.5 text-sm", children: [
|
|
16668
|
+
/* @__PURE__ */ jsx31("span", { className: "block font-medium", children: location2.name }),
|
|
16669
|
+
/* @__PURE__ */ jsx31("span", { id: descId, className: "block text-muted-foreground", children: pickupDescription(location2) })
|
|
16237
16670
|
] })
|
|
16238
16671
|
]
|
|
16239
16672
|
},
|
|
@@ -16241,14 +16674,14 @@ function CheckoutDeliveryChoice({
|
|
|
16241
16674
|
);
|
|
16242
16675
|
})
|
|
16243
16676
|
] }) : null,
|
|
16244
|
-
isShipping ? /* @__PURE__ */
|
|
16245
|
-
/* @__PURE__ */
|
|
16246
|
-
/* @__PURE__ */
|
|
16677
|
+
isShipping ? /* @__PURE__ */ jsxs29("fieldset", { className: "space-y-3", children: [
|
|
16678
|
+
/* @__PURE__ */ jsx31("legend", { className: "mb-2 text-sm font-medium", children: t.addressLegend }),
|
|
16679
|
+
/* @__PURE__ */ jsx31("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: ADDRESS_FIELDS.map(({ key: key2, autoComplete, required, wide }) => {
|
|
16247
16680
|
const fieldId = `${uid}-${key2}`;
|
|
16248
16681
|
const fieldError = addressErrors?.[key2];
|
|
16249
|
-
return /* @__PURE__ */
|
|
16250
|
-
/* @__PURE__ */
|
|
16251
|
-
/* @__PURE__ */
|
|
16682
|
+
return /* @__PURE__ */ jsxs29("div", { className: cn25("space-y-1", wide && "sm:col-span-2"), children: [
|
|
16683
|
+
/* @__PURE__ */ jsx31("label", { htmlFor: fieldId, className: "text-sm font-medium", children: t[key2] }),
|
|
16684
|
+
/* @__PURE__ */ jsx31(
|
|
16252
16685
|
"input",
|
|
16253
16686
|
{
|
|
16254
16687
|
id: fieldId,
|
|
@@ -16259,13 +16692,13 @@ function CheckoutDeliveryChoice({
|
|
|
16259
16692
|
onChange: (e) => onAddressChange({ ...address, [key2]: e.target.value }),
|
|
16260
16693
|
"aria-invalid": fieldError ? true : void 0,
|
|
16261
16694
|
"aria-describedby": fieldError ? `${fieldId}-error` : void 0,
|
|
16262
|
-
className:
|
|
16695
|
+
className: cn25(
|
|
16263
16696
|
INPUT_CLASS,
|
|
16264
16697
|
fieldError ? "border-destructive" : "border-border focus:border-primary"
|
|
16265
16698
|
)
|
|
16266
16699
|
}
|
|
16267
16700
|
),
|
|
16268
|
-
fieldError ? /* @__PURE__ */
|
|
16701
|
+
fieldError ? /* @__PURE__ */ jsx31("p", { id: `${fieldId}-error`, className: "text-sm text-destructive", children: fieldError }) : null
|
|
16269
16702
|
] }, key2);
|
|
16270
16703
|
}) })
|
|
16271
16704
|
] }) : null
|
|
@@ -16273,12 +16706,19 @@ function CheckoutDeliveryChoice({
|
|
|
16273
16706
|
}
|
|
16274
16707
|
);
|
|
16275
16708
|
}
|
|
16709
|
+
function pickupFulfillment(delivery) {
|
|
16710
|
+
const [only, ...rest] = delivery.pickupLocations;
|
|
16711
|
+
return only && rest.length === 0 ? { type: "PICKUP", pickupLocationId: only.id } : { type: "PICKUP" };
|
|
16712
|
+
}
|
|
16276
16713
|
function defaultCheckoutFulfillment(delivery) {
|
|
16277
16714
|
if (!delivery) return null;
|
|
16278
16715
|
if (delivery.methods.homeDelivery) return { type: "SHIPPING" };
|
|
16279
16716
|
if (!delivery.methods.pickup) return null;
|
|
16280
|
-
|
|
16281
|
-
|
|
16717
|
+
return pickupFulfillment(delivery);
|
|
16718
|
+
}
|
|
16719
|
+
function isCheckoutDeliveryComplete(value, requiresDelivery = true) {
|
|
16720
|
+
if (!value || !requiresDelivery) return true;
|
|
16721
|
+
return value.type !== "PICKUP" || Boolean(value.pickupLocationId);
|
|
16282
16722
|
}
|
|
16283
16723
|
function quoteRequiresDelivery(quote) {
|
|
16284
16724
|
return quote ? quote.lines.some((line) => line.isShippable) : true;
|
|
@@ -16300,8 +16740,8 @@ function toCheckoutFulfillmentFields(value, address, requiresDelivery = true) {
|
|
|
16300
16740
|
}
|
|
16301
16741
|
|
|
16302
16742
|
// src/components/checkout-quote-summary.tsx
|
|
16303
|
-
import { cn as
|
|
16304
|
-
import { Fragment as Fragment6, jsx as
|
|
16743
|
+
import { cn as cn26 } from "@reblu/site-ui/utils";
|
|
16744
|
+
import { Fragment as Fragment6, jsx as jsx32, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
16305
16745
|
var DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS = {
|
|
16306
16746
|
subtotal: "Subtotal",
|
|
16307
16747
|
discount: (codeOrLabel, isAutomatic) => isAutomatic ? codeOrLabel : `Descuento (${codeOrLabel})`,
|
|
@@ -16318,9 +16758,9 @@ function Row({
|
|
|
16318
16758
|
value,
|
|
16319
16759
|
className
|
|
16320
16760
|
}) {
|
|
16321
|
-
return /* @__PURE__ */
|
|
16322
|
-
/* @__PURE__ */
|
|
16323
|
-
/* @__PURE__ */
|
|
16761
|
+
return /* @__PURE__ */ jsxs30("div", { "data-slot": "checkout-quote-row", className: cn26("flex justify-between gap-4", className), children: [
|
|
16762
|
+
/* @__PURE__ */ jsx32("dt", { children: name }),
|
|
16763
|
+
/* @__PURE__ */ jsx32("dd", { className: "shrink-0 tabular-nums", children: value })
|
|
16324
16764
|
] });
|
|
16325
16765
|
}
|
|
16326
16766
|
function CheckoutQuoteSummary({
|
|
@@ -16336,22 +16776,22 @@ function CheckoutQuoteSummary({
|
|
|
16336
16776
|
const price = (cents) => formatPrice(cents, currencyCode, locale);
|
|
16337
16777
|
const { fulfillment, shipping, tax, discount } = quote;
|
|
16338
16778
|
const Tag = `h${headingLevel}`;
|
|
16339
|
-
return /* @__PURE__ */
|
|
16340
|
-
heading ? /* @__PURE__ */
|
|
16341
|
-
/* @__PURE__ */
|
|
16342
|
-
/* @__PURE__ */
|
|
16343
|
-
/* @__PURE__ */
|
|
16344
|
-
line.variantName ? /* @__PURE__ */
|
|
16345
|
-
/* @__PURE__ */
|
|
16346
|
-
line.kindLabel ? /* @__PURE__ */
|
|
16347
|
-
/* @__PURE__ */
|
|
16779
|
+
return /* @__PURE__ */ jsxs30("section", { "data-slot": "checkout-quote-summary", className: slotClassName("space-y-4", "", className), children: [
|
|
16780
|
+
heading ? /* @__PURE__ */ jsx32(Tag, { className: "text-lg font-semibold", children: heading }) : null,
|
|
16781
|
+
/* @__PURE__ */ jsx32("ul", { className: "space-y-3 text-sm", children: quote.lines.map((line) => /* @__PURE__ */ jsxs30("li", { className: "flex justify-between gap-4", children: [
|
|
16782
|
+
/* @__PURE__ */ jsxs30("div", { className: "min-w-0 space-y-0.5", children: [
|
|
16783
|
+
/* @__PURE__ */ jsx32("p", { className: "font-medium", children: line.name }),
|
|
16784
|
+
line.variantName ? /* @__PURE__ */ jsx32("p", { className: "text-muted-foreground", children: line.variantName }) : null,
|
|
16785
|
+
/* @__PURE__ */ jsxs30("p", { className: "flex flex-wrap items-center gap-2 text-muted-foreground", children: [
|
|
16786
|
+
line.kindLabel ? /* @__PURE__ */ jsx32("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,
|
|
16787
|
+
/* @__PURE__ */ jsx32("span", { children: t.quantityTimesUnit(line.quantity, price(line.unitPrice)) })
|
|
16348
16788
|
] })
|
|
16349
16789
|
] }),
|
|
16350
|
-
/* @__PURE__ */
|
|
16790
|
+
/* @__PURE__ */ jsx32("span", { className: "shrink-0 tabular-nums", children: price(line.total) })
|
|
16351
16791
|
] }, `${line.productId}-${line.variantId ?? ""}`)) }),
|
|
16352
|
-
/* @__PURE__ */
|
|
16353
|
-
/* @__PURE__ */
|
|
16354
|
-
discount && discount.amount > 0 ? /* @__PURE__ */
|
|
16792
|
+
/* @__PURE__ */ jsxs30("dl", { className: "space-y-2 border-t border-border pt-3 text-sm", children: [
|
|
16793
|
+
/* @__PURE__ */ jsx32(Row, { name: t.subtotal, value: price(quote.subtotal) }),
|
|
16794
|
+
discount && discount.amount > 0 ? /* @__PURE__ */ jsx32(
|
|
16355
16795
|
Row,
|
|
16356
16796
|
{
|
|
16357
16797
|
className: "text-green-700 dark:text-green-400",
|
|
@@ -16359,17 +16799,17 @@ function CheckoutQuoteSummary({
|
|
|
16359
16799
|
value: `\u2212${price(discount.amount)}`
|
|
16360
16800
|
}
|
|
16361
16801
|
) : null,
|
|
16362
|
-
fulfillment.type ? /* @__PURE__ */
|
|
16802
|
+
fulfillment.type ? /* @__PURE__ */ jsx32(
|
|
16363
16803
|
Row,
|
|
16364
16804
|
{
|
|
16365
|
-
name: /* @__PURE__ */
|
|
16805
|
+
name: /* @__PURE__ */ jsxs30(Fragment6, { children: [
|
|
16366
16806
|
fulfillment.label ?? t.delivery,
|
|
16367
|
-
fulfillment.type === "PICKUP" && fulfillment.pickupLocation ? /* @__PURE__ */
|
|
16807
|
+
fulfillment.type === "PICKUP" && fulfillment.pickupLocation ? /* @__PURE__ */ jsx32("span", { className: "block text-muted-foreground", children: fulfillment.pickupLocation.name }) : null
|
|
16368
16808
|
] }),
|
|
16369
16809
|
value: fulfillment.type === "PICKUP" || shipping.isFree ? t.free : price(shipping.cost)
|
|
16370
16810
|
}
|
|
16371
16811
|
) : null,
|
|
16372
|
-
tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */
|
|
16812
|
+
tax.isLineVisible ? tax.breakdown.map((entry) => /* @__PURE__ */ jsx32(
|
|
16373
16813
|
Row,
|
|
16374
16814
|
{
|
|
16375
16815
|
className: tax.isIncluded ? "text-muted-foreground" : void 0,
|
|
@@ -16378,19 +16818,44 @@ function CheckoutQuoteSummary({
|
|
|
16378
16818
|
},
|
|
16379
16819
|
entry.label
|
|
16380
16820
|
)) : null,
|
|
16381
|
-
/* @__PURE__ */
|
|
16821
|
+
/* @__PURE__ */ jsx32(Row, { className: "border-t border-border pt-2 text-base font-bold", name: t.total, value: price(quote.total) })
|
|
16382
16822
|
] }),
|
|
16383
|
-
tax.isIncluded ? /* @__PURE__ */
|
|
16384
|
-
fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */
|
|
16385
|
-
fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */
|
|
16386
|
-
quote.discountError ? /* @__PURE__ */
|
|
16387
|
-
quote.blockingReason ? /* @__PURE__ */
|
|
16823
|
+
tax.isIncluded ? /* @__PURE__ */ jsx32("p", { className: "text-sm text-muted-foreground", children: t.taxesIncludedNote }) : null,
|
|
16824
|
+
fulfillment.type === "SHIPPING" && !shipping.isFree && shipping.remainingForFree ? /* @__PURE__ */ jsx32("p", { className: "text-sm text-muted-foreground", children: t.remainingForFree(price(shipping.remainingForFree)) }) : null,
|
|
16825
|
+
fulfillment.type && quote.deliveryEstimateText ? /* @__PURE__ */ jsx32("p", { "data-slot": "checkout-quote-estimate", className: "text-sm text-muted-foreground", children: quote.deliveryEstimateText }) : null,
|
|
16826
|
+
quote.discountError ? /* @__PURE__ */ jsx32("p", { role: "status", className: "text-sm text-destructive", children: quote.discountError.message }) : null,
|
|
16827
|
+
quote.blockingReason ? /* @__PURE__ */ jsx32("p", { role: "alert", className: "rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive", children: quote.blockingReason.message }) : null
|
|
16388
16828
|
] });
|
|
16389
16829
|
}
|
|
16830
|
+
var DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS = {
|
|
16831
|
+
pickupLocationRequired: "Elige un punto de recogida"
|
|
16832
|
+
};
|
|
16833
|
+
function checkoutQuoteNotice({
|
|
16834
|
+
fulfillment,
|
|
16835
|
+
requiresDelivery = true,
|
|
16836
|
+
error
|
|
16837
|
+
}) {
|
|
16838
|
+
if (!isCheckoutDeliveryComplete(fulfillment, requiresDelivery)) return "PICKUP_LOCATION_REQUIRED";
|
|
16839
|
+
if (error?.code === "PICKUP_LOCATION_INVALID") return "PICKUP_LOCATION_REQUIRED";
|
|
16840
|
+
return null;
|
|
16841
|
+
}
|
|
16842
|
+
function CheckoutQuoteNotice({ reason, labels, className }) {
|
|
16843
|
+
if (!reason) return null;
|
|
16844
|
+
const t = { ...DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS, ...labels };
|
|
16845
|
+
return /* @__PURE__ */ jsx32(
|
|
16846
|
+
"p",
|
|
16847
|
+
{
|
|
16848
|
+
role: "status",
|
|
16849
|
+
"data-slot": "checkout-quote-notice",
|
|
16850
|
+
className: slotClassName("rounded-lg border border-border bg-muted p-3 text-sm", "", className),
|
|
16851
|
+
children: t.pickupLocationRequired
|
|
16852
|
+
}
|
|
16853
|
+
);
|
|
16854
|
+
}
|
|
16390
16855
|
|
|
16391
16856
|
// src/components/checkout-terms-acceptance.tsx
|
|
16392
|
-
import { cn as
|
|
16393
|
-
import { Fragment as Fragment7, jsx as
|
|
16857
|
+
import { cn as cn27 } from "@reblu/site-ui/utils";
|
|
16858
|
+
import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
16394
16859
|
function splitTermsLabel(label) {
|
|
16395
16860
|
const at = label.indexOf("{terms}");
|
|
16396
16861
|
return at === -1 ? [`${label} `, ""] : [label.slice(0, at), label.slice(at + "{terms}".length)];
|
|
@@ -16412,9 +16877,9 @@ function CheckoutTermsAcceptance({
|
|
|
16412
16877
|
(part) => part.replaceAll("{tenant}", copy.tenantName)
|
|
16413
16878
|
);
|
|
16414
16879
|
const newTab = copy.isTermsLinkNewTab;
|
|
16415
|
-
return /* @__PURE__ */
|
|
16416
|
-
/* @__PURE__ */
|
|
16417
|
-
/* @__PURE__ */
|
|
16880
|
+
return /* @__PURE__ */ jsxs31("div", { "data-slot": "checkout-terms", className: cn27("space-y-1", className), children: [
|
|
16881
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex items-start gap-3", children: [
|
|
16882
|
+
/* @__PURE__ */ jsx33(
|
|
16418
16883
|
"input",
|
|
16419
16884
|
{
|
|
16420
16885
|
id: boxId,
|
|
@@ -16427,9 +16892,9 @@ function CheckoutTermsAcceptance({
|
|
|
16427
16892
|
className: "mt-0.5 size-5 shrink-0 cursor-pointer accent-primary"
|
|
16428
16893
|
}
|
|
16429
16894
|
),
|
|
16430
|
-
/* @__PURE__ */
|
|
16895
|
+
/* @__PURE__ */ jsxs31("label", { htmlFor: boxId, className: "text-sm leading-relaxed", children: [
|
|
16431
16896
|
before,
|
|
16432
|
-
/* @__PURE__ */
|
|
16897
|
+
/* @__PURE__ */ jsxs31(
|
|
16433
16898
|
"a",
|
|
16434
16899
|
{
|
|
16435
16900
|
href: copy.termsLinkUrl ?? termsHref,
|
|
@@ -16437,9 +16902,9 @@ function CheckoutTermsAcceptance({
|
|
|
16437
16902
|
className: "font-medium underline underline-offset-2 hover:text-primary",
|
|
16438
16903
|
children: [
|
|
16439
16904
|
copy.termsLinkText,
|
|
16440
|
-
newTab ? /* @__PURE__ */
|
|
16905
|
+
newTab ? /* @__PURE__ */ jsxs31(Fragment7, { children: [
|
|
16441
16906
|
" ",
|
|
16442
|
-
/* @__PURE__ */
|
|
16907
|
+
/* @__PURE__ */ jsx33("span", { className: "sr-only", children: newTabHint })
|
|
16443
16908
|
] }) : null
|
|
16444
16909
|
]
|
|
16445
16910
|
}
|
|
@@ -16447,7 +16912,7 @@ function CheckoutTermsAcceptance({
|
|
|
16447
16912
|
after
|
|
16448
16913
|
] })
|
|
16449
16914
|
] }),
|
|
16450
|
-
error ? /* @__PURE__ */
|
|
16915
|
+
error ? /* @__PURE__ */ jsx33("p", { id: errorId, className: "pl-8 text-sm text-destructive", children: error }) : null
|
|
16451
16916
|
] });
|
|
16452
16917
|
}
|
|
16453
16918
|
function toCheckoutTermsFields(copy, accepted) {
|
|
@@ -16456,8 +16921,8 @@ function toCheckoutTermsFields(copy, accepted) {
|
|
|
16456
16921
|
}
|
|
16457
16922
|
|
|
16458
16923
|
// src/components/checkout-pay-action.tsx
|
|
16459
|
-
import { cn as
|
|
16460
|
-
import { jsx as
|
|
16924
|
+
import { cn as cn28 } from "@reblu/site-ui/utils";
|
|
16925
|
+
import { jsx as jsx34, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
16461
16926
|
function CheckoutPayAction({
|
|
16462
16927
|
label,
|
|
16463
16928
|
notice,
|
|
@@ -16471,28 +16936,50 @@ function CheckoutPayAction({
|
|
|
16471
16936
|
}) {
|
|
16472
16937
|
const noticeId = `${id}-notice`;
|
|
16473
16938
|
const isDisabled = submitting || disabled;
|
|
16474
|
-
return /* @__PURE__ */
|
|
16475
|
-
/* @__PURE__ */
|
|
16939
|
+
return /* @__PURE__ */ jsxs32("div", { "data-slot": "checkout-pay-action", className: cn28("space-y-3", className), children: [
|
|
16940
|
+
/* @__PURE__ */ jsx34(
|
|
16476
16941
|
"button",
|
|
16477
16942
|
{
|
|
16478
16943
|
type: "submit",
|
|
16479
16944
|
disabled: isDisabled,
|
|
16480
16945
|
"aria-busy": submitting || void 0,
|
|
16481
16946
|
"aria-describedby": notice ? noticeId : void 0,
|
|
16482
|
-
className: buttonClassName ??
|
|
16947
|
+
className: buttonClassName ?? cn28(
|
|
16483
16948
|
"flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 text-base font-semibold transition-all",
|
|
16484
16949
|
isDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90"
|
|
16485
16950
|
),
|
|
16486
16951
|
children: submitting ? submittingLabel : label
|
|
16487
16952
|
}
|
|
16488
16953
|
),
|
|
16489
|
-
notice ? /* @__PURE__ */
|
|
16954
|
+
notice ? /* @__PURE__ */ jsx34("p", { id: noticeId, "data-slot": "checkout-pay-notice", className: noticeClassName ?? "text-sm text-muted-foreground", children: notice }) : null
|
|
16490
16955
|
] });
|
|
16491
16956
|
}
|
|
16492
16957
|
|
|
16958
|
+
// src/lib/course-guest-checkout.ts
|
|
16959
|
+
function courseSellsAsGuest(course) {
|
|
16960
|
+
return course.salesEnabled && !course.requiresValidation && course.priceCents > 0;
|
|
16961
|
+
}
|
|
16962
|
+
function toAcademyCheckoutInvoiceFields(value, overCap, issuesInvoices = true) {
|
|
16963
|
+
if (!issuesInvoices) return {};
|
|
16964
|
+
if (!value.wantsFullInvoice && !overCap) return {};
|
|
16965
|
+
const billing = {
|
|
16966
|
+
billingName: value.billingName.trim(),
|
|
16967
|
+
billingNif: value.billingNif.trim(),
|
|
16968
|
+
billingIdType: value.billingIdType,
|
|
16969
|
+
...value.billingIdType === "NIF" ? {} : { billingIdCountry: value.billingIdCountry },
|
|
16970
|
+
billingAddress: {
|
|
16971
|
+
street: value.street.trim(),
|
|
16972
|
+
postalCode: value.postalCode.trim(),
|
|
16973
|
+
city: value.city.trim(),
|
|
16974
|
+
country: value.country
|
|
16975
|
+
}
|
|
16976
|
+
};
|
|
16977
|
+
return { ...value.wantsFullInvoice ? { wantsFullInvoice: true } : {}, billing };
|
|
16978
|
+
}
|
|
16979
|
+
|
|
16493
16980
|
// src/components/contact-interest-field.tsx
|
|
16494
|
-
import { cn as
|
|
16495
|
-
import { jsx as
|
|
16981
|
+
import { cn as cn29 } from "@reblu/site-ui/utils";
|
|
16982
|
+
import { jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
16496
16983
|
function ContactInterestField({
|
|
16497
16984
|
interest,
|
|
16498
16985
|
value,
|
|
@@ -16509,18 +16996,18 @@ function ContactInterestField({
|
|
|
16509
16996
|
else next2.delete(option2);
|
|
16510
16997
|
onChange(interest.options.filter((candidate) => next2.has(candidate)));
|
|
16511
16998
|
};
|
|
16512
|
-
return /* @__PURE__ */
|
|
16513
|
-
/* @__PURE__ */
|
|
16514
|
-
/* @__PURE__ */
|
|
16999
|
+
return /* @__PURE__ */ jsxs33("fieldset", { "data-slot": "contact-interest", className: cn29("space-y-2", className), children: [
|
|
17000
|
+
/* @__PURE__ */ jsx35("legend", { className: "text-sm font-medium", children: interest.label }),
|
|
17001
|
+
/* @__PURE__ */ jsx35("div", { className: "flex flex-col gap-2", children: interest.options.map((option2, index) => {
|
|
16515
17002
|
const id = `${idPrefix}-${index}`;
|
|
16516
|
-
return /* @__PURE__ */
|
|
17003
|
+
return /* @__PURE__ */ jsxs33(
|
|
16517
17004
|
"label",
|
|
16518
17005
|
{
|
|
16519
17006
|
htmlFor: id,
|
|
16520
17007
|
"data-slot": "contact-interest-option",
|
|
16521
17008
|
className: "flex items-center gap-2 text-sm",
|
|
16522
17009
|
children: [
|
|
16523
|
-
/* @__PURE__ */
|
|
17010
|
+
/* @__PURE__ */ jsx35(
|
|
16524
17011
|
"input",
|
|
16525
17012
|
{
|
|
16526
17013
|
id,
|
|
@@ -16545,21 +17032,29 @@ export {
|
|
|
16545
17032
|
ALLOWED_YOUTUBE_HOSTS,
|
|
16546
17033
|
AddedToCartToast,
|
|
16547
17034
|
ArbitrationBadge,
|
|
17035
|
+
BeforeAfterPairs,
|
|
17036
|
+
CARD_ICON_NAMES,
|
|
17037
|
+
CardIconSvg,
|
|
16548
17038
|
CartAdjustmentsNotice,
|
|
17039
|
+
CartLineIncludes,
|
|
16549
17040
|
CartLineList,
|
|
16550
17041
|
CartSummary,
|
|
16551
17042
|
CheckoutDeliveryChoice,
|
|
16552
17043
|
CheckoutForm,
|
|
16553
17044
|
CheckoutLoginPrompt,
|
|
16554
17045
|
CheckoutPayAction,
|
|
17046
|
+
CheckoutQuoteNotice,
|
|
16555
17047
|
CheckoutQuoteSummary,
|
|
16556
17048
|
CheckoutTermsAcceptance,
|
|
17049
|
+
ChipList,
|
|
16557
17050
|
ContactInterestField,
|
|
16558
17051
|
CourseCatalogFilters,
|
|
16559
17052
|
CourseDescription,
|
|
16560
17053
|
CoursePurchaseTerms,
|
|
16561
17054
|
DATA_REQUEST_TYPES,
|
|
17055
|
+
DEFAULT_BEFORE_AFTER_LABELS,
|
|
16562
17056
|
DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS,
|
|
17057
|
+
DEFAULT_CHECKOUT_QUOTE_NOTICE_LABELS,
|
|
16563
17058
|
DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS,
|
|
16564
17059
|
DEFAULT_COURSE_CATALOG_FILTERS_LABELS,
|
|
16565
17060
|
DEFAULT_COURSE_PRICE_BANDS,
|
|
@@ -16576,6 +17071,8 @@ export {
|
|
|
16576
17071
|
EMPTY_FULL_INVOICE_VALUE,
|
|
16577
17072
|
FaqAccordion,
|
|
16578
17073
|
FullInvoiceFields,
|
|
17074
|
+
IconCardGrid,
|
|
17075
|
+
ImageTextSplit,
|
|
16579
17076
|
LegalDocument,
|
|
16580
17077
|
LessonPreview,
|
|
16581
17078
|
MarkdownRenderer,
|
|
@@ -16595,11 +17092,15 @@ export {
|
|
|
16595
17092
|
TrustBadges,
|
|
16596
17093
|
buildFaqPageJsonLd,
|
|
16597
17094
|
buildShareUrls,
|
|
17095
|
+
bundleComponentsToIncludes,
|
|
17096
|
+
checkoutQuoteNotice,
|
|
16598
17097
|
collectFaqItems,
|
|
17098
|
+
courseSellsAsGuest,
|
|
16599
17099
|
defaultCheckoutFulfillment,
|
|
16600
17100
|
formatPrice,
|
|
16601
17101
|
getShopErrorMessage,
|
|
16602
17102
|
isAllowedYouTubeHost,
|
|
17103
|
+
isCheckoutDeliveryComplete,
|
|
16603
17104
|
isOverSimplifiedInvoiceCap,
|
|
16604
17105
|
markdownToPlainText,
|
|
16605
17106
|
markdownToSafeHtml,
|
|
@@ -16608,6 +17109,7 @@ export {
|
|
|
16608
17109
|
sanitizeHtml,
|
|
16609
17110
|
shopIssuesInvoices,
|
|
16610
17111
|
shouldRenderShopFilters,
|
|
17112
|
+
toAcademyCheckoutInvoiceFields,
|
|
16611
17113
|
toCheckoutFulfillmentFields,
|
|
16612
17114
|
toCheckoutInvoiceFields,
|
|
16613
17115
|
toCheckoutTermsFields
|