@reblu/site-blocks 0.10.0 → 0.12.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
@@ -13328,8 +13328,54 @@ function Treatment({ page, className }) {
13328
13328
  }
13329
13329
 
13330
13330
  // src/components/parent-page.tsx
13331
+ import { cn as cn5 } from "@reblu/site-ui/utils";
13332
+
13333
+ // src/components/page-card-grid.tsx
13331
13334
  import { cn as cn4 } from "@reblu/site-ui/utils";
13332
13335
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
13336
+ var defaultPageHref = (page) => `/${page.slug}`;
13337
+ var pageKey = (page) => `${page.category?.slug ?? ""}/${page.slug}`;
13338
+ function PageCardGrid(props) {
13339
+ return /* @__PURE__ */ jsx4(PageCardGridSection, { ...props });
13340
+ }
13341
+ function PageCardGridSection({
13342
+ pages,
13343
+ pageHref = defaultPageHref,
13344
+ heading,
13345
+ className,
13346
+ keepEmptyHeading = false
13347
+ }) {
13348
+ if (pages.length === 0) return null;
13349
+ const showHeading = keepEmptyHeading ? heading !== void 0 : !!heading;
13350
+ return /* @__PURE__ */ jsxs3("section", { className: cn4("space-y-6", className), children: [
13351
+ showHeading && /* @__PURE__ */ jsx4("h2", { className: "text-2xl font-bold", children: heading }),
13352
+ /* @__PURE__ */ jsx4("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: pages.map((page) => /* @__PURE__ */ jsx4("li", { children: /* @__PURE__ */ jsxs3(
13353
+ "a",
13354
+ {
13355
+ href: pageHref(page),
13356
+ className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13357
+ children: [
13358
+ page.coverImageUrl && /* @__PURE__ */ jsx4("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx4(
13359
+ "img",
13360
+ {
13361
+ src: page.coverImageUrl,
13362
+ alt: "",
13363
+ loading: "lazy",
13364
+ className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13365
+ }
13366
+ ) }),
13367
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13368
+ /* @__PURE__ */ jsx4("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: page.title }),
13369
+ page.excerpt && /* @__PURE__ */ jsx4("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: page.excerpt })
13370
+ ] })
13371
+ ]
13372
+ }
13373
+ ) }, pageKey(page))) })
13374
+ ] });
13375
+ }
13376
+
13377
+ // src/components/parent-page.tsx
13378
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
13333
13379
  var defaultChildPageHref = (slug) => `/${slug}`;
13334
13380
  function ParentPage({
13335
13381
  page,
@@ -13344,34 +13390,18 @@ function ParentPage({
13344
13390
  const pages = childPages ?? treatments ?? [];
13345
13391
  const hrefFor = childPageHref ?? treatmentHref ?? defaultChildPageHref;
13346
13392
  const label = childPagesLabel ?? treatmentsLabel ?? "Treatments";
13347
- return /* @__PURE__ */ jsxs3("article", { className: cn4("space-y-12", className), "data-slot": "specialty", children: [
13348
- /* @__PURE__ */ jsx4(PageHero, { page }),
13349
- /* @__PURE__ */ jsx4(PageSectionList, { sections: page.sections }),
13350
- pages.length > 0 && /* @__PURE__ */ jsxs3("section", { className: "space-y-6", children: [
13351
- /* @__PURE__ */ jsx4("h2", { className: "text-2xl font-bold", children: label }),
13352
- /* @__PURE__ */ jsx4("ul", { className: "grid list-none grid-cols-1 gap-6 p-0 sm:grid-cols-2 lg:grid-cols-3", children: pages.map((t) => /* @__PURE__ */ jsx4("li", { children: /* @__PURE__ */ jsxs3(
13353
- "a",
13354
- {
13355
- href: hrefFor(t.slug),
13356
- className: "group flex h-full flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13357
- children: [
13358
- t.coverImageUrl && /* @__PURE__ */ jsx4("div", { className: "relative aspect-video overflow-hidden bg-muted", children: /* @__PURE__ */ jsx4(
13359
- "img",
13360
- {
13361
- src: t.coverImageUrl,
13362
- alt: "",
13363
- loading: "lazy",
13364
- className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13365
- }
13366
- ) }),
13367
- /* @__PURE__ */ jsxs3("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13368
- /* @__PURE__ */ jsx4("h3", { className: "font-semibold leading-tight transition-colors group-hover:text-primary", children: t.title }),
13369
- t.excerpt && /* @__PURE__ */ jsx4("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: t.excerpt })
13370
- ] })
13371
- ]
13372
- }
13373
- ) }, t.slug)) })
13374
- ] })
13393
+ return /* @__PURE__ */ jsxs4("article", { className: cn5("space-y-12", className), "data-slot": "specialty", children: [
13394
+ /* @__PURE__ */ jsx5(PageHero, { page }),
13395
+ /* @__PURE__ */ jsx5(PageSectionList, { sections: page.sections }),
13396
+ /* @__PURE__ */ jsx5(
13397
+ PageCardGridSection,
13398
+ {
13399
+ pages,
13400
+ heading: label,
13401
+ pageHref: (child) => hrefFor(child.slug),
13402
+ keepEmptyHeading: true
13403
+ }
13404
+ )
13375
13405
  ] });
13376
13406
  }
13377
13407
 
@@ -13379,34 +13409,34 @@ function ParentPage({
13379
13409
  var Specialty = ParentPage;
13380
13410
 
13381
13411
  // src/components/profile-card.tsx
13382
- import { cn as cn5 } from "@reblu/site-ui/utils";
13383
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
13412
+ import { cn as cn6 } from "@reblu/site-ui/utils";
13413
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
13384
13414
  function initials(name) {
13385
13415
  return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
13386
13416
  }
13387
13417
  function ProfileCard({ name, role, imageUrl, specialties = [], bio, href, className }) {
13388
13418
  const NameTag = href ? "a" : "span";
13389
- return /* @__PURE__ */ jsxs4(
13419
+ return /* @__PURE__ */ jsxs5(
13390
13420
  "article",
13391
13421
  {
13392
- className: cn5(
13422
+ className: cn6(
13393
13423
  "flex flex-col items-center gap-3 rounded-lg border bg-card p-6 text-center",
13394
13424
  className
13395
13425
  ),
13396
13426
  "data-slot": "profile-card",
13397
13427
  children: [
13398
- /* @__PURE__ */ jsx5("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx5("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx5("span", { className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground", "aria-hidden": "true", children: initials(name) }) }),
13399
- /* @__PURE__ */ jsxs4("div", { className: "space-y-1", children: [
13400
- /* @__PURE__ */ jsx5("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx5(
13428
+ /* @__PURE__ */ jsx6("div", { className: "relative h-24 w-24 overflow-hidden rounded-full bg-muted", children: imageUrl ? /* @__PURE__ */ jsx6("img", { src: imageUrl, alt: name, loading: "lazy", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx6("span", { className: "flex h-full w-full items-center justify-center text-2xl font-semibold text-muted-foreground", "aria-hidden": "true", children: initials(name) }) }),
13429
+ /* @__PURE__ */ jsxs5("div", { className: "space-y-1", children: [
13430
+ /* @__PURE__ */ jsx6("h3", { className: "text-lg font-semibold leading-tight", children: /* @__PURE__ */ jsx6(
13401
13431
  NameTag,
13402
13432
  {
13403
13433
  ...href ? { href, className: "transition-colors hover:text-primary" } : {},
13404
13434
  children: name
13405
13435
  }
13406
13436
  ) }),
13407
- role && /* @__PURE__ */ jsx5("p", { className: "text-sm text-muted-foreground", children: role })
13437
+ role && /* @__PURE__ */ jsx6("p", { className: "text-sm text-muted-foreground", children: role })
13408
13438
  ] }),
13409
- specialties.length > 0 && /* @__PURE__ */ jsx5("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx5(
13439
+ specialties.length > 0 && /* @__PURE__ */ jsx6("ul", { className: "flex flex-wrap justify-center gap-1.5 p-0", children: specialties.map((s2) => /* @__PURE__ */ jsx6(
13410
13440
  "li",
13411
13441
  {
13412
13442
  className: "inline-flex items-center rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium text-secondary-foreground",
@@ -13414,28 +13444,28 @@ function ProfileCard({ name, role, imageUrl, specialties = [], bio, href, classN
13414
13444
  },
13415
13445
  s2
13416
13446
  )) }),
13417
- bio && /* @__PURE__ */ jsx5("p", { className: "text-sm text-muted-foreground", children: bio })
13447
+ bio && /* @__PURE__ */ jsx6("p", { className: "text-sm text-muted-foreground", children: bio })
13418
13448
  ]
13419
13449
  }
13420
13450
  );
13421
13451
  }
13422
13452
 
13423
13453
  // src/components/product-card.tsx
13424
- import { cn as cn6 } from "@reblu/site-ui/utils";
13425
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
13454
+ import { cn as cn7 } from "@reblu/site-ui/utils";
13455
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
13426
13456
  function ProductCard({ product, href, currencyCode = "EUR", locale, className }) {
13427
13457
  const image = product.images.find((i) => i.isPrimary) ?? product.images[0];
13428
13458
  const hasDiscount = product.comparePrice != null && product.comparePrice > product.price;
13429
- return /* @__PURE__ */ jsxs5(
13459
+ return /* @__PURE__ */ jsxs6(
13430
13460
  "article",
13431
13461
  {
13432
- className: cn6(
13462
+ className: cn7(
13433
13463
  "group flex flex-col overflow-hidden rounded-lg border bg-card transition-shadow hover:shadow-lg",
13434
13464
  className
13435
13465
  ),
13436
13466
  "data-slot": "product-card",
13437
13467
  children: [
13438
- /* @__PURE__ */ jsx6("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx6(
13468
+ /* @__PURE__ */ jsx7("div", { className: "relative aspect-square overflow-hidden bg-muted", children: image ? /* @__PURE__ */ jsx7(
13439
13469
  "img",
13440
13470
  {
13441
13471
  src: image.url,
@@ -13443,14 +13473,14 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13443
13473
  loading: "lazy",
13444
13474
  className: "h-full w-full object-cover transition-transform group-hover:scale-105"
13445
13475
  }
13446
- ) : /* @__PURE__ */ jsx6("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13447
- /* @__PURE__ */ jsxs5("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13448
- product.category && /* @__PURE__ */ jsx6("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 }),
13449
- /* @__PURE__ */ jsx6("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx6("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13450
- product.shortDescription && /* @__PURE__ */ jsx6("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13451
- /* @__PURE__ */ jsxs5("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13452
- /* @__PURE__ */ jsx6("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13453
- hasDiscount && /* @__PURE__ */ jsx6("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13476
+ ) : /* @__PURE__ */ jsx7("div", { className: "flex h-full items-center justify-center text-4xl text-muted-foreground/30", "aria-hidden": "true", children: "\u{1F6CD}\uFE0F" }) }),
13477
+ /* @__PURE__ */ jsxs6("div", { className: "flex flex-1 flex-col gap-2 p-4", children: [
13478
+ product.category && /* @__PURE__ */ jsx7("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 }),
13479
+ /* @__PURE__ */ jsx7("h3", { className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsx7("a", { href, className: "transition-colors hover:text-primary", children: product.name }) : product.name }),
13480
+ product.shortDescription && /* @__PURE__ */ jsx7("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: product.shortDescription }),
13481
+ /* @__PURE__ */ jsxs6("div", { className: "mt-auto flex items-baseline gap-2 pt-2", children: [
13482
+ /* @__PURE__ */ jsx7("span", { className: "text-lg font-bold text-foreground", children: formatPrice(product.price, currencyCode, locale) }),
13483
+ hasDiscount && /* @__PURE__ */ jsx7("span", { className: "text-sm text-muted-foreground line-through", children: formatPrice(product.comparePrice, currencyCode, locale) })
13454
13484
  ] })
13455
13485
  ] })
13456
13486
  ]
@@ -13458,11 +13488,246 @@ function ProductCard({ product, href, currencyCode = "EUR", locale, className })
13458
13488
  );
13459
13489
  }
13460
13490
 
13491
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/createLucideIcon.js
13492
+ import { forwardRef as forwardRef2, createElement as createElement2 } from "react";
13493
+
13494
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/shared/src/utils.js
13495
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
13496
+ var toCamelCase = (string) => string.replace(
13497
+ /^([A-Z])|[\s-_]+(\w)/g,
13498
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
13499
+ );
13500
+ var toPascalCase = (string) => {
13501
+ const camelCase = toCamelCase(string);
13502
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
13503
+ };
13504
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
13505
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
13506
+ }).join(" ").trim();
13507
+ var hasA11yProp = (props) => {
13508
+ for (const prop in props) {
13509
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
13510
+ return true;
13511
+ }
13512
+ }
13513
+ };
13514
+
13515
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.js
13516
+ import { forwardRef, createElement } from "react";
13517
+
13518
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/defaultAttributes.js
13519
+ var defaultAttributes = {
13520
+ xmlns: "http://www.w3.org/2000/svg",
13521
+ width: 24,
13522
+ height: 24,
13523
+ viewBox: "0 0 24 24",
13524
+ fill: "none",
13525
+ stroke: "currentColor",
13526
+ strokeWidth: 2,
13527
+ strokeLinecap: "round",
13528
+ strokeLinejoin: "round"
13529
+ };
13530
+
13531
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.js
13532
+ var Icon = forwardRef(
13533
+ ({
13534
+ color: color2 = "currentColor",
13535
+ size = 24,
13536
+ strokeWidth = 2,
13537
+ absoluteStrokeWidth,
13538
+ className = "",
13539
+ children: children2,
13540
+ iconNode,
13541
+ ...rest
13542
+ }, ref) => createElement(
13543
+ "svg",
13544
+ {
13545
+ ref,
13546
+ ...defaultAttributes,
13547
+ width: size,
13548
+ height: size,
13549
+ stroke: color2,
13550
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
13551
+ className: mergeClasses("lucide", className),
13552
+ ...!children2 && !hasA11yProp(rest) && { "aria-hidden": "true" },
13553
+ ...rest
13554
+ },
13555
+ [
13556
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
13557
+ ...Array.isArray(children2) ? children2 : [children2]
13558
+ ]
13559
+ )
13560
+ );
13561
+
13562
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/createLucideIcon.js
13563
+ var createLucideIcon = (iconName, iconNode) => {
13564
+ const Component = forwardRef2(
13565
+ ({ className, ...props }, ref) => createElement2(Icon, {
13566
+ ref,
13567
+ iconNode,
13568
+ className: mergeClasses(
13569
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
13570
+ `lucide-${iconName}`,
13571
+ className
13572
+ ),
13573
+ ...props
13574
+ })
13575
+ );
13576
+ Component.displayName = toPascalCase(iconName);
13577
+ return Component;
13578
+ };
13579
+
13580
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/award.js
13581
+ var __iconNode = [
13582
+ [
13583
+ "path",
13584
+ {
13585
+ d: "m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",
13586
+ key: "1yiouv"
13587
+ }
13588
+ ],
13589
+ ["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }]
13590
+ ];
13591
+ var Award = createLucideIcon("award", __iconNode);
13592
+
13593
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/badge-check.js
13594
+ var __iconNode2 = [
13595
+ [
13596
+ "path",
13597
+ {
13598
+ d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",
13599
+ key: "3c2336"
13600
+ }
13601
+ ],
13602
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
13603
+ ];
13604
+ var BadgeCheck = createLucideIcon("badge-check", __iconNode2);
13605
+
13606
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/gift.js
13607
+ var __iconNode3 = [
13608
+ ["rect", { x: "3", y: "8", width: "18", height: "4", rx: "1", key: "bkv52" }],
13609
+ ["path", { d: "M12 8v13", key: "1c76mn" }],
13610
+ ["path", { d: "M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7", key: "6wjy6b" }],
13611
+ [
13612
+ "path",
13613
+ {
13614
+ d: "M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",
13615
+ key: "1ihvrl"
13616
+ }
13617
+ ]
13618
+ ];
13619
+ var Gift = createLucideIcon("gift", __iconNode3);
13620
+
13621
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/headset.js
13622
+ var __iconNode4 = [
13623
+ [
13624
+ "path",
13625
+ {
13626
+ d: "M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z",
13627
+ key: "12oyoe"
13628
+ }
13629
+ ],
13630
+ ["path", { d: "M21 16v2a4 4 0 0 1-4 4h-5", key: "1x7m43" }]
13631
+ ];
13632
+ var Headset = createLucideIcon("headset", __iconNode4);
13633
+
13634
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js
13635
+ var __iconNode5 = [
13636
+ ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
13637
+ ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
13638
+ ];
13639
+ var RotateCcw = createLucideIcon("rotate-ccw", __iconNode5);
13640
+
13641
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shield-check.js
13642
+ var __iconNode6 = [
13643
+ [
13644
+ "path",
13645
+ {
13646
+ d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
13647
+ key: "oel41y"
13648
+ }
13649
+ ],
13650
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
13651
+ ];
13652
+ var ShieldCheck = createLucideIcon("shield-check", __iconNode6);
13653
+
13654
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/store.js
13655
+ var __iconNode7 = [
13656
+ ["path", { d: "M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5", key: "slp6dd" }],
13657
+ [
13658
+ "path",
13659
+ {
13660
+ d: "M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244",
13661
+ key: "o0xfot"
13662
+ }
13663
+ ],
13664
+ ["path", { d: "M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05", key: "wn3emo" }]
13665
+ ];
13666
+ var Store = createLucideIcon("store", __iconNode7);
13667
+
13668
+ // ../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/truck.js
13669
+ var __iconNode8 = [
13670
+ ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
13671
+ ["path", { d: "M15 18H9", key: "1lyqi6" }],
13672
+ [
13673
+ "path",
13674
+ {
13675
+ d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
13676
+ key: "lysw3i"
13677
+ }
13678
+ ],
13679
+ ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
13680
+ ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
13681
+ ];
13682
+ var Truck = createLucideIcon("truck", __iconNode8);
13683
+
13684
+ // src/components/product-trust-items.tsx
13685
+ import { cn as cn8 } from "@reblu/site-ui/utils";
13686
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
13687
+ var DEFAULT_TRUST_ICONS = Object.freeze({
13688
+ shipping: Truck,
13689
+ returns: RotateCcw,
13690
+ "secure-payment": ShieldCheck,
13691
+ support: Headset,
13692
+ gift: Gift,
13693
+ pickup: Store,
13694
+ warranty: BadgeCheck,
13695
+ quality: Award
13696
+ });
13697
+ function isKnownIcon(icon) {
13698
+ return Object.prototype.hasOwnProperty.call(DEFAULT_TRUST_ICONS, icon);
13699
+ }
13700
+ function isEntryObject(value) {
13701
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13702
+ }
13703
+ function ProductTrustItems({
13704
+ items,
13705
+ icons,
13706
+ as: List = "ul",
13707
+ className,
13708
+ itemClassName
13709
+ }) {
13710
+ if (!Array.isArray(items) || items.length === 0) return null;
13711
+ const rows = items.flatMap((item, index) => {
13712
+ if (!isEntryObject(item)) return [];
13713
+ const icon = item.icon;
13714
+ const text3 = typeof item.text === "string" ? item.text.trim() : "";
13715
+ if (typeof icon !== "string" || !isKnownIcon(icon) || text3 === "") return [];
13716
+ const Icon2 = icons?.[icon] ?? DEFAULT_TRUST_ICONS[icon];
13717
+ return [{ key: `${index}-${icon}`, Icon: Icon2, text: text3 }];
13718
+ });
13719
+ if (rows.length === 0) return null;
13720
+ return /* @__PURE__ */ jsx8(List, { "data-slot": "product-trust-items", className: cn8("space-y-2.5", className), children: rows.map(({ key: key2, Icon: Icon2, text: text3 }) => /* @__PURE__ */ jsxs7("li", { className: cn8("flex items-center gap-3 text-sm text-muted-foreground", itemClassName), children: [
13721
+ /* @__PURE__ */ jsx8(Icon2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 text-foreground/60" }),
13722
+ /* @__PURE__ */ jsx8("span", { children: text3 })
13723
+ ] }, key2)) });
13724
+ }
13725
+
13461
13726
  // src/components/faq-accordion.tsx
13462
- import { cn as cn7 } from "@reblu/site-ui/utils";
13727
+ import { cn as cn9 } from "@reblu/site-ui/utils";
13463
13728
 
13464
13729
  // src/components/_heading.tsx
13465
- import { jsx as jsx7 } from "react/jsx-runtime";
13730
+ import { jsx as jsx9 } from "react/jsx-runtime";
13466
13731
  function nextHeadingLevel(level) {
13467
13732
  return Math.min(level + 1, 6);
13468
13733
  }
@@ -13472,11 +13737,11 @@ function Heading({
13472
13737
  children: children2
13473
13738
  }) {
13474
13739
  const Tag = `h${level}`;
13475
- return /* @__PURE__ */ jsx7(Tag, { className, children: children2 });
13740
+ return /* @__PURE__ */ jsx9(Tag, { className, children: children2 });
13476
13741
  }
13477
13742
 
13478
13743
  // src/components/faq-accordion.tsx
13479
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
13744
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
13480
13745
  function FaqAccordion({
13481
13746
  items,
13482
13747
  heading,
@@ -13487,18 +13752,18 @@ function FaqAccordion({
13487
13752
  }) {
13488
13753
  const visible = items.map((item, index) => ({ item, index })).filter(({ item }) => item.q.trim() !== "");
13489
13754
  if (visible.length === 0) return null;
13490
- return /* @__PURE__ */ jsxs6("div", { className: cn7("space-y-4", className), "data-slot": "faq-accordion", children: [
13491
- heading && /* @__PURE__ */ jsx8(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13492
- /* @__PURE__ */ jsx8("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs6(
13755
+ return /* @__PURE__ */ jsxs8("div", { className: cn9("space-y-4", className), "data-slot": "faq-accordion", children: [
13756
+ heading && /* @__PURE__ */ jsx10(Heading, { level: headingLevel, className: "text-2xl font-semibold tracking-tight", children: heading }),
13757
+ /* @__PURE__ */ jsx10("div", { className: "divide-y divide-border rounded-xl border border-border", children: visible.map(({ item, index }) => /* @__PURE__ */ jsxs8(
13493
13758
  "details",
13494
13759
  {
13495
13760
  className: "group px-4",
13496
13761
  "data-slot": "faq-item",
13497
13762
  ...defaultOpen.includes(index) ? { open: true } : {},
13498
13763
  children: [
13499
- /* @__PURE__ */ jsxs6("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: [
13500
- questionHeadingLevel ? /* @__PURE__ */ jsx8(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx8("span", { children: item.q }),
13501
- /* @__PURE__ */ jsx8(
13764
+ /* @__PURE__ */ jsxs8("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: [
13765
+ questionHeadingLevel ? /* @__PURE__ */ jsx10(Heading, { level: questionHeadingLevel, className: "text-base font-medium", children: item.q }) : /* @__PURE__ */ jsx10("span", { children: item.q }),
13766
+ /* @__PURE__ */ jsx10(
13502
13767
  "span",
13503
13768
  {
13504
13769
  "aria-hidden": "true",
@@ -13507,7 +13772,7 @@ function FaqAccordion({
13507
13772
  }
13508
13773
  )
13509
13774
  ] }),
13510
- /* @__PURE__ */ jsx8("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13775
+ /* @__PURE__ */ jsx10("p", { className: "whitespace-pre-line pb-4 text-muted-foreground", children: item.a })
13511
13776
  ]
13512
13777
  },
13513
13778
  index
@@ -13516,40 +13781,40 @@ function FaqAccordion({
13516
13781
  }
13517
13782
 
13518
13783
  // src/components/page-blocks.tsx
13519
- import { cn as cn8 } from "@reblu/site-ui/utils";
13784
+ import { cn as cn10 } from "@reblu/site-ui/utils";
13520
13785
  import { buttonVariants as buttonVariants2 } from "@reblu/site-ui/button-variants";
13521
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
13786
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
13522
13787
  var ALIASES = {
13523
13788
  doctor_embed: "profile_embed",
13524
13789
  specialty_embed: "page_embed"
13525
13790
  };
13526
13791
  function HeroBlock({ block, headingLevel }) {
13527
13792
  const { title, subtitle, imageUrl } = block.data;
13528
- return /* @__PURE__ */ jsxs7("div", { className: "space-y-4", children: [
13529
- /* @__PURE__ */ jsx9(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
13530
- subtitle && /* @__PURE__ */ jsx9("p", { className: "text-lg opacity-80", children: subtitle }),
13531
- imageUrl && /* @__PURE__ */ jsx9("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx9("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
13793
+ return /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
13794
+ /* @__PURE__ */ jsx11(Heading, { level: headingLevel, className: "text-3xl font-bold tracking-tight md:text-4xl", children: title }),
13795
+ subtitle && /* @__PURE__ */ jsx11("p", { className: "text-lg opacity-80", children: subtitle }),
13796
+ imageUrl && /* @__PURE__ */ jsx11("div", { className: "relative aspect-[21/9] w-full overflow-hidden rounded-xl bg-muted", children: /* @__PURE__ */ jsx11("img", { src: imageUrl, alt: "", loading: "lazy", className: "h-full w-full object-cover" }) })
13532
13797
  ] });
13533
13798
  }
13534
13799
  function RichtextBlock({ block, headingLevel }) {
13535
- return /* @__PURE__ */ jsx9(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13800
+ return /* @__PURE__ */ jsx11(SafeHtml, { html: sanitizeHtml(block.data.html), headingOffset: headingLevel - 1 });
13536
13801
  }
13537
13802
  function FaqBlock({ block }) {
13538
- return /* @__PURE__ */ jsx9(FaqAccordion, { items: block.data.items });
13803
+ return /* @__PURE__ */ jsx11(FaqAccordion, { items: block.data.items });
13539
13804
  }
13540
13805
  function StatsBlock({ block }) {
13541
- return /* @__PURE__ */ jsx9("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs7("div", { className: "flex flex-col-reverse gap-1", children: [
13542
- /* @__PURE__ */ jsx9("dt", { className: "text-sm opacity-80", children: item.label }),
13543
- /* @__PURE__ */ jsx9("dd", { className: "text-3xl font-bold", children: item.value })
13806
+ return /* @__PURE__ */ jsx11("dl", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-4", children: block.data.items.map((item, i) => /* @__PURE__ */ jsxs9("div", { className: "flex flex-col-reverse gap-1", children: [
13807
+ /* @__PURE__ */ jsx11("dt", { className: "text-sm opacity-80", children: item.label }),
13808
+ /* @__PURE__ */ jsx11("dd", { className: "text-3xl font-bold", children: item.value })
13544
13809
  ] }, i)) });
13545
13810
  }
13546
13811
  function TestimonialBlock({ block }) {
13547
13812
  const { quote, author, role, avatarUrl } = block.data;
13548
- return /* @__PURE__ */ jsxs7("figure", { className: "space-y-4", children: [
13549
- /* @__PURE__ */ jsx9("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx9("p", { children: quote }) }),
13550
- /* @__PURE__ */ jsxs7("figcaption", { className: "flex items-center gap-3", children: [
13813
+ return /* @__PURE__ */ jsxs9("figure", { className: "space-y-4", children: [
13814
+ /* @__PURE__ */ jsx11("blockquote", { className: "text-xl italic", children: /* @__PURE__ */ jsx11("p", { children: quote }) }),
13815
+ /* @__PURE__ */ jsxs9("figcaption", { className: "flex items-center gap-3", children: [
13551
13816
  avatarUrl && // eslint-disable-next-line @next/next/no-img-element
13552
- /* @__PURE__ */ jsx9(
13817
+ /* @__PURE__ */ jsx11(
13553
13818
  "img",
13554
13819
  {
13555
13820
  src: avatarUrl,
@@ -13558,9 +13823,9 @@ function TestimonialBlock({ block }) {
13558
13823
  className: "h-10 w-10 rounded-full object-cover"
13559
13824
  }
13560
13825
  ),
13561
- /* @__PURE__ */ jsxs7("span", { children: [
13562
- /* @__PURE__ */ jsx9("span", { className: "font-semibold", children: author }),
13563
- role && /* @__PURE__ */ jsx9("span", { className: "block text-sm opacity-80", children: role })
13826
+ /* @__PURE__ */ jsxs9("span", { children: [
13827
+ /* @__PURE__ */ jsx11("span", { className: "font-semibold", children: author }),
13828
+ role && /* @__PURE__ */ jsx11("span", { className: "block text-sm opacity-80", children: role })
13564
13829
  ] })
13565
13830
  ] })
13566
13831
  ] });
@@ -13569,19 +13834,19 @@ function CtaSlotBlock(_props) {
13569
13834
  return null;
13570
13835
  }
13571
13836
  function FeatureListBlock({ block }) {
13572
- return /* @__PURE__ */ jsx9("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx9("li", { children: item.text }, i)) });
13837
+ return /* @__PURE__ */ jsx11("ul", { className: "grid list-disc gap-2 pl-5 sm:grid-cols-2", children: block.data.items.map((item, i) => /* @__PURE__ */ jsx11("li", { children: item.text }, i)) });
13573
13838
  }
13574
13839
  function GalleryBlock({ block }) {
13575
13840
  const { images } = block.data;
13576
- return /* @__PURE__ */ jsx9(
13841
+ return /* @__PURE__ */ jsx11(
13577
13842
  "div",
13578
13843
  {
13579
- className: cn8(
13844
+ className: cn10(
13580
13845
  "grid gap-4",
13581
13846
  images.length > 1 ? "sm:grid-cols-2 lg:grid-cols-3" : "grid-cols-1"
13582
13847
  ),
13583
- children: images.map((img, i) => /* @__PURE__ */ jsxs7("figure", { className: "space-y-1", children: [
13584
- /* @__PURE__ */ jsx9("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx9(
13848
+ children: images.map((img, i) => /* @__PURE__ */ jsxs9("figure", { className: "space-y-1", children: [
13849
+ /* @__PURE__ */ jsx11("div", { className: "relative aspect-video w-full overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx11(
13585
13850
  "img",
13586
13851
  {
13587
13852
  src: img.url,
@@ -13590,7 +13855,7 @@ function GalleryBlock({ block }) {
13590
13855
  className: "h-full w-full object-cover"
13591
13856
  }
13592
13857
  ) }),
13593
- img.caption && /* @__PURE__ */ jsx9("figcaption", { className: "text-sm opacity-80", children: img.caption })
13858
+ img.caption && /* @__PURE__ */ jsx11("figcaption", { className: "text-sm opacity-80", children: img.caption })
13594
13859
  ] }, `${img.url}-${i}`))
13595
13860
  }
13596
13861
  );
@@ -13600,13 +13865,13 @@ function EmbedCard({
13600
13865
  headingLevel,
13601
13866
  embedHref
13602
13867
  }) {
13603
- return /* @__PURE__ */ jsxs7(
13868
+ return /* @__PURE__ */ jsxs9(
13604
13869
  "a",
13605
13870
  {
13606
13871
  href: embedHref(resolved),
13607
13872
  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",
13608
13873
  children: [
13609
- resolved.coverImageUrl && /* @__PURE__ */ jsx9("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx9(
13874
+ resolved.coverImageUrl && /* @__PURE__ */ jsx11("div", { className: "aspect-video w-full overflow-hidden bg-muted", children: /* @__PURE__ */ jsx11(
13610
13875
  "img",
13611
13876
  {
13612
13877
  src: resolved.coverImageUrl,
@@ -13615,24 +13880,24 @@ function EmbedCard({
13615
13880
  className: "h-full w-full object-cover"
13616
13881
  }
13617
13882
  ) }),
13618
- /* @__PURE__ */ jsxs7("div", { className: "space-y-1 p-4", children: [
13619
- /* @__PURE__ */ jsx9(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
13620
- resolved.role && /* @__PURE__ */ jsx9("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
13621
- resolved.excerpt && /* @__PURE__ */ jsx9("p", { className: "text-muted-foreground", children: resolved.excerpt })
13883
+ /* @__PURE__ */ jsxs9("div", { className: "space-y-1 p-4", children: [
13884
+ /* @__PURE__ */ jsx11(Heading, { level: headingLevel, className: "text-lg font-semibold", children: resolved.title }),
13885
+ resolved.role && /* @__PURE__ */ jsx11("p", { className: "text-sm text-muted-foreground", children: resolved.role }),
13886
+ resolved.excerpt && /* @__PURE__ */ jsx11("p", { className: "text-muted-foreground", children: resolved.excerpt })
13622
13887
  ] })
13623
13888
  ]
13624
13889
  }
13625
13890
  );
13626
13891
  }
13627
13892
  function PageEmbedBlock({ block, headingLevel, embedHref }) {
13628
- return /* @__PURE__ */ jsx9(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13893
+ return /* @__PURE__ */ jsx11(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13629
13894
  }
13630
13895
  function ProfileEmbedBlock({
13631
13896
  block,
13632
13897
  headingLevel,
13633
13898
  embedHref
13634
13899
  }) {
13635
- return /* @__PURE__ */ jsx9(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13900
+ return /* @__PURE__ */ jsx11(EmbedCard, { resolved: block.resolved, headingLevel, embedHref });
13636
13901
  }
13637
13902
  var DEFAULT_RENDERERS = {
13638
13903
  hero: HeroBlock,
@@ -13689,14 +13954,14 @@ function toIdFragment(value) {
13689
13954
  function SectionCta2({ cta }) {
13690
13955
  if (!hasUsableCta(cta)) return null;
13691
13956
  const variant = toButtonVariant(cta.variant);
13692
- return /* @__PURE__ */ jsx9("div", { className: "pt-2", children: /* @__PURE__ */ jsx9(
13957
+ return /* @__PURE__ */ jsx11("div", { className: "pt-2", children: /* @__PURE__ */ jsx11(
13693
13958
  "a",
13694
13959
  {
13695
13960
  href: cta.url,
13696
13961
  "data-slot": "button",
13697
13962
  "data-variant": variant,
13698
13963
  "data-size": "default",
13699
- className: cn8(buttonVariants2({ variant, size: "default" })),
13964
+ className: cn10(buttonVariants2({ variant, size: "default" })),
13700
13965
  ...cta.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {},
13701
13966
  children: cta.label
13702
13967
  }
@@ -13722,17 +13987,17 @@ function PageBlocks({
13722
13987
  const headingId = block.heading ? `${safePrefix}-${toIdFragment(block.id)}-heading` : void 0;
13723
13988
  const background = block.backgroundColor;
13724
13989
  return [
13725
- /* @__PURE__ */ jsxs7(
13990
+ /* @__PURE__ */ jsxs9(
13726
13991
  "section",
13727
13992
  {
13728
13993
  "data-slot": "page-block",
13729
13994
  "data-block-type": type,
13730
13995
  "aria-labelledby": headingId,
13731
13996
  style: surfaceStyle(background),
13732
- className: cn8("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
13997
+ className: cn10("space-y-6", background && "rounded-xl px-6 py-10", sectionClassName),
13733
13998
  children: [
13734
- block.heading && /* @__PURE__ */ jsx9(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx9("span", { id: headingId, children: block.heading }) }),
13735
- /* @__PURE__ */ jsx9(
13999
+ block.heading && /* @__PURE__ */ jsx11(Heading, { level: headingLevel, className: "text-2xl font-bold tracking-tight", children: /* @__PURE__ */ jsx11("span", { id: headingId, children: block.heading }) }),
14000
+ /* @__PURE__ */ jsx11(
13736
14001
  Renderer,
13737
14002
  {
13738
14003
  block,
@@ -13740,7 +14005,7 @@ function PageBlocks({
13740
14005
  embedHref
13741
14006
  }
13742
14007
  ),
13743
- /* @__PURE__ */ jsx9(SectionCta2, { cta: block.cta })
14008
+ /* @__PURE__ */ jsx11(SectionCta2, { cta: block.cta })
13744
14009
  ]
13745
14010
  },
13746
14011
  block.id
@@ -13748,12 +14013,12 @@ function PageBlocks({
13748
14013
  ];
13749
14014
  });
13750
14015
  if (sections.length === 0) return null;
13751
- return /* @__PURE__ */ jsx9("div", { className: cn8("space-y-12", className), "data-slot": "page-blocks", children: sections });
14016
+ return /* @__PURE__ */ jsx11("div", { className: cn10("space-y-12", className), "data-slot": "page-blocks", children: sections });
13752
14017
  }
13753
14018
 
13754
14019
  // src/components/shop-filters.tsx
13755
- import { cn as cn9 } from "@reblu/site-ui/utils";
13756
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
14020
+ import { cn as cn11 } from "@reblu/site-ui/utils";
14021
+ import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
13757
14022
  var DEFAULT_SHOP_PRICE_BANDS = [
13758
14023
  { max: 2500 },
13759
14024
  { min: 2500, max: 5e3 },
@@ -13797,7 +14062,7 @@ function priceBandLabel(band, t, currencyCode, locale) {
13797
14062
  return "";
13798
14063
  }
13799
14064
  function OptionLink({ href, active, label, onActivate }) {
13800
- return /* @__PURE__ */ jsx10(
14065
+ return /* @__PURE__ */ jsx12(
13801
14066
  "a",
13802
14067
  {
13803
14068
  href,
@@ -13806,7 +14071,7 @@ function OptionLink({ href, active, label, onActivate }) {
13806
14071
  event.preventDefault();
13807
14072
  onActivate();
13808
14073
  } : void 0,
13809
- className: cn9(
14074
+ className: cn11(
13810
14075
  "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",
13811
14076
  active ? "border-transparent bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
13812
14077
  ),
@@ -13815,9 +14080,9 @@ function OptionLink({ href, active, label, onActivate }) {
13815
14080
  );
13816
14081
  }
13817
14082
  function FilterFieldset({ legend, children: children2 }) {
13818
- return /* @__PURE__ */ jsxs8("fieldset", { className: "space-y-2", children: [
13819
- /* @__PURE__ */ jsx10("legend", { className: "text-sm font-medium text-foreground", children: legend }),
13820
- /* @__PURE__ */ jsx10("div", { className: "flex flex-wrap gap-2", children: children2 })
14083
+ return /* @__PURE__ */ jsxs10("fieldset", { className: "space-y-2", children: [
14084
+ /* @__PURE__ */ jsx12("legend", { className: "text-sm font-medium text-foreground", children: legend }),
14085
+ /* @__PURE__ */ jsx12("div", { className: "flex flex-wrap gap-2", children: children2 })
13821
14086
  ] });
13822
14087
  }
13823
14088
  function ShopFilters({
@@ -13840,11 +14105,11 @@ function ShopFilters({
13840
14105
  if (!shouldRenderShopFilters(facets, active)) {
13841
14106
  return null;
13842
14107
  }
13843
- return /* @__PURE__ */ jsxs8("div", { className: cn9("space-y-6", className), "data-slot": "shop-filters", children: [
14108
+ return /* @__PURE__ */ jsxs10("div", { className: cn11("space-y-6", className), "data-slot": "shop-filters", children: [
13844
14109
  visibleTaxonomies.map((axis) => {
13845
14110
  const activeSlug = active.taxonomy?.[axis.key];
13846
- return /* @__PURE__ */ jsxs8(FilterFieldset, { legend: axis.label, children: [
13847
- /* @__PURE__ */ jsx10(
14111
+ return /* @__PURE__ */ jsxs10(FilterFieldset, { legend: axis.label, children: [
14112
+ /* @__PURE__ */ jsx12(
13848
14113
  OptionLink,
13849
14114
  {
13850
14115
  href: hrefs.taxonomy(axis.key, void 0),
@@ -13859,7 +14124,7 @@ function ShopFilters({
13859
14124
  ),
13860
14125
  axis.terms.map((term) => {
13861
14126
  const isActive = activeSlug === term.slug;
13862
- return /* @__PURE__ */ jsx10(
14127
+ return /* @__PURE__ */ jsx12(
13863
14128
  OptionLink,
13864
14129
  {
13865
14130
  href: hrefs.taxonomy(axis.key, isActive ? void 0 : term.slug),
@@ -13879,9 +14144,9 @@ function ShopFilters({
13879
14144
  }),
13880
14145
  visibleAttributes.map((attr) => {
13881
14146
  const activeValues = toValueArray(active.attr?.[attr.key]);
13882
- return /* @__PURE__ */ jsx10(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
14147
+ return /* @__PURE__ */ jsx12(FilterFieldset, { legend: attr.label, children: attr.options.map((opt) => {
13883
14148
  const isActive = activeValues.includes(opt.value);
13884
- return /* @__PURE__ */ jsx10(
14149
+ return /* @__PURE__ */ jsx12(
13885
14150
  OptionLink,
13886
14151
  {
13887
14152
  href: hrefs.attr(attr.key, opt.value),
@@ -13899,11 +14164,11 @@ function ShopFilters({
13899
14164
  );
13900
14165
  }) }, attr.key);
13901
14166
  }),
13902
- showPriceGroup && /* @__PURE__ */ jsx10(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
14167
+ showPriceGroup && /* @__PURE__ */ jsx12(FilterFieldset, { legend: t.price, children: priceBands.map((band, i) => {
13903
14168
  const isActive = active.priceMin === band.min && active.priceMax === band.max;
13904
14169
  const nextMin = isActive ? void 0 : band.min;
13905
14170
  const nextMax = isActive ? void 0 : band.max;
13906
- return /* @__PURE__ */ jsx10(
14171
+ return /* @__PURE__ */ jsx12(
13907
14172
  OptionLink,
13908
14173
  {
13909
14174
  href: hrefs.price(nextMin, nextMax),
@@ -13914,7 +14179,7 @@ function ShopFilters({
13914
14179
  i
13915
14180
  );
13916
14181
  }) }),
13917
- hasOnSale && /* @__PURE__ */ jsx10(
14182
+ hasOnSale && /* @__PURE__ */ jsx12(
13918
14183
  OptionLink,
13919
14184
  {
13920
14185
  href: hrefs.onSale(!active.onSale),
@@ -13923,7 +14188,7 @@ function ShopFilters({
13923
14188
  onActivate: onChange ? () => onChange({ onSale: !active.onSale }) : void 0
13924
14189
  }
13925
14190
  ),
13926
- /* @__PURE__ */ jsx10(
14191
+ /* @__PURE__ */ jsx12(
13927
14192
  "a",
13928
14193
  {
13929
14194
  href: hrefs.clearAll(),
@@ -13939,8 +14204,8 @@ function ShopFilters({
13939
14204
  }
13940
14205
 
13941
14206
  // src/components/cart-line-list.tsx
13942
- import { cn as cn10 } from "@reblu/site-ui/utils";
13943
- import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
14207
+ import { cn as cn12 } from "@reblu/site-ui/utils";
14208
+ import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
13944
14209
  var DEFAULT_LABELS2 = {
13945
14210
  quantityLabel: "Cantidad",
13946
14211
  decrease: "Reducir cantidad",
@@ -13965,9 +14230,9 @@ function CartLineList({
13965
14230
  }) {
13966
14231
  const t = { ...DEFAULT_LABELS2, ...labels };
13967
14232
  const noticeContent = notice === true ? t.cancelledNotice : notice;
13968
- return /* @__PURE__ */ jsxs9("div", { className: cn10("space-y-4", className), "data-slot": "cart-line-list", children: [
13969
- /* @__PURE__ */ jsx11("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
13970
- noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx11(
14233
+ return /* @__PURE__ */ jsxs11("div", { className: cn12("space-y-4", className), "data-slot": "cart-line-list", children: [
14234
+ /* @__PURE__ */ jsx13("div", { "aria-live": "polite", className: "sr-only", children: liveMessage }),
14235
+ noticeContent != null && noticeContent !== false && /* @__PURE__ */ jsx13(
13971
14236
  "div",
13972
14237
  {
13973
14238
  role: "status",
@@ -13976,32 +14241,32 @@ function CartLineList({
13976
14241
  children: noticeContent
13977
14242
  }
13978
14243
  ),
13979
- /* @__PURE__ */ jsx11("ul", { className: "space-y-4", children: items.map((item) => {
14244
+ /* @__PURE__ */ jsx13("ul", { className: "space-y-4", children: items.map((item) => {
13980
14245
  const maxQty = item.maxStock ?? Infinity;
13981
14246
  const atMax = item.quantity >= maxQty;
13982
14247
  const atMin = item.quantity <= 1;
13983
- return /* @__PURE__ */ jsxs9(
14248
+ return /* @__PURE__ */ jsxs11(
13984
14249
  "li",
13985
14250
  {
13986
14251
  className: "flex gap-4 rounded-xl border border-border bg-card p-4",
13987
14252
  children: [
13988
- /* @__PURE__ */ jsx11("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx11("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
13989
- /* @__PURE__ */ jsxs9("div", { className: "min-w-0 flex-1", children: [
13990
- /* @__PURE__ */ jsx11("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
13991
- item.variantName && /* @__PURE__ */ jsx11("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
13992
- /* @__PURE__ */ jsxs9("p", { className: "mt-1 text-sm text-muted-foreground", children: [
14253
+ /* @__PURE__ */ jsx13("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-muted", children: item.imageUrl ? /* @__PURE__ */ jsx13("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) : null }),
14254
+ /* @__PURE__ */ jsxs11("div", { className: "min-w-0 flex-1", children: [
14255
+ /* @__PURE__ */ jsx13("p", { className: "truncate text-sm font-semibold leading-tight", children: item.name }),
14256
+ item.variantName && /* @__PURE__ */ jsx13("p", { className: "mt-0.5 text-xs text-muted-foreground", children: item.variantName }),
14257
+ /* @__PURE__ */ jsxs11("p", { className: "mt-1 text-sm text-muted-foreground", children: [
13993
14258
  formatPrice(item.unitPrice, currencyCode, locale),
13994
14259
  " ",
13995
14260
  t.unitPriceSuffix
13996
14261
  ] }),
13997
- /* @__PURE__ */ jsxs9(
14262
+ /* @__PURE__ */ jsxs11(
13998
14263
  "div",
13999
14264
  {
14000
14265
  role: "group",
14001
14266
  "aria-label": t.quantityLabel,
14002
14267
  className: "mt-3 flex items-center gap-3",
14003
14268
  children: [
14004
- /* @__PURE__ */ jsx11(
14269
+ /* @__PURE__ */ jsx13(
14005
14270
  "button",
14006
14271
  {
14007
14272
  type: "button",
@@ -14012,8 +14277,8 @@ function CartLineList({
14012
14277
  children: "\u2212"
14013
14278
  }
14014
14279
  ),
14015
- /* @__PURE__ */ jsx11("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14016
- /* @__PURE__ */ jsx11(
14280
+ /* @__PURE__ */ jsx13("span", { className: "w-8 text-center text-sm font-semibold tabular-nums", children: item.quantity }),
14281
+ /* @__PURE__ */ jsx13(
14017
14282
  "button",
14018
14283
  {
14019
14284
  type: "button",
@@ -14024,7 +14289,7 @@ function CartLineList({
14024
14289
  children: "+"
14025
14290
  }
14026
14291
  ),
14027
- onRemove && /* @__PURE__ */ jsx11(
14292
+ onRemove && /* @__PURE__ */ jsx13(
14028
14293
  "button",
14029
14294
  {
14030
14295
  type: "button",
@@ -14038,7 +14303,7 @@ function CartLineList({
14038
14303
  }
14039
14304
  )
14040
14305
  ] }),
14041
- /* @__PURE__ */ jsx11("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx11("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
14306
+ /* @__PURE__ */ jsx13("div", { className: "flex-shrink-0 text-right", children: /* @__PURE__ */ jsx13("p", { className: "text-base font-bold", children: formatPrice(item.unitPrice * item.quantity, currencyCode, locale) }) })
14042
14307
  ]
14043
14308
  },
14044
14309
  lineKey(item.productId, item.variantId)
@@ -14048,8 +14313,8 @@ function CartLineList({
14048
14313
  }
14049
14314
 
14050
14315
  // src/components/cart-summary.tsx
14051
- import { cn as cn11 } from "@reblu/site-ui/utils";
14052
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
14316
+ import { cn as cn13 } from "@reblu/site-ui/utils";
14317
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
14053
14318
  var DEFAULT_LABELS3 = {
14054
14319
  subtotal: "Subtotal",
14055
14320
  discountPrefix: "Descuento",
@@ -14076,40 +14341,40 @@ function CartSummary({
14076
14341
  const hasDiscount = Boolean(discount && discount > 0);
14077
14342
  const noticeContent = notice === true ? t.cancelledNotice : notice;
14078
14343
  const hasNotice = noticeContent != null && noticeContent !== false;
14079
- const breakdown = /* @__PURE__ */ jsxs10(
14344
+ const breakdown = /* @__PURE__ */ jsxs12(
14080
14345
  "dl",
14081
14346
  {
14082
- className: cn11("space-y-2 text-sm", !hasNotice && className),
14347
+ className: cn13("space-y-2 text-sm", !hasNotice && className),
14083
14348
  "data-slot": "cart-summary",
14084
14349
  children: [
14085
- /* @__PURE__ */ jsxs10("div", { className: "flex justify-between text-muted-foreground", children: [
14086
- /* @__PURE__ */ jsx12("dt", { children: t.subtotal }),
14087
- /* @__PURE__ */ jsx12("dd", { children: formatPrice(subtotal, currencyCode, locale) })
14350
+ /* @__PURE__ */ jsxs12("div", { className: "flex justify-between text-muted-foreground", children: [
14351
+ /* @__PURE__ */ jsx14("dt", { children: t.subtotal }),
14352
+ /* @__PURE__ */ jsx14("dd", { children: formatPrice(subtotal, currencyCode, locale) })
14088
14353
  ] }),
14089
- hasDiscount && /* @__PURE__ */ jsxs10("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14090
- /* @__PURE__ */ jsxs10("dt", { children: [
14354
+ hasDiscount && /* @__PURE__ */ jsxs12("div", { className: "flex justify-between text-green-600 dark:text-green-400", children: [
14355
+ /* @__PURE__ */ jsxs12("dt", { children: [
14091
14356
  t.discountPrefix,
14092
14357
  discountCode ? ` (${discountCode})` : ""
14093
14358
  ] }),
14094
- /* @__PURE__ */ jsxs10("dd", { children: [
14359
+ /* @__PURE__ */ jsxs12("dd", { children: [
14095
14360
  "-",
14096
14361
  formatPrice(discount, currencyCode, locale)
14097
14362
  ] })
14098
14363
  ] }),
14099
- shippingEnabled && /* @__PURE__ */ jsxs10("div", { className: "flex justify-between text-muted-foreground", children: [
14100
- /* @__PURE__ */ jsx12("dt", { children: t.shipping }),
14101
- /* @__PURE__ */ jsx12("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
14364
+ shippingEnabled && /* @__PURE__ */ jsxs12("div", { className: "flex justify-between text-muted-foreground", children: [
14365
+ /* @__PURE__ */ jsx14("dt", { children: t.shipping }),
14366
+ /* @__PURE__ */ jsx14("dd", { children: shipping == null || !Number.isFinite(shipping) ? t.shippingCalculated : shipping === 0 ? t.freeShipping : formatPrice(shipping, currencyCode, locale) })
14102
14367
  ] }),
14103
- /* @__PURE__ */ jsxs10("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14104
- /* @__PURE__ */ jsx12("dt", { children: t.total }),
14105
- /* @__PURE__ */ jsx12("dd", { children: formatPrice(total, currencyCode, locale) })
14368
+ /* @__PURE__ */ jsxs12("div", { className: "flex justify-between border-t border-border pt-2 text-base font-bold", children: [
14369
+ /* @__PURE__ */ jsx14("dt", { children: t.total }),
14370
+ /* @__PURE__ */ jsx14("dd", { children: formatPrice(total, currencyCode, locale) })
14106
14371
  ] })
14107
14372
  ]
14108
14373
  }
14109
14374
  );
14110
14375
  if (!hasNotice) return breakdown;
14111
- return /* @__PURE__ */ jsxs10("div", { className: cn11("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14112
- /* @__PURE__ */ jsx12(
14376
+ return /* @__PURE__ */ jsxs12("div", { className: cn13("space-y-3", className), "data-slot": "cart-summary-wrapper", children: [
14377
+ /* @__PURE__ */ jsx14(
14113
14378
  "div",
14114
14379
  {
14115
14380
  role: "status",
@@ -14123,8 +14388,8 @@ function CartSummary({
14123
14388
  }
14124
14389
 
14125
14390
  // src/components/added-to-cart-toast.tsx
14126
- import { cn as cn12 } from "@reblu/site-ui/utils";
14127
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
14391
+ import { cn as cn14 } from "@reblu/site-ui/utils";
14392
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
14128
14393
  var DEFAULT_LABELS4 = {
14129
14394
  success: "A\xF1adido al carrito",
14130
14395
  error: "No se pudo a\xF1adir al carrito",
@@ -14144,12 +14409,12 @@ function AddedToCartToast({
14144
14409
  const message = status === "error" ? t.error : status === "outOfStock" ? t.outOfStock : t.success;
14145
14410
  const hasThumbnail = Boolean(imageUrl && imageUrl.trim().length > 0);
14146
14411
  const variant = status === "success" ? "success" : "error";
14147
- return /* @__PURE__ */ jsxs11(
14412
+ return /* @__PURE__ */ jsxs13(
14148
14413
  "div",
14149
14414
  {
14150
14415
  "data-slot": "added-to-cart-toast",
14151
14416
  "data-variant": variant,
14152
- className: cn12(
14417
+ className: cn14(
14153
14418
  "flex items-center gap-3 rounded-xl border border-border bg-card p-3 text-sm shadow-lg",
14154
14419
  variant === "success" && "border-green-600/30 dark:border-green-400/30",
14155
14420
  variant === "error" && "border-destructive/30",
@@ -14157,20 +14422,20 @@ function AddedToCartToast({
14157
14422
  ),
14158
14423
  children: [
14159
14424
  hasThumbnail && // eslint-disable-next-line @next/next/no-img-element -- toast content, not a Next <Image> layout context
14160
- /* @__PURE__ */ jsx13("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14161
- /* @__PURE__ */ jsxs11("div", { className: "min-w-0 flex-1", children: [
14162
- /* @__PURE__ */ jsx13("p", { className: "truncate font-semibold text-foreground", children: productName }),
14163
- /* @__PURE__ */ jsx13("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
14425
+ /* @__PURE__ */ jsx15("img", { src: imageUrl, alt: productName, className: "h-10 w-10 flex-shrink-0 rounded-lg object-cover" }),
14426
+ /* @__PURE__ */ jsxs13("div", { className: "min-w-0 flex-1", children: [
14427
+ /* @__PURE__ */ jsx15("p", { className: "truncate font-semibold text-foreground", children: productName }),
14428
+ /* @__PURE__ */ jsx15("p", { className: "truncate text-muted-foreground", children: quantity && quantity > 1 ? `${message} \xB7 x${quantity}` : message })
14164
14429
  ] }),
14165
- /* @__PURE__ */ jsx13("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx13("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
14430
+ /* @__PURE__ */ jsx15("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx15("a", { href: cartHref, className: "text-sm font-semibold text-primary underline-offset-2 hover:underline", children: t.viewCart }) })
14166
14431
  ]
14167
14432
  }
14168
14433
  );
14169
14434
  }
14170
14435
 
14171
14436
  // src/components/checkout-login-prompt.tsx
14172
- import { cn as cn13 } from "@reblu/site-ui/utils";
14173
- import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
14437
+ import { cn as cn15 } from "@reblu/site-ui/utils";
14438
+ import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
14174
14439
  var DEFAULT_LABELS5 = {
14175
14440
  title: "Identificaci\xF3n",
14176
14441
  description: "Introduce tu email para agilizar el proceso o contin\xFAa como invitado.",
@@ -14197,26 +14462,26 @@ function CheckoutLoginPrompt({
14197
14462
  if (!open) return null;
14198
14463
  const t = { ...DEFAULT_LABELS5, ...labels };
14199
14464
  const isValidEmail = EMAIL_PATTERN.test(email.trim());
14200
- return /* @__PURE__ */ jsxs12(Fragment3, { children: [
14201
- /* @__PURE__ */ jsx14("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14202
- /* @__PURE__ */ jsxs12(
14465
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
14466
+ /* @__PURE__ */ jsx16("div", { className: "fixed inset-0 z-50 bg-black/50", onClick: onClose, "aria-hidden": "true" }),
14467
+ /* @__PURE__ */ jsxs14(
14203
14468
  "div",
14204
14469
  {
14205
14470
  role: "dialog",
14206
14471
  "aria-modal": "true",
14207
14472
  "aria-labelledby": "checkout-login-prompt-title",
14208
14473
  "data-slot": "checkout-login-prompt",
14209
- className: cn13(
14474
+ className: cn15(
14210
14475
  "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",
14211
14476
  className
14212
14477
  ),
14213
14478
  children: [
14214
- /* @__PURE__ */ jsxs12("div", { className: "flex items-start justify-between gap-3", children: [
14215
- /* @__PURE__ */ jsxs12("div", { children: [
14216
- /* @__PURE__ */ jsx14("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14217
- /* @__PURE__ */ jsx14("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
14479
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-start justify-between gap-3", children: [
14480
+ /* @__PURE__ */ jsxs14("div", { children: [
14481
+ /* @__PURE__ */ jsx16("h2", { id: "checkout-login-prompt-title", className: "text-xl font-bold", children: t.title }),
14482
+ /* @__PURE__ */ jsx16("p", { className: "mt-1 text-sm text-muted-foreground", children: t.description })
14218
14483
  ] }),
14219
- /* @__PURE__ */ jsx14(
14484
+ /* @__PURE__ */ jsx16(
14220
14485
  "button",
14221
14486
  {
14222
14487
  type: "button",
@@ -14227,9 +14492,9 @@ function CheckoutLoginPrompt({
14227
14492
  }
14228
14493
  )
14229
14494
  ] }),
14230
- /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
14231
- /* @__PURE__ */ jsx14("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14232
- /* @__PURE__ */ jsx14(
14495
+ /* @__PURE__ */ jsxs14("div", { className: "space-y-2", children: [
14496
+ /* @__PURE__ */ jsx16("label", { htmlFor: "checkout-login-prompt-email", className: "text-sm font-medium", children: t.emailLabel }),
14497
+ /* @__PURE__ */ jsx16(
14233
14498
  "input",
14234
14499
  {
14235
14500
  id: "checkout-login-prompt-email",
@@ -14238,29 +14503,29 @@ function CheckoutLoginPrompt({
14238
14503
  value: email,
14239
14504
  onChange: (e) => onEmailChange(e.target.value),
14240
14505
  placeholder: t.emailPlaceholder,
14241
- className: cn13(
14506
+ className: cn15(
14242
14507
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14243
14508
  error ? "border-destructive" : "border-border focus:border-primary"
14244
14509
  )
14245
14510
  }
14246
14511
  ),
14247
- error && /* @__PURE__ */ jsx14("p", { className: "text-xs text-destructive", children: error })
14512
+ error && /* @__PURE__ */ jsx16("p", { className: "text-xs text-destructive", children: error })
14248
14513
  ] }),
14249
- /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
14250
- /* @__PURE__ */ jsx14(
14514
+ /* @__PURE__ */ jsxs14("div", { className: "space-y-2", children: [
14515
+ /* @__PURE__ */ jsx16(
14251
14516
  "button",
14252
14517
  {
14253
14518
  type: "button",
14254
14519
  onClick: onSubmitEmail,
14255
14520
  disabled: checking || !isValidEmail,
14256
- className: cn13(
14521
+ className: cn15(
14257
14522
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold transition-all",
14258
14523
  checking || !isValidEmail ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14259
14524
  ),
14260
14525
  children: checking ? t.checking : t.continueWithEmail
14261
14526
  }
14262
14527
  ),
14263
- /* @__PURE__ */ jsx14(
14528
+ /* @__PURE__ */ jsx16(
14264
14529
  "button",
14265
14530
  {
14266
14531
  type: "button",
@@ -14277,9 +14542,9 @@ function CheckoutLoginPrompt({
14277
14542
  }
14278
14543
 
14279
14544
  // src/components/checkout-form.tsx
14280
- import { cn as cn14 } from "@reblu/site-ui/utils";
14545
+ import { cn as cn16 } from "@reblu/site-ui/utils";
14281
14546
  import { PhoneInput } from "@reblu/site-ui/phone-input";
14282
- import { Fragment as Fragment4, jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
14547
+ import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
14283
14548
  var DEFAULT_LABELS6 = {
14284
14549
  contactTitle: "Datos de contacto",
14285
14550
  nameLabel: "Nombre completo",
@@ -14333,22 +14598,22 @@ function CheckoutForm({
14333
14598
  event.preventDefault();
14334
14599
  if (discountCode.trim() && !discountApplying) onApplyDiscount();
14335
14600
  }
14336
- return /* @__PURE__ */ jsxs13(Fragment4, { children: [
14601
+ return /* @__PURE__ */ jsxs15(Fragment4, { children: [
14337
14602
  loginPrompt,
14338
- /* @__PURE__ */ jsxs13(
14603
+ /* @__PURE__ */ jsxs15(
14339
14604
  "form",
14340
14605
  {
14341
14606
  "data-testid": "checkout-form",
14342
14607
  onSubmit,
14343
- className: cn14("space-y-8", className),
14608
+ className: cn16("space-y-8", className),
14344
14609
  "data-slot": "checkout-form",
14345
14610
  children: [
14346
- /* @__PURE__ */ jsxs13("section", { className: "space-y-4", children: [
14347
- /* @__PURE__ */ jsx15("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
14348
- /* @__PURE__ */ jsxs13("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
14349
- /* @__PURE__ */ jsxs13("div", { className: "space-y-1", children: [
14350
- /* @__PURE__ */ jsx15("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
14351
- /* @__PURE__ */ jsx15(
14611
+ /* @__PURE__ */ jsxs15("section", { className: "space-y-4", children: [
14612
+ /* @__PURE__ */ jsx17("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.contactTitle }),
14613
+ /* @__PURE__ */ jsxs15("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
14614
+ /* @__PURE__ */ jsxs15("div", { className: "space-y-1", children: [
14615
+ /* @__PURE__ */ jsx17("label", { htmlFor: "checkout-form-name", className: "text-sm font-medium", children: t.nameLabel }),
14616
+ /* @__PURE__ */ jsx17(
14352
14617
  "input",
14353
14618
  {
14354
14619
  id: "checkout-form-name",
@@ -14357,17 +14622,17 @@ function CheckoutForm({
14357
14622
  value: contact.name,
14358
14623
  onChange: (e) => patchContact({ name: e.target.value }),
14359
14624
  placeholder: t.namePlaceholder,
14360
- className: cn14(
14625
+ className: cn16(
14361
14626
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14362
14627
  contactErrors?.name ? "border-destructive" : "border-border focus:border-primary"
14363
14628
  )
14364
14629
  }
14365
14630
  ),
14366
- contactErrors?.name && /* @__PURE__ */ jsx15("p", { className: "text-xs text-destructive", children: contactErrors.name })
14631
+ contactErrors?.name && /* @__PURE__ */ jsx17("p", { className: "text-xs text-destructive", children: contactErrors.name })
14367
14632
  ] }),
14368
- /* @__PURE__ */ jsxs13("div", { className: "space-y-1", children: [
14369
- /* @__PURE__ */ jsx15("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
14370
- /* @__PURE__ */ jsx15(
14633
+ /* @__PURE__ */ jsxs15("div", { className: "space-y-1", children: [
14634
+ /* @__PURE__ */ jsx17("label", { htmlFor: "checkout-form-email", className: "text-sm font-medium", children: t.emailLabel }),
14635
+ /* @__PURE__ */ jsx17(
14371
14636
  "input",
14372
14637
  {
14373
14638
  id: "checkout-form-email",
@@ -14376,15 +14641,15 @@ function CheckoutForm({
14376
14641
  value: contact.email,
14377
14642
  onChange: (e) => patchContact({ email: e.target.value }),
14378
14643
  placeholder: t.emailPlaceholder,
14379
- className: cn14(
14644
+ className: cn16(
14380
14645
  "w-full rounded-lg border bg-background px-3 py-2 text-sm transition focus:outline-none focus:ring-2 focus:ring-primary/20",
14381
14646
  contactErrors?.email ? "border-destructive" : "border-border focus:border-primary"
14382
14647
  )
14383
14648
  }
14384
14649
  ),
14385
- contactErrors?.email && /* @__PURE__ */ jsx15("p", { className: "text-xs text-destructive", children: contactErrors.email })
14650
+ contactErrors?.email && /* @__PURE__ */ jsx17("p", { className: "text-xs text-destructive", children: contactErrors.email })
14386
14651
  ] }),
14387
- /* @__PURE__ */ jsx15("div", { className: "space-y-1", children: /* @__PURE__ */ jsx15(
14652
+ /* @__PURE__ */ jsx17("div", { className: "space-y-1", children: /* @__PURE__ */ jsx17(
14388
14653
  PhoneInput,
14389
14654
  {
14390
14655
  id: "checkout-form-phone",
@@ -14398,15 +14663,15 @@ function CheckoutForm({
14398
14663
  ] })
14399
14664
  ] }),
14400
14665
  children2,
14401
- generalError ? /* @__PURE__ */ jsx15("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
14402
- /* @__PURE__ */ jsxs13("section", { className: "space-y-3", children: [
14403
- /* @__PURE__ */ jsx15("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
14404
- appliedDiscount ? /* @__PURE__ */ jsxs13("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: [
14405
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
14406
- /* @__PURE__ */ jsx15("span", { className: "font-semibold", children: appliedDiscount.code }),
14407
- /* @__PURE__ */ jsx15("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
14666
+ generalError ? /* @__PURE__ */ jsx17("p", { role: "alert", className: "text-sm text-destructive", children: generalError }) : null,
14667
+ /* @__PURE__ */ jsxs15("section", { className: "space-y-3", children: [
14668
+ /* @__PURE__ */ jsx17("h2", { className: "border-b border-border pb-2 text-lg font-semibold", children: t.discountTitle }),
14669
+ appliedDiscount ? /* @__PURE__ */ jsxs15("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: [
14670
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 text-sm text-green-700 dark:text-green-400", children: [
14671
+ /* @__PURE__ */ jsx17("span", { className: "font-semibold", children: appliedDiscount.code }),
14672
+ /* @__PURE__ */ jsx17("span", { children: t.discountAppliedSuffix(formatPrice(appliedDiscount.amount, currencyCode, locale)) })
14408
14673
  ] }),
14409
- /* @__PURE__ */ jsx15(
14674
+ /* @__PURE__ */ jsx17(
14410
14675
  "button",
14411
14676
  {
14412
14677
  type: "button",
@@ -14416,9 +14681,9 @@ function CheckoutForm({
14416
14681
  children: t.removeDiscount
14417
14682
  }
14418
14683
  )
14419
- ] }) : /* @__PURE__ */ jsxs13("div", { className: "flex gap-2", children: [
14420
- /* @__PURE__ */ jsx15("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
14421
- /* @__PURE__ */ jsx15(
14684
+ ] }) : /* @__PURE__ */ jsxs15("div", { className: "flex gap-2", children: [
14685
+ /* @__PURE__ */ jsx17("label", { htmlFor: "checkout-form-discount-code", className: "sr-only", children: t.discountTitle }),
14686
+ /* @__PURE__ */ jsx17(
14422
14687
  "input",
14423
14688
  {
14424
14689
  id: "checkout-form-discount-code",
@@ -14430,7 +14695,7 @@ function CheckoutForm({
14430
14695
  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"
14431
14696
  }
14432
14697
  ),
14433
- /* @__PURE__ */ jsx15(
14698
+ /* @__PURE__ */ jsx17(
14434
14699
  "button",
14435
14700
  {
14436
14701
  type: "button",
@@ -14441,14 +14706,14 @@ function CheckoutForm({
14441
14706
  }
14442
14707
  )
14443
14708
  ] }),
14444
- discountError && /* @__PURE__ */ jsx15("p", { className: "text-xs text-destructive", children: discountError })
14709
+ discountError && /* @__PURE__ */ jsx17("p", { className: "text-xs text-destructive", children: discountError })
14445
14710
  ] }),
14446
- /* @__PURE__ */ jsx15(
14711
+ /* @__PURE__ */ jsx17(
14447
14712
  "button",
14448
14713
  {
14449
14714
  type: "submit",
14450
14715
  disabled: submitting || submitDisabled,
14451
- className: cn14(
14716
+ className: cn16(
14452
14717
  "flex w-full items-center justify-center gap-2 rounded-xl px-4 py-3 font-semibold transition-all",
14453
14718
  submitting || submitDisabled ? "cursor-not-allowed bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
14454
14719
  ),
@@ -14462,8 +14727,8 @@ function CheckoutForm({
14462
14727
  }
14463
14728
 
14464
14729
  // src/components/order-confirmation.tsx
14465
- import { cn as cn15 } from "@reblu/site-ui/utils";
14466
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
14730
+ import { cn as cn17 } from "@reblu/site-ui/utils";
14731
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
14467
14732
  var DEFAULT_LABELS7 = {
14468
14733
  pollingTitle: "Confirmando tu pedido\u2026",
14469
14734
  pollingDescription: "Estamos procesando el pago, un momento\u2026",
@@ -14525,48 +14790,48 @@ function OrderConfirmation({
14525
14790
  const showOrderReference = Boolean(order) && !showFullOrderSummary && (status === "refunded" || status === "partially_refunded" || status === "pending_timeout");
14526
14791
  const showSessionReference = !order && sessionId && (status === "timeout" || status === "not_found" || status === "pending_timeout");
14527
14792
  const showRecheck = (status === "pending_timeout" || status === "error") && onRecheck;
14528
- return /* @__PURE__ */ jsxs14("div", { className: cn15("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
14529
- /* @__PURE__ */ jsx16("h1", { className: "text-3xl font-bold", children: title }),
14530
- /* @__PURE__ */ jsx16("p", { className: "text-lg text-muted-foreground", children: description }),
14531
- showFullOrderSummary && order && /* @__PURE__ */ jsxs14("div", { className: "space-y-6", children: [
14532
- /* @__PURE__ */ jsxs14("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14533
- /* @__PURE__ */ jsx16("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
14534
- /* @__PURE__ */ jsx16("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14793
+ return /* @__PURE__ */ jsxs16("div", { className: cn17("space-y-6 text-center", className), "data-slot": "order-confirmation", children: [
14794
+ /* @__PURE__ */ jsx18("h1", { className: "text-3xl font-bold", children: title }),
14795
+ /* @__PURE__ */ jsx18("p", { className: "text-lg text-muted-foreground", children: description }),
14796
+ showFullOrderSummary && order && /* @__PURE__ */ jsxs16("div", { className: "space-y-6", children: [
14797
+ /* @__PURE__ */ jsxs16("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14798
+ /* @__PURE__ */ jsx18("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderNumberLabel }),
14799
+ /* @__PURE__ */ jsx18("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14535
14800
  ] }),
14536
- /* @__PURE__ */ jsxs14("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
14537
- order.items.map((item, idx) => /* @__PURE__ */ jsxs14(
14801
+ /* @__PURE__ */ jsxs16("div", { className: "mx-auto max-w-sm space-y-3 rounded-xl border border-border bg-card p-5 text-left", children: [
14802
+ order.items.map((item, idx) => /* @__PURE__ */ jsxs16(
14538
14803
  "div",
14539
14804
  {
14540
14805
  className: "flex justify-between gap-4 text-sm",
14541
14806
  children: [
14542
- /* @__PURE__ */ jsxs14("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14807
+ /* @__PURE__ */ jsxs16("span", { className: "max-w-[60%] truncate text-muted-foreground", children: [
14543
14808
  item.product.name,
14544
14809
  item.variant ? ` (${item.variant.name})` : "",
14545
14810
  " x",
14546
14811
  item.quantity
14547
14812
  ] }),
14548
- /* @__PURE__ */ jsx16("span", { children: formatPrice(item.total, currencyCode, locale) })
14813
+ /* @__PURE__ */ jsx18("span", { children: formatPrice(item.total, currencyCode, locale) })
14549
14814
  ]
14550
14815
  },
14551
14816
  idx
14552
14817
  )),
14553
- /* @__PURE__ */ jsx16("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs14("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
14554
- /* @__PURE__ */ jsx16("span", { children: t.totalLabel }),
14555
- /* @__PURE__ */ jsx16("span", { children: formatPrice(order.total, currencyCode, locale) })
14818
+ /* @__PURE__ */ jsx18("div", { className: "space-y-1 border-t border-border pt-3 text-sm", children: /* @__PURE__ */ jsxs16("div", { className: "flex justify-between pt-1 text-base font-bold", children: [
14819
+ /* @__PURE__ */ jsx18("span", { children: t.totalLabel }),
14820
+ /* @__PURE__ */ jsx18("span", { children: formatPrice(order.total, currencyCode, locale) })
14556
14821
  ] }) })
14557
14822
  ] }),
14558
- /* @__PURE__ */ jsxs14("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14823
+ /* @__PURE__ */ jsxs16("p", { className: "mx-auto max-w-sm text-sm text-muted-foreground", children: [
14559
14824
  t.confirmationEmailPrefix,
14560
14825
  " ",
14561
- /* @__PURE__ */ jsx16("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14826
+ /* @__PURE__ */ jsx18("span", { className: "font-medium text-foreground", children: order.customerEmail }),
14562
14827
  "."
14563
14828
  ] })
14564
14829
  ] }),
14565
- showOrderReference && order && /* @__PURE__ */ jsxs14("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14566
- /* @__PURE__ */ jsx16("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
14567
- /* @__PURE__ */ jsx16("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14830
+ showOrderReference && order && /* @__PURE__ */ jsxs16("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14831
+ /* @__PURE__ */ jsx18("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.orderReferenceLabel }),
14832
+ /* @__PURE__ */ jsx18("p", { className: "font-mono text-lg font-semibold", children: order.orderNumber })
14568
14833
  ] }),
14569
- status === "failed" && cartHref && /* @__PURE__ */ jsx16(
14834
+ status === "failed" && cartHref && /* @__PURE__ */ jsx18(
14570
14835
  "a",
14571
14836
  {
14572
14837
  href: cartHref,
@@ -14574,7 +14839,7 @@ function OrderConfirmation({
14574
14839
  children: t.backToCartLabel
14575
14840
  }
14576
14841
  ),
14577
- showRecheck && /* @__PURE__ */ jsx16(
14842
+ showRecheck && /* @__PURE__ */ jsx18(
14578
14843
  "button",
14579
14844
  {
14580
14845
  type: "button",
@@ -14583,9 +14848,9 @@ function OrderConfirmation({
14583
14848
  children: t.recheckLabel
14584
14849
  }
14585
14850
  ),
14586
- showSessionReference && /* @__PURE__ */ jsxs14("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14587
- /* @__PURE__ */ jsx16("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
14588
- /* @__PURE__ */ jsx16("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
14851
+ showSessionReference && /* @__PURE__ */ jsxs16("div", { className: "inline-block rounded-xl bg-muted px-6 py-4", children: [
14852
+ /* @__PURE__ */ jsx18("p", { className: "mb-1 text-xs uppercase tracking-widest text-muted-foreground", children: t.sessionReferenceLabel }),
14853
+ /* @__PURE__ */ jsx18("p", { className: "break-all font-mono text-sm font-semibold", children: sessionId })
14589
14854
  ] })
14590
14855
  ] });
14591
14856
  }
@@ -14599,12 +14864,15 @@ export {
14599
14864
  DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE,
14600
14865
  DEFAULT_SHOP_ERROR_MESSAGES,
14601
14866
  DEFAULT_SHOP_PRICE_BANDS,
14867
+ DEFAULT_TRUST_ICONS,
14602
14868
  FaqAccordion,
14603
14869
  MarkdownRenderer,
14604
14870
  OrderConfirmation,
14605
14871
  PageBlocks,
14872
+ PageCardGrid,
14606
14873
  ParentPage,
14607
14874
  ProductCard,
14875
+ ProductTrustItems,
14608
14876
  ProfileCard,
14609
14877
  SafeHtml,
14610
14878
  ShopFilters,
@@ -14621,4 +14889,26 @@ export {
14621
14889
  sanitizeHtml,
14622
14890
  shouldRenderShopFilters
14623
14891
  };
14892
+ /*! Bundled license information:
14893
+
14894
+ lucide-react/dist/esm/shared/src/utils.js:
14895
+ lucide-react/dist/esm/defaultAttributes.js:
14896
+ lucide-react/dist/esm/Icon.js:
14897
+ lucide-react/dist/esm/createLucideIcon.js:
14898
+ lucide-react/dist/esm/icons/award.js:
14899
+ lucide-react/dist/esm/icons/badge-check.js:
14900
+ lucide-react/dist/esm/icons/gift.js:
14901
+ lucide-react/dist/esm/icons/headset.js:
14902
+ lucide-react/dist/esm/icons/rotate-ccw.js:
14903
+ lucide-react/dist/esm/icons/shield-check.js:
14904
+ lucide-react/dist/esm/icons/store.js:
14905
+ lucide-react/dist/esm/icons/truck.js:
14906
+ lucide-react/dist/esm/lucide-react.js:
14907
+ (**
14908
+ * @license lucide-react v0.562.0 - ISC
14909
+ *
14910
+ * This source code is licensed under the ISC license.
14911
+ * See the LICENSE file in the root directory of this source tree.
14912
+ *)
14913
+ */
14624
14914
  //# sourceMappingURL=index.js.map