@reblu/site-blocks 0.17.1 → 0.19.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 +23 -0
- package/README.md +151 -0
- package/dist/_heading-BsNbc1wc.d.cts +4 -0
- package/dist/_heading-BsNbc1wc.d.ts +4 -0
- package/dist/client.cjs +256 -49
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +60 -2
- package/dist/client.d.ts +60 -2
- package/dist/client.js +255 -50
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +381 -308
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -8
- package/dist/index.d.ts +40 -8
- package/dist/index.js +380 -308
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -13131,8 +13131,25 @@ function slotClassName(structural, defaults, consumer) {
|
|
|
13131
13131
|
// src/components/markdown-renderer.tsx
|
|
13132
13132
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13133
13133
|
var HTML_TO_DOM_OPTIONS = { lowerCaseAttributeNames: false };
|
|
13134
|
-
function
|
|
13135
|
-
|
|
13134
|
+
function shallowestHeadingLevel(nodes) {
|
|
13135
|
+
let shallowest = null;
|
|
13136
|
+
for (const node of nodes) {
|
|
13137
|
+
if (!(node instanceof Element)) continue;
|
|
13138
|
+
const match = /^h([1-6])$/.exec(node.name);
|
|
13139
|
+
const level = match ? Number(match[1]) : shallowestHeadingLevel(node.children);
|
|
13140
|
+
if (level !== null && (shallowest === null || level < shallowest)) shallowest = level;
|
|
13141
|
+
}
|
|
13142
|
+
return shallowest;
|
|
13143
|
+
}
|
|
13144
|
+
function headingShift(nodes, headingOffset, normalize2) {
|
|
13145
|
+
if (!normalize2) return headingOffset;
|
|
13146
|
+
const shallowest = shallowestHeadingLevel(nodes);
|
|
13147
|
+
return shallowest === null ? headingOffset : 1 + headingOffset - shallowest;
|
|
13148
|
+
}
|
|
13149
|
+
function parse3(html5, headingOffset, normalizeHeadings, images) {
|
|
13150
|
+
const nodes = htmlToDOM(html5, HTML_TO_DOM_OPTIONS);
|
|
13151
|
+
const shift = headingShift(nodes, headingOffset, normalizeHeadings);
|
|
13152
|
+
return domToReact(nodes, buildOptions(shift, images));
|
|
13136
13153
|
}
|
|
13137
13154
|
function isAllowedImage(src, prefixes) {
|
|
13138
13155
|
if (!src) return false;
|
|
@@ -13249,7 +13266,7 @@ function buildOptions(headingOffset, images) {
|
|
|
13249
13266
|
const author = authorAttributes(node);
|
|
13250
13267
|
const headingMatch = /^h([1-6])$/.exec(name);
|
|
13251
13268
|
if (headingMatch) {
|
|
13252
|
-
const rendered = Math.min(6, Number(headingMatch[1]) + headingOffset);
|
|
13269
|
+
const rendered = Math.max(1, Math.min(6, Number(headingMatch[1]) + headingOffset));
|
|
13253
13270
|
const Tag = `h${rendered}`;
|
|
13254
13271
|
return /* @__PURE__ */ jsx(Tag, { ...author, className: HEADING_CLASSES[rendered], children: children2() });
|
|
13255
13272
|
}
|
|
@@ -13380,15 +13397,21 @@ function MarkdownRenderer({
|
|
|
13380
13397
|
content,
|
|
13381
13398
|
className,
|
|
13382
13399
|
headingOffset = 0,
|
|
13400
|
+
normalizeHeadings = false,
|
|
13383
13401
|
images
|
|
13384
13402
|
}) {
|
|
13385
13403
|
const html5 = markdownToSafeHtml(content);
|
|
13386
13404
|
if (!html5) return null;
|
|
13387
|
-
return /* @__PURE__ */ jsx("div", { className: slotClassName("max-w-none", "", className), "data-slot": "markdown", children: parse3(html5,
|
|
13405
|
+
return /* @__PURE__ */ jsx("div", { className: slotClassName("max-w-none", "", className), "data-slot": "markdown", children: parse3(html5, headingOffset, normalizeHeadings, images) });
|
|
13388
13406
|
}
|
|
13389
|
-
function SafeHtml({
|
|
13407
|
+
function SafeHtml({
|
|
13408
|
+
html: html5,
|
|
13409
|
+
className,
|
|
13410
|
+
headingOffset = 0,
|
|
13411
|
+
normalizeHeadings = false
|
|
13412
|
+
}) {
|
|
13390
13413
|
if (!html5) return null;
|
|
13391
|
-
return /* @__PURE__ */ jsx("div", { className: slotClassName("max-w-none", "", className), "data-slot": "safe-html", children: parse3(html5,
|
|
13414
|
+
return /* @__PURE__ */ jsx("div", { className: slotClassName("max-w-none", "", className), "data-slot": "safe-html", children: parse3(html5, headingOffset, normalizeHeadings) });
|
|
13392
13415
|
}
|
|
13393
13416
|
|
|
13394
13417
|
// src/components/course-description.tsx
|
|
@@ -13614,34 +13637,82 @@ function ParentPage({
|
|
|
13614
13637
|
var Specialty = ParentPage;
|
|
13615
13638
|
|
|
13616
13639
|
// src/components/profile-card.tsx
|
|
13640
|
+
import { cn as cn7 } from "@reblu/site-ui/utils";
|
|
13641
|
+
|
|
13642
|
+
// src/components/professional-fields.tsx
|
|
13617
13643
|
import { cn as cn6 } from "@reblu/site-ui/utils";
|
|
13618
13644
|
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
13645
|
+
function ProfessionalFields({
|
|
13646
|
+
fields,
|
|
13647
|
+
variant = "profile",
|
|
13648
|
+
className
|
|
13649
|
+
}) {
|
|
13650
|
+
const shown = (fields ?? []).filter((f) => variant !== "card" || f.showOnCard);
|
|
13651
|
+
if (shown.length === 0) return null;
|
|
13652
|
+
return /* @__PURE__ */ jsx7(
|
|
13653
|
+
"dl",
|
|
13654
|
+
{
|
|
13655
|
+
className: cn6(
|
|
13656
|
+
"grid gap-x-3 gap-y-1 text-sm",
|
|
13657
|
+
variant === "card" ? "justify-center" : "grid-cols-[auto_1fr]",
|
|
13658
|
+
className
|
|
13659
|
+
),
|
|
13660
|
+
"data-slot": "professional-fields",
|
|
13661
|
+
"data-variant": variant,
|
|
13662
|
+
children: shown.map((field, index) => /* @__PURE__ */ jsxs7(
|
|
13663
|
+
"div",
|
|
13664
|
+
{
|
|
13665
|
+
className: variant === "card" ? "flex justify-center gap-1" : "contents",
|
|
13666
|
+
children: [
|
|
13667
|
+
/* @__PURE__ */ jsx7("dt", { className: "text-muted-foreground", children: field.label }),
|
|
13668
|
+
/* @__PURE__ */ jsx7("dd", { className: "m-0 font-medium", children: field.value })
|
|
13669
|
+
]
|
|
13670
|
+
},
|
|
13671
|
+
`${field.label}-${index}`
|
|
13672
|
+
))
|
|
13673
|
+
}
|
|
13674
|
+
);
|
|
13675
|
+
}
|
|
13676
|
+
|
|
13677
|
+
// src/components/profile-card.tsx
|
|
13678
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
13619
13679
|
function initials(name) {
|
|
13620
13680
|
return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
|
|
13621
13681
|
}
|
|
13622
|
-
function ProfileCard({
|
|
13682
|
+
function ProfileCard({
|
|
13683
|
+
name,
|
|
13684
|
+
role,
|
|
13685
|
+
imageUrl,
|
|
13686
|
+
specialties = [],
|
|
13687
|
+
bio,
|
|
13688
|
+
fields,
|
|
13689
|
+
href,
|
|
13690
|
+
className
|
|
13691
|
+
}) {
|
|
13623
13692
|
const NameTag = href ? "a" : "span";
|
|
13624
|
-
return /* @__PURE__ */
|
|
13693
|
+
return /* @__PURE__ */ jsxs8(
|
|
13625
13694
|
"article",
|
|
13626
13695
|
{
|
|
13627
|
-
className:
|
|
13696
|
+
className: cn7(
|
|
13628
13697
|
"flex flex-col items-center gap-3 rounded-lg border bg-card p-6 text-center",
|
|
13629
13698
|
className
|
|
13630
13699
|
),
|
|
13631
13700
|
"data-slot": "profile-card",
|
|
13632
13701
|
children: [
|
|
13633
|
-
/* @__PURE__ */
|
|
13634
|
-
|
|
13635
|
-
|
|
13636
|
-
|
|
13637
|
-
|
|
13638
|
-
|
|
13639
|
-
|
|
13640
|
-
|
|
13641
|
-
|
|
13642
|
-
|
|
13702
|
+
/* @__PURE__ */ jsx8("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx8("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx8(
|
|
13703
|
+
"span",
|
|
13704
|
+
{
|
|
13705
|
+
className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground",
|
|
13706
|
+
"aria-hidden": "true",
|
|
13707
|
+
children: initials(name)
|
|
13708
|
+
}
|
|
13709
|
+
) }),
|
|
13710
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-1", children: [
|
|
13711
|
+
/* @__PURE__ */ jsx8("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx8(NameTag, { ...href ? { href, className: "transition-colors hover:text-primary" } : {}, children: name }) }),
|
|
13712
|
+
role && /* @__PURE__ */ jsx8("p", { className: "text-sm text-muted-foreground", children: role })
|
|
13643
13713
|
] }),
|
|
13644
|
-
|
|
13714
|
+
/* @__PURE__ */ jsx8(ProfessionalFields, { fields, variant: "card" }),
|
|
13715
|
+
specialties.length > 0 && /* @__PURE__ */ jsx8("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx8(
|
|
13645
13716
|
"li",
|
|
13646
13717
|
{
|
|
13647
13718
|
className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
|
|
@@ -13649,28 +13720,28 @@ function ProfileCard({ name, role, imageUrl, specialties = [], bio, href, classN
|
|
|
13649
13720
|
},
|
|
13650
13721
|
s2
|
|
13651
13722
|
)) }),
|
|
13652
|
-
bio && /* @__PURE__ */
|
|
13723
|
+
bio && /* @__PURE__ */ jsx8("p", { className: "text-sm text-muted-foreground", children: bio })
|
|
13653
13724
|
]
|
|
13654
13725
|
}
|
|
13655
13726
|
);
|
|
13656
13727
|
}
|
|
13657
13728
|
|
|
13658
13729
|
// src/components/product-card.tsx
|
|
13659
|
-
import { cn as
|
|
13660
|
-
import { jsx as
|
|
13730
|
+
import { cn as cn8 } from "@reblu/site-ui/utils";
|
|
13731
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
13661
13732
|
function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
|
|
13662
13733
|
const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
|
|
13663
13734
|
const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
|
|
13664
|
-
return /* @__PURE__ */
|
|
13735
|
+
return /* @__PURE__ */ jsxs9(
|
|
13665
13736
|
"article",
|
|
13666
13737
|
{
|
|
13667
|
-
className:
|
|
13738
|
+
className: cn8(
|
|
13668
13739
|
"group flex flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
|
|
13669
13740
|
className
|
|
13670
13741
|
),
|
|
13671
13742
|
"data-slot": "product-card",
|
|
13672
13743
|
children: [
|
|
13673
|
-
/* @__PURE__ */
|
|
13744
|
+
/* @__PURE__ */ jsx9("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx9(
|
|
13674
13745
|
"img",
|
|
13675
13746
|
{
|
|
13676
13747
|
src: image.url,
|
|
@@ -13678,14 +13749,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
|
|
|
13678
13749
|
loading: "lazy",
|
|
13679
13750
|
className: "h-full w-full object-cover transition-transform group-hover:scale-105"
|
|
13680
13751
|
}
|
|
13681
|
-
) : /* @__PURE__ */
|
|
13682
|
-
/* @__PURE__ */
|
|
13683
|
-
product.category && /* @__PURE__ */
|
|
13684
|
-
/* @__PURE__ */
|
|
13685
|
-
product.shortDescription && /* @__PURE__ */
|
|
13686
|
-
/* @__PURE__ */
|
|
13687
|
-
/* @__PURE__ */
|
|
13688
|
-
hasDiscount && /* @__PURE__ */
|
|
13752
|
+
) : /* @__PURE__ */ jsx9("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
|
|
13753
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
|
|
13754
|
+
product.category && /* @__PURE__ */ jsx9("span", { className: "inline-flex w-fit items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground", children: product.category.name }),
|
|
13755
|
+
/* @__PURE__ */ jsx9("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx9("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
|
|
13756
|
+
product.shortDescription && /* @__PURE__ */ jsx9("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
|
|
13757
|
+
/* @__PURE__ */ jsxs9("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
|
|
13758
|
+
/* @__PURE__ */ jsx9("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
|
|
13759
|
+
hasDiscount && /* @__PURE__ */ jsx9("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
|
|
13689
13760
|
] })
|
|
13690
13761
|
] })
|
|
13691
13762
|
]
|
|
@@ -13887,7 +13958,7 @@ var __iconNode8 = [
|
|
|
13887
13958
|
var Truck = createLucideIcon("truck", __iconNode8);
|
|
13888
13959
|
|
|
13889
13960
|
// src/components/product-trust-items.tsx
|
|
13890
|
-
import { jsx as
|
|
13961
|
+
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
13891
13962
|
var DEFAULT_TRUST_ICONS = Object.freeze({
|
|
13892
13963
|
shipping: Truck,
|
|
13893
13964
|
returns: RotateCcw,
|
|
@@ -13921,17 +13992,17 @@ function ProductTrustItems({
|
|
|
13921
13992
|
return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
|
|
13922
13993
|
});
|
|
13923
13994
|
if (rows.length === 0) return null;
|
|
13924
|
-
return /* @__PURE__ */
|
|
13925
|
-
/* @__PURE__ */
|
|
13926
|
-
/* @__PURE__ */
|
|
13995
|
+
return /* @__PURE__ */ jsx10(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs10("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
|
|
13996
|
+
/* @__PURE__ */ jsx10(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
|
|
13997
|
+
/* @__PURE__ */ jsx10("span", { children: text3 })
|
|
13927
13998
|
] }, key2)) });
|
|
13928
13999
|
}
|
|
13929
14000
|
|
|
13930
14001
|
// src/components/faq-accordion.tsx
|
|
13931
|
-
import { cn as
|
|
14002
|
+
import { cn as cn9 } from "@reblu/site-ui/utils";
|
|
13932
14003
|
|
|
13933
14004
|
// src/components/_heading.tsx
|
|
13934
|
-
import { jsx as
|
|
14005
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
13935
14006
|
function nextHeadingLevel(level) {
|
|
13936
14007
|
return Math.min(level + 1, 6);
|
|
13937
14008
|
}
|
|
@@ -13941,11 +14012,11 @@ function Heading({
|
|
|
13941
14012
|
children: children2
|
|
13942
14013
|
}) {
|
|
13943
14014
|
const Tag = `h${level}`;
|
|
13944
|
-
return /* @__PURE__ */
|
|
14015
|
+
return /* @__PURE__ */ jsx11(Tag, { className, children: children2 });
|
|
13945
14016
|
}
|
|
13946
14017
|
|
|
13947
14018
|
// src/components/faq-accordion.tsx
|
|
13948
|
-
import { jsx as
|
|
14019
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
13949
14020
|
function FaqAccordion({
|
|
13950
14021
|
items,
|
|
13951
14022
|
heading,
|
|
@@ -13956,18 +14027,18 @@ function FaqAccordion({
|
|
|
13956
14027
|
}) {
|
|
13957
14028
|
const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
|
|
13958
14029
|
if (visible.length === 0) return null;
|
|
13959
|
-
return /* @__PURE__ */
|
|
13960
|
-
heading && /* @__PURE__ */
|
|
13961
|
-
/* @__PURE__ */
|
|
14030
|
+
return /* @__PURE__ */ jsxs11("div", { className: cn9("space-y-4", className), "data-slot": "faq-accordion", children: [
|
|
14031
|
+
heading && /* @__PURE__ */ jsx12(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
|
|
14032
|
+
/* @__PURE__ */ jsx12("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs11(
|
|
13962
14033
|
"details",
|
|
13963
14034
|
{
|
|
13964
14035
|
className: "group px-4",
|
|
13965
14036
|
"data-slot": "faq-item",
|
|
13966
14037
|
...defaultOpen.includes(index) ? { open: true } : {},
|
|
13967
14038
|
children: [
|
|
13968
|
-
/* @__PURE__ */
|
|
13969
|
-
questionHeadingLevel ? /* @__PURE__ */
|
|
13970
|
-
/* @__PURE__ */
|
|
14039
|
+
/* @__PURE__ */ jsxs11("summary", { className: "flex cursor-pointer list-none items-center justify-between gap-4 py-4 font-medium focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden", children: [
|
|
14040
|
+
questionHeadingLevel ? /* @__PURE__ */ jsx12(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx12("span", { children: item.q }),
|
|
14041
|
+
/* @__PURE__ */ jsx12(
|
|
13971
14042
|
"span",
|
|
13972
14043
|
{
|
|
13973
14044
|
"aria-hidden": "true",
|
|
@@ -13976,7 +14047,7 @@ function FaqAccordion({
|
|
|
13976
14047
|
}
|
|
13977
14048
|
)
|
|
13978
14049
|
] }),
|
|
13979
|
-
/* @__PURE__ */
|
|
14050
|
+
/* @__PURE__ */ jsx12("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
|
|
13980
14051
|
]
|
|
13981
14052
|
},
|
|
13982
14053
|
index
|
|
@@ -13985,8 +14056,8 @@ function FaqAccordion({
|
|
|
13985
14056
|
}
|
|
13986
14057
|
|
|
13987
14058
|
// src/components/trust-badges.tsx
|
|
13988
|
-
import { cn as
|
|
13989
|
-
import { jsx as
|
|
14059
|
+
import { cn as cn10 } from "@reblu/site-ui/utils";
|
|
14060
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
13990
14061
|
var DEFAULT_TRUST_BADGE_HEADINGS = Object.freeze(
|
|
13991
14062
|
{
|
|
13992
14063
|
PARTNER: "Colaboradores",
|
|
@@ -14028,18 +14099,18 @@ function BadgeContent({ badge, logoClassName }) {
|
|
|
14028
14099
|
if (src) {
|
|
14029
14100
|
return (
|
|
14030
14101
|
// eslint-disable-next-line @next/next/no-img-element -- framework-agnostic SDK; the SITE owns image optimisation
|
|
14031
|
-
/* @__PURE__ */
|
|
14102
|
+
/* @__PURE__ */ jsx13(
|
|
14032
14103
|
"img",
|
|
14033
14104
|
{
|
|
14034
14105
|
src,
|
|
14035
14106
|
alt: badge.name,
|
|
14036
14107
|
loading: "lazy",
|
|
14037
|
-
className:
|
|
14108
|
+
className: cn10("h-12 w-auto object-contain", logoClassName)
|
|
14038
14109
|
}
|
|
14039
14110
|
)
|
|
14040
14111
|
);
|
|
14041
14112
|
}
|
|
14042
|
-
return /* @__PURE__ */
|
|
14113
|
+
return /* @__PURE__ */ jsx13("span", { className: "text-sm font-medium", children: badge.name });
|
|
14043
14114
|
}
|
|
14044
14115
|
function TrustBadges({
|
|
14045
14116
|
badges,
|
|
@@ -14067,14 +14138,14 @@ function TrustBadges({
|
|
|
14067
14138
|
if (groups.length === 0) return null;
|
|
14068
14139
|
const hasHeading = heading !== void 0 && heading !== null && heading !== "";
|
|
14069
14140
|
const groupHeadingLevel = hasHeading ? nextHeadingLevel(headingLevel) : headingLevel;
|
|
14070
|
-
const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */
|
|
14141
|
+
const content = groups.map(({ type, groupHeading, items }) => /* @__PURE__ */ jsxs12(
|
|
14071
14142
|
"div",
|
|
14072
14143
|
{
|
|
14073
14144
|
"data-slot": "trust-badge-group",
|
|
14074
14145
|
"data-type": type,
|
|
14075
|
-
className:
|
|
14146
|
+
className: cn10("space-y-3", groupClassName),
|
|
14076
14147
|
children: [
|
|
14077
|
-
groupHeading ? /* @__PURE__ */
|
|
14148
|
+
groupHeading ? /* @__PURE__ */ jsx13(
|
|
14078
14149
|
Heading,
|
|
14079
14150
|
{
|
|
14080
14151
|
level: groupHeadingLevel,
|
|
@@ -14086,30 +14157,30 @@ function TrustBadges({
|
|
|
14086
14157
|
children: groupHeading
|
|
14087
14158
|
}
|
|
14088
14159
|
) : null,
|
|
14089
|
-
/* @__PURE__ */
|
|
14160
|
+
/* @__PURE__ */ jsx13("ul", { className: cn10("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
|
|
14090
14161
|
const href = safeHref(badge.url);
|
|
14091
|
-
return /* @__PURE__ */
|
|
14092
|
-
/* @__PURE__ */
|
|
14162
|
+
return /* @__PURE__ */ jsx13("li", { children: href ? /* @__PURE__ */ jsxs12("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
|
|
14163
|
+
/* @__PURE__ */ jsx13(BadgeContent, { badge, logoClassName }),
|
|
14093
14164
|
" ",
|
|
14094
|
-
/* @__PURE__ */
|
|
14095
|
-
] }) : /* @__PURE__ */
|
|
14165
|
+
/* @__PURE__ */ jsx13("span", { className: "sr-only", children: newWindowLabel })
|
|
14166
|
+
] }) : /* @__PURE__ */ jsx13(BadgeContent, { badge, logoClassName }) }, badge.id);
|
|
14096
14167
|
}) })
|
|
14097
14168
|
]
|
|
14098
14169
|
},
|
|
14099
14170
|
type
|
|
14100
14171
|
));
|
|
14101
14172
|
if (!hasHeading) {
|
|
14102
|
-
return /* @__PURE__ */
|
|
14173
|
+
return /* @__PURE__ */ jsx13("div", { "data-slot": "trust-badges", className: cn10("space-y-6", className), children: content });
|
|
14103
14174
|
}
|
|
14104
14175
|
const Tag = `h${headingLevel}`;
|
|
14105
|
-
return /* @__PURE__ */
|
|
14176
|
+
return /* @__PURE__ */ jsxs12(
|
|
14106
14177
|
"section",
|
|
14107
14178
|
{
|
|
14108
14179
|
"data-slot": "trust-badges",
|
|
14109
14180
|
"aria-labelledby": headingId,
|
|
14110
|
-
className:
|
|
14181
|
+
className: cn10("space-y-6", className),
|
|
14111
14182
|
children: [
|
|
14112
|
-
/* @__PURE__ */
|
|
14183
|
+
/* @__PURE__ */ jsx13(
|
|
14113
14184
|
Tag,
|
|
14114
14185
|
{
|
|
14115
14186
|
id: headingId,
|
|
@@ -14124,40 +14195,40 @@ function TrustBadges({
|
|
|
14124
14195
|
}
|
|
14125
14196
|
|
|
14126
14197
|
// src/components/page-blocks.tsx
|
|
14127
|
-
import { cn as
|
|
14198
|
+
import { cn as cn11 } from "@reblu/site-ui/utils";
|
|
14128
14199
|
import { buttonVariants as buttonVariants2 } from "@reblu/site-ui/button-variants";
|
|
14129
|
-
import { jsx as
|
|
14200
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
14130
14201
|
var ALIASES = {
|
|
14131
14202
|
doctor_embed: "profile_embed",
|
|
14132
14203
|
specialty_embed: "page_embed"
|
|
14133
14204
|
};
|
|
14134
14205
|
function HeroBlock({ block, headingLevel }) {
|
|
14135
14206
|
const { title, subtitle, imageUrl } = block.data;
|
|
14136
|
-
return /* @__PURE__ */
|
|
14137
|
-
/* @__PURE__ */
|
|
14138
|
-
subtitle && /* @__PURE__ */
|
|
14139
|
-
imageUrl && /* @__PURE__ */
|
|
14207
|
+
return /* @__PURE__ */ jsxs13("div", { className: "space-y-4", children: [
|
|
14208
|
+
/* @__PURE__ */ jsx14(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
|
|
14209
|
+
subtitle && /* @__PURE__ */ jsx14("p", { className: "text-lg opacity-80", children: subtitle }),
|
|
14210
|
+
imageUrl && /* @__PURE__ */ jsx14("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx14("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
|
|
14140
14211
|
] });
|
|
14141
14212
|
}
|
|
14142
14213
|
function RichtextBlock({ block, headingLevel }) {
|
|
14143
|
-
return /* @__PURE__ */
|
|
14214
|
+
return /* @__PURE__ */ jsx14(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
|
|
14144
14215
|
}
|
|
14145
14216
|
function FaqBlock({ block }) {
|
|
14146
|
-
return /* @__PURE__ */
|
|
14217
|
+
return /* @__PURE__ */ jsx14(FaqAccordion, { items: block.data.items });
|
|
14147
14218
|
}
|
|
14148
14219
|
function StatsBlock({ block }) {
|
|
14149
|
-
return /* @__PURE__ */
|
|
14150
|
-
/* @__PURE__ */
|
|
14151
|
-
/* @__PURE__ */
|
|
14220
|
+
return /* @__PURE__ */ jsx14("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs13("div", { className: "flex flex-col-reverse gap-1", children: [
|
|
14221
|
+
/* @__PURE__ */ jsx14("dt", { className: "text-sm opacity-80", children: item.label }),
|
|
14222
|
+
/* @__PURE__ */ jsx14("dd", { className: "text-3xl font-bold", children: item.value })
|
|
14152
14223
|
] }, i)) });
|
|
14153
14224
|
}
|
|
14154
14225
|
function TestimonialBlock({ block }) {
|
|
14155
14226
|
const { quote, author, role, avatarUrl } = block.data;
|
|
14156
|
-
return /* @__PURE__ */
|
|
14157
|
-
/* @__PURE__ */
|
|
14158
|
-
/* @__PURE__ */
|
|
14227
|
+
return /* @__PURE__ */ jsxs13("figure", { className: "space-y-4", children: [
|
|
14228
|
+
/* @__PURE__ */ jsx14("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx14("p", { children: quote }) }),
|
|
14229
|
+
/* @__PURE__ */ jsxs13("figcaption", { className: "flex items-center gap-3", children: [
|
|
14159
14230
|
avatarUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
14160
|
-
/* @__PURE__ */
|
|
14231
|
+
/* @__PURE__ */ jsx14(
|
|
14161
14232
|
"img",
|
|
14162
14233
|
{
|
|
14163
14234
|
src: avatarUrl,
|
|
@@ -14166,9 +14237,9 @@ function TestimonialBlock({ block }) {
|
|
|
14166
14237
|
className: "h-10 w-10 rounded-full object-cover"
|
|
14167
14238
|
}
|
|
14168
14239
|
),
|
|
14169
|
-
/* @__PURE__ */
|
|
14170
|
-
/* @__PURE__ */
|
|
14171
|
-
role && /* @__PURE__ */
|
|
14240
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
14241
|
+
/* @__PURE__ */ jsx14("span", { className: "font-semibold", children: author }),
|
|
14242
|
+
role && /* @__PURE__ */ jsx14("span", { className: "block text-sm opacity-80", children: role })
|
|
14172
14243
|
] })
|
|
14173
14244
|
] })
|
|
14174
14245
|
] });
|
|
@@ -14177,19 +14248,19 @@ function CtaSlotBlock(_props) {
|
|
|
14177
14248
|
return null;
|
|
14178
14249
|
}
|
|
14179
14250
|
function FeatureListBlock({ block }) {
|
|
14180
|
-
return /* @__PURE__ */
|
|
14251
|
+
return /* @__PURE__ */ jsx14("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx14("li", { children: item.text }, i)) });
|
|
14181
14252
|
}
|
|
14182
14253
|
function GalleryBlock({ block }) {
|
|
14183
14254
|
const { images } = block.data;
|
|
14184
|
-
return /* @__PURE__ */
|
|
14255
|
+
return /* @__PURE__ */ jsx14(
|
|
14185
14256
|
"div",
|
|
14186
14257
|
{
|
|
14187
|
-
className:
|
|
14258
|
+
className: cn11(
|
|
14188
14259
|
"grid gap-4",
|
|
14189
14260
|
images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
|
|
14190
14261
|
),
|
|
14191
|
-
children: images.map((img, i) => /* @__PURE__ */
|
|
14192
|
-
/* @__PURE__ */
|
|
14262
|
+
children: images.map((img, i) => /* @__PURE__ */ jsxs13("figure", { className: "space-y-1", children: [
|
|
14263
|
+
/* @__PURE__ */ jsx14("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx14(
|
|
14193
14264
|
"img",
|
|
14194
14265
|
{
|
|
14195
14266
|
src: img.url,
|
|
@@ -14198,7 +14269,7 @@ function GalleryBlock({ block }) {
|
|
|
14198
14269
|
className: "h-full w-full object-cover"
|
|
14199
14270
|
}
|
|
14200
14271
|
) }),
|
|
14201
|
-
img.caption && /* @__PURE__ */
|
|
14272
|
+
img.caption && /* @__PURE__ */ jsx14("figcaption", { className: "text-sm opacity-80", children: img.caption })
|
|
14202
14273
|
] }, `${img.url}-${i}`))
|
|
14203
14274
|
}
|
|
14204
14275
|
);
|
|
@@ -14208,13 +14279,13 @@ function EmbedCard({
|
|
|
14208
14279
|
headingLevel,
|
|
14209
14280
|
embedHref
|
|
14210
14281
|
}) {
|
|
14211
|
-
return /* @__PURE__ */
|
|
14282
|
+
return /* @__PURE__ */ jsxs13(
|
|
14212
14283
|
"a",
|
|
14213
14284
|
{
|
|
14214
14285
|
href: embedHref(resolved),
|
|
14215
14286
|
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",
|
|
14216
14287
|
children: [
|
|
14217
|
-
resolved.coverImageUrl && /* @__PURE__ */
|
|
14288
|
+
resolved.coverImageUrl && /* @__PURE__ */ jsx14("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx14(
|
|
14218
14289
|
"img",
|
|
14219
14290
|
{
|
|
14220
14291
|
src: resolved.coverImageUrl,
|
|
@@ -14223,24 +14294,24 @@ function EmbedCard({
|
|
|
14223
14294
|
className: "h-full w-full object-cover"
|
|
14224
14295
|
}
|
|
14225
14296
|
) }),
|
|
14226
|
-
/* @__PURE__ */
|
|
14227
|
-
/* @__PURE__ */
|
|
14228
|
-
resolved.role && /* @__PURE__ */
|
|
14229
|
-
resolved.excerpt && /* @__PURE__ */
|
|
14297
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-1 p-4", children: [
|
|
14298
|
+
/* @__PURE__ */ jsx14(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
|
|
14299
|
+
resolved.role && /* @__PURE__ */ jsx14("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
|
|
14300
|
+
resolved.excerpt && /* @__PURE__ */ jsx14("p", { className: "text-muted-foreground", children: resolved.excerpt })
|
|
14230
14301
|
] })
|
|
14231
14302
|
]
|
|
14232
14303
|
}
|
|
14233
14304
|
);
|
|
14234
14305
|
}
|
|
14235
14306
|
function PageEmbedBlock({ block, headingLevel, embedHref }) {
|
|
14236
|
-
return /* @__PURE__ */
|
|
14307
|
+
return /* @__PURE__ */ jsx14(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
14237
14308
|
}
|
|
14238
14309
|
function ProfileEmbedBlock({
|
|
14239
14310
|
block,
|
|
14240
14311
|
headingLevel,
|
|
14241
14312
|
embedHref
|
|
14242
14313
|
}) {
|
|
14243
|
-
return /* @__PURE__ */
|
|
14314
|
+
return /* @__PURE__ */ jsx14(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
|
|
14244
14315
|
}
|
|
14245
14316
|
var DEFAULT_RENDERERS = {
|
|
14246
14317
|
hero: HeroBlock,
|
|
@@ -14297,14 +14368,14 @@ function toIdFragment(value) {
|
|
|
14297
14368
|
function SectionCta2({ cta }) {
|
|
14298
14369
|
if (!hasUsableCta(cta)) return null;
|
|
14299
14370
|
const variant = toButtonVariant(cta.variant);
|
|
14300
|
-
return /* @__PURE__ */
|
|
14371
|
+
return /* @__PURE__ */ jsx14("div", { className: "pt-2", children: /* @__PURE__ */ jsx14(
|
|
14301
14372
|
"a",
|
|
14302
14373
|
{
|
|
14303
14374
|
href: cta.url,
|
|
14304
14375
|
"data-slot": "button",
|
|
14305
14376
|
"data-variant": variant,
|
|
14306
14377
|
"data-size": "default",
|
|
14307
|
-
className:
|
|
14378
|
+
className: cn11(buttonVariants2({ variant, size: "default" })),
|
|
14308
14379
|
...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
|
|
14309
14380
|
children: cta.label
|
|
14310
14381
|
}
|
|
@@ -14330,17 +14401,17 @@ function PageBlocks({
|
|
|
14330
14401
|
const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
|
|
14331
14402
|
const background = block.backgroundColor;
|
|
14332
14403
|
return [
|
|
14333
|
-
/* @__PURE__ */
|
|
14404
|
+
/* @__PURE__ */ jsxs13(
|
|
14334
14405
|
"section",
|
|
14335
14406
|
{
|
|
14336
14407
|
"data-slot": "page-block",
|
|
14337
14408
|
"data-block-type": type,
|
|
14338
14409
|
"aria-labelledby": headingId,
|
|
14339
14410
|
style: surfaceStyle(background),
|
|
14340
|
-
className:
|
|
14411
|
+
className: cn11("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
|
|
14341
14412
|
children: [
|
|
14342
|
-
block.heading && /* @__PURE__ */
|
|
14343
|
-
/* @__PURE__ */
|
|
14413
|
+
block.heading && /* @__PURE__ */ jsx14(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx14("span", { id: headingId, children: block.heading }) }),
|
|
14414
|
+
/* @__PURE__ */ jsx14(
|
|
14344
14415
|
Renderer,
|
|
14345
14416
|
{
|
|
14346
14417
|
block,
|
|
@@ -14348,7 +14419,7 @@ function PageBlocks({
|
|
|
14348
14419
|
embedHref
|
|
14349
14420
|
}
|
|
14350
14421
|
),
|
|
14351
|
-
/* @__PURE__ */
|
|
14422
|
+
/* @__PURE__ */ jsx14(SectionCta2, { cta: block.cta })
|
|
14352
14423
|
]
|
|
14353
14424
|
},
|
|
14354
14425
|
block.id
|
|
@@ -14356,12 +14427,12 @@ function PageBlocks({
|
|
|
14356
14427
|
];
|
|
14357
14428
|
});
|
|
14358
14429
|
if (sections.length === 0) return null;
|
|
14359
|
-
return /* @__PURE__ */
|
|
14430
|
+
return /* @__PURE__ */ jsx14("div", { className: cn11("space-y-12", className), "data-slot": "page-blocks", children: sections });
|
|
14360
14431
|
}
|
|
14361
14432
|
|
|
14362
14433
|
// src/components/shop-filters.tsx
|
|
14363
|
-
import { cn as
|
|
14364
|
-
import { jsx as
|
|
14434
|
+
import { cn as cn12 } from "@reblu/site-ui/utils";
|
|
14435
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
14365
14436
|
var DEFAULT_SHOP_PRICE_BANDS = [
|
|
14366
14437
|
{ max: 2500 },
|
|
14367
14438
|
{ min: 2500, max: 5e3 },
|
|
@@ -14405,7 +14476,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
|
|
|
14405
14476
|
return "";
|
|
14406
14477
|
}
|
|
14407
14478
|
function OptionLink({ href, active, label, onActivate }) {
|
|
14408
|
-
return /* @__PURE__ */
|
|
14479
|
+
return /* @__PURE__ */ jsx15(
|
|
14409
14480
|
"a",
|
|
14410
14481
|
{
|
|
14411
14482
|
href,
|
|
@@ -14414,7 +14485,7 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
14414
14485
|
event.preventDefault();
|
|
14415
14486
|
onActivate();
|
|
14416
14487
|
} : void 0,
|
|
14417
|
-
className:
|
|
14488
|
+
className: cn12(
|
|
14418
14489
|
"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",
|
|
14419
14490
|
active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
14420
14491
|
),
|
|
@@ -14423,9 +14494,9 @@ function OptionLink({ href, active, label, onActivate }) {
|
|
|
14423
14494
|
);
|
|
14424
14495
|
}
|
|
14425
14496
|
function FilterFieldset({ legend, children: children2 }) {
|
|
14426
|
-
return /* @__PURE__ */
|
|
14427
|
-
/* @__PURE__ */
|
|
14428
|
-
/* @__PURE__ */
|
|
14497
|
+
return /* @__PURE__ */ jsxs14("fieldset", { className: "space-y-2", children: [
|
|
14498
|
+
/* @__PURE__ */ jsx15("legend", { className: "text-sm font-medium text-foreground", children: legend }),
|
|
14499
|
+
/* @__PURE__ */ jsx15("div", { className: "flex flex-wrap gap-2", children: children2 })
|
|
14429
14500
|
] });
|
|
14430
14501
|
}
|
|
14431
14502
|
function ShopFilters({
|
|
@@ -14448,11 +14519,11 @@ function ShopFilters({
|
|
|
14448
14519
|
if (!shouldRenderShopFilters(facets, active)) {
|
|
14449
14520
|
return null;
|
|
14450
14521
|
}
|
|
14451
|
-
return /* @__PURE__ */
|
|
14522
|
+
return /* @__PURE__ */ jsxs14("div", { className: cn12("space-y-6", className), "data-slot": "shop-filters", children: [
|
|
14452
14523
|
visibleTaxonomies.map((axis) => {
|
|
14453
14524
|
const activeSlug = active.taxonomy?.[axis.key];
|
|
14454
|
-
return /* @__PURE__ */
|
|
14455
|
-
/* @__PURE__ */
|
|
14525
|
+
return /* @__PURE__ */ jsxs14(FilterFieldset, { legend: axis.label, children: [
|
|
14526
|
+
/* @__PURE__ */ jsx15(
|
|
14456
14527
|
OptionLink,
|
|
14457
14528
|
{
|
|
14458
14529
|
href: hrefs.taxonomy(axis.key, void 0),
|
|
@@ -14467,7 +14538,7 @@ function ShopFilters({
|
|
|
14467
14538
|
),
|
|
14468
14539
|
axis.terms.map((term) => {
|
|
14469
14540
|
const isActive = activeSlug === term.slug;
|
|
14470
|
-
return /* @__PURE__ */
|
|
14541
|
+
return /* @__PURE__ */ jsx15(
|
|
14471
14542
|
OptionLink,
|
|
14472
14543
|
{
|
|
14473
14544
|
href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
|
|
@@ -14487,9 +14558,9 @@ function ShopFilters({
|
|
|
14487
14558
|
}),
|
|
14488
14559
|
visibleAttributes.map((attr) => {
|
|
14489
14560
|
const activeValues = toValueArray(active.attr?.[attr.key]);
|
|
14490
|
-
return /* @__PURE__ */
|
|
14561
|
+
return /* @__PURE__ */ jsx15(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
|
|
14491
14562
|
const isActive = activeValues.includes(opt.value);
|
|
14492
|
-
return /* @__PURE__ */
|
|
14563
|
+
return /* @__PURE__ */ jsx15(
|
|
14493
14564
|
OptionLink,
|
|
14494
14565
|
{
|
|
14495
14566
|
href: hrefs.attr(attr.key, opt.value),
|
|
@@ -14507,11 +14578,11 @@ function ShopFilters({
|
|
|
14507
14578
|
);
|
|
14508
14579
|
}) }, attr.key);
|
|
14509
14580
|
}),
|
|
14510
|
-
showPriceGroup && /* @__PURE__ */
|
|
14581
|
+
showPriceGroup && /* @__PURE__ */ jsx15(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
|
|
14511
14582
|
const isActive = active.priceMin === band.min && active.priceMax === band.max;
|
|
14512
14583
|
const nextMin = isActive ? void 0 : band.min;
|
|
14513
14584
|
const nextMax = isActive ? void 0 : band.max;
|
|
14514
|
-
return /* @__PURE__ */
|
|
14585
|
+
return /* @__PURE__ */ jsx15(
|
|
14515
14586
|
OptionLink,
|
|
14516
14587
|
{
|
|
14517
14588
|
href: hrefs.price(nextMin, nextMax),
|
|
@@ -14522,7 +14593,7 @@ function ShopFilters({
|
|
|
14522
14593
|
i
|
|
14523
14594
|
);
|
|
14524
14595
|
}) }),
|
|
14525
|
-
hasOnSale && /* @__PURE__ */
|
|
14596
|
+
hasOnSale && /* @__PURE__ */ jsx15(
|
|
14526
14597
|
OptionLink,
|
|
14527
14598
|
{
|
|
14528
14599
|
href: hrefs.onSale(!active.onSale),
|
|
@@ -14531,7 +14602,7 @@ function ShopFilters({
|
|
|
14531
14602
|
onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
|
|
14532
14603
|
}
|
|
14533
14604
|
),
|
|
14534
|
-
/* @__PURE__ */
|
|
14605
|
+
/* @__PURE__ */ jsx15(
|
|
14535
14606
|
"a",
|
|
14536
14607
|
{
|
|
14537
14608
|
href: hrefs.clearAll(),
|
|
@@ -14547,8 +14618,8 @@ function ShopFilters({
|
|
|
14547
14618
|
}
|
|
14548
14619
|
|
|
14549
14620
|
// src/components/cart-line-list.tsx
|
|
14550
|
-
import { cn as
|
|
14551
|
-
import { jsx as
|
|
14621
|
+
import { cn as cn13 } from "@reblu/site-ui/utils";
|
|
14622
|
+
import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
14552
14623
|
var DEFAULT_LABELS2 = {
|
|
14553
14624
|
quantityLabel: "Cantidad",
|
|
14554
14625
|
decrease: "Reducir cantidad",
|
|
@@ -14574,9 +14645,9 @@ function CartLineList({
|
|
|
14574
14645
|
}) {
|
|
14575
14646
|
const t = { ...DEFAULT_LABELS2, ...labels };
|
|
14576
14647
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
14577
|
-
return /* @__PURE__ */
|
|
14578
|
-
/* @__PURE__ */
|
|
14579
|
-
noticeContent != null && noticeContent !== false && /* @__PURE__ */
|
|
14648
|
+
return /* @__PURE__ */ jsxs15("div", { className: cn13("space-y-4", className), "data-slot": "cart-line-list", children: [
|
|
14649
|
+
/* @__PURE__ */ jsx16("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
|
|
14650
|
+
noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx16(
|
|
14580
14651
|
"div",
|
|
14581
14652
|
{
|
|
14582
14653
|
role: "status",
|
|
@@ -14585,69 +14656,69 @@ function CartLineList({
|
|
|
14585
14656
|
children: noticeContent
|
|
14586
14657
|
}
|
|
14587
14658
|
),
|
|
14588
|
-
/* @__PURE__ */
|
|
14659
|
+
/* @__PURE__ */ jsx16("ul", { className: "space-y-4", children: items.map((item) => {
|
|
14589
14660
|
const maxQty = item.maxStock ?? Infinity;
|
|
14590
14661
|
const atMax = item.quantity >= maxQty;
|
|
14591
14662
|
const atMin = item.quantity <= 1;
|
|
14592
14663
|
const message = lineMessage?.(item);
|
|
14593
|
-
return /* @__PURE__ */
|
|
14664
|
+
return /* @__PURE__ */ jsxs15(
|
|
14594
14665
|
"li",
|
|
14595
14666
|
{
|
|
14596
14667
|
className: "flex gap-4 rounded-xl border border-border bg-card p-4",
|
|
14597
14668
|
children: [
|
|
14598
|
-
/* @__PURE__ */
|
|
14599
|
-
/* @__PURE__ */
|
|
14600
|
-
/* @__PURE__ */
|
|
14601
|
-
item.variantName && /* @__PURE__ */
|
|
14602
|
-
/* @__PURE__ */
|
|
14669
|
+
/* @__PURE__ */ jsx16("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx16("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
|
|
14670
|
+
/* @__PURE__ */ jsxs15("div", { className: "min-w-0 flex-1", children: [
|
|
14671
|
+
/* @__PURE__ */ jsx16("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
|
|
14672
|
+
item.variantName && /* @__PURE__ */ jsx16("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
|
|
14673
|
+
/* @__PURE__ */ jsxs15("p", { className: "mt-1 text-sm text-muted-foreground", children: [
|
|
14603
14674
|
formatPrice(item.unitPrice, currencyCode, locale),
|
|
14604
14675
|
" ",
|
|
14605
14676
|
t.unitPriceSuffix
|
|
14606
14677
|
] }),
|
|
14607
|
-
/* @__PURE__ */
|
|
14678
|
+
/* @__PURE__ */ jsxs15(
|
|
14608
14679
|
"div",
|
|
14609
14680
|
{
|
|
14610
14681
|
role: "group",
|
|
14611
14682
|
"aria-label": t.quantityLabel,
|
|
14612
14683
|
className: "mt-3 flex items-center gap-3",
|
|
14613
14684
|
children: [
|
|
14614
|
-
/* @__PURE__ */
|
|
14685
|
+
/* @__PURE__ */ jsx16(
|
|
14615
14686
|
"button",
|
|
14616
14687
|
{
|
|
14617
14688
|
type: "button",
|
|
14618
14689
|
"aria-label": t.decrease,
|
|
14619
14690
|
disabled: !onQuantityChange || atMin,
|
|
14620
14691
|
onClick: onQuantityChange ? () => onQuantityChange(item.productId, item.variantId, item.quantity - 1) : void 0,
|
|
14621
|
-
className: "flex h-7 w-7 items-center justify-center rounded border border-border transition hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40",
|
|
14692
|
+
className: "flex h-7 w-7 cursor-pointer items-center justify-center rounded border border-border transition hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40",
|
|
14622
14693
|
children: "\u2212"
|
|
14623
14694
|
}
|
|
14624
14695
|
),
|
|
14625
|
-
/* @__PURE__ */
|
|
14626
|
-
/* @__PURE__ */
|
|
14696
|
+
/* @__PURE__ */ jsx16("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
|
|
14697
|
+
/* @__PURE__ */ jsx16(
|
|
14627
14698
|
"button",
|
|
14628
14699
|
{
|
|
14629
14700
|
type: "button",
|
|
14630
14701
|
"aria-label": t.increase,
|
|
14631
14702
|
disabled: !onQuantityChange || atMax,
|
|
14632
14703
|
onClick: onQuantityChange ? () => onQuantityChange(item.productId, item.variantId, item.quantity + 1) : void 0,
|
|
14633
|
-
className: "flex h-7 w-7 items-center justify-center rounded border border-border transition hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40",
|
|
14704
|
+
className: "flex h-7 w-7 cursor-pointer items-center justify-center rounded border border-border transition hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40",
|
|
14634
14705
|
children: "+"
|
|
14635
14706
|
}
|
|
14636
14707
|
),
|
|
14637
|
-
onRemove && /* @__PURE__ */
|
|
14708
|
+
onRemove && /* @__PURE__ */ jsx16(
|
|
14638
14709
|
"button",
|
|
14639
14710
|
{
|
|
14640
14711
|
type: "button",
|
|
14641
14712
|
"aria-label": `${t.remove} ${item.name}`,
|
|
14642
14713
|
onClick: () => onRemove(item.productId, item.variantId),
|
|
14643
|
-
className: "ml-2 text-muted-foreground transition-colors hover:text-destructive",
|
|
14714
|
+
className: "ml-2 cursor-pointer text-muted-foreground transition-colors hover:text-destructive",
|
|
14644
14715
|
children: t.remove
|
|
14645
14716
|
}
|
|
14646
14717
|
)
|
|
14647
14718
|
]
|
|
14648
14719
|
}
|
|
14649
14720
|
),
|
|
14650
|
-
message != null && message !== false && /* @__PURE__ */
|
|
14721
|
+
message != null && message !== false && /* @__PURE__ */ jsx16(
|
|
14651
14722
|
"p",
|
|
14652
14723
|
{
|
|
14653
14724
|
className: "mt-2 text-sm text-destructive",
|
|
@@ -14656,7 +14727,7 @@ function CartLineList({
|
|
|
14656
14727
|
}
|
|
14657
14728
|
)
|
|
14658
14729
|
] }),
|
|
14659
|
-
/* @__PURE__ */
|
|
14730
|
+
/* @__PURE__ */ jsx16("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx16("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
|
|
14660
14731
|
]
|
|
14661
14732
|
},
|
|
14662
14733
|
lineKey(item.productId, item.variantId)
|
|
@@ -14666,8 +14737,8 @@ function CartLineList({
|
|
|
14666
14737
|
}
|
|
14667
14738
|
|
|
14668
14739
|
// src/components/cart-summary.tsx
|
|
14669
|
-
import { cn as
|
|
14670
|
-
import { jsx as
|
|
14740
|
+
import { cn as cn14 } from "@reblu/site-ui/utils";
|
|
14741
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
14671
14742
|
var DEFAULT_LABELS3 = {
|
|
14672
14743
|
subtotal: "Subtotal",
|
|
14673
14744
|
discountPrefix: "Descuento",
|
|
@@ -14694,40 +14765,40 @@ function CartSummary({
|
|
|
14694
14765
|
const hasDiscount = Boolean(discount && discount > 0);
|
|
14695
14766
|
const noticeContent = notice === true ? t.cancelledNotice : notice;
|
|
14696
14767
|
const hasNotice = noticeContent != null && noticeContent !== false;
|
|
14697
|
-
const breakdown = /* @__PURE__ */
|
|
14768
|
+
const breakdown = /* @__PURE__ */ jsxs16(
|
|
14698
14769
|
"dl",
|
|
14699
14770
|
{
|
|
14700
|
-
className:
|
|
14771
|
+
className: cn14("space-y-2 text-sm", !hasNotice && className),
|
|
14701
14772
|
"data-slot": "cart-summary",
|
|
14702
14773
|
children: [
|
|
14703
|
-
/* @__PURE__ */
|
|
14704
|
-
/* @__PURE__ */
|
|
14705
|
-
/* @__PURE__ */
|
|
14774
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex justify-between text-muted-foreground", children: [
|
|
14775
|
+
/* @__PURE__ */ jsx17("dt", { children: t.subtotal }),
|
|
14776
|
+
/* @__PURE__ */ jsx17("dd", { children: formatPrice(subtotal, currencyCode, locale) })
|
|
14706
14777
|
] }),
|
|
14707
|
-
hasDiscount && /* @__PURE__ */
|
|
14708
|
-
/* @__PURE__ */
|
|
14778
|
+
hasDiscount && /* @__PURE__ */ jsxs16("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
|
|
14779
|
+
/* @__PURE__ */ jsxs16("dt", { children: [
|
|
14709
14780
|
t.discountPrefix,
|
|
14710
14781
|
discountCode ? ` (${discountCode})` : ""
|
|
14711
14782
|
] }),
|
|
14712
|
-
/* @__PURE__ */
|
|
14783
|
+
/* @__PURE__ */ jsxs16("dd", { children: [
|
|
14713
14784
|
"-",
|
|
14714
14785
|
formatPrice(discount, currencyCode, locale)
|
|
14715
14786
|
] })
|
|
14716
14787
|
] }),
|
|
14717
|
-
shippingEnabled && /* @__PURE__ */
|
|
14718
|
-
/* @__PURE__ */
|
|
14719
|
-
/* @__PURE__ */
|
|
14788
|
+
shippingEnabled && /* @__PURE__ */ jsxs16("div", { className: "flex justify-between text-muted-foreground", children: [
|
|
14789
|
+
/* @__PURE__ */ jsx17("dt", { children: t.shipping }),
|
|
14790
|
+
/* @__PURE__ */ jsx17("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
|
|
14720
14791
|
] }),
|
|
14721
|
-
/* @__PURE__ */
|
|
14722
|
-
/* @__PURE__ */
|
|
14723
|
-
/* @__PURE__ */
|
|
14792
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
|
|
14793
|
+
/* @__PURE__ */ jsx17("dt", { children: t.total }),
|
|
14794
|
+
/* @__PURE__ */ jsx17("dd", { children: formatPrice(total, currencyCode, locale) })
|
|
14724
14795
|
] })
|
|
14725
14796
|
]
|
|
14726
14797
|
}
|
|
14727
14798
|
);
|
|
14728
14799
|
if (!hasNotice) return breakdown;
|
|
14729
|
-
return /* @__PURE__ */
|
|
14730
|
-
/* @__PURE__ */
|
|
14800
|
+
return /* @__PURE__ */ jsxs16("div", { className: cn14("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
|
|
14801
|
+
/* @__PURE__ */ jsx17(
|
|
14731
14802
|
"div",
|
|
14732
14803
|
{
|
|
14733
14804
|
role: "status",
|
|
@@ -14741,8 +14812,8 @@ function CartSummary({
|
|
|
14741
14812
|
}
|
|
14742
14813
|
|
|
14743
14814
|
// src/components/cart-adjustments-notice.tsx
|
|
14744
|
-
import { cn as
|
|
14745
|
-
import { jsx as
|
|
14815
|
+
import { cn as cn15 } from "@reblu/site-ui/utils";
|
|
14816
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
14746
14817
|
var DEFAULT_LABELS4 = {
|
|
14747
14818
|
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.`,
|
|
14748
14819
|
quantityChanged: (name, quantity) => `Hemos ajustado la cantidad de ${name} a ${quantity} por el stock disponible.`,
|
|
@@ -14776,20 +14847,20 @@ function CartAdjustmentsNotice({
|
|
|
14776
14847
|
);
|
|
14777
14848
|
}
|
|
14778
14849
|
if (messages.length === 0) return null;
|
|
14779
|
-
return /* @__PURE__ */
|
|
14850
|
+
return /* @__PURE__ */ jsx18(
|
|
14780
14851
|
"div",
|
|
14781
14852
|
{
|
|
14782
14853
|
role: "status",
|
|
14783
|
-
className:
|
|
14854
|
+
className: cn15("rounded-lg border border-border bg-muted px-3 py-2 text-sm", className),
|
|
14784
14855
|
"data-slot": "cart-adjustments-notice",
|
|
14785
|
-
children: messages.length === 1 ? /* @__PURE__ */
|
|
14856
|
+
children: messages.length === 1 ? /* @__PURE__ */ jsx18("p", { children: messages[0] }) : /* @__PURE__ */ jsx18("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx18("li", { children: message }, index)) })
|
|
14786
14857
|
}
|
|
14787
14858
|
);
|
|
14788
14859
|
}
|
|
14789
14860
|
|
|
14790
14861
|
// src/components/added-to-cart-toast.tsx
|
|
14791
|
-
import { cn as
|
|
14792
|
-
import { jsx as
|
|
14862
|
+
import { cn as cn16 } from "@reblu/site-ui/utils";
|
|
14863
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
14793
14864
|
var DEFAULT_LABELS5 = {
|
|
14794
14865
|
success: "A\xF1adido al carrito",
|
|
14795
14866
|
error: "No se pudo a\xF1adir al carrito",
|
|
@@ -14809,12 +14880,12 @@ function AddedToCartToast({
|
|
|
14809
14880
|
const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
|
|
14810
14881
|
const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
|
|
14811
14882
|
const variant = status === "success" ? "success" : "error";
|
|
14812
|
-
return /* @__PURE__ */
|
|
14883
|
+
return /* @__PURE__ */ jsxs17(
|
|
14813
14884
|
"div",
|
|
14814
14885
|
{
|
|
14815
14886
|
"data-slot": "added-to-cart-toast",
|
|
14816
14887
|
"data-variant": variant,
|
|
14817
|
-
className:
|
|
14888
|
+
className: cn16(
|
|
14818
14889
|
"flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
|
|
14819
14890
|
variant === "success" && "border-green-600/30 dark:border-green-400/30",
|
|
14820
14891
|
variant === "error" && "border-destructive/30",
|
|
@@ -14822,20 +14893,20 @@ function AddedToCartToast({
|
|
|
14822
14893
|
),
|
|
14823
14894
|
children: [
|
|
14824
14895
|
hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
|
|
14825
|
-
/* @__PURE__ */
|
|
14826
|
-
/* @__PURE__ */
|
|
14827
|
-
/* @__PURE__ */
|
|
14828
|
-
/* @__PURE__ */
|
|
14896
|
+
/* @__PURE__ */ jsx19("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
|
|
14897
|
+
/* @__PURE__ */ jsxs17("div", { className: "min-w-0 flex-1", children: [
|
|
14898
|
+
/* @__PURE__ */ jsx19("p", { className: "truncate font-semibold text-foreground", children: productName }),
|
|
14899
|
+
/* @__PURE__ */ jsx19("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
|
|
14829
14900
|
] }),
|
|
14830
|
-
/* @__PURE__ */
|
|
14901
|
+
/* @__PURE__ */ jsx19("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx19("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
|
|
14831
14902
|
]
|
|
14832
14903
|
}
|
|
14833
14904
|
);
|
|
14834
14905
|
}
|
|
14835
14906
|
|
|
14836
14907
|
// src/components/checkout-login-prompt.tsx
|
|
14837
|
-
import { cn as
|
|
14838
|
-
import { Fragment as Fragment3, jsx as
|
|
14908
|
+
import { cn as cn17 } from "@reblu/site-ui/utils";
|
|
14909
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
14839
14910
|
var DEFAULT_LABELS6 = {
|
|
14840
14911
|
title: "Identificaci\xF3n",
|
|
14841
14912
|
description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
|
|
@@ -14862,39 +14933,39 @@ function CheckoutLoginPrompt({
|
|
|
14862
14933
|
if (!open) return null;
|
|
14863
14934
|
const t = { ...DEFAULT_LABELS6, ...labels };
|
|
14864
14935
|
const isValidEmail = EMAIL_PATTERN.test(email.trim());
|
|
14865
|
-
return /* @__PURE__ */
|
|
14866
|
-
/* @__PURE__ */
|
|
14867
|
-
/* @__PURE__ */
|
|
14936
|
+
return /* @__PURE__ */ jsxs18(Fragment3, { children: [
|
|
14937
|
+
/* @__PURE__ */ jsx20("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
|
|
14938
|
+
/* @__PURE__ */ jsxs18(
|
|
14868
14939
|
"div",
|
|
14869
14940
|
{
|
|
14870
14941
|
role: "dialog",
|
|
14871
14942
|
"aria-modal": "true",
|
|
14872
14943
|
"aria-labelledby": "checkout-login-prompt-title",
|
|
14873
14944
|
"data-slot": "checkout-login-prompt",
|
|
14874
|
-
className:
|
|
14945
|
+
className: cn17(
|
|
14875
14946
|
"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",
|
|
14876
14947
|
className
|
|
14877
14948
|
),
|
|
14878
14949
|
children: [
|
|
14879
|
-
/* @__PURE__ */
|
|
14880
|
-
/* @__PURE__ */
|
|
14881
|
-
/* @__PURE__ */
|
|
14882
|
-
/* @__PURE__ */
|
|
14950
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-start justify-between gap-3", children: [
|
|
14951
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
14952
|
+
/* @__PURE__ */ jsx20("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
|
|
14953
|
+
/* @__PURE__ */ jsx20("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
|
|
14883
14954
|
] }),
|
|
14884
|
-
/* @__PURE__ */
|
|
14955
|
+
/* @__PURE__ */ jsx20(
|
|
14885
14956
|
"button",
|
|
14886
14957
|
{
|
|
14887
14958
|
type: "button",
|
|
14888
14959
|
onClick: onClose,
|
|
14889
14960
|
"aria-label": t.close,
|
|
14890
|
-
className: "flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
14961
|
+
className: "flex h-8 w-8 flex-shrink-0 cursor-pointer items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
14891
14962
|
children: "\u2715"
|
|
14892
14963
|
}
|
|
14893
14964
|
)
|
|
14894
14965
|
] }),
|
|
14895
|
-
/* @__PURE__ */
|
|
14896
|
-
/* @__PURE__ */
|
|
14897
|
-
/* @__PURE__ */
|
|
14966
|
+
/* @__PURE__ */ jsxs18("div", { className: "space-y-2", children: [
|
|
14967
|
+
/* @__PURE__ */ jsx20("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
|
|
14968
|
+
/* @__PURE__ */ jsx20(
|
|
14898
14969
|
"input",
|
|
14899
14970
|
{
|
|
14900
14971
|
id: "checkout-login-prompt-email",
|
|
@@ -14903,34 +14974,34 @@ function CheckoutLoginPrompt({
|
|
|
14903
14974
|
value: email,
|
|
14904
14975
|
onChange: (e) => onEmailChange(e.target.value),
|
|
14905
14976
|
placeholder: t.emailPlaceholder,
|
|
14906
|
-
className:
|
|
14977
|
+
className: cn17(
|
|
14907
14978
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
14908
14979
|
error ? "border-destructive" : "border-border focus:border-primary"
|
|
14909
14980
|
)
|
|
14910
14981
|
}
|
|
14911
14982
|
),
|
|
14912
|
-
error && /* @__PURE__ */
|
|
14983
|
+
error && /* @__PURE__ */ jsx20("p", { className: "text-xs text-destructive", children: error })
|
|
14913
14984
|
] }),
|
|
14914
|
-
/* @__PURE__ */
|
|
14915
|
-
/* @__PURE__ */
|
|
14985
|
+
/* @__PURE__ */ jsxs18("div", { className: "space-y-2", children: [
|
|
14986
|
+
/* @__PURE__ */ jsx20(
|
|
14916
14987
|
"button",
|
|
14917
14988
|
{
|
|
14918
14989
|
type: "button",
|
|
14919
14990
|
onClick: onSubmitEmail,
|
|
14920
14991
|
disabled: checking || !isValidEmail,
|
|
14921
|
-
className:
|
|
14922
|
-
"flex w-full items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
|
|
14992
|
+
className: cn17(
|
|
14993
|
+
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
|
|
14923
14994
|
checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
14924
14995
|
),
|
|
14925
14996
|
children: checking ? t.checking : t.continueWithEmail
|
|
14926
14997
|
}
|
|
14927
14998
|
),
|
|
14928
|
-
/* @__PURE__ */
|
|
14999
|
+
/* @__PURE__ */ jsx20(
|
|
14929
15000
|
"button",
|
|
14930
15001
|
{
|
|
14931
15002
|
type: "button",
|
|
14932
15003
|
onClick: onContinueAsGuest,
|
|
14933
|
-
className: "flex w-full items-center justify-center gap-2 rounded-xl bg-muted px-4 py-2.5 text-sm font-semibold text-muted-foreground transition-colors hover:bg-muted/70",
|
|
15004
|
+
className: "flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl bg-muted px-4 py-2.5 text-sm font-semibold text-muted-foreground transition-colors hover:bg-muted/70",
|
|
14934
15005
|
children: t.continueAsGuest
|
|
14935
15006
|
}
|
|
14936
15007
|
)
|
|
@@ -14942,9 +15013,9 @@ function CheckoutLoginPrompt({
|
|
|
14942
15013
|
}
|
|
14943
15014
|
|
|
14944
15015
|
// src/components/checkout-form.tsx
|
|
14945
|
-
import { cn as
|
|
15016
|
+
import { cn as cn18 } from "@reblu/site-ui/utils";
|
|
14946
15017
|
import { PhoneInput } from "@reblu/site-ui/phone-input";
|
|
14947
|
-
import { Fragment as Fragment4, jsx as
|
|
15018
|
+
import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
14948
15019
|
var DEFAULT_LABELS7 = {
|
|
14949
15020
|
contactTitle: "Datos de contacto",
|
|
14950
15021
|
nameLabel: "Nombre completo",
|
|
@@ -14998,22 +15069,22 @@ function CheckoutForm({
|
|
|
14998
15069
|
event.preventDefault();
|
|
14999
15070
|
if (discountCode.trim() && !discountApplying) onApplyDiscount();
|
|
15000
15071
|
}
|
|
15001
|
-
return /* @__PURE__ */
|
|
15072
|
+
return /* @__PURE__ */ jsxs19(Fragment4, { children: [
|
|
15002
15073
|
loginPrompt,
|
|
15003
|
-
/* @__PURE__ */
|
|
15074
|
+
/* @__PURE__ */ jsxs19(
|
|
15004
15075
|
"form",
|
|
15005
15076
|
{
|
|
15006
15077
|
"data-testid": "checkout-form",
|
|
15007
15078
|
onSubmit,
|
|
15008
|
-
className:
|
|
15079
|
+
className: cn18("space-y-8", className),
|
|
15009
15080
|
"data-slot": "checkout-form",
|
|
15010
15081
|
children: [
|
|
15011
|
-
/* @__PURE__ */
|
|
15012
|
-
/* @__PURE__ */
|
|
15013
|
-
/* @__PURE__ */
|
|
15014
|
-
/* @__PURE__ */
|
|
15015
|
-
/* @__PURE__ */
|
|
15016
|
-
/* @__PURE__ */
|
|
15082
|
+
/* @__PURE__ */ jsxs19("section", { className: "space-y-4", children: [
|
|
15083
|
+
/* @__PURE__ */ jsx21("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
|
|
15084
|
+
/* @__PURE__ */ jsxs19("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
15085
|
+
/* @__PURE__ */ jsxs19("div", { className: "space-y-1", children: [
|
|
15086
|
+
/* @__PURE__ */ jsx21("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
|
|
15087
|
+
/* @__PURE__ */ jsx21(
|
|
15017
15088
|
"input",
|
|
15018
15089
|
{
|
|
15019
15090
|
id: "checkout-form-name",
|
|
@@ -15022,17 +15093,17 @@ function CheckoutForm({
|
|
|
15022
15093
|
value: contact.name,
|
|
15023
15094
|
onChange: (e) => patchContact({ name: e.target.value }),
|
|
15024
15095
|
placeholder: t.namePlaceholder,
|
|
15025
|
-
className:
|
|
15096
|
+
className: cn18(
|
|
15026
15097
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15027
15098
|
contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
|
|
15028
15099
|
)
|
|
15029
15100
|
}
|
|
15030
15101
|
),
|
|
15031
|
-
contactErrors?.name && /* @__PURE__ */
|
|
15102
|
+
contactErrors?.name && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: contactErrors.name })
|
|
15032
15103
|
] }),
|
|
15033
|
-
/* @__PURE__ */
|
|
15034
|
-
/* @__PURE__ */
|
|
15035
|
-
/* @__PURE__ */
|
|
15104
|
+
/* @__PURE__ */ jsxs19("div", { className: "space-y-1", children: [
|
|
15105
|
+
/* @__PURE__ */ jsx21("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
|
|
15106
|
+
/* @__PURE__ */ jsx21(
|
|
15036
15107
|
"input",
|
|
15037
15108
|
{
|
|
15038
15109
|
id: "checkout-form-email",
|
|
@@ -15041,15 +15112,15 @@ function CheckoutForm({
|
|
|
15041
15112
|
value: contact.email,
|
|
15042
15113
|
onChange: (e) => patchContact({ email: e.target.value }),
|
|
15043
15114
|
placeholder: t.emailPlaceholder,
|
|
15044
|
-
className:
|
|
15115
|
+
className: cn18(
|
|
15045
15116
|
"w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
|
|
15046
15117
|
contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
|
|
15047
15118
|
)
|
|
15048
15119
|
}
|
|
15049
15120
|
),
|
|
15050
|
-
contactErrors?.email && /* @__PURE__ */
|
|
15121
|
+
contactErrors?.email && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: contactErrors.email })
|
|
15051
15122
|
] }),
|
|
15052
|
-
/* @__PURE__ */
|
|
15123
|
+
/* @__PURE__ */ jsx21("div", { className: "space-y-1", children: /* @__PURE__ */ jsx21(
|
|
15053
15124
|
PhoneInput,
|
|
15054
15125
|
{
|
|
15055
15126
|
id: "checkout-form-phone",
|
|
@@ -15063,27 +15134,27 @@ function CheckoutForm({
|
|
|
15063
15134
|
] })
|
|
15064
15135
|
] }),
|
|
15065
15136
|
children2,
|
|
15066
|
-
generalError ? /* @__PURE__ */
|
|
15067
|
-
/* @__PURE__ */
|
|
15068
|
-
/* @__PURE__ */
|
|
15069
|
-
appliedDiscount ? /* @__PURE__ */
|
|
15070
|
-
/* @__PURE__ */
|
|
15071
|
-
/* @__PURE__ */
|
|
15072
|
-
/* @__PURE__ */
|
|
15137
|
+
generalError ? /* @__PURE__ */ jsx21("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
|
|
15138
|
+
/* @__PURE__ */ jsxs19("section", { className: "space-y-3", children: [
|
|
15139
|
+
/* @__PURE__ */ jsx21("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
|
|
15140
|
+
appliedDiscount ? /* @__PURE__ */ jsxs19("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: [
|
|
15141
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
|
|
15142
|
+
/* @__PURE__ */ jsx21("span", { className: "font-semibold", children: appliedDiscount.code }),
|
|
15143
|
+
/* @__PURE__ */ jsx21("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
|
|
15073
15144
|
] }),
|
|
15074
|
-
/* @__PURE__ */
|
|
15145
|
+
/* @__PURE__ */ jsx21(
|
|
15075
15146
|
"button",
|
|
15076
15147
|
{
|
|
15077
15148
|
type: "button",
|
|
15078
15149
|
onClick: onRemoveDiscount,
|
|
15079
15150
|
"aria-label": t.removeDiscount,
|
|
15080
|
-
className: "text-green-600 transition-colors hover:text-green-800 dark:text-green-400 dark:hover:text-green-200",
|
|
15151
|
+
className: "cursor-pointer text-green-600 transition-colors hover:text-green-800 dark:text-green-400 dark:hover:text-green-200",
|
|
15081
15152
|
children: t.removeDiscount
|
|
15082
15153
|
}
|
|
15083
15154
|
)
|
|
15084
|
-
] }) : /* @__PURE__ */
|
|
15085
|
-
/* @__PURE__ */
|
|
15086
|
-
/* @__PURE__ */
|
|
15155
|
+
] }) : /* @__PURE__ */ jsxs19("div", { className: "flex gap-2", children: [
|
|
15156
|
+
/* @__PURE__ */ jsx21("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
|
|
15157
|
+
/* @__PURE__ */ jsx21(
|
|
15087
15158
|
"input",
|
|
15088
15159
|
{
|
|
15089
15160
|
id: "checkout-form-discount-code",
|
|
@@ -15095,26 +15166,26 @@ function CheckoutForm({
|
|
|
15095
15166
|
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"
|
|
15096
15167
|
}
|
|
15097
15168
|
),
|
|
15098
|
-
/* @__PURE__ */
|
|
15169
|
+
/* @__PURE__ */ jsx21(
|
|
15099
15170
|
"button",
|
|
15100
15171
|
{
|
|
15101
15172
|
type: "button",
|
|
15102
15173
|
onClick: onApplyDiscount,
|
|
15103
15174
|
disabled: !discountCode.trim() || discountApplying,
|
|
15104
|
-
className: "rounded-lg bg-muted px-4 py-2 text-sm font-medium text-foreground transition hover:bg-muted/70 disabled:cursor-not-allowed disabled:opacity-50",
|
|
15175
|
+
className: "cursor-pointer rounded-lg bg-muted px-4 py-2 text-sm font-medium text-foreground transition hover:bg-muted/70 disabled:cursor-not-allowed disabled:opacity-50",
|
|
15105
15176
|
children: discountApplying ? t.applyingDiscount : t.applyDiscount
|
|
15106
15177
|
}
|
|
15107
15178
|
)
|
|
15108
15179
|
] }),
|
|
15109
|
-
discountError && /* @__PURE__ */
|
|
15180
|
+
discountError && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: discountError })
|
|
15110
15181
|
] }),
|
|
15111
|
-
/* @__PURE__ */
|
|
15182
|
+
/* @__PURE__ */ jsx21(
|
|
15112
15183
|
"button",
|
|
15113
15184
|
{
|
|
15114
15185
|
type: "submit",
|
|
15115
15186
|
disabled: submitting || submitDisabled,
|
|
15116
|
-
className:
|
|
15117
|
-
"flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
|
|
15187
|
+
className: cn18(
|
|
15188
|
+
"flex w-full cursor-pointer items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
|
|
15118
15189
|
submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
|
|
15119
15190
|
),
|
|
15120
15191
|
children: submitting ? t.submitting : t.submit
|
|
@@ -15127,11 +15198,11 @@ function CheckoutForm({
|
|
|
15127
15198
|
}
|
|
15128
15199
|
|
|
15129
15200
|
// src/components/order-confirmation.tsx
|
|
15130
|
-
import { cn as
|
|
15201
|
+
import { cn as cn20 } from "@reblu/site-ui/utils";
|
|
15131
15202
|
|
|
15132
15203
|
// src/components/order-invoice-link.tsx
|
|
15133
|
-
import { cn as
|
|
15134
|
-
import { jsx as
|
|
15204
|
+
import { cn as cn19 } from "@reblu/site-ui/utils";
|
|
15205
|
+
import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
15135
15206
|
var DEFAULT_LABELS8 = {
|
|
15136
15207
|
linkLabel: "Descargar la factura {number}",
|
|
15137
15208
|
signInHint: "Te pediremos que inicies sesi\xF3n para abrirla."
|
|
@@ -15139,8 +15210,8 @@ var DEFAULT_LABELS8 = {
|
|
|
15139
15210
|
function OrderInvoiceLink({ invoice, labels, className }) {
|
|
15140
15211
|
if (!invoice) return null;
|
|
15141
15212
|
const t = { ...DEFAULT_LABELS8, ...labels };
|
|
15142
|
-
return /* @__PURE__ */
|
|
15143
|
-
/* @__PURE__ */
|
|
15213
|
+
return /* @__PURE__ */ jsxs20("div", { className: cn19("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
|
|
15214
|
+
/* @__PURE__ */ jsx22(
|
|
15144
15215
|
"a",
|
|
15145
15216
|
{
|
|
15146
15217
|
href: invoice.url,
|
|
@@ -15148,12 +15219,12 @@ function OrderInvoiceLink({ invoice, labels, className }) {
|
|
|
15148
15219
|
children: t.linkLabel.replace("{number}", invoice.number)
|
|
15149
15220
|
}
|
|
15150
15221
|
),
|
|
15151
|
-
/* @__PURE__ */
|
|
15222
|
+
/* @__PURE__ */ jsx22("p", { className: "text-muted-foreground", children: t.signInHint })
|
|
15152
15223
|
] });
|
|
15153
15224
|
}
|
|
15154
15225
|
|
|
15155
15226
|
// src/components/order-confirmation.tsx
|
|
15156
|
-
import { jsx as
|
|
15227
|
+
import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
15157
15228
|
var DEFAULT_LABELS9 = {
|
|
15158
15229
|
pollingTitle: "Confirmando tu pedido\u2026",
|
|
15159
15230
|
pollingDescription: "Estamos procesando el pago, un momento\u2026",
|
|
@@ -15217,43 +15288,43 @@ function OrderConfirmation({
|
|
|
15217
15288
|
const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
|
|
15218
15289
|
const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
|
|
15219
15290
|
const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
|
|
15220
|
-
return /* @__PURE__ */
|
|
15221
|
-
/* @__PURE__ */
|
|
15222
|
-
/* @__PURE__ */
|
|
15223
|
-
showFullOrderSummary && order && /* @__PURE__ */
|
|
15224
|
-
/* @__PURE__ */
|
|
15225
|
-
/* @__PURE__ */
|
|
15226
|
-
/* @__PURE__ */
|
|
15291
|
+
return /* @__PURE__ */ jsxs21("div", { className: cn20("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
|
|
15292
|
+
/* @__PURE__ */ jsx23("h1", { className: "text-3xl font-bold", children: title }),
|
|
15293
|
+
/* @__PURE__ */ jsx23("p", { className: "text-lg text-muted-foreground", children: description }),
|
|
15294
|
+
showFullOrderSummary && order && /* @__PURE__ */ jsxs21("div", { className: "space-y-6", children: [
|
|
15295
|
+
/* @__PURE__ */ jsxs21("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
15296
|
+
/* @__PURE__ */ jsx23("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
|
|
15297
|
+
/* @__PURE__ */ jsx23("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
|
|
15227
15298
|
] }),
|
|
15228
|
-
/* @__PURE__ */
|
|
15229
|
-
order.items.map((item, idx) => /* @__PURE__ */
|
|
15299
|
+
/* @__PURE__ */ jsxs21("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
|
|
15300
|
+
order.items.map((item, idx) => /* @__PURE__ */ jsxs21(
|
|
15230
15301
|
"div",
|
|
15231
15302
|
{
|
|
15232
15303
|
className: "flex justify-between gap-4 text-sm",
|
|
15233
15304
|
children: [
|
|
15234
|
-
/* @__PURE__ */
|
|
15305
|
+
/* @__PURE__ */ jsxs21("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
|
|
15235
15306
|
item.product.name,
|
|
15236
15307
|
item.variant ? ` (${item.variant.name})` : "",
|
|
15237
15308
|
" x",
|
|
15238
15309
|
item.quantity
|
|
15239
15310
|
] }),
|
|
15240
|
-
/* @__PURE__ */
|
|
15311
|
+
/* @__PURE__ */ jsx23("span", { children: formatPrice(item.total, currencyCode, locale) })
|
|
15241
15312
|
]
|
|
15242
15313
|
},
|
|
15243
15314
|
idx
|
|
15244
15315
|
)),
|
|
15245
|
-
/* @__PURE__ */
|
|
15246
|
-
/* @__PURE__ */
|
|
15247
|
-
/* @__PURE__ */
|
|
15316
|
+
/* @__PURE__ */ jsx23("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs21("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
|
|
15317
|
+
/* @__PURE__ */ jsx23("span", { children: t.totalLabel }),
|
|
15318
|
+
/* @__PURE__ */ jsx23("span", { children: formatPrice(order.total, currencyCode, locale) })
|
|
15248
15319
|
] }) })
|
|
15249
15320
|
] }),
|
|
15250
|
-
/* @__PURE__ */
|
|
15321
|
+
/* @__PURE__ */ jsxs21("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
|
|
15251
15322
|
t.confirmationEmailPrefix,
|
|
15252
15323
|
" ",
|
|
15253
|
-
/* @__PURE__ */
|
|
15324
|
+
/* @__PURE__ */ jsx23("span", { className: "font-medium text-foreground", children: order.customerEmail }),
|
|
15254
15325
|
"."
|
|
15255
15326
|
] }),
|
|
15256
|
-
/* @__PURE__ */
|
|
15327
|
+
/* @__PURE__ */ jsx23(
|
|
15257
15328
|
OrderInvoiceLink,
|
|
15258
15329
|
{
|
|
15259
15330
|
invoice: order.invoice,
|
|
@@ -15261,11 +15332,11 @@ function OrderConfirmation({
|
|
|
15261
15332
|
}
|
|
15262
15333
|
)
|
|
15263
15334
|
] }),
|
|
15264
|
-
showOrderReference && order && /* @__PURE__ */
|
|
15265
|
-
/* @__PURE__ */
|
|
15266
|
-
/* @__PURE__ */
|
|
15335
|
+
showOrderReference && order && /* @__PURE__ */ jsxs21("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
15336
|
+
/* @__PURE__ */ jsx23("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
|
|
15337
|
+
/* @__PURE__ */ jsx23("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
|
|
15267
15338
|
] }),
|
|
15268
|
-
status === "failed" && cartHref && /* @__PURE__ */
|
|
15339
|
+
status === "failed" && cartHref && /* @__PURE__ */ jsx23(
|
|
15269
15340
|
"a",
|
|
15270
15341
|
{
|
|
15271
15342
|
href: cartHref,
|
|
@@ -15273,25 +15344,25 @@ function OrderConfirmation({
|
|
|
15273
15344
|
children: t.backToCartLabel
|
|
15274
15345
|
}
|
|
15275
15346
|
),
|
|
15276
|
-
showRecheck && /* @__PURE__ */
|
|
15347
|
+
showRecheck && /* @__PURE__ */ jsx23(
|
|
15277
15348
|
"button",
|
|
15278
15349
|
{
|
|
15279
15350
|
type: "button",
|
|
15280
15351
|
onClick: onRecheck,
|
|
15281
|
-
className: "inline-flex items-center justify-center rounded-xl bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90",
|
|
15352
|
+
className: "inline-flex cursor-pointer items-center justify-center rounded-xl bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90",
|
|
15282
15353
|
children: t.recheckLabel
|
|
15283
15354
|
}
|
|
15284
15355
|
),
|
|
15285
|
-
showSessionReference && /* @__PURE__ */
|
|
15286
|
-
/* @__PURE__ */
|
|
15287
|
-
/* @__PURE__ */
|
|
15356
|
+
showSessionReference && /* @__PURE__ */ jsxs21("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
|
|
15357
|
+
/* @__PURE__ */ jsx23("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
|
|
15358
|
+
/* @__PURE__ */ jsx23("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
|
|
15288
15359
|
] })
|
|
15289
15360
|
] });
|
|
15290
15361
|
}
|
|
15291
15362
|
|
|
15292
15363
|
// src/components/full-invoice-fields.tsx
|
|
15293
|
-
import { cn as
|
|
15294
|
-
import { jsx as
|
|
15364
|
+
import { cn as cn21 } from "@reblu/site-ui/utils";
|
|
15365
|
+
import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
15295
15366
|
var EMPTY_FULL_INVOICE_VALUE = {
|
|
15296
15367
|
wantsFullInvoice: false,
|
|
15297
15368
|
billingIdType: "NIF",
|
|
@@ -15408,12 +15479,12 @@ function FullInvoiceFields({
|
|
|
15408
15479
|
const showFields = value.wantsFullInvoice || overCap;
|
|
15409
15480
|
const isSpanishNif = value.billingIdType === "NIF";
|
|
15410
15481
|
const set = (key2, next2) => onChange({ ...value, [key2]: next2 });
|
|
15411
|
-
const error = (key2) => errors[key2] ? /* @__PURE__ */
|
|
15482
|
+
const error = (key2) => errors[key2] ? /* @__PURE__ */ jsx24("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
|
|
15412
15483
|
const invalid2 = (key2) => errors[key2] ? { "aria-invalid": true, "aria-describedby": `full-invoice-${key2}-error` } : {};
|
|
15413
|
-
return /* @__PURE__ */
|
|
15414
|
-
overCap ? /* @__PURE__ */
|
|
15415
|
-
/* @__PURE__ */
|
|
15416
|
-
/* @__PURE__ */
|
|
15484
|
+
return /* @__PURE__ */ jsxs22("section", { className: cn21("space-y-4", className), "data-slot": "full-invoice-fields", children: [
|
|
15485
|
+
overCap ? /* @__PURE__ */ jsx24("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15486
|
+
/* @__PURE__ */ jsxs22("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
|
|
15487
|
+
/* @__PURE__ */ jsx24(
|
|
15417
15488
|
"input",
|
|
15418
15489
|
{
|
|
15419
15490
|
type: "checkbox",
|
|
@@ -15423,12 +15494,12 @@ function FullInvoiceFields({
|
|
|
15423
15494
|
),
|
|
15424
15495
|
t.toggle
|
|
15425
15496
|
] }),
|
|
15426
|
-
/* @__PURE__ */
|
|
15497
|
+
/* @__PURE__ */ jsx24("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
|
|
15427
15498
|
] }),
|
|
15428
|
-
showFields && /* @__PURE__ */
|
|
15429
|
-
/* @__PURE__ */
|
|
15430
|
-
/* @__PURE__ */
|
|
15431
|
-
/* @__PURE__ */
|
|
15499
|
+
showFields && /* @__PURE__ */ jsxs22("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
15500
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15501
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
|
|
15502
|
+
/* @__PURE__ */ jsx24(
|
|
15432
15503
|
"select",
|
|
15433
15504
|
{
|
|
15434
15505
|
id: "full-invoice-id-type",
|
|
@@ -15437,14 +15508,14 @@ function FullInvoiceFields({
|
|
|
15437
15508
|
value: value.billingIdType,
|
|
15438
15509
|
onChange: (e) => set("billingIdType", e.target.value),
|
|
15439
15510
|
...invalid2("billingIdType"),
|
|
15440
|
-
children: ID_TYPES.map((type) => /* @__PURE__ */
|
|
15511
|
+
children: ID_TYPES.map((type) => /* @__PURE__ */ jsx24("option", { value: type, children: t.idTypeOptions[type] }, type))
|
|
15441
15512
|
}
|
|
15442
15513
|
),
|
|
15443
15514
|
error("billingIdType")
|
|
15444
15515
|
] }),
|
|
15445
|
-
!isSpanishNif && /* @__PURE__ */
|
|
15446
|
-
/* @__PURE__ */
|
|
15447
|
-
/* @__PURE__ */
|
|
15516
|
+
!isSpanishNif && /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15517
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
|
|
15518
|
+
/* @__PURE__ */ jsxs22(
|
|
15448
15519
|
"select",
|
|
15449
15520
|
{
|
|
15450
15521
|
id: "full-invoice-id-country",
|
|
@@ -15454,16 +15525,16 @@ function FullInvoiceFields({
|
|
|
15454
15525
|
onChange: (e) => set("billingIdCountry", e.target.value),
|
|
15455
15526
|
...invalid2("billingIdCountry"),
|
|
15456
15527
|
children: [
|
|
15457
|
-
/* @__PURE__ */
|
|
15458
|
-
countries.map((c) => /* @__PURE__ */
|
|
15528
|
+
/* @__PURE__ */ jsx24("option", { value: "", disabled: true, children: t.chooseCountry }),
|
|
15529
|
+
countries.map((c) => /* @__PURE__ */ jsx24("option", { value: c.code, children: c.name }, c.code))
|
|
15459
15530
|
]
|
|
15460
15531
|
}
|
|
15461
15532
|
),
|
|
15462
15533
|
error("billingIdCountry")
|
|
15463
15534
|
] }),
|
|
15464
|
-
/* @__PURE__ */
|
|
15465
|
-
/* @__PURE__ */
|
|
15466
|
-
/* @__PURE__ */
|
|
15535
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15536
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
|
|
15537
|
+
/* @__PURE__ */ jsx24(
|
|
15467
15538
|
"input",
|
|
15468
15539
|
{
|
|
15469
15540
|
id: "full-invoice-nif",
|
|
@@ -15476,9 +15547,9 @@ function FullInvoiceFields({
|
|
|
15476
15547
|
),
|
|
15477
15548
|
error("billingNif")
|
|
15478
15549
|
] }),
|
|
15479
|
-
/* @__PURE__ */
|
|
15480
|
-
/* @__PURE__ */
|
|
15481
|
-
/* @__PURE__ */
|
|
15550
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15551
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
|
|
15552
|
+
/* @__PURE__ */ jsx24(
|
|
15482
15553
|
"input",
|
|
15483
15554
|
{
|
|
15484
15555
|
id: "full-invoice-name",
|
|
@@ -15491,9 +15562,9 @@ function FullInvoiceFields({
|
|
|
15491
15562
|
),
|
|
15492
15563
|
error("billingName")
|
|
15493
15564
|
] }),
|
|
15494
|
-
/* @__PURE__ */
|
|
15495
|
-
/* @__PURE__ */
|
|
15496
|
-
/* @__PURE__ */
|
|
15565
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1 sm:col-span-2", children: [
|
|
15566
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
|
|
15567
|
+
/* @__PURE__ */ jsx24(
|
|
15497
15568
|
"input",
|
|
15498
15569
|
{
|
|
15499
15570
|
id: "full-invoice-street",
|
|
@@ -15505,9 +15576,9 @@ function FullInvoiceFields({
|
|
|
15505
15576
|
}
|
|
15506
15577
|
)
|
|
15507
15578
|
] }),
|
|
15508
|
-
/* @__PURE__ */
|
|
15509
|
-
/* @__PURE__ */
|
|
15510
|
-
/* @__PURE__ */
|
|
15579
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15580
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
|
|
15581
|
+
/* @__PURE__ */ jsx24(
|
|
15511
15582
|
"input",
|
|
15512
15583
|
{
|
|
15513
15584
|
id: "full-invoice-postal-code",
|
|
@@ -15518,9 +15589,9 @@ function FullInvoiceFields({
|
|
|
15518
15589
|
}
|
|
15519
15590
|
)
|
|
15520
15591
|
] }),
|
|
15521
|
-
/* @__PURE__ */
|
|
15522
|
-
/* @__PURE__ */
|
|
15523
|
-
/* @__PURE__ */
|
|
15592
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15593
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
|
|
15594
|
+
/* @__PURE__ */ jsx24(
|
|
15524
15595
|
"input",
|
|
15525
15596
|
{
|
|
15526
15597
|
id: "full-invoice-city",
|
|
@@ -15531,9 +15602,9 @@ function FullInvoiceFields({
|
|
|
15531
15602
|
}
|
|
15532
15603
|
)
|
|
15533
15604
|
] }),
|
|
15534
|
-
/* @__PURE__ */
|
|
15535
|
-
/* @__PURE__ */
|
|
15536
|
-
/* @__PURE__ */
|
|
15605
|
+
/* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
|
|
15606
|
+
/* @__PURE__ */ jsx24("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
|
|
15607
|
+
/* @__PURE__ */ jsx24(
|
|
15537
15608
|
"select",
|
|
15538
15609
|
{
|
|
15539
15610
|
id: "full-invoice-country",
|
|
@@ -15541,11 +15612,11 @@ function FullInvoiceFields({
|
|
|
15541
15612
|
required: true,
|
|
15542
15613
|
value: value.country,
|
|
15543
15614
|
onChange: (e) => set("country", e.target.value),
|
|
15544
|
-
children: countries.map((c) => /* @__PURE__ */
|
|
15615
|
+
children: countries.map((c) => /* @__PURE__ */ jsx24("option", { value: c.code, children: c.name }, c.code))
|
|
15545
15616
|
}
|
|
15546
15617
|
)
|
|
15547
15618
|
] }),
|
|
15548
|
-
/* @__PURE__ */
|
|
15619
|
+
/* @__PURE__ */ jsx24("div", { className: "sm:col-span-2", children: error("address") })
|
|
15549
15620
|
] })
|
|
15550
15621
|
] });
|
|
15551
15622
|
}
|
|
@@ -15580,6 +15651,7 @@ export {
|
|
|
15580
15651
|
ParentPage,
|
|
15581
15652
|
ProductCard,
|
|
15582
15653
|
ProductTrustItems,
|
|
15654
|
+
ProfessionalFields,
|
|
15583
15655
|
ProfileCard,
|
|
15584
15656
|
SafeHtml,
|
|
15585
15657
|
ShopFilters,
|