@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/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 parse3(html5, options) {
13135
- return domToReact(htmlToDOM(html5, HTML_TO_DOM_OPTIONS), options);
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, buildOptions(headingOffset, images)) });
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({ html: html5, className, headingOffset = 0 }) {
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, buildOptions(headingOffset)) });
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({ name, role, imageUrl, specialties = [], bio, href, className }) {
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__ */ jsxs7(
13693
+ return /* @__PURE__ */ jsxs8(
13625
13694
  "article",
13626
13695
  {
13627
- className: cn6(
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__ */ jsx7("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx7("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx7("span", { className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground", "aria-hidden": "true", children: initials(name) }) }),
13634
- /* @__PURE__ */ jsxs7("div", { className: "space-y-1", children: [
13635
- /* @__PURE__ */ jsx7("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx7(
13636
- NameTag,
13637
- {
13638
- ...href ? { href, className: "transition-colors hover:text-primary" } : {},
13639
- children: name
13640
- }
13641
- ) }),
13642
- role && /* @__PURE__ */ jsx7("p", { className: "text-sm text-muted-foreground", children: role })
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
- specialties.length > 0 && /* @__PURE__ */ jsx7("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx7(
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__ */ jsx7("p", { className: "text-sm text-muted-foreground", children: bio })
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 cn7 } from "@reblu/site-ui/utils";
13660
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsxs8(
13735
+ return /* @__PURE__ */ jsxs9(
13665
13736
  "article",
13666
13737
  {
13667
- className: cn7(
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__ */ jsx8("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx8(
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__ */ jsx8("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13682
- /* @__PURE__ */ jsxs8("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13683
- product.category && /* @__PURE__ */ jsx8("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 }),
13684
- /* @__PURE__ */ jsx8("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx8("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13685
- product.shortDescription && /* @__PURE__ */ jsx8("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13686
- /* @__PURE__ */ jsxs8("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13687
- /* @__PURE__ */ jsx8("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13688
- hasDiscount && /* @__PURE__ */ jsx8("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
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 jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsx9(List, { "data-slot": "product-trust-items", className: slotClassName("space-y-2.5", "", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs9("li", { className: slotClassName("flex items-center gap-3", "text-sm text-muted-foreground", itemClassName), children: [
13925
- /* @__PURE__ */ jsx9(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
13926
- /* @__PURE__ */ jsx9("span", { children: text3 })
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 cn8 } from "@reblu/site-ui/utils";
14002
+ import { cn as cn9 } from "@reblu/site-ui/utils";
13932
14003
 
13933
14004
  // src/components/_heading.tsx
13934
- import { jsx as jsx10 } from "react/jsx-runtime";
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__ */ jsx10(Tag, { className, children: children2 });
14015
+ return /* @__PURE__ */ jsx11(Tag, { className, children: children2 });
13945
14016
  }
13946
14017
 
13947
14018
  // src/components/faq-accordion.tsx
13948
- import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
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__ */ jsxs10("div", { className: cn8("space-y-4", className), "data-slot": "faq-accordion", children: [
13960
- heading && /* @__PURE__ */ jsx11(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13961
- /* @__PURE__ */ jsx11("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs10(
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__ */ jsxs10("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: [
13969
- questionHeadingLevel ? /* @__PURE__ */ jsx11(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx11("span", { children: item.q }),
13970
- /* @__PURE__ */ jsx11(
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__ */ jsx11("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
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 cn9 } from "@reblu/site-ui/utils";
13989
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
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__ */ jsx12(
14102
+ /* @__PURE__ */ jsx13(
14032
14103
  "img",
14033
14104
  {
14034
14105
  src,
14035
14106
  alt: badge.name,
14036
14107
  loading: "lazy",
14037
- className: cn9("h-12 w-auto object-contain", logoClassName)
14108
+ className: cn10("h-12 w-auto object-contain", logoClassName)
14038
14109
  }
14039
14110
  )
14040
14111
  );
14041
14112
  }
14042
- return /* @__PURE__ */ jsx12("span", { className: "text-sm font-medium", children: badge.name });
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__ */ jsxs11(
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: cn9("space-y-3", groupClassName),
14146
+ className: cn10("space-y-3", groupClassName),
14076
14147
  children: [
14077
- groupHeading ? /* @__PURE__ */ jsx12(
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__ */ jsx12("ul", { className: cn9("flex flex-wrap items-center gap-6", listClassName), children: items.map((badge) => {
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__ */ jsx12("li", { children: href ? /* @__PURE__ */ jsxs11("a", { href, target: "_blank", rel: "noopener noreferrer", className: "inline-flex", children: [
14092
- /* @__PURE__ */ jsx12(BadgeContent, { badge, logoClassName }),
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__ */ jsx12("span", { className: "sr-only", children: newWindowLabel })
14095
- ] }) : /* @__PURE__ */ jsx12(BadgeContent, { badge, logoClassName }) }, badge.id);
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__ */ jsx12("div", { "data-slot": "trust-badges", className: cn9("space-y-6", className), children: content });
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__ */ jsxs11(
14176
+ return /* @__PURE__ */ jsxs12(
14106
14177
  "section",
14107
14178
  {
14108
14179
  "data-slot": "trust-badges",
14109
14180
  "aria-labelledby": headingId,
14110
- className: cn9("space-y-6", className),
14181
+ className: cn10("space-y-6", className),
14111
14182
  children: [
14112
- /* @__PURE__ */ jsx12(
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 cn10 } from "@reblu/site-ui/utils";
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 jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
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__ */ jsxs12("div", { className: "space-y-4", children: [
14137
- /* @__PURE__ */ jsx13(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
14138
- subtitle && /* @__PURE__ */ jsx13("p", { className: "text-lg opacity-80", children: subtitle }),
14139
- imageUrl && /* @__PURE__ */ jsx13("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx13("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
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__ */ jsx13(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14214
+ return /* @__PURE__ */ jsx14(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
14144
14215
  }
14145
14216
  function FaqBlock({ block }) {
14146
- return /* @__PURE__ */ jsx13(FaqAccordion, { items: block.data.items });
14217
+ return /* @__PURE__ */ jsx14(FaqAccordion, { items: block.data.items });
14147
14218
  }
14148
14219
  function StatsBlock({ block }) {
14149
- return /* @__PURE__ */ jsx13("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs12("div", { className: "flex flex-col-reverse gap-1", children: [
14150
- /* @__PURE__ */ jsx13("dt", { className: "text-sm opacity-80", children: item.label }),
14151
- /* @__PURE__ */ jsx13("dd", { className: "text-3xl font-bold", children: item.value })
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__ */ jsxs12("figure", { className: "space-y-4", children: [
14157
- /* @__PURE__ */ jsx13("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx13("p", { children: quote }) }),
14158
- /* @__PURE__ */ jsxs12("figcaption", { className: "flex items-center gap-3", children: [
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__ */ jsx13(
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__ */ jsxs12("span", { children: [
14170
- /* @__PURE__ */ jsx13("span", { className: "font-semibold", children: author }),
14171
- role && /* @__PURE__ */ jsx13("span", { className: "block text-sm opacity-80", children: role })
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__ */ jsx13("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx13("li", { children: item.text }, i)) });
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__ */ jsx13(
14255
+ return /* @__PURE__ */ jsx14(
14185
14256
  "div",
14186
14257
  {
14187
- className: cn10(
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__ */ jsxs12("figure", { className: "space-y-1", children: [
14192
- /* @__PURE__ */ jsx13("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx13(
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__ */ jsx13("figcaption", { className: "text-sm opacity-80", children: img.caption })
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__ */ jsxs12(
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__ */ jsx13("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx13(
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__ */ jsxs12("div", { className: "space-y-1 p-4", children: [
14227
- /* @__PURE__ */ jsx13(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
14228
- resolved.role && /* @__PURE__ */ jsx13("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
14229
- resolved.excerpt && /* @__PURE__ */ jsx13("p", { className: "text-muted-foreground", children: resolved.excerpt })
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__ */ jsx13(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
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__ */ jsx13(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
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__ */ jsx13("div", { className: "pt-2", children: /* @__PURE__ */ jsx13(
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: cn10(buttonVariants2({ variant, size: "default" })),
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__ */ jsxs12(
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: cn10("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14411
+ className: cn11("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
14341
14412
  children: [
14342
- block.heading && /* @__PURE__ */ jsx13(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx13("span", { id: headingId, children: block.heading }) }),
14343
- /* @__PURE__ */ jsx13(
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__ */ jsx13(SectionCta2, { cta: block.cta })
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__ */ jsx13("div", { className: cn10("space-y-12", className), "data-slot": "page-blocks", children: sections });
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 cn11 } from "@reblu/site-ui/utils";
14364
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
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__ */ jsx14(
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: cn11(
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__ */ jsxs13("fieldset", { className: "space-y-2", children: [
14427
- /* @__PURE__ */ jsx14("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14428
- /* @__PURE__ */ jsx14("div", { className: "flex flex-wrap gap-2", children: children2 })
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__ */ jsxs13("div", { className: cn11("space-y-6", className), "data-slot": "shop-filters", children: [
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__ */ jsxs13(FilterFieldset, { legend: axis.label, children: [
14455
- /* @__PURE__ */ jsx14(
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__ */ jsx14(
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__ */ jsx14(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14561
+ return /* @__PURE__ */ jsx15(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14491
14562
  const isActive = activeValues.includes(opt.value);
14492
- return /* @__PURE__ */ jsx14(
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__ */ jsx14(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
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__ */ jsx14(
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__ */ jsx14(
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__ */ jsx14(
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 cn12 } from "@reblu/site-ui/utils";
14551
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
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__ */ jsxs14("div", { className: cn12("space-y-4", className), "data-slot": "cart-line-list", children: [
14578
- /* @__PURE__ */ jsx15("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14579
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx15(
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__ */ jsx15("ul", { className: "space-y-4", children: items.map((item) => {
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__ */ jsxs14(
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__ */ jsx15("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx15("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
14599
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
14600
- /* @__PURE__ */ jsx15("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
14601
- item.variantName && /* @__PURE__ */ jsx15("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
14602
- /* @__PURE__ */ jsxs14("p", { className: "mt-1 text-sm text-muted-foreground", children: [
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__ */ jsxs14(
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__ */ jsx15(
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__ */ jsx15("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14626
- /* @__PURE__ */ jsx15(
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__ */ jsx15(
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__ */ jsx15(
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__ */ jsx15("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx15("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
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 cn13 } from "@reblu/site-ui/utils";
14670
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
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__ */ jsxs15(
14768
+ const breakdown = /* @__PURE__ */ jsxs16(
14698
14769
  "dl",
14699
14770
  {
14700
- className: cn13("space-y-2 text-sm", !hasNotice && className),
14771
+ className: cn14("space-y-2 text-sm", !hasNotice && className),
14701
14772
  "data-slot": "cart-summary",
14702
14773
  children: [
14703
- /* @__PURE__ */ jsxs15("div", { className: "flex justify-between text-muted-foreground", children: [
14704
- /* @__PURE__ */ jsx16("dt", { children: t.subtotal }),
14705
- /* @__PURE__ */ jsx16("dd", { children: formatPrice(subtotal, currencyCode, locale) })
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__ */ jsxs15("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14708
- /* @__PURE__ */ jsxs15("dt", { children: [
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__ */ jsxs15("dd", { children: [
14783
+ /* @__PURE__ */ jsxs16("dd", { children: [
14713
14784
  "-",
14714
14785
  formatPrice(discount, currencyCode, locale)
14715
14786
  ] })
14716
14787
  ] }),
14717
- shippingEnabled && /* @__PURE__ */ jsxs15("div", { className: "flex justify-between text-muted-foreground", children: [
14718
- /* @__PURE__ */ jsx16("dt", { children: t.shipping }),
14719
- /* @__PURE__ */ jsx16("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
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__ */ jsxs15("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14722
- /* @__PURE__ */ jsx16("dt", { children: t.total }),
14723
- /* @__PURE__ */ jsx16("dd", { children: formatPrice(total, currencyCode, locale) })
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__ */ jsxs15("div", { className: cn13("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14730
- /* @__PURE__ */ jsx16(
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 cn14 } from "@reblu/site-ui/utils";
14745
- import { jsx as jsx17 } from "react/jsx-runtime";
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__ */ jsx17(
14850
+ return /* @__PURE__ */ jsx18(
14780
14851
  "div",
14781
14852
  {
14782
14853
  role: "status",
14783
- className: cn14("rounded-lg border border-border bg-muted px-3 py-2 text-sm", 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__ */ jsx17("p", { children: messages[0] }) : /* @__PURE__ */ jsx17("ul", { className: "list-disc space-y-1 pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsx17("li", { children: message }, index)) })
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 cn15 } from "@reblu/site-ui/utils";
14792
- import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
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__ */ jsxs16(
14883
+ return /* @__PURE__ */ jsxs17(
14813
14884
  "div",
14814
14885
  {
14815
14886
  "data-slot": "added-to-cart-toast",
14816
14887
  "data-variant": variant,
14817
- className: cn15(
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__ */ jsx18("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14826
- /* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
14827
- /* @__PURE__ */ jsx18("p", { className: "truncate font-semibold text-foreground", children: productName }),
14828
- /* @__PURE__ */ jsx18("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
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__ */ jsx18("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx18("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
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 cn16 } from "@reblu/site-ui/utils";
14838
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
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__ */ jsxs17(Fragment3, { children: [
14866
- /* @__PURE__ */ jsx19("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14867
- /* @__PURE__ */ jsxs17(
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: cn16(
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__ */ jsxs17("div", { className: "flex items-start justify-between gap-3", children: [
14880
- /* @__PURE__ */ jsxs17("div", { children: [
14881
- /* @__PURE__ */ jsx19("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14882
- /* @__PURE__ */ jsx19("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
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__ */ jsx19(
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__ */ jsxs17("div", { className: "space-y-2", children: [
14896
- /* @__PURE__ */ jsx19("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14897
- /* @__PURE__ */ jsx19(
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: cn16(
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__ */ jsx19("p", { className: "text-xs text-destructive", children: error })
14983
+ error && /* @__PURE__ */ jsx20("p", { className: "text-xs text-destructive", children: error })
14913
14984
  ] }),
14914
- /* @__PURE__ */ jsxs17("div", { className: "space-y-2", children: [
14915
- /* @__PURE__ */ jsx19(
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: cn16(
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__ */ jsx19(
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 cn17 } from "@reblu/site-ui/utils";
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 jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
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__ */ jsxs18(Fragment4, { children: [
15072
+ return /* @__PURE__ */ jsxs19(Fragment4, { children: [
15002
15073
  loginPrompt,
15003
- /* @__PURE__ */ jsxs18(
15074
+ /* @__PURE__ */ jsxs19(
15004
15075
  "form",
15005
15076
  {
15006
15077
  "data-testid": "checkout-form",
15007
15078
  onSubmit,
15008
- className: cn17("space-y-8", className),
15079
+ className: cn18("space-y-8", className),
15009
15080
  "data-slot": "checkout-form",
15010
15081
  children: [
15011
- /* @__PURE__ */ jsxs18("section", { className: "space-y-4", children: [
15012
- /* @__PURE__ */ jsx20("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
15013
- /* @__PURE__ */ jsxs18("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15014
- /* @__PURE__ */ jsxs18("div", { className: "space-y-1", children: [
15015
- /* @__PURE__ */ jsx20("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
15016
- /* @__PURE__ */ jsx20(
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: cn17(
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__ */ jsx20("p", { className: "text-xs text-destructive", children: contactErrors.name })
15102
+ contactErrors?.name && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: contactErrors.name })
15032
15103
  ] }),
15033
- /* @__PURE__ */ jsxs18("div", { className: "space-y-1", children: [
15034
- /* @__PURE__ */ jsx20("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
15035
- /* @__PURE__ */ jsx20(
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: cn17(
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__ */ jsx20("p", { className: "text-xs text-destructive", children: contactErrors.email })
15121
+ contactErrors?.email && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: contactErrors.email })
15051
15122
  ] }),
15052
- /* @__PURE__ */ jsx20("div", { className: "space-y-1", children: /* @__PURE__ */ jsx20(
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__ */ jsx20("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
15067
- /* @__PURE__ */ jsxs18("section", { className: "space-y-3", children: [
15068
- /* @__PURE__ */ jsx20("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
15069
- appliedDiscount ? /* @__PURE__ */ jsxs18("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: [
15070
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
15071
- /* @__PURE__ */ jsx20("span", { className: "font-semibold", children: appliedDiscount.code }),
15072
- /* @__PURE__ */ jsx20("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
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__ */ jsx20(
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__ */ jsxs18("div", { className: "flex gap-2", children: [
15085
- /* @__PURE__ */ jsx20("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
15086
- /* @__PURE__ */ jsx20(
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__ */ jsx20(
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__ */ jsx20("p", { className: "text-xs text-destructive", children: discountError })
15180
+ discountError && /* @__PURE__ */ jsx21("p", { className: "text-xs text-destructive", children: discountError })
15110
15181
  ] }),
15111
- /* @__PURE__ */ jsx20(
15182
+ /* @__PURE__ */ jsx21(
15112
15183
  "button",
15113
15184
  {
15114
15185
  type: "submit",
15115
15186
  disabled: submitting || submitDisabled,
15116
- className: cn17(
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 cn19 } from "@reblu/site-ui/utils";
15201
+ import { cn as cn20 } from "@reblu/site-ui/utils";
15131
15202
 
15132
15203
  // src/components/order-invoice-link.tsx
15133
- import { cn as cn18 } from "@reblu/site-ui/utils";
15134
- import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
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__ */ jsxs19("div", { className: cn18("space-y-1 text-sm", className), "data-slot": "order-invoice-link", children: [
15143
- /* @__PURE__ */ jsx21(
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__ */ jsx21("p", { className: "text-muted-foreground", children: t.signInHint })
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 jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
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__ */ jsxs20("div", { className: cn19("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
15221
- /* @__PURE__ */ jsx22("h1", { className: "text-3xl font-bold", children: title }),
15222
- /* @__PURE__ */ jsx22("p", { className: "text-lg text-muted-foreground", children: description }),
15223
- showFullOrderSummary && order && /* @__PURE__ */ jsxs20("div", { className: "space-y-6", children: [
15224
- /* @__PURE__ */ jsxs20("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15225
- /* @__PURE__ */ jsx22("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
15226
- /* @__PURE__ */ jsx22("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
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__ */ jsxs20("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
15229
- order.items.map((item, idx) => /* @__PURE__ */ jsxs20(
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__ */ jsxs20("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
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__ */ jsx22("span", { children: formatPrice(item.total, currencyCode, locale) })
15311
+ /* @__PURE__ */ jsx23("span", { children: formatPrice(item.total, currencyCode, locale) })
15241
15312
  ]
15242
15313
  },
15243
15314
  idx
15244
15315
  )),
15245
- /* @__PURE__ */ jsx22("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs20("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
15246
- /* @__PURE__ */ jsx22("span", { children: t.totalLabel }),
15247
- /* @__PURE__ */ jsx22("span", { children: formatPrice(order.total, currencyCode, locale) })
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__ */ jsxs20("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15321
+ /* @__PURE__ */ jsxs21("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
15251
15322
  t.confirmationEmailPrefix,
15252
15323
  " ",
15253
- /* @__PURE__ */ jsx22("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15324
+ /* @__PURE__ */ jsx23("span", { className: "font-medium text-foreground", children: order.customerEmail }),
15254
15325
  "."
15255
15326
  ] }),
15256
- /* @__PURE__ */ jsx22(
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__ */ jsxs20("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15265
- /* @__PURE__ */ jsx22("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
15266
- /* @__PURE__ */ jsx22("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
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__ */ jsx22(
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__ */ jsx22(
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__ */ jsxs20("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
15286
- /* @__PURE__ */ jsx22("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
15287
- /* @__PURE__ */ jsx22("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
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 cn20 } from "@reblu/site-ui/utils";
15294
- import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
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__ */ jsx23("p", { id: `full-invoice-${key2}-error`, className: "text-sm text-destructive", children: errors[key2] }) : null;
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__ */ jsxs21("section", { className: cn20("space-y-4", className), "data-slot": "full-invoice-fields", children: [
15414
- overCap ? /* @__PURE__ */ jsx23("p", { role: "note", className: "rounded-lg border border-border p-4 text-sm", children: t.overCapNotice }) : /* @__PURE__ */ jsxs21("div", { className: "space-y-1", children: [
15415
- /* @__PURE__ */ jsxs21("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
15416
- /* @__PURE__ */ jsx23(
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__ */ jsx23("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15497
+ /* @__PURE__ */ jsx24("p", { className: "text-sm text-muted-foreground", children: t.underCapNotice })
15427
15498
  ] }),
15428
- showFields && /* @__PURE__ */ jsxs21("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
15429
- /* @__PURE__ */ jsxs21("div", { className: "space-y-1", children: [
15430
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-id-type", className: "text-sm font-medium", children: t.idType }),
15431
- /* @__PURE__ */ jsx23(
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__ */ jsx23("option", { value: type, children: t.idTypeOptions[type] }, type))
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__ */ jsxs21("div", { className: "space-y-1", children: [
15446
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-id-country", className: "text-sm font-medium", children: t.idCountry }),
15447
- /* @__PURE__ */ jsxs21(
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__ */ jsx23("option", { value: "", disabled: true, children: t.chooseCountry }),
15458
- countries.map((c) => /* @__PURE__ */ jsx23("option", { value: c.code, children: c.name }, c.code))
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__ */ jsxs21("div", { className: "space-y-1", children: [
15465
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-nif", className: "text-sm font-medium", children: isSpanishNif ? t.spanishNif : t.documentNumber }),
15466
- /* @__PURE__ */ jsx23(
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__ */ jsxs21("div", { className: "space-y-1", children: [
15480
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-name", className: "text-sm font-medium", children: t.name }),
15481
- /* @__PURE__ */ jsx23(
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__ */ jsxs21("div", { className: "space-y-1 sm:col-span-2", children: [
15495
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-street", className: "text-sm font-medium", children: t.street }),
15496
- /* @__PURE__ */ jsx23(
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__ */ jsxs21("div", { className: "space-y-1", children: [
15509
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-postal-code", className: "text-sm font-medium", children: t.postalCode }),
15510
- /* @__PURE__ */ jsx23(
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__ */ jsxs21("div", { className: "space-y-1", children: [
15522
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-city", className: "text-sm font-medium", children: t.city }),
15523
- /* @__PURE__ */ jsx23(
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__ */ jsxs21("div", { className: "space-y-1", children: [
15535
- /* @__PURE__ */ jsx23("label", { htmlFor: "full-invoice-country", className: "text-sm font-medium", children: t.country }),
15536
- /* @__PURE__ */ jsx23(
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__ */ jsx23("option", { value: c.code, children: c.name }, c.code))
15615
+ children: countries.map((c) => /* @__PURE__ */ jsx24("option", { value: c.code, children: c.name }, c.code))
15545
15616
  }
15546
15617
  )
15547
15618
  ] }),
15548
- /* @__PURE__ */ jsx23("div", { className: "sm:col-span-2", children: error("address") })
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,