keystone-design-bootstrap 1.0.50 → 1.0.53
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/{blog-post-D7HFCDp1.d.ts → blog-post-DGjaJ3wf.d.ts} +2 -2
- package/dist/design_system/sections/index.d.ts +7 -25
- package/dist/design_system/sections/index.js +257 -405
- package/dist/design_system/sections/index.js.map +1 -1
- package/dist/{form-BLZuTGkr.d.ts → form-CpsCONG5.d.ts} +16 -2
- package/dist/index.d.ts +4 -5
- package/dist/index.js +275 -423
- package/dist/index.js.map +1 -1
- package/dist/lib/server-api.d.ts +3 -46
- package/dist/lib/server-api.js +0 -9
- package/dist/lib/server-api.js.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/utils/photo-helpers.d.ts +1 -1
- package/package.json +1 -1
- package/src/design_system/sections/email-signup-section.tsx +115 -0
- package/src/design_system/sections/header-navigation.aman.tsx +8 -3
- package/src/design_system/sections/header-navigation.balance.tsx +2 -0
- package/src/design_system/sections/header-navigation.barelux.tsx +4 -1
- package/src/design_system/sections/index.tsx +5 -16
- package/src/design_system/sections/service-menu-section.tsx +58 -146
- package/src/lib/server-api.ts +0 -54
- package/src/next/contexts/form-definitions.tsx +5 -2
- package/src/next/layouts/root-layout.tsx +3 -0
- package/src/types/api/form.ts +1 -1
- package/src/types/api/offer.ts +13 -0
- package/src/types/api/service.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/design_system/sections/offer-detail.tsx +0 -46
- package/src/design_system/sections/offers-gallery.tsx +0 -40
- package/src/design_system/sections/offers-grid.tsx +0 -108
- package/src/design_system/sections/offers-section.tsx +0 -90
- package/dist/{photos-8jMeetqV.d.ts → website-photos-Bm-CBK9g.d.ts} +20 -20
|
@@ -38,7 +38,7 @@ var __objRest = (source, exclude) => {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
// src/design_system/sections/index.tsx
|
|
41
|
-
import
|
|
41
|
+
import React61 from "react";
|
|
42
42
|
|
|
43
43
|
// src/lib/component-registry.ts
|
|
44
44
|
var registry = /* @__PURE__ */ new Map();
|
|
@@ -8438,116 +8438,9 @@ var PolicyDocumentSection = ({
|
|
|
8438
8438
|
return /* @__PURE__ */ React.createElement("section", { className: `py-12 md:py-16 ${className}` }, /* @__PURE__ */ React.createElement("div", { className: "mx-auto max-w-3xl px-4 md:px-8" }, /* @__PURE__ */ React.createElement("header", { className: "mb-10 border-b border-gray-200 pb-8" }, /* @__PURE__ */ React.createElement("h1", { className: "font-display text-4xl font-semibold text-gray-900 md:text-5xl" }, title), effectiveDate && /* @__PURE__ */ React.createElement("p", { className: "mt-3 text-sm text-gray-500" }, "Effective Date: ", effectiveDate)), /* @__PURE__ */ React.createElement("div", { className: "prose prose-gray max-w-none text-gray-700" }, /* @__PURE__ */ React.createElement(MarkdownRenderer, { content }))));
|
|
8439
8439
|
};
|
|
8440
8440
|
|
|
8441
|
-
// src/design_system/sections/offers-section.tsx
|
|
8442
|
-
function OffersSection({
|
|
8443
|
-
offers,
|
|
8444
|
-
title = "Offers",
|
|
8445
|
-
subtitle = "See our current offers.",
|
|
8446
|
-
maxOffers = 6,
|
|
8447
|
-
backgroundColor = "bg-primary",
|
|
8448
|
-
showViewAll = true
|
|
8449
|
-
}) {
|
|
8450
|
-
const list = Array.isArray(offers) ? offers : [];
|
|
8451
|
-
const displayList = list.filter((o) => !o.expired).slice(0, maxOffers);
|
|
8452
|
-
if (list.length === 0) {
|
|
8453
|
-
return null;
|
|
8454
|
-
}
|
|
8455
|
-
return /* @__PURE__ */ React.createElement("section", { className: `${backgroundColor} py-16 md:py-24` }, /* @__PURE__ */ React.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-start justify-between lg:flex-row" }, /* @__PURE__ */ React.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm font-semibold text-brand-secondary md:text-md" }, "Current offers"), /* @__PURE__ */ React.createElement("h2", { className: "mt-3 text-display-sm font-semibold text-primary md:text-display-md" }, title), /* @__PURE__ */ React.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), showViewAll && /* @__PURE__ */ React.createElement("div", { className: "hidden gap-3 lg:flex" }, /* @__PURE__ */ React.createElement(Button2, { size: "xl", href: "/offers" }, "View all offers"))), /* @__PURE__ */ React.createElement("div", { className: "mx-auto mt-12 max-w-2xl space-y-6" }, displayList.map((offer) => /* @__PURE__ */ React.createElement(OfferCard, { key: offer.id, offer }))), showViewAll && /* @__PURE__ */ React.createElement("div", { className: "mt-12 flex flex-col gap-3 lg:hidden" }, /* @__PURE__ */ React.createElement(Button2, { size: "xl", href: "/offers" }, "View all offers"))));
|
|
8456
|
-
}
|
|
8457
|
-
function OfferCard({ offer }) {
|
|
8458
|
-
return /* @__PURE__ */ React.createElement("div", { className: "rounded-2xl border border-secondary bg-secondary/30 p-5 md:p-6" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement("h3", { className: "text-lg font-semibold text-primary" }, offer.name), offer.description && /* @__PURE__ */ React.createElement("p", { className: "text-tertiary" }, offer.description), offer.value_terms && /* @__PURE__ */ React.createElement("p", { className: "text-sm font-medium text-primary" }, offer.value_terms), offer.expires_at && (() => {
|
|
8459
|
-
const d = new Date(offer.expires_at);
|
|
8460
|
-
if (Number.isNaN(d.getTime())) return null;
|
|
8461
|
-
return /* @__PURE__ */ React.createElement("p", { className: "text-xs text-tertiary" }, "Expires ", d.toLocaleDateString());
|
|
8462
|
-
})()));
|
|
8463
|
-
}
|
|
8464
|
-
|
|
8465
|
-
// src/design_system/sections/offers-gallery.tsx
|
|
8466
|
-
import React36 from "react";
|
|
8467
|
-
|
|
8468
|
-
// src/design_system/sections/offers-grid.tsx
|
|
8469
|
-
import React35 from "react";
|
|
8470
|
-
function OffersGrid({
|
|
8471
|
-
offers,
|
|
8472
|
-
title = "Offers",
|
|
8473
|
-
subtitle = "See our current offers.",
|
|
8474
|
-
websitePhotos,
|
|
8475
|
-
companyInformation,
|
|
8476
|
-
backgroundColor = "bg-primary"
|
|
8477
|
-
}) {
|
|
8478
|
-
const list = Array.isArray(offers) ? offers : [];
|
|
8479
|
-
const displayList = list.filter((o) => !o.expired);
|
|
8480
|
-
return /* @__PURE__ */ React35.createElement("section", { className: `${backgroundColor} py-16 md:py-24` }, /* @__PURE__ */ React35.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React35.createElement("div", { className: "mx-auto max-w-3xl text-center" }, /* @__PURE__ */ React35.createElement("h1", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React35.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), displayList.length > 0 ? /* @__PURE__ */ React35.createElement("ul", { className: "mx-auto mt-12 grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3" }, displayList.map((offer, index) => /* @__PURE__ */ React35.createElement("li", { key: offer.id }, /* @__PURE__ */ React35.createElement(
|
|
8481
|
-
OffersGridCard,
|
|
8482
|
-
{
|
|
8483
|
-
offer,
|
|
8484
|
-
index,
|
|
8485
|
-
websitePhotos,
|
|
8486
|
-
companyInformation
|
|
8487
|
-
}
|
|
8488
|
-
)))) : /* @__PURE__ */ React35.createElement("div", { className: "mx-auto mt-12 max-w-md text-center" }, /* @__PURE__ */ React35.createElement("p", { className: "text-tertiary" }, "No offers available at the moment. Check back later."))));
|
|
8489
|
-
}
|
|
8490
|
-
function OffersGridCard({
|
|
8491
|
-
offer,
|
|
8492
|
-
index,
|
|
8493
|
-
websitePhotos,
|
|
8494
|
-
companyInformation
|
|
8495
|
-
}) {
|
|
8496
|
-
var _a;
|
|
8497
|
-
return /* @__PURE__ */ React35.createElement("article", { className: "flex flex-col overflow-hidden rounded-2xl border border-secondary bg-secondary/30" }, /* @__PURE__ */ React35.createElement("div", { className: "aspect-[4/3] w-full overflow-hidden" }, /* @__PURE__ */ React35.createElement(
|
|
8498
|
-
PhotoWithFallback2,
|
|
8499
|
-
{
|
|
8500
|
-
item: void 0,
|
|
8501
|
-
fallbackId: (_a = offer.id) != null ? _a : index,
|
|
8502
|
-
alt: offer.name,
|
|
8503
|
-
className: "size-full object-cover",
|
|
8504
|
-
websitePhotos,
|
|
8505
|
-
companyInformation
|
|
8506
|
-
}
|
|
8507
|
-
)), /* @__PURE__ */ React35.createElement("div", { className: "flex flex-1 flex-col gap-3 p-5 md:p-6" }, /* @__PURE__ */ React35.createElement("h2", { className: "text-lg font-semibold text-primary" }, offer.name), offer.description && /* @__PURE__ */ React35.createElement("p", { className: "text-tertiary line-clamp-2" }, offer.description), offer.value_terms && /* @__PURE__ */ React35.createElement("p", { className: "text-sm font-medium text-primary" }, offer.value_terms), offer.expires_at && (() => {
|
|
8508
|
-
const d = new Date(offer.expires_at);
|
|
8509
|
-
if (Number.isNaN(d.getTime())) return null;
|
|
8510
|
-
return /* @__PURE__ */ React35.createElement("p", { className: "text-xs text-tertiary" }, "Expires ", d.toLocaleDateString());
|
|
8511
|
-
})()));
|
|
8512
|
-
}
|
|
8513
|
-
|
|
8514
|
-
// src/design_system/sections/offers-gallery.tsx
|
|
8515
|
-
var OffersGallery = ({
|
|
8516
|
-
offers,
|
|
8517
|
-
title = "Offers",
|
|
8518
|
-
subtitle = "See our current offers.",
|
|
8519
|
-
websitePhotos,
|
|
8520
|
-
companyInformation,
|
|
8521
|
-
className = ""
|
|
8522
|
-
}) => /* @__PURE__ */ React36.createElement("section", { className }, /* @__PURE__ */ React36.createElement(
|
|
8523
|
-
OffersGrid,
|
|
8524
|
-
{
|
|
8525
|
-
offers,
|
|
8526
|
-
title,
|
|
8527
|
-
subtitle,
|
|
8528
|
-
websitePhotos,
|
|
8529
|
-
companyInformation
|
|
8530
|
-
}
|
|
8531
|
-
));
|
|
8532
|
-
registerThemeVariant("offers-gallery", "classic", OffersGallery);
|
|
8533
|
-
|
|
8534
|
-
// src/design_system/sections/offer-detail.tsx
|
|
8535
|
-
import React37 from "react";
|
|
8536
|
-
var OfferDetailSection = ({ offer }) => {
|
|
8537
|
-
if (!offer) {
|
|
8538
|
-
return /* @__PURE__ */ React37.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React37.createElement("div", { className: "text-6xl mb-4" }, "\u{1F381}"), /* @__PURE__ */ React37.createElement("h3", { className: "text-xl font-semibold text-gray-900 mb-2" }, "Offer Not Found"), /* @__PURE__ */ React37.createElement("p", { className: "text-gray-600 mb-4" }, "The offer you're looking for doesn't exist or has expired."), /* @__PURE__ */ React37.createElement(Button2, { href: "/offers" }, "View All Offers"));
|
|
8539
|
-
}
|
|
8540
|
-
return /* @__PURE__ */ React37.createElement("div", { className: "mx-auto max-w-3xl px-4 py-12" }, /* @__PURE__ */ React37.createElement("h1", { className: "text-2xl font-semibold text-gray-900 mb-4" }, offer.name), offer.value_terms && /* @__PURE__ */ React37.createElement("p", { className: "text-gray-600 mb-2" }, offer.value_terms), offer.description && /* @__PURE__ */ React37.createElement("p", { className: "text-gray-600 mb-4" }, offer.description), offer.expires_at && (() => {
|
|
8541
|
-
const d = new Date(offer.expires_at);
|
|
8542
|
-
if (Number.isNaN(d.getTime())) return null;
|
|
8543
|
-
return /* @__PURE__ */ React37.createElement("p", { className: "text-sm text-gray-500 mb-6" }, "Expires ", d.toLocaleDateString());
|
|
8544
|
-
})(), /* @__PURE__ */ React37.createElement(Button2, { href: "/offers" }, "Back to Offers"));
|
|
8545
|
-
};
|
|
8546
|
-
registerThemeVariant("offer-detail", "classic", OfferDetailSection);
|
|
8547
|
-
|
|
8548
8441
|
// src/design_system/sections/hero-home.aman.tsx
|
|
8549
8442
|
import { Fragment as Fragment3, useState as useState15 } from "react";
|
|
8550
|
-
import
|
|
8443
|
+
import React35 from "react";
|
|
8551
8444
|
var HeroHome2 = ({
|
|
8552
8445
|
websitePhotos,
|
|
8553
8446
|
companyInformation,
|
|
@@ -8565,7 +8458,7 @@ var HeroHome2 = ({
|
|
|
8565
8458
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
8566
8459
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || "Hero image"
|
|
8567
8460
|
};
|
|
8568
|
-
return /* @__PURE__ */
|
|
8461
|
+
return /* @__PURE__ */ React35.createElement(Fragment3, null, /* @__PURE__ */ React35.createElement("section", { className: "py-24 md:py-32" }, /* @__PURE__ */ React35.createElement("div", { className: "mx-auto max-w-4xl px-4 text-center md:px-8" }, /* @__PURE__ */ React35.createElement("h1", { className: "font-display text-5xl font-normal leading-tight text-fg-primary md:text-6xl lg:text-7xl" }, headline), /* @__PURE__ */ React35.createElement("p", { className: "mt-6 font-body text-lg leading-relaxed text-tertiary md:text-xl max-w-3xl mx-auto" }, subhead), ctaText && /* @__PURE__ */ React35.createElement(
|
|
8569
8462
|
"a",
|
|
8570
8463
|
{
|
|
8571
8464
|
href: effectiveCtaHref,
|
|
@@ -8575,7 +8468,7 @@ var HeroHome2 = ({
|
|
|
8575
8468
|
style: { color: "var(--color-text-brand-accent)" }
|
|
8576
8469
|
},
|
|
8577
8470
|
ctaText
|
|
8578
|
-
))), /* @__PURE__ */
|
|
8471
|
+
))), /* @__PURE__ */ React35.createElement("section", null, /* @__PURE__ */ React35.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React35.createElement("div", { className: "relative w-full h-[400px] md:h-[500px] lg:h-[600px]" }, /* @__PURE__ */ React35.createElement(
|
|
8579
8472
|
PhotoWithFallback2,
|
|
8580
8473
|
{
|
|
8581
8474
|
photoUrl: heroImage.url,
|
|
@@ -8583,7 +8476,7 @@ var HeroHome2 = ({
|
|
|
8583
8476
|
fallbackId: "hero-home-brand",
|
|
8584
8477
|
className: "w-full h-full object-cover"
|
|
8585
8478
|
}
|
|
8586
|
-
), videoUrl && /* @__PURE__ */
|
|
8479
|
+
), videoUrl && /* @__PURE__ */ React35.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React35.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))))), videoUrl && /* @__PURE__ */ React35.createElement(
|
|
8587
8480
|
VideoModal,
|
|
8588
8481
|
{
|
|
8589
8482
|
isOpen: showVideo,
|
|
@@ -8595,7 +8488,7 @@ var HeroHome2 = ({
|
|
|
8595
8488
|
registerThemeVariant("hero-home", "aman", HeroHome2);
|
|
8596
8489
|
|
|
8597
8490
|
// src/design_system/sections/header-navigation.aman.tsx
|
|
8598
|
-
import
|
|
8491
|
+
import React36, { useState as useState16, useRef as useRef9, useCallback as useCallback5 } from "react";
|
|
8599
8492
|
import Link6 from "next/link";
|
|
8600
8493
|
import Image11 from "next/image";
|
|
8601
8494
|
var MAX_DROPDOWN_ITEMS = 3;
|
|
@@ -8614,14 +8507,14 @@ function HeaderNavigation2({
|
|
|
8614
8507
|
const [dropdownTop, setDropdownTop] = useState16(0);
|
|
8615
8508
|
const [isScrolled, setIsScrolled] = useState16(false);
|
|
8616
8509
|
const closeTimeoutRef = useRef9(null);
|
|
8617
|
-
|
|
8510
|
+
React36.useEffect(() => {
|
|
8618
8511
|
const handleScroll = () => {
|
|
8619
8512
|
setIsScrolled(window.scrollY > 10);
|
|
8620
8513
|
};
|
|
8621
8514
|
window.addEventListener("scroll", handleScroll);
|
|
8622
8515
|
return () => window.removeEventListener("scroll", handleScroll);
|
|
8623
8516
|
}, []);
|
|
8624
|
-
|
|
8517
|
+
React36.useEffect(() => {
|
|
8625
8518
|
return () => {
|
|
8626
8519
|
if (closeTimeoutRef.current) {
|
|
8627
8520
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -8684,10 +8577,10 @@ function HeaderNavigation2({
|
|
|
8684
8577
|
viewAllLabel: ""
|
|
8685
8578
|
};
|
|
8686
8579
|
};
|
|
8687
|
-
return /* @__PURE__ */
|
|
8580
|
+
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary border-b border-secondary transition-all duration-300" }, /* @__PURE__ */ React36.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React36.createElement("div", { className: cx(
|
|
8688
8581
|
"relative flex items-center justify-between transition-all duration-300",
|
|
8689
8582
|
isScrolled ? "py-2" : "py-8"
|
|
8690
|
-
) }, /* @__PURE__ */
|
|
8583
|
+
) }, /* @__PURE__ */ React36.createElement(Link6, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center" }, logoUrl && /* @__PURE__ */ React36.createElement(
|
|
8691
8584
|
Image11,
|
|
8692
8585
|
{
|
|
8693
8586
|
src: logoUrl,
|
|
@@ -8696,7 +8589,7 @@ function HeaderNavigation2({
|
|
|
8696
8589
|
width: 120,
|
|
8697
8590
|
height: 40
|
|
8698
8591
|
}
|
|
8699
|
-
)), /* @__PURE__ */
|
|
8592
|
+
)), /* @__PURE__ */ React36.createElement(Link6, { href: ((_e = props == null ? void 0 : props.logo) == null ? void 0 : _e.href) || "/", className: "absolute left-1/2 transform -translate-x-1/2 font-display text-2xl md:text-3xl font-normal uppercase tracking-widest text-fg-primary", suppressHydrationWarning: true }, companyName), /* @__PURE__ */ React36.createElement("div", { className: "flex items-center gap-3" }, ((_f = props == null ? void 0 : props.cta_button) == null ? void 0 : _f.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React36.createElement(
|
|
8700
8593
|
Button2,
|
|
8701
8594
|
{
|
|
8702
8595
|
href: ctaUrls.secondaryHref,
|
|
@@ -8707,7 +8600,7 @@ function HeaderNavigation2({
|
|
|
8707
8600
|
className: "font-body text-sm uppercase tracking-wide px-6 py-2 rounded-sm"
|
|
8708
8601
|
},
|
|
8709
8602
|
props.cta_button.label
|
|
8710
|
-
), /* @__PURE__ */
|
|
8603
|
+
), /* @__PURE__ */ React36.createElement(
|
|
8711
8604
|
Button2,
|
|
8712
8605
|
{
|
|
8713
8606
|
href: ctaUrls.primaryHref,
|
|
@@ -8718,7 +8611,7 @@ function HeaderNavigation2({
|
|
|
8718
8611
|
className: "font-body text-sm uppercase tracking-wide px-6 py-2 rounded-sm"
|
|
8719
8612
|
},
|
|
8720
8613
|
((_j = props == null ? void 0 : props.cta_button) == null ? void 0 : _j.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_k = props == null ? void 0 : props.cta_button) == null ? void 0 : _k.label) || "Contact"
|
|
8721
|
-
))), /* @__PURE__ */
|
|
8614
|
+
))), /* @__PURE__ */ React36.createElement("nav", { className: "border-b border-secondary" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center justify-center gap-8 py-4" }, navigation.map((item, i) => /* @__PURE__ */ React36.createElement(
|
|
8722
8615
|
"div",
|
|
8723
8616
|
{
|
|
8724
8617
|
key: i,
|
|
@@ -8726,7 +8619,7 @@ function HeaderNavigation2({
|
|
|
8726
8619
|
onMouseEnter: (e) => handleMouseEnter(item, e),
|
|
8727
8620
|
onMouseLeave: handleMouseLeave
|
|
8728
8621
|
},
|
|
8729
|
-
/* @__PURE__ */
|
|
8622
|
+
/* @__PURE__ */ React36.createElement(
|
|
8730
8623
|
Link6,
|
|
8731
8624
|
{
|
|
8732
8625
|
href: item.href,
|
|
@@ -8737,7 +8630,7 @@ function HeaderNavigation2({
|
|
|
8737
8630
|
},
|
|
8738
8631
|
item.label
|
|
8739
8632
|
),
|
|
8740
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
8633
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React36.createElement(
|
|
8741
8634
|
"div",
|
|
8742
8635
|
{
|
|
8743
8636
|
className: "fixed left-0 right-0 w-full pt-6 pb-6 border-b border-secondary bg-primary z-50",
|
|
@@ -8745,9 +8638,9 @@ function HeaderNavigation2({
|
|
|
8745
8638
|
onMouseEnter: handleDropdownMouseEnter,
|
|
8746
8639
|
onMouseLeave: handleDropdownMouseLeave
|
|
8747
8640
|
},
|
|
8748
|
-
/* @__PURE__ */
|
|
8641
|
+
/* @__PURE__ */ React36.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center justify-center gap-8" }, (() => {
|
|
8749
8642
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
8750
|
-
return /* @__PURE__ */
|
|
8643
|
+
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, items.map((link, j) => /* @__PURE__ */ React36.createElement(
|
|
8751
8644
|
Link6,
|
|
8752
8645
|
{
|
|
8753
8646
|
key: j,
|
|
@@ -8755,7 +8648,7 @@ function HeaderNavigation2({
|
|
|
8755
8648
|
className: "font-body text-sm text-fg-primary hover:underline whitespace-nowrap"
|
|
8756
8649
|
},
|
|
8757
8650
|
link.label
|
|
8758
|
-
)), showViewAll && /* @__PURE__ */
|
|
8651
|
+
)), showViewAll && /* @__PURE__ */ React36.createElement(
|
|
8759
8652
|
Link6,
|
|
8760
8653
|
{
|
|
8761
8654
|
href: viewAllHref,
|
|
@@ -8766,15 +8659,15 @@ function HeaderNavigation2({
|
|
|
8766
8659
|
));
|
|
8767
8660
|
})()))
|
|
8768
8661
|
)
|
|
8769
|
-
)))))), /* @__PURE__ */
|
|
8662
|
+
)))))), /* @__PURE__ */ React36.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary border-b border-secondary" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React36.createElement(
|
|
8770
8663
|
"button",
|
|
8771
8664
|
{
|
|
8772
8665
|
onClick: () => setIsMobileMenuOpen(true),
|
|
8773
8666
|
className: "text-fg-primary",
|
|
8774
8667
|
"aria-label": "Open menu"
|
|
8775
8668
|
},
|
|
8776
|
-
/* @__PURE__ */
|
|
8777
|
-
), /* @__PURE__ */
|
|
8669
|
+
/* @__PURE__ */ React36.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React36.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
8670
|
+
), /* @__PURE__ */ React36.createElement(Link6, { href: ((_l = props == null ? void 0 : props.logo) == null ? void 0 : _l.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React36.createElement(
|
|
8778
8671
|
Image11,
|
|
8779
8672
|
{
|
|
8780
8673
|
src: logoUrl,
|
|
@@ -8783,15 +8676,15 @@ function HeaderNavigation2({
|
|
|
8783
8676
|
width: 120,
|
|
8784
8677
|
height: 32
|
|
8785
8678
|
}
|
|
8786
|
-
) : /* @__PURE__ */
|
|
8679
|
+
) : /* @__PURE__ */ React36.createElement("span", { className: "font-display text-xl font-normal uppercase tracking-widest text-fg-primary" }, companyName)), /* @__PURE__ */ React36.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React36.createElement("div", { className: "fixed inset-0 bg-white z-50 md:hidden" }, /* @__PURE__ */ React36.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center justify-between px-4 py-4 border-b border-secondary" }, /* @__PURE__ */ React36.createElement(
|
|
8787
8680
|
"button",
|
|
8788
8681
|
{
|
|
8789
8682
|
onClick: () => setIsMobileMenuOpen(false),
|
|
8790
8683
|
className: "text-fg-primary",
|
|
8791
8684
|
"aria-label": "Close menu"
|
|
8792
8685
|
},
|
|
8793
|
-
/* @__PURE__ */
|
|
8794
|
-
), /* @__PURE__ */
|
|
8686
|
+
/* @__PURE__ */ React36.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React36.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
8687
|
+
), /* @__PURE__ */ React36.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React36.createElement(
|
|
8795
8688
|
Image11,
|
|
8796
8689
|
{
|
|
8797
8690
|
src: logoUrl,
|
|
@@ -8800,9 +8693,9 @@ function HeaderNavigation2({
|
|
|
8800
8693
|
width: 120,
|
|
8801
8694
|
height: 32
|
|
8802
8695
|
}
|
|
8803
|
-
) : /* @__PURE__ */
|
|
8696
|
+
) : /* @__PURE__ */ React36.createElement("span", { className: "font-display text-xl font-normal uppercase tracking-widest text-fg-primary" }, companyName)), /* @__PURE__ */ React36.createElement("div", { className: "w-6" })), /* @__PURE__ */ React36.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React36.createElement("ul", { className: "space-y-4" }, navigation.map((item, i) => {
|
|
8804
8697
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
8805
|
-
return /* @__PURE__ */
|
|
8698
|
+
return /* @__PURE__ */ React36.createElement("li", { key: i }, /* @__PURE__ */ React36.createElement(
|
|
8806
8699
|
Link6,
|
|
8807
8700
|
{
|
|
8808
8701
|
href: item.href,
|
|
@@ -8810,7 +8703,7 @@ function HeaderNavigation2({
|
|
|
8810
8703
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8811
8704
|
},
|
|
8812
8705
|
item.label
|
|
8813
|
-
), items.length > 0 && /* @__PURE__ */
|
|
8706
|
+
), items.length > 0 && /* @__PURE__ */ React36.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, items.map((link, j) => /* @__PURE__ */ React36.createElement("li", { key: j }, /* @__PURE__ */ React36.createElement(
|
|
8814
8707
|
Link6,
|
|
8815
8708
|
{
|
|
8816
8709
|
href: link.href,
|
|
@@ -8818,7 +8711,7 @@ function HeaderNavigation2({
|
|
|
8818
8711
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8819
8712
|
},
|
|
8820
8713
|
link.label
|
|
8821
|
-
))), showViewAll && /* @__PURE__ */
|
|
8714
|
+
))), showViewAll && /* @__PURE__ */ React36.createElement("li", null, /* @__PURE__ */ React36.createElement(
|
|
8822
8715
|
Link6,
|
|
8823
8716
|
{
|
|
8824
8717
|
href: viewAllHref,
|
|
@@ -8828,7 +8721,7 @@ function HeaderNavigation2({
|
|
|
8828
8721
|
viewAllLabel,
|
|
8829
8722
|
" \u2192"
|
|
8830
8723
|
))));
|
|
8831
|
-
}))), /* @__PURE__ */
|
|
8724
|
+
}))), /* @__PURE__ */ React36.createElement("div", { className: "border-t border-secondary px-4 py-6" }, /* @__PURE__ */ React36.createElement("div", { className: "flex flex-col gap-3" }, ((_m = props == null ? void 0 : props.cta_button) == null ? void 0 : _m.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React36.createElement(
|
|
8832
8725
|
Button2,
|
|
8833
8726
|
{
|
|
8834
8727
|
href: ctaUrls.secondaryHref,
|
|
@@ -8839,7 +8732,7 @@ function HeaderNavigation2({
|
|
|
8839
8732
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8840
8733
|
},
|
|
8841
8734
|
props.cta_button.label
|
|
8842
|
-
), /* @__PURE__ */
|
|
8735
|
+
), /* @__PURE__ */ React36.createElement(
|
|
8843
8736
|
Button2,
|
|
8844
8737
|
{
|
|
8845
8738
|
href: ctaUrls.primaryHref,
|
|
@@ -8850,7 +8743,7 @@ function HeaderNavigation2({
|
|
|
8850
8743
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8851
8744
|
},
|
|
8852
8745
|
((_q = props == null ? void 0 : props.cta_button) == null ? void 0 : _q.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_r = props == null ? void 0 : props.cta_button) == null ? void 0 : _r.label) || "Contact"
|
|
8853
|
-
))))), /* @__PURE__ */
|
|
8746
|
+
))))), /* @__PURE__ */ React36.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden bg-fg-primary" }, /* @__PURE__ */ React36.createElement("div", { className: "flex gap-0" }, ((_s = props == null ? void 0 : props.cta_button) == null ? void 0 : _s.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React36.createElement(
|
|
8854
8747
|
Button2,
|
|
8855
8748
|
{
|
|
8856
8749
|
href: ctaUrls.secondaryHref,
|
|
@@ -8860,7 +8753,7 @@ function HeaderNavigation2({
|
|
|
8860
8753
|
className: "flex-1 font-body text-sm uppercase tracking-wide py-4 rounded-none border-r border-gray-700"
|
|
8861
8754
|
},
|
|
8862
8755
|
props.cta_button.label
|
|
8863
|
-
), /* @__PURE__ */
|
|
8756
|
+
), /* @__PURE__ */ React36.createElement(
|
|
8864
8757
|
Button2,
|
|
8865
8758
|
{
|
|
8866
8759
|
href: ctaUrls.primaryHref,
|
|
@@ -8961,7 +8854,7 @@ var ServicesGrid2 = ({
|
|
|
8961
8854
|
registerThemeVariant("services-grid", "aman", ServicesGrid2);
|
|
8962
8855
|
|
|
8963
8856
|
// src/design_system/sections/testimonials-home.aman.tsx
|
|
8964
|
-
import
|
|
8857
|
+
import React37 from "react";
|
|
8965
8858
|
var TestimonialsHome2 = ({
|
|
8966
8859
|
testimonials: testimonialsData,
|
|
8967
8860
|
title = "",
|
|
@@ -8969,7 +8862,7 @@ var TestimonialsHome2 = ({
|
|
|
8969
8862
|
}) => {
|
|
8970
8863
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
8971
8864
|
const displayTestimonials = perPage ? testimonials.slice(0, perPage) : testimonials;
|
|
8972
|
-
return /* @__PURE__ */
|
|
8865
|
+
return /* @__PURE__ */ React37.createElement("section", null, /* @__PURE__ */ React37.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React37.createElement(
|
|
8973
8866
|
CarouselSectionWrapper,
|
|
8974
8867
|
{
|
|
8975
8868
|
title,
|
|
@@ -8984,7 +8877,7 @@ var TestimonialsHome2 = ({
|
|
|
8984
8877
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
8985
8878
|
const rating = testimonial.rating || 5;
|
|
8986
8879
|
const isVerified = true;
|
|
8987
|
-
return /* @__PURE__ */
|
|
8880
|
+
return /* @__PURE__ */ React37.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React37.createElement("div", { className: "bg-white p-8 flex flex-col h-full" }, /* @__PURE__ */ React37.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React37.createElement(
|
|
8988
8881
|
"svg",
|
|
8989
8882
|
{
|
|
8990
8883
|
key: starIdx,
|
|
@@ -8996,8 +8889,8 @@ var TestimonialsHome2 = ({
|
|
|
8996
8889
|
strokeWidth: "2",
|
|
8997
8890
|
viewBox: "0 0 24 24"
|
|
8998
8891
|
},
|
|
8999
|
-
/* @__PURE__ */
|
|
9000
|
-
))), /* @__PURE__ */
|
|
8892
|
+
/* @__PURE__ */ React37.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })
|
|
8893
|
+
))), /* @__PURE__ */ React37.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React37.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React37.createElement(
|
|
9001
8894
|
PhotoWithFallback2,
|
|
9002
8895
|
{
|
|
9003
8896
|
photoUrl: avatarUrl,
|
|
@@ -9005,21 +8898,21 @@ var TestimonialsHome2 = ({
|
|
|
9005
8898
|
fallbackId: testimonial.id || i,
|
|
9006
8899
|
className: "w-full h-full object-cover"
|
|
9007
8900
|
}
|
|
9008
|
-
)), /* @__PURE__ */
|
|
8901
|
+
)), /* @__PURE__ */ React37.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React37.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React37.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React37.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" }))), /* @__PURE__ */ React37.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username)))));
|
|
9009
8902
|
})
|
|
9010
8903
|
)));
|
|
9011
8904
|
};
|
|
9012
8905
|
registerThemeVariant("testimonials-home", "aman", TestimonialsHome2);
|
|
9013
8906
|
|
|
9014
8907
|
// src/design_system/sections/testimonials-grid.aman.tsx
|
|
9015
|
-
import
|
|
8908
|
+
import React38 from "react";
|
|
9016
8909
|
var TestimonialsGrid2 = ({
|
|
9017
8910
|
testimonials: testimonialsData,
|
|
9018
8911
|
title = "",
|
|
9019
8912
|
subtitle = ""
|
|
9020
8913
|
}) => {
|
|
9021
8914
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
9022
|
-
return /* @__PURE__ */
|
|
8915
|
+
return /* @__PURE__ */ React38.createElement("section", null, /* @__PURE__ */ React38.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React38.createElement("div", { className: "mb-12 text-center" }, title && /* @__PURE__ */ React38.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React38.createElement("p", { className: "mt-4 font-display text-lg leading-relaxed text-tertiary md:text-xl max-w-3xl mx-auto" }, subtitle)), testimonials.length > 0 ? /* @__PURE__ */ React38.createElement("div", { className: "grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3" }, testimonials.map((testimonial, i) => {
|
|
9023
8916
|
var _a;
|
|
9024
8917
|
const quote = ((_a = testimonial.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
9025
8918
|
const reviewerName = testimonial.reviewer_name || "Customer";
|
|
@@ -9027,7 +8920,7 @@ var TestimonialsGrid2 = ({
|
|
|
9027
8920
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
9028
8921
|
const rating = testimonial.rating || 5;
|
|
9029
8922
|
const isVerified = true;
|
|
9030
|
-
return /* @__PURE__ */
|
|
8923
|
+
return /* @__PURE__ */ React38.createElement("div", { key: testimonial.id || i, className: "bg-white p-8 flex flex-col h-full" }, /* @__PURE__ */ React38.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React38.createElement(
|
|
9031
8924
|
"svg",
|
|
9032
8925
|
{
|
|
9033
8926
|
key: starIdx,
|
|
@@ -9039,8 +8932,8 @@ var TestimonialsGrid2 = ({
|
|
|
9039
8932
|
strokeWidth: "2",
|
|
9040
8933
|
viewBox: "0 0 24 24"
|
|
9041
8934
|
},
|
|
9042
|
-
/* @__PURE__ */
|
|
9043
|
-
))), /* @__PURE__ */
|
|
8935
|
+
/* @__PURE__ */ React38.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })
|
|
8936
|
+
))), /* @__PURE__ */ React38.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React38.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React38.createElement(
|
|
9044
8937
|
PhotoWithFallback2,
|
|
9045
8938
|
{
|
|
9046
8939
|
photoUrl: avatarUrl,
|
|
@@ -9048,16 +8941,16 @@ var TestimonialsGrid2 = ({
|
|
|
9048
8941
|
fallbackId: testimonial.id || i,
|
|
9049
8942
|
className: "w-full h-full object-cover"
|
|
9050
8943
|
}
|
|
9051
|
-
)), /* @__PURE__ */
|
|
9052
|
-
})) : /* @__PURE__ */
|
|
8944
|
+
)), /* @__PURE__ */ React38.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React38.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React38.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React38.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" }))), /* @__PURE__ */ React38.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username))));
|
|
8945
|
+
})) : /* @__PURE__ */ React38.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React38.createElement("p", { className: "font-body text-base text-tertiary" }, "No testimonials available"))));
|
|
9053
8946
|
};
|
|
9054
8947
|
registerThemeVariant("testimonials-grid", "aman", TestimonialsGrid2);
|
|
9055
8948
|
|
|
9056
8949
|
// src/design_system/sections/contact-section.aman.tsx
|
|
9057
|
-
import
|
|
8950
|
+
import React40 from "react";
|
|
9058
8951
|
|
|
9059
8952
|
// src/design_system/sections/contact-section-form.aman.tsx
|
|
9060
|
-
import
|
|
8953
|
+
import React39, { useRef as useRef10, useState as useState17 } from "react";
|
|
9061
8954
|
var ContactSectionForm2 = ({
|
|
9062
8955
|
formDefinition,
|
|
9063
8956
|
submitButtonText = "Send message",
|
|
@@ -9111,14 +9004,14 @@ var ContactSectionForm2 = ({
|
|
|
9111
9004
|
setIsSubmitting(false);
|
|
9112
9005
|
};
|
|
9113
9006
|
if (!hasFields) return null;
|
|
9114
|
-
return /* @__PURE__ */
|
|
9007
|
+
return /* @__PURE__ */ React39.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React39.createElement(
|
|
9115
9008
|
DynamicFormFields,
|
|
9116
9009
|
{
|
|
9117
9010
|
form: resolvedFormDefinition,
|
|
9118
9011
|
privacyPolicyUrl,
|
|
9119
9012
|
termsOfServiceUrl
|
|
9120
9013
|
}
|
|
9121
|
-
), /* @__PURE__ */
|
|
9014
|
+
), /* @__PURE__ */ React39.createElement(
|
|
9122
9015
|
Button2,
|
|
9123
9016
|
{
|
|
9124
9017
|
type: "submit",
|
|
@@ -9129,7 +9022,7 @@ var ContactSectionForm2 = ({
|
|
|
9129
9022
|
isLoading: isSubmitting
|
|
9130
9023
|
},
|
|
9131
9024
|
isSubmitting ? "Sending..." : submitButtonText
|
|
9132
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
9025
|
+
), submitStatus === "success" && /* @__PURE__ */ React39.createElement("div", { className: "rounded-sm bg-success-50 p-4 text-success-700 font-body" }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React39.createElement("div", { className: "rounded-sm bg-error-50 p-4 text-error-700 font-body text-sm" }, statusMessage));
|
|
9133
9026
|
};
|
|
9134
9027
|
|
|
9135
9028
|
// src/design_system/sections/contact-section.aman.tsx
|
|
@@ -9153,14 +9046,14 @@ var ContactSection2 = ({
|
|
|
9153
9046
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
9154
9047
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
9155
9048
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
9156
|
-
return /* @__PURE__ */
|
|
9049
|
+
return /* @__PURE__ */ React40.createElement("section", null, /* @__PURE__ */ React40.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React40.createElement("div", { className: "grid grid-cols-1 gap-12 md:gap-16 lg:grid-cols-2" }, /* @__PURE__ */ React40.createElement("div", { className: "flex w-full flex-col" }, /* @__PURE__ */ React40.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React40.createElement("h2", { className: "font-display text-4xl font-normal leading-tight text-fg-primary md:text-5xl" }, title), /* @__PURE__ */ React40.createElement("p", { className: "mt-4 font-body text-lg leading-relaxed text-tertiary" }, subtitle)), /* @__PURE__ */ React40.createElement(
|
|
9157
9050
|
ContactSectionForm2,
|
|
9158
9051
|
{
|
|
9159
9052
|
formDefinition,
|
|
9160
9053
|
privacyPolicyUrl,
|
|
9161
9054
|
termsOfServiceUrl
|
|
9162
9055
|
}
|
|
9163
|
-
)), /* @__PURE__ */
|
|
9056
|
+
)), /* @__PURE__ */ React40.createElement("div", { className: "max-lg:hidden h-full min-h-0 overflow-hidden" }, /* @__PURE__ */ React40.createElement(
|
|
9164
9057
|
PhotoWithFallback2,
|
|
9165
9058
|
{
|
|
9166
9059
|
photoUrl: finalContactImage || "",
|
|
@@ -9514,7 +9407,7 @@ var BlogHome2 = ({
|
|
|
9514
9407
|
registerThemeVariant("blog-home", "aman", BlogHome2);
|
|
9515
9408
|
|
|
9516
9409
|
// src/design_system/sections/blog-gallery.aman.tsx
|
|
9517
|
-
import
|
|
9410
|
+
import React41, { useState as useState18 } from "react";
|
|
9518
9411
|
var BlogGallery2 = ({
|
|
9519
9412
|
blogPosts: postsData,
|
|
9520
9413
|
postsPerPage = 12,
|
|
@@ -9528,13 +9421,13 @@ var BlogGallery2 = ({
|
|
|
9528
9421
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
9529
9422
|
const endIndex = startIndex + postsPerPage;
|
|
9530
9423
|
const paginatedNonFeaturedPosts = nonFeaturedPosts.slice(startIndex, endIndex);
|
|
9531
|
-
return /* @__PURE__ */
|
|
9424
|
+
return /* @__PURE__ */ React41.createElement("section", { className }, /* @__PURE__ */ React41.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, posts.length > 0 ? /* @__PURE__ */ React41.createElement(React41.Fragment, null, featuredPost && /* @__PURE__ */ React41.createElement(
|
|
9532
9425
|
"a",
|
|
9533
9426
|
{
|
|
9534
9427
|
href: `/blog/${featuredPost.slug}`,
|
|
9535
9428
|
className: "block mb-16 group"
|
|
9536
9429
|
},
|
|
9537
|
-
/* @__PURE__ */
|
|
9430
|
+
/* @__PURE__ */ React41.createElement("div", { className: "w-full h-96 md:h-[500px] mb-8 overflow-hidden" }, /* @__PURE__ */ React41.createElement(
|
|
9538
9431
|
PhotoWithFallback2,
|
|
9539
9432
|
{
|
|
9540
9433
|
item: featuredPost,
|
|
@@ -9542,19 +9435,19 @@ var BlogGallery2 = ({
|
|
|
9542
9435
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9543
9436
|
}
|
|
9544
9437
|
)),
|
|
9545
|
-
/* @__PURE__ */
|
|
9546
|
-
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */
|
|
9438
|
+
/* @__PURE__ */ React41.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React41.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-4", style: { color: "var(--color-text-brand-secondary)" } }, featuredPost.published_at ? new Date(featuredPost.published_at).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "Recent"), /* @__PURE__ */ React41.createElement("h2", { className: "font-display text-3xl md:text-4xl font-normal text-fg-primary mb-6 group-hover:underline" }, featuredPost.title), featuredPost.excerpt_markdown && /* @__PURE__ */ React41.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary" }, featuredPost.excerpt_markdown.replace(/[#*\[\]()]/g, "").trim()))
|
|
9439
|
+
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */ React41.createElement("div", { className: "grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3 mb-16" }, paginatedNonFeaturedPosts.map((post) => {
|
|
9547
9440
|
var _a;
|
|
9548
9441
|
const excerpt = post.excerpt_markdown || ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
9549
|
-
return /* @__PURE__ */
|
|
9442
|
+
return /* @__PURE__ */ React41.createElement("a", { key: post.id, href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React41.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden" }, /* @__PURE__ */ React41.createElement(
|
|
9550
9443
|
PhotoWithFallback2,
|
|
9551
9444
|
{
|
|
9552
9445
|
item: post,
|
|
9553
9446
|
fallbackId: post.id,
|
|
9554
9447
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9555
9448
|
}
|
|
9556
|
-
)), /* @__PURE__ */
|
|
9557
|
-
})), totalPages > 1 && /* @__PURE__ */
|
|
9449
|
+
)), /* @__PURE__ */ React41.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-2", style: { color: "var(--color-text-brand-secondary)" } }, post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "Recent"), /* @__PURE__ */ React41.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline" }, post.title), excerpt && /* @__PURE__ */ React41.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt));
|
|
9450
|
+
})), totalPages > 1 && /* @__PURE__ */ React41.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React41.createElement(
|
|
9558
9451
|
PaginationPageDefault2,
|
|
9559
9452
|
{
|
|
9560
9453
|
rounded: true,
|
|
@@ -9562,7 +9455,7 @@ var BlogGallery2 = ({
|
|
|
9562
9455
|
total: totalPages,
|
|
9563
9456
|
onPageChange: setCurrentPage
|
|
9564
9457
|
}
|
|
9565
|
-
))) : /* @__PURE__ */
|
|
9458
|
+
))) : /* @__PURE__ */ React41.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React41.createElement("p", { className: "font-body text-base text-tertiary" }, "No posts available"))));
|
|
9566
9459
|
};
|
|
9567
9460
|
registerThemeVariant("blog-gallery", "aman", BlogGallery2);
|
|
9568
9461
|
|
|
@@ -9593,7 +9486,7 @@ var BlogPostSection2 = ({
|
|
|
9593
9486
|
registerThemeVariant("blog-post", "aman", BlogPostSection2);
|
|
9594
9487
|
|
|
9595
9488
|
// src/design_system/sections/blog-section.aman.tsx
|
|
9596
|
-
import
|
|
9489
|
+
import React42 from "react";
|
|
9597
9490
|
var BlogSection2 = ({
|
|
9598
9491
|
blogPosts: postsData,
|
|
9599
9492
|
title = "",
|
|
@@ -9612,7 +9505,7 @@ var BlogSection2 = ({
|
|
|
9612
9505
|
return "Recent";
|
|
9613
9506
|
}
|
|
9614
9507
|
};
|
|
9615
|
-
return /* @__PURE__ */
|
|
9508
|
+
return /* @__PURE__ */ React42.createElement("section", null, /* @__PURE__ */ React42.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React42.createElement(
|
|
9616
9509
|
CarouselSectionWrapper,
|
|
9617
9510
|
{
|
|
9618
9511
|
title,
|
|
@@ -9622,14 +9515,14 @@ var BlogSection2 = ({
|
|
|
9622
9515
|
postsArray.map((post) => {
|
|
9623
9516
|
var _a;
|
|
9624
9517
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
9625
|
-
return /* @__PURE__ */
|
|
9518
|
+
return /* @__PURE__ */ React42.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React42.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col h-full group" }, /* @__PURE__ */ React42.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden" }, /* @__PURE__ */ React42.createElement(
|
|
9626
9519
|
PhotoWithFallback2,
|
|
9627
9520
|
{
|
|
9628
9521
|
item: post,
|
|
9629
9522
|
fallbackId: post.id,
|
|
9630
9523
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9631
9524
|
}
|
|
9632
|
-
)), /* @__PURE__ */
|
|
9525
|
+
)), /* @__PURE__ */ React42.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-2", style: { color: "var(--color-text-brand-secondary)" } }, formatDate4(post.published_at)), /* @__PURE__ */ React42.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-1" }, post.title), excerpt && /* @__PURE__ */ React42.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt)));
|
|
9633
9526
|
})
|
|
9634
9527
|
)));
|
|
9635
9528
|
};
|
|
@@ -17633,11 +17526,11 @@ var JobDetailHero2 = ({
|
|
|
17633
17526
|
registerThemeVariant("hero-job-detail", "aman", JobDetailHero2);
|
|
17634
17527
|
|
|
17635
17528
|
// src/design_system/sections/job-application-form.aman.tsx
|
|
17636
|
-
import
|
|
17529
|
+
import React43, { useRef as useRef13, useState as useState21 } from "react";
|
|
17637
17530
|
|
|
17638
17531
|
// src/design_system/sections/hero-home.barelux.tsx
|
|
17639
17532
|
import { Fragment as Fragment6, useState as useState22 } from "react";
|
|
17640
|
-
import
|
|
17533
|
+
import React44 from "react";
|
|
17641
17534
|
var HeroHome3 = ({
|
|
17642
17535
|
websitePhotos,
|
|
17643
17536
|
companyInformation,
|
|
@@ -17656,7 +17549,7 @@ var HeroHome3 = ({
|
|
|
17656
17549
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
17657
17550
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || ""
|
|
17658
17551
|
};
|
|
17659
|
-
return /* @__PURE__ */
|
|
17552
|
+
return /* @__PURE__ */ React44.createElement(Fragment6, null, /* @__PURE__ */ React44.createElement("section", { className: "relative w-full h-[60vh] min-h-[500px] max-h-[550px]" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0" }, /* @__PURE__ */ React44.createElement(
|
|
17660
17553
|
PhotoWithFallback2,
|
|
17661
17554
|
{
|
|
17662
17555
|
photoUrl: heroImage.url,
|
|
@@ -17664,7 +17557,7 @@ var HeroHome3 = ({
|
|
|
17664
17557
|
fallbackId: "hero-home-barelux",
|
|
17665
17558
|
className: "w-full h-full object-cover"
|
|
17666
17559
|
}
|
|
17667
|
-
)), /* @__PURE__ */
|
|
17560
|
+
)), /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/50" }), /* @__PURE__ */ React44.createElement("div", { className: "relative h-full flex items-center" }, /* @__PURE__ */ React44.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8 w-full" }, /* @__PURE__ */ React44.createElement("div", { className: "max-w-2xl" }, tagline && /* @__PURE__ */ React44.createElement("p", { className: "font-body text-sm font-semibold uppercase tracking-widest text-white mb-5" }, tagline), /* @__PURE__ */ React44.createElement("h1", { className: "font-display text-display-xl font-normal leading-none text-white mb-4" }, headline), /* @__PURE__ */ React44.createElement("p", { className: "font-body text-base md:text-lg leading-normal text-white mb-6 max-w-xl" }, subhead), ctaText && /* @__PURE__ */ React44.createElement(
|
|
17668
17561
|
Button2,
|
|
17669
17562
|
{
|
|
17670
17563
|
href: effectiveCtaHref,
|
|
@@ -17674,7 +17567,7 @@ var HeroHome3 = ({
|
|
|
17674
17567
|
size: "md"
|
|
17675
17568
|
},
|
|
17676
17569
|
ctaText
|
|
17677
|
-
)))), videoUrl && /* @__PURE__ */
|
|
17570
|
+
)))), videoUrl && /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React44.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))), videoUrl && /* @__PURE__ */ React44.createElement(
|
|
17678
17571
|
VideoModal,
|
|
17679
17572
|
{
|
|
17680
17573
|
isOpen: showVideo,
|
|
@@ -17686,7 +17579,7 @@ var HeroHome3 = ({
|
|
|
17686
17579
|
registerThemeVariant("hero-home", "barelux", HeroHome3);
|
|
17687
17580
|
|
|
17688
17581
|
// src/design_system/sections/header-navigation.barelux.tsx
|
|
17689
|
-
import
|
|
17582
|
+
import React45, { useState as useState23, useRef as useRef14, useCallback as useCallback8 } from "react";
|
|
17690
17583
|
import Link8 from "next/link";
|
|
17691
17584
|
import Image12 from "next/image";
|
|
17692
17585
|
var MAX_DROPDOWN_ITEMS2 = 6;
|
|
@@ -17703,7 +17596,7 @@ function HeaderNavigation3({
|
|
|
17703
17596
|
const [activeDropdown, setActiveDropdown] = useState23(null);
|
|
17704
17597
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState23(false);
|
|
17705
17598
|
const closeTimeoutRef = useRef14(null);
|
|
17706
|
-
|
|
17599
|
+
React45.useEffect(() => {
|
|
17707
17600
|
return () => {
|
|
17708
17601
|
if (closeTimeoutRef.current) {
|
|
17709
17602
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -17759,7 +17652,7 @@ function HeaderNavigation3({
|
|
|
17759
17652
|
viewAllLabel: ""
|
|
17760
17653
|
};
|
|
17761
17654
|
};
|
|
17762
|
-
return /* @__PURE__ */
|
|
17655
|
+
return /* @__PURE__ */ React45.createElement(React45.Fragment, null, /* @__PURE__ */ React45.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary border-b border-primary" }, /* @__PURE__ */ React45.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React45.createElement("div", { className: "flex items-center justify-between py-4" }, /* @__PURE__ */ React45.createElement(Link8, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center flex-shrink-0" }, logoUrl ? /* @__PURE__ */ React45.createElement(
|
|
17763
17656
|
Image12,
|
|
17764
17657
|
{
|
|
17765
17658
|
src: logoUrl,
|
|
@@ -17768,7 +17661,7 @@ function HeaderNavigation3({
|
|
|
17768
17661
|
width: 120,
|
|
17769
17662
|
height: 40
|
|
17770
17663
|
}
|
|
17771
|
-
) : /* @__PURE__ */
|
|
17664
|
+
) : /* @__PURE__ */ React45.createElement("span", { className: "font-display text-xl font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React45.createElement("nav", { className: "flex items-center gap-8 flex-1 ml-12" }, navigation.map((item, i) => /* @__PURE__ */ React45.createElement(
|
|
17772
17665
|
"div",
|
|
17773
17666
|
{
|
|
17774
17667
|
key: i,
|
|
@@ -17776,16 +17669,16 @@ function HeaderNavigation3({
|
|
|
17776
17669
|
onMouseEnter: () => handleMouseEnter(item),
|
|
17777
17670
|
onMouseLeave: handleMouseLeave
|
|
17778
17671
|
},
|
|
17779
|
-
/* @__PURE__ */
|
|
17672
|
+
/* @__PURE__ */ React45.createElement(
|
|
17780
17673
|
Link8,
|
|
17781
17674
|
{
|
|
17782
17675
|
href: item.href,
|
|
17783
17676
|
className: "font-body text-md font-normal text-fg-primary hover:text-brand-accent transition-colors duration-200 flex items-center gap-1 whitespace-nowrap"
|
|
17784
17677
|
},
|
|
17785
17678
|
item.label,
|
|
17786
|
-
item.children && item.children.length > 0 && /* @__PURE__ */
|
|
17679
|
+
item.children && item.children.length > 0 && /* @__PURE__ */ React45.createElement("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ React45.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
17787
17680
|
),
|
|
17788
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
17681
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React45.createElement(
|
|
17789
17682
|
"div",
|
|
17790
17683
|
{
|
|
17791
17684
|
className: "absolute left-0 top-full mt-2 w-64 py-3 bg-white border border-secondary rounded-lg shadow-lg z-50",
|
|
@@ -17794,7 +17687,7 @@ function HeaderNavigation3({
|
|
|
17794
17687
|
},
|
|
17795
17688
|
(() => {
|
|
17796
17689
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
17797
|
-
return /* @__PURE__ */
|
|
17690
|
+
return /* @__PURE__ */ React45.createElement(React45.Fragment, null, items.map((link, j) => /* @__PURE__ */ React45.createElement(
|
|
17798
17691
|
Link8,
|
|
17799
17692
|
{
|
|
17800
17693
|
key: j,
|
|
@@ -17802,7 +17695,7 @@ function HeaderNavigation3({
|
|
|
17802
17695
|
className: "block font-body text-md text-fg-primary hover:text-brand-accent hover:bg-secondary transition-colors px-4 py-2"
|
|
17803
17696
|
},
|
|
17804
17697
|
link.label
|
|
17805
|
-
)), showViewAll && /* @__PURE__ */
|
|
17698
|
+
)), showViewAll && /* @__PURE__ */ React45.createElement(
|
|
17806
17699
|
Link8,
|
|
17807
17700
|
{
|
|
17808
17701
|
href: viewAllHref,
|
|
@@ -17813,7 +17706,7 @@ function HeaderNavigation3({
|
|
|
17813
17706
|
));
|
|
17814
17707
|
})()
|
|
17815
17708
|
)
|
|
17816
|
-
))), /* @__PURE__ */
|
|
17709
|
+
))), /* @__PURE__ */ React45.createElement("div", { className: "flex items-center gap-3 flex-shrink-0 ml-4" }, ((_e = props == null ? void 0 : props.cta_button) == null ? void 0 : _e.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React45.createElement(
|
|
17817
17710
|
Button2,
|
|
17818
17711
|
{
|
|
17819
17712
|
href: ctaUrls.secondaryHref,
|
|
@@ -17823,7 +17716,7 @@ function HeaderNavigation3({
|
|
|
17823
17716
|
size: "sm"
|
|
17824
17717
|
},
|
|
17825
17718
|
props.cta_button.label
|
|
17826
|
-
), /* @__PURE__ */
|
|
17719
|
+
), /* @__PURE__ */ React45.createElement(
|
|
17827
17720
|
Button2,
|
|
17828
17721
|
{
|
|
17829
17722
|
href: ctaUrls.primaryHref,
|
|
@@ -17833,15 +17726,15 @@ function HeaderNavigation3({
|
|
|
17833
17726
|
size: "sm"
|
|
17834
17727
|
},
|
|
17835
17728
|
((_i = props == null ? void 0 : props.cta_button) == null ? void 0 : _i.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_j = props == null ? void 0 : props.cta_button) == null ? void 0 : _j.label) || ""
|
|
17836
|
-
))))), /* @__PURE__ */
|
|
17729
|
+
))))), /* @__PURE__ */ React45.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary border-b border-secondary" }, /* @__PURE__ */ React45.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React45.createElement(
|
|
17837
17730
|
"button",
|
|
17838
17731
|
{
|
|
17839
17732
|
onClick: () => setIsMobileMenuOpen(true),
|
|
17840
17733
|
className: "text-fg-primary",
|
|
17841
17734
|
"aria-label": "Open menu"
|
|
17842
17735
|
},
|
|
17843
|
-
/* @__PURE__ */
|
|
17844
|
-
), /* @__PURE__ */
|
|
17736
|
+
/* @__PURE__ */ React45.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React45.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
17737
|
+
), /* @__PURE__ */ React45.createElement(Link8, { href: ((_k = props == null ? void 0 : props.logo) == null ? void 0 : _k.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React45.createElement(
|
|
17845
17738
|
Image12,
|
|
17846
17739
|
{
|
|
17847
17740
|
src: logoUrl,
|
|
@@ -17850,15 +17743,15 @@ function HeaderNavigation3({
|
|
|
17850
17743
|
width: 120,
|
|
17851
17744
|
height: 32
|
|
17852
17745
|
}
|
|
17853
|
-
) : /* @__PURE__ */
|
|
17746
|
+
) : /* @__PURE__ */ React45.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React45.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React45.createElement("div", { className: "fixed inset-0 bg-white z-50 md:hidden" }, /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React45.createElement("div", { className: "flex items-center justify-between px-4 py-4 border-b border-secondary" }, /* @__PURE__ */ React45.createElement(
|
|
17854
17747
|
"button",
|
|
17855
17748
|
{
|
|
17856
17749
|
onClick: () => setIsMobileMenuOpen(false),
|
|
17857
17750
|
className: "text-fg-primary",
|
|
17858
17751
|
"aria-label": "Close menu"
|
|
17859
17752
|
},
|
|
17860
|
-
/* @__PURE__ */
|
|
17861
|
-
), /* @__PURE__ */
|
|
17753
|
+
/* @__PURE__ */ React45.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React45.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
17754
|
+
), /* @__PURE__ */ React45.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React45.createElement(
|
|
17862
17755
|
Image12,
|
|
17863
17756
|
{
|
|
17864
17757
|
src: logoUrl,
|
|
@@ -17867,9 +17760,9 @@ function HeaderNavigation3({
|
|
|
17867
17760
|
width: 120,
|
|
17868
17761
|
height: 32
|
|
17869
17762
|
}
|
|
17870
|
-
) : /* @__PURE__ */
|
|
17763
|
+
) : /* @__PURE__ */ React45.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React45.createElement("div", { className: "w-6" })), /* @__PURE__ */ React45.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React45.createElement("ul", { className: "space-y-4" }, navigation.map((item, i) => {
|
|
17871
17764
|
const { items } = getDropdownItems(item);
|
|
17872
|
-
return /* @__PURE__ */
|
|
17765
|
+
return /* @__PURE__ */ React45.createElement("li", { key: i }, /* @__PURE__ */ React45.createElement(
|
|
17873
17766
|
Link8,
|
|
17874
17767
|
{
|
|
17875
17768
|
href: item.href,
|
|
@@ -17877,7 +17770,7 @@ function HeaderNavigation3({
|
|
|
17877
17770
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17878
17771
|
},
|
|
17879
17772
|
item.label
|
|
17880
|
-
), items.length > 0 && /* @__PURE__ */
|
|
17773
|
+
), items.length > 0 && /* @__PURE__ */ React45.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, items.map((link, j) => /* @__PURE__ */ React45.createElement("li", { key: j }, /* @__PURE__ */ React45.createElement(
|
|
17881
17774
|
Link8,
|
|
17882
17775
|
{
|
|
17883
17776
|
href: link.href,
|
|
@@ -17886,7 +17779,7 @@ function HeaderNavigation3({
|
|
|
17886
17779
|
},
|
|
17887
17780
|
link.label
|
|
17888
17781
|
)))));
|
|
17889
|
-
}))), /* @__PURE__ */
|
|
17782
|
+
}))), /* @__PURE__ */ React45.createElement("div", { className: "border-t border-secondary px-4 py-6" }, /* @__PURE__ */ React45.createElement("div", { className: "flex flex-col gap-3" }, ((_l = props == null ? void 0 : props.cta_button) == null ? void 0 : _l.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React45.createElement(
|
|
17890
17783
|
Button2,
|
|
17891
17784
|
{
|
|
17892
17785
|
href: ctaUrls.secondaryHref,
|
|
@@ -17896,7 +17789,7 @@ function HeaderNavigation3({
|
|
|
17896
17789
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17897
17790
|
},
|
|
17898
17791
|
props.cta_button.secondary_label
|
|
17899
|
-
), /* @__PURE__ */
|
|
17792
|
+
), /* @__PURE__ */ React45.createElement(
|
|
17900
17793
|
Button2,
|
|
17901
17794
|
{
|
|
17902
17795
|
href: ctaUrls.primaryHref,
|
|
@@ -17906,7 +17799,7 @@ function HeaderNavigation3({
|
|
|
17906
17799
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17907
17800
|
},
|
|
17908
17801
|
((_m = props == null ? void 0 : props.cta_button) == null ? void 0 : _m.label) || ""
|
|
17909
|
-
))))), /* @__PURE__ */
|
|
17802
|
+
))))), /* @__PURE__ */ React45.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden bg-fg-primary" }, /* @__PURE__ */ React45.createElement("div", { className: "flex gap-0" }, ((_n = props == null ? void 0 : props.cta_button) == null ? void 0 : _n.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React45.createElement(
|
|
17910
17803
|
Button2,
|
|
17911
17804
|
{
|
|
17912
17805
|
href: ctaUrls.secondaryHref,
|
|
@@ -17916,7 +17809,7 @@ function HeaderNavigation3({
|
|
|
17916
17809
|
className: "flex-1 font-body text-sm uppercase tracking-wide py-4 rounded-none border-r border-white/20"
|
|
17917
17810
|
},
|
|
17918
17811
|
props.cta_button.label
|
|
17919
|
-
), /* @__PURE__ */
|
|
17812
|
+
), /* @__PURE__ */ React45.createElement(
|
|
17920
17813
|
Button2,
|
|
17921
17814
|
{
|
|
17922
17815
|
href: ctaUrls.primaryHref,
|
|
@@ -17931,23 +17824,23 @@ function HeaderNavigation3({
|
|
|
17931
17824
|
registerThemeVariant("header-navigation", "barelux", HeaderNavigation3);
|
|
17932
17825
|
|
|
17933
17826
|
// src/design_system/sections/services-home.barelux.tsx
|
|
17934
|
-
import
|
|
17827
|
+
import React46 from "react";
|
|
17935
17828
|
var ServicesHome3 = ({
|
|
17936
17829
|
services = [],
|
|
17937
17830
|
title = "",
|
|
17938
17831
|
subtitle = ""
|
|
17939
17832
|
}) => {
|
|
17940
17833
|
const displayServices = services;
|
|
17941
|
-
return /* @__PURE__ */
|
|
17834
|
+
return /* @__PURE__ */ React46.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-secondary" }, /* @__PURE__ */ React46.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React46.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12" }, /* @__PURE__ */ React46.createElement("h2", { className: "font-display text-display-md font-normal text-fg-primary mb-4" }, title), /* @__PURE__ */ React46.createElement("p", { className: "font-body text-base text-secondary leading-normal" }, subtitle)), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-wrap justify-center gap-6" }, displayServices.map((service) => {
|
|
17942
17835
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
17943
|
-
return /* @__PURE__ */
|
|
17836
|
+
return /* @__PURE__ */ React46.createElement(
|
|
17944
17837
|
"a",
|
|
17945
17838
|
{
|
|
17946
17839
|
key: service.id,
|
|
17947
17840
|
href: `/services/${service.slug}`,
|
|
17948
17841
|
className: "group block bg-white rounded-2xl overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-300 w-full md:w-[calc(50%-0.75rem)] lg:w-[calc(25%-1.125rem)] flex flex-col"
|
|
17949
17842
|
},
|
|
17950
|
-
/* @__PURE__ */
|
|
17843
|
+
/* @__PURE__ */ React46.createElement("div", { className: "relative w-full h-56 overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React46.createElement(
|
|
17951
17844
|
PhotoWithFallback2,
|
|
17952
17845
|
{
|
|
17953
17846
|
photoUrl: ((_c = (_b = (_a = service.photo_attachments) == null ? void 0 : _a[0]) == null ? void 0 : _b.photo) == null ? void 0 : _c.large_url) || ((_f = (_e = (_d = service.photo_attachments) == null ? void 0 : _d[0]) == null ? void 0 : _e.photo) == null ? void 0 : _f.medium_url) || "",
|
|
@@ -17956,7 +17849,7 @@ var ServicesHome3 = ({
|
|
|
17956
17849
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
17957
17850
|
}
|
|
17958
17851
|
)),
|
|
17959
|
-
/* @__PURE__ */
|
|
17852
|
+
/* @__PURE__ */ React46.createElement("div", { className: "p-6" }, /* @__PURE__ */ React46.createElement("h3", { className: "font-body text-base font-semibold uppercase tracking-wide text-fg-primary mb-3 leading-tight" }, service.name), service.summary && /* @__PURE__ */ React46.createElement("p", { className: "font-body text-sm text-tertiary leading-relaxed" }, service.summary))
|
|
17960
17853
|
);
|
|
17961
17854
|
}))));
|
|
17962
17855
|
};
|
|
@@ -18006,7 +17899,7 @@ var AboutHome3 = ({
|
|
|
18006
17899
|
registerThemeVariant("about-home", "barelux", AboutHome3);
|
|
18007
17900
|
|
|
18008
17901
|
// src/design_system/sections/testimonials-home.barelux.tsx
|
|
18009
|
-
import
|
|
17902
|
+
import React47 from "react";
|
|
18010
17903
|
import { ChevronLeft as ChevronLeft7, ChevronRight as ChevronRight2 } from "@untitledui/icons";
|
|
18011
17904
|
var TestimonialsHome3 = ({
|
|
18012
17905
|
testimonials: testimonialsData,
|
|
@@ -18017,7 +17910,7 @@ var TestimonialsHome3 = ({
|
|
|
18017
17910
|
emptyMessage = "No testimonials available"
|
|
18018
17911
|
}) => {
|
|
18019
17912
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
18020
|
-
return /* @__PURE__ */
|
|
17913
|
+
return /* @__PURE__ */ React47.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-secondary" }, /* @__PURE__ */ React47.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React47.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React47.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React47.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), testimonials.length > 0 ? /* @__PURE__ */ React47.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React47.createElement("div", { className: "flex items-center justify-end mb-8" }, /* @__PURE__ */ React47.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React47.createElement(Carousel.PrevTrigger, { className: "rounded-full p-2 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React47.createElement(ChevronLeft7, { className: "w-6 h-6 text-fg-primary" })), /* @__PURE__ */ React47.createElement(Carousel.NextTrigger, { className: "rounded-full p-2 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React47.createElement(ChevronRight2, { className: "w-6 h-6 text-fg-primary" })))), /* @__PURE__ */ React47.createElement(Carousel.Content, { className: "-ml-4" }, testimonials.map((testimonial, i) => {
|
|
18021
17914
|
var _a;
|
|
18022
17915
|
const quote = ((_a = testimonial.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
18023
17916
|
const reviewerName = testimonial.reviewer_name || "";
|
|
@@ -18025,7 +17918,7 @@ var TestimonialsHome3 = ({
|
|
|
18025
17918
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
18026
17919
|
const rating = testimonial.rating || 5;
|
|
18027
17920
|
const isVerified = true;
|
|
18028
|
-
return /* @__PURE__ */
|
|
17921
|
+
return /* @__PURE__ */ React47.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React47.createElement("div", { className: "bg-white rounded-2xl p-8 flex flex-col shadow-sm", style: { minHeight: "400px" } }, /* @__PURE__ */ React47.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React47.createElement(
|
|
18029
17922
|
"svg",
|
|
18030
17923
|
{
|
|
18031
17924
|
key: starIdx,
|
|
@@ -18037,8 +17930,8 @@ var TestimonialsHome3 = ({
|
|
|
18037
17930
|
strokeWidth: "2",
|
|
18038
17931
|
viewBox: "0 0 24 24"
|
|
18039
17932
|
},
|
|
18040
|
-
/* @__PURE__ */
|
|
18041
|
-
))), /* @__PURE__ */
|
|
17933
|
+
/* @__PURE__ */ React47.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })
|
|
17934
|
+
))), /* @__PURE__ */ React47.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React47.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React47.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React47.createElement(
|
|
18042
17935
|
PhotoWithFallback2,
|
|
18043
17936
|
{
|
|
18044
17937
|
photoUrl: avatarUrl,
|
|
@@ -18046,8 +17939,8 @@ var TestimonialsHome3 = ({
|
|
|
18046
17939
|
fallbackId: testimonial.id || i,
|
|
18047
17940
|
className: "w-full h-full object-cover"
|
|
18048
17941
|
}
|
|
18049
|
-
)), /* @__PURE__ */
|
|
18050
|
-
}))) : /* @__PURE__ */
|
|
17942
|
+
)), /* @__PURE__ */ React47.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React47.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React47.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React47.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React47.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" }))), /* @__PURE__ */ React47.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username)))));
|
|
17943
|
+
}))) : /* @__PURE__ */ React47.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React47.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage)), testimonials.length > 0 && viewAllText && /* @__PURE__ */ React47.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React47.createElement(
|
|
18051
17944
|
Button2,
|
|
18052
17945
|
{
|
|
18053
17946
|
href: viewAllHref,
|
|
@@ -18060,7 +17953,7 @@ var TestimonialsHome3 = ({
|
|
|
18060
17953
|
registerThemeVariant("testimonials-home", "barelux", TestimonialsHome3);
|
|
18061
17954
|
|
|
18062
17955
|
// src/design_system/sections/blog-section.barelux.tsx
|
|
18063
|
-
import
|
|
17956
|
+
import React48 from "react";
|
|
18064
17957
|
import { ChevronLeft as ChevronLeft8, ChevronRight as ChevronRight3 } from "@untitledui/icons";
|
|
18065
17958
|
var BlogSection3 = ({
|
|
18066
17959
|
blogPosts: postsData,
|
|
@@ -18085,18 +17978,18 @@ var BlogSection3 = ({
|
|
|
18085
17978
|
return recentLabel;
|
|
18086
17979
|
}
|
|
18087
17980
|
};
|
|
18088
|
-
return /* @__PURE__ */
|
|
17981
|
+
return /* @__PURE__ */ React48.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-primary" }, /* @__PURE__ */ React48.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React48.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React48.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React48.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), postsArray.length > 0 ? /* @__PURE__ */ React48.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-end mb-8" }, /* @__PURE__ */ React48.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React48.createElement(Carousel.PrevTrigger, { className: "rounded-full p-2 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React48.createElement(ChevronLeft8, { className: "w-6 h-6 text-fg-primary" })), /* @__PURE__ */ React48.createElement(Carousel.NextTrigger, { className: "rounded-full p-2 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React48.createElement(ChevronRight3, { className: "w-6 h-6 text-fg-primary" })))), /* @__PURE__ */ React48.createElement(Carousel.Content, { className: "-ml-4" }, postsArray.map((post) => {
|
|
18089
17982
|
var _a;
|
|
18090
17983
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
18091
|
-
return /* @__PURE__ */
|
|
17984
|
+
return /* @__PURE__ */ React48.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React48.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React48.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React48.createElement(
|
|
18092
17985
|
PhotoWithFallback2,
|
|
18093
17986
|
{
|
|
18094
17987
|
item: post,
|
|
18095
17988
|
fallbackId: post.id,
|
|
18096
17989
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
18097
17990
|
}
|
|
18098
|
-
)), /* @__PURE__ */
|
|
18099
|
-
}))) : /* @__PURE__ */
|
|
17991
|
+
)), /* @__PURE__ */ React48.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-2", style: { color: "var(--color-text-brand-secondary)" } }, formatDate4(post.published_at)), /* @__PURE__ */ React48.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-2" }, post.title), excerpt && /* @__PURE__ */ React48.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 line-clamp-3" }, excerpt)));
|
|
17992
|
+
}))) : /* @__PURE__ */ React48.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React48.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage)), postsArray.length > 0 && viewAllText && /* @__PURE__ */ React48.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React48.createElement(
|
|
18100
17993
|
Button2,
|
|
18101
17994
|
{
|
|
18102
17995
|
href: viewAllHref,
|
|
@@ -18109,7 +18002,7 @@ var BlogSection3 = ({
|
|
|
18109
18002
|
registerThemeVariant("blog-section", "barelux", BlogSection3);
|
|
18110
18003
|
|
|
18111
18004
|
// src/design_system/sections/blog-gallery.barelux.tsx
|
|
18112
|
-
import
|
|
18005
|
+
import React49, { useState as useState24 } from "react";
|
|
18113
18006
|
var BlogGallery3 = ({
|
|
18114
18007
|
blogPosts: postsData,
|
|
18115
18008
|
postsPerPage = 12,
|
|
@@ -18127,13 +18020,13 @@ var BlogGallery3 = ({
|
|
|
18127
18020
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
18128
18021
|
const endIndex = startIndex + postsPerPage;
|
|
18129
18022
|
const paginatedNonFeaturedPosts = nonFeaturedPosts.slice(startIndex, endIndex);
|
|
18130
|
-
return /* @__PURE__ */
|
|
18023
|
+
return /* @__PURE__ */ React49.createElement("section", { className: `py-16 md:py-20 lg:py-24 bg-primary ${className}` }, /* @__PURE__ */ React49.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React49.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React49.createElement("h1", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React49.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), posts.length > 0 ? /* @__PURE__ */ React49.createElement(React49.Fragment, null, featuredPost && /* @__PURE__ */ React49.createElement(
|
|
18131
18024
|
"a",
|
|
18132
18025
|
{
|
|
18133
18026
|
href: `/blog/${featuredPost.slug}`,
|
|
18134
18027
|
className: "block mb-16 group"
|
|
18135
18028
|
},
|
|
18136
|
-
/* @__PURE__ */
|
|
18029
|
+
/* @__PURE__ */ React49.createElement("div", { className: "w-full h-96 md:h-[500px] mb-8 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React49.createElement(
|
|
18137
18030
|
PhotoWithFallback2,
|
|
18138
18031
|
{
|
|
18139
18032
|
item: featuredPost,
|
|
@@ -18141,19 +18034,19 @@ var BlogGallery3 = ({
|
|
|
18141
18034
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
18142
18035
|
}
|
|
18143
18036
|
)),
|
|
18144
|
-
/* @__PURE__ */
|
|
18145
|
-
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */
|
|
18037
|
+
/* @__PURE__ */ React49.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React49.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-4", style: { color: "var(--color-text-brand-secondary)" } }, featuredPost.published_at ? new Date(featuredPost.published_at).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : recentLabel), /* @__PURE__ */ React49.createElement("h2", { className: "font-display text-3xl md:text-4xl font-normal text-fg-primary mb-6 group-hover:underline" }, featuredPost.title), featuredPost.excerpt_markdown && /* @__PURE__ */ React49.createElement("p", { className: "font-body text-lg leading-relaxed text-tertiary" }, featuredPost.excerpt_markdown.replace(/[#*\[\]()]/g, "").trim()))
|
|
18038
|
+
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */ React49.createElement("div", { className: "grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3 mb-16" }, paginatedNonFeaturedPosts.map((post) => {
|
|
18146
18039
|
var _a;
|
|
18147
18040
|
const excerpt = post.excerpt_markdown || ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
18148
|
-
return /* @__PURE__ */
|
|
18041
|
+
return /* @__PURE__ */ React49.createElement("a", { key: post.id, href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React49.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React49.createElement(
|
|
18149
18042
|
PhotoWithFallback2,
|
|
18150
18043
|
{
|
|
18151
18044
|
item: post,
|
|
18152
18045
|
fallbackId: post.id,
|
|
18153
18046
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
18154
18047
|
}
|
|
18155
|
-
)), /* @__PURE__ */
|
|
18156
|
-
})), totalPages > 1 && /* @__PURE__ */
|
|
18048
|
+
)), /* @__PURE__ */ React49.createElement("p", { className: "text-xs font-body font-normal uppercase tracking-widest mb-2", style: { color: "var(--color-text-brand-secondary)" } }, post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : recentLabel), /* @__PURE__ */ React49.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-2" }, post.title), excerpt && /* @__PURE__ */ React49.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt));
|
|
18049
|
+
})), totalPages > 1 && /* @__PURE__ */ React49.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React49.createElement(
|
|
18157
18050
|
PaginationPageDefault2,
|
|
18158
18051
|
{
|
|
18159
18052
|
rounded: true,
|
|
@@ -18161,7 +18054,7 @@ var BlogGallery3 = ({
|
|
|
18161
18054
|
total: totalPages,
|
|
18162
18055
|
onPageChange: setCurrentPage
|
|
18163
18056
|
}
|
|
18164
|
-
))) : /* @__PURE__ */
|
|
18057
|
+
))) : /* @__PURE__ */ React49.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React49.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage))));
|
|
18165
18058
|
};
|
|
18166
18059
|
registerThemeVariant("blog-gallery", "barelux", BlogGallery3);
|
|
18167
18060
|
|
|
@@ -18256,10 +18149,10 @@ var SocialMediaGrid3 = ({
|
|
|
18256
18149
|
registerThemeVariant("social-media-grid", "barelux", SocialMediaGrid3);
|
|
18257
18150
|
|
|
18258
18151
|
// src/design_system/sections/contact-section.barelux.tsx
|
|
18259
|
-
import
|
|
18152
|
+
import React51 from "react";
|
|
18260
18153
|
|
|
18261
18154
|
// src/design_system/sections/contact-section-form.barelux.tsx
|
|
18262
|
-
import
|
|
18155
|
+
import React50, { useRef as useRef15, useState as useState25 } from "react";
|
|
18263
18156
|
var ContactSectionForm3 = ({
|
|
18264
18157
|
formDefinition,
|
|
18265
18158
|
submitButtonText = "Send message",
|
|
@@ -18313,14 +18206,14 @@ var ContactSectionForm3 = ({
|
|
|
18313
18206
|
setIsSubmitting(false);
|
|
18314
18207
|
};
|
|
18315
18208
|
if (!hasFields) return null;
|
|
18316
|
-
return /* @__PURE__ */
|
|
18209
|
+
return /* @__PURE__ */ React50.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React50.createElement(
|
|
18317
18210
|
DynamicFormFields,
|
|
18318
18211
|
{
|
|
18319
18212
|
form: resolvedFormDefinition,
|
|
18320
18213
|
privacyPolicyUrl,
|
|
18321
18214
|
termsOfServiceUrl
|
|
18322
18215
|
}
|
|
18323
|
-
), /* @__PURE__ */
|
|
18216
|
+
), /* @__PURE__ */ React50.createElement(
|
|
18324
18217
|
Button2,
|
|
18325
18218
|
{
|
|
18326
18219
|
type: "submit",
|
|
@@ -18331,7 +18224,7 @@ var ContactSectionForm3 = ({
|
|
|
18331
18224
|
isLoading: isSubmitting
|
|
18332
18225
|
},
|
|
18333
18226
|
submitStatus === "success" ? successMessage.split("!")[0] + "!" : isSubmitting ? "Sending..." : submitButtonText
|
|
18334
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
18227
|
+
), submitStatus === "success" && /* @__PURE__ */ React50.createElement("div", { className: "font-body text-sm text-center", style: { color: "var(--color-text-brand-accent)" } }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React50.createElement("div", { className: "rounded-lg bg-error-50 p-4 text-error-700 font-body text-sm text-center" }, statusMessage));
|
|
18335
18228
|
};
|
|
18336
18229
|
|
|
18337
18230
|
// src/design_system/sections/contact-section.barelux.tsx
|
|
@@ -18355,14 +18248,14 @@ var ContactSection3 = ({
|
|
|
18355
18248
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
18356
18249
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
18357
18250
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
18358
|
-
return /* @__PURE__ */
|
|
18251
|
+
return /* @__PURE__ */ React51.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-primary" }, /* @__PURE__ */ React51.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React51.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16" }, /* @__PURE__ */ React51.createElement("div", null, /* @__PURE__ */ React51.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-6" }, title), /* @__PURE__ */ React51.createElement("p", { className: "font-body text-lg text-secondary leading-relaxed mb-8" }, subtitle), /* @__PURE__ */ React51.createElement(
|
|
18359
18252
|
ContactSectionForm3,
|
|
18360
18253
|
{
|
|
18361
18254
|
formDefinition,
|
|
18362
18255
|
privacyPolicyUrl,
|
|
18363
18256
|
termsOfServiceUrl
|
|
18364
18257
|
}
|
|
18365
|
-
)), finalContactImage && /* @__PURE__ */
|
|
18258
|
+
)), finalContactImage && /* @__PURE__ */ React51.createElement("div", { className: "max-lg:hidden relative h-full min-h-0 overflow-hidden rounded-lg" }, /* @__PURE__ */ React51.createElement(
|
|
18366
18259
|
PhotoWithFallback2,
|
|
18367
18260
|
{
|
|
18368
18261
|
photoUrl: finalContactImage,
|
|
@@ -18427,7 +18320,7 @@ registerThemeVariant("footer-home", "barelux", FooterHome3);
|
|
|
18427
18320
|
|
|
18428
18321
|
// src/design_system/sections/hero-home.balance.tsx
|
|
18429
18322
|
import { Fragment as Fragment7, useState as useState26 } from "react";
|
|
18430
|
-
import
|
|
18323
|
+
import React52 from "react";
|
|
18431
18324
|
var HeroHome4 = ({
|
|
18432
18325
|
websitePhotos,
|
|
18433
18326
|
companyInformation,
|
|
@@ -18445,7 +18338,7 @@ var HeroHome4 = ({
|
|
|
18445
18338
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
18446
18339
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || "Hero image"
|
|
18447
18340
|
};
|
|
18448
|
-
return /* @__PURE__ */
|
|
18341
|
+
return /* @__PURE__ */ React52.createElement(Fragment7, null, /* @__PURE__ */ React52.createElement("section", { className: "bg-primary py-20 md:py-28" }, /* @__PURE__ */ React52.createElement("div", { className: "mx-auto max-w-4xl px-4 text-center md:px-8" }, /* @__PURE__ */ React52.createElement("h1", { className: "font-display text-5xl font-normal leading-tight text-fg-primary md:text-6xl lg:text-7xl" }, headline), /* @__PURE__ */ React52.createElement("p", { className: "mt-6 font-body text-lg leading-relaxed text-secondary md:text-xl max-w-3xl mx-auto" }, subhead), ctaText && /* @__PURE__ */ React52.createElement("div", { className: "mt-10" }, /* @__PURE__ */ React52.createElement(
|
|
18449
18342
|
Button2,
|
|
18450
18343
|
{
|
|
18451
18344
|
as: "a",
|
|
@@ -18457,7 +18350,7 @@ var HeroHome4 = ({
|
|
|
18457
18350
|
className: "font-body font-medium"
|
|
18458
18351
|
},
|
|
18459
18352
|
ctaText
|
|
18460
|
-
)))), /* @__PURE__ */
|
|
18353
|
+
)))), /* @__PURE__ */ React52.createElement("section", { className: "bg-primary" }, /* @__PURE__ */ React52.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8 pb-16 md:pb-24" }, /* @__PURE__ */ React52.createElement("div", { className: "relative w-full h-[450px] md:h-[550px] lg:h-[650px] overflow-hidden" }, /* @__PURE__ */ React52.createElement(
|
|
18461
18354
|
PhotoWithFallback2,
|
|
18462
18355
|
{
|
|
18463
18356
|
photoUrl: heroImage.url,
|
|
@@ -18465,7 +18358,7 @@ var HeroHome4 = ({
|
|
|
18465
18358
|
fallbackId: "hero-home-balance",
|
|
18466
18359
|
className: "w-full h-full object-cover"
|
|
18467
18360
|
}
|
|
18468
|
-
), videoUrl && /* @__PURE__ */
|
|
18361
|
+
), videoUrl && /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React52.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))))), videoUrl && /* @__PURE__ */ React52.createElement(
|
|
18469
18362
|
VideoModal,
|
|
18470
18363
|
{
|
|
18471
18364
|
isOpen: showVideo,
|
|
@@ -18477,7 +18370,7 @@ var HeroHome4 = ({
|
|
|
18477
18370
|
registerThemeVariant("hero-home", "balance", HeroHome4);
|
|
18478
18371
|
|
|
18479
18372
|
// src/design_system/sections/header-navigation.balance.tsx
|
|
18480
|
-
import
|
|
18373
|
+
import React53, { useState as useState27, useRef as useRef16, useCallback as useCallback9 } from "react";
|
|
18481
18374
|
import Link10 from "next/link";
|
|
18482
18375
|
import Image13 from "next/image";
|
|
18483
18376
|
function HeaderNavigation4({
|
|
@@ -18493,7 +18386,7 @@ function HeaderNavigation4({
|
|
|
18493
18386
|
const [activeDropdown, setActiveDropdown] = useState27(null);
|
|
18494
18387
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState27(false);
|
|
18495
18388
|
const closeTimeoutRef = useRef16(null);
|
|
18496
|
-
|
|
18389
|
+
React53.useEffect(() => {
|
|
18497
18390
|
return () => {
|
|
18498
18391
|
if (closeTimeoutRef.current) {
|
|
18499
18392
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -18531,7 +18424,7 @@ function HeaderNavigation4({
|
|
|
18531
18424
|
const handleDropdownMouseLeave = useCallback9(() => {
|
|
18532
18425
|
handleMouseLeave();
|
|
18533
18426
|
}, [handleMouseLeave]);
|
|
18534
|
-
return /* @__PURE__ */
|
|
18427
|
+
return /* @__PURE__ */ React53.createElement(React53.Fragment, null, /* @__PURE__ */ React53.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React53.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React53.createElement("div", { className: "relative flex items-center justify-between py-5" }, /* @__PURE__ */ React53.createElement(Link10, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center z-10" }, logoUrl ? /* @__PURE__ */ React53.createElement(
|
|
18535
18428
|
Image13,
|
|
18536
18429
|
{
|
|
18537
18430
|
src: logoUrl,
|
|
@@ -18540,7 +18433,7 @@ function HeaderNavigation4({
|
|
|
18540
18433
|
width: 180,
|
|
18541
18434
|
height: 48
|
|
18542
18435
|
}
|
|
18543
|
-
) : /* @__PURE__ */
|
|
18436
|
+
) : /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React53.createElement("span", { className: "font-display text-2xl font-normal", style: { color: "rgb(148, 102, 76)" } }, companyName), /* @__PURE__ */ React53.createElement("span", { className: "font-body text-xs tracking-widest uppercase", style: { color: "rgb(148, 102, 76)", opacity: 0.7 } }, "Concierge Cosmetic Injections"))), /* @__PURE__ */ React53.createElement("nav", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center gap-1" }, navigation.map((item) => /* @__PURE__ */ React53.createElement(
|
|
18544
18437
|
"div",
|
|
18545
18438
|
{
|
|
18546
18439
|
key: item.label,
|
|
@@ -18548,7 +18441,7 @@ function HeaderNavigation4({
|
|
|
18548
18441
|
onMouseEnter: () => handleMouseEnter(item),
|
|
18549
18442
|
onMouseLeave: handleMouseLeave
|
|
18550
18443
|
},
|
|
18551
|
-
item.href ? /* @__PURE__ */
|
|
18444
|
+
item.href ? /* @__PURE__ */ React53.createElement(
|
|
18552
18445
|
Link10,
|
|
18553
18446
|
{
|
|
18554
18447
|
href: item.href,
|
|
@@ -18556,15 +18449,15 @@ function HeaderNavigation4({
|
|
|
18556
18449
|
style: { color: "rgb(170, 143, 123)" }
|
|
18557
18450
|
},
|
|
18558
18451
|
item.label
|
|
18559
|
-
) : /* @__PURE__ */
|
|
18560
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
18452
|
+
) : /* @__PURE__ */ React53.createElement("span", { className: "font-display text-xl font-semibold px-5 py-2 cursor-pointer", style: { color: "rgb(170, 143, 123)" } }, item.label),
|
|
18453
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React53.createElement(
|
|
18561
18454
|
"div",
|
|
18562
18455
|
{
|
|
18563
18456
|
className: "absolute left-0 top-full pt-2",
|
|
18564
18457
|
onMouseEnter: handleDropdownMouseEnter,
|
|
18565
18458
|
onMouseLeave: handleDropdownMouseLeave
|
|
18566
18459
|
},
|
|
18567
|
-
/* @__PURE__ */
|
|
18460
|
+
/* @__PURE__ */ React53.createElement("div", { className: "balance-dropdown-panel bg-primary border border-secondary shadow-md min-w-48 py-2" }, item.children.map((child) => /* @__PURE__ */ React53.createElement(
|
|
18568
18461
|
Link10,
|
|
18569
18462
|
{
|
|
18570
18463
|
key: child.href,
|
|
@@ -18575,7 +18468,7 @@ function HeaderNavigation4({
|
|
|
18575
18468
|
child.label
|
|
18576
18469
|
)))
|
|
18577
18470
|
)
|
|
18578
|
-
))), /* @__PURE__ */
|
|
18471
|
+
))), /* @__PURE__ */ React53.createElement("div", { className: "flex items-center gap-3 flex-shrink-0 z-10" }, ((_e = props == null ? void 0 : props.cta_button) == null ? void 0 : _e.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React53.createElement(
|
|
18579
18472
|
Button2,
|
|
18580
18473
|
{
|
|
18581
18474
|
href: ctaUrls.secondaryHref,
|
|
@@ -18585,7 +18478,7 @@ function HeaderNavigation4({
|
|
|
18585
18478
|
size: "sm"
|
|
18586
18479
|
},
|
|
18587
18480
|
props.cta_button.label
|
|
18588
|
-
), /* @__PURE__ */
|
|
18481
|
+
), /* @__PURE__ */ React53.createElement(
|
|
18589
18482
|
Button2,
|
|
18590
18483
|
{
|
|
18591
18484
|
href: ctaUrls.primaryHref,
|
|
@@ -18595,15 +18488,15 @@ function HeaderNavigation4({
|
|
|
18595
18488
|
size: "sm"
|
|
18596
18489
|
},
|
|
18597
18490
|
((_i = props == null ? void 0 : props.cta_button) == null ? void 0 : _i.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_j = props == null ? void 0 : props.cta_button) == null ? void 0 : _j.label) || ""
|
|
18598
|
-
))))), /* @__PURE__ */
|
|
18491
|
+
))))), /* @__PURE__ */ React53.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React53.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React53.createElement(
|
|
18599
18492
|
"button",
|
|
18600
18493
|
{
|
|
18601
18494
|
onClick: () => setIsMobileMenuOpen(true),
|
|
18602
18495
|
className: "text-fg-primary",
|
|
18603
18496
|
"aria-label": "Open menu"
|
|
18604
18497
|
},
|
|
18605
|
-
/* @__PURE__ */
|
|
18606
|
-
), /* @__PURE__ */
|
|
18498
|
+
/* @__PURE__ */ React53.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React53.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
18499
|
+
), /* @__PURE__ */ React53.createElement(Link10, { href: ((_k = props == null ? void 0 : props.logo) == null ? void 0 : _k.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React53.createElement(
|
|
18607
18500
|
Image13,
|
|
18608
18501
|
{
|
|
18609
18502
|
src: logoUrl,
|
|
@@ -18612,15 +18505,15 @@ function HeaderNavigation4({
|
|
|
18612
18505
|
width: 120,
|
|
18613
18506
|
height: 32
|
|
18614
18507
|
}
|
|
18615
|
-
) : /* @__PURE__ */
|
|
18508
|
+
) : /* @__PURE__ */ React53.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React53.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React53.createElement("div", { className: "balance-mobile-menu fixed inset-0 bg-primary z-50 md:hidden" }, /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React53.createElement("div", { className: "flex items-center justify-between px-4 py-4", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React53.createElement(
|
|
18616
18509
|
"button",
|
|
18617
18510
|
{
|
|
18618
18511
|
onClick: () => setIsMobileMenuOpen(false),
|
|
18619
18512
|
className: "text-fg-primary",
|
|
18620
18513
|
"aria-label": "Close menu"
|
|
18621
18514
|
},
|
|
18622
|
-
/* @__PURE__ */
|
|
18623
|
-
), /* @__PURE__ */
|
|
18515
|
+
/* @__PURE__ */ React53.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React53.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
18516
|
+
), /* @__PURE__ */ React53.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React53.createElement(
|
|
18624
18517
|
Image13,
|
|
18625
18518
|
{
|
|
18626
18519
|
src: logoUrl,
|
|
@@ -18629,7 +18522,7 @@ function HeaderNavigation4({
|
|
|
18629
18522
|
width: 120,
|
|
18630
18523
|
height: 32
|
|
18631
18524
|
}
|
|
18632
|
-
) : /* @__PURE__ */
|
|
18525
|
+
) : /* @__PURE__ */ React53.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React53.createElement("div", { className: "w-6" })), /* @__PURE__ */ React53.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React53.createElement("ul", { className: "space-y-4" }, navigation.map((item) => /* @__PURE__ */ React53.createElement("li", { key: item.label }, /* @__PURE__ */ React53.createElement(
|
|
18633
18526
|
Link10,
|
|
18634
18527
|
{
|
|
18635
18528
|
href: item.href || "#",
|
|
@@ -18638,7 +18531,7 @@ function HeaderNavigation4({
|
|
|
18638
18531
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18639
18532
|
},
|
|
18640
18533
|
item.label
|
|
18641
|
-
), item.children && item.children.length > 0 && /* @__PURE__ */
|
|
18534
|
+
), item.children && item.children.length > 0 && /* @__PURE__ */ React53.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, item.children.map((child) => /* @__PURE__ */ React53.createElement("li", { key: child.href }, /* @__PURE__ */ React53.createElement(
|
|
18642
18535
|
Link10,
|
|
18643
18536
|
{
|
|
18644
18537
|
href: child.href,
|
|
@@ -18646,7 +18539,7 @@ function HeaderNavigation4({
|
|
|
18646
18539
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18647
18540
|
},
|
|
18648
18541
|
child.label
|
|
18649
|
-
)))))))), /* @__PURE__ */
|
|
18542
|
+
)))))))), /* @__PURE__ */ React53.createElement("div", { className: "px-4 py-6", style: { borderTop: "1px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col gap-3" }, ((_l = props == null ? void 0 : props.cta_button) == null ? void 0 : _l.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React53.createElement(
|
|
18650
18543
|
Button2,
|
|
18651
18544
|
{
|
|
18652
18545
|
href: ctaUrls.secondaryHref,
|
|
@@ -18656,7 +18549,7 @@ function HeaderNavigation4({
|
|
|
18656
18549
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18657
18550
|
},
|
|
18658
18551
|
props.cta_button.secondary_label
|
|
18659
|
-
), /* @__PURE__ */
|
|
18552
|
+
), /* @__PURE__ */ React53.createElement(
|
|
18660
18553
|
Button2,
|
|
18661
18554
|
{
|
|
18662
18555
|
href: ctaUrls.primaryHref,
|
|
@@ -18666,7 +18559,7 @@ function HeaderNavigation4({
|
|
|
18666
18559
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18667
18560
|
},
|
|
18668
18561
|
((_m = props == null ? void 0 : props.cta_button) == null ? void 0 : _m.label) || ""
|
|
18669
|
-
))))), /* @__PURE__ */
|
|
18562
|
+
))))), /* @__PURE__ */ React53.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden", style: { backgroundColor: "rgb(148, 133, 84)" } }, /* @__PURE__ */ React53.createElement("div", { className: "flex gap-0" }, ((_n = props == null ? void 0 : props.cta_button) == null ? void 0 : _n.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React53.createElement(
|
|
18670
18563
|
Button2,
|
|
18671
18564
|
{
|
|
18672
18565
|
href: ctaUrls.secondaryHref,
|
|
@@ -18677,7 +18570,7 @@ function HeaderNavigation4({
|
|
|
18677
18570
|
style: { borderRight: "1px solid rgba(255, 255, 255, 0.2)" }
|
|
18678
18571
|
},
|
|
18679
18572
|
props.cta_button.label
|
|
18680
|
-
), /* @__PURE__ */
|
|
18573
|
+
), /* @__PURE__ */ React53.createElement(
|
|
18681
18574
|
Button2,
|
|
18682
18575
|
{
|
|
18683
18576
|
href: ctaUrls.primaryHref,
|
|
@@ -18750,10 +18643,10 @@ var FooterHome4 = ({
|
|
|
18750
18643
|
registerThemeVariant("footer-home", "balance", FooterHome4);
|
|
18751
18644
|
|
|
18752
18645
|
// src/design_system/sections/contact-section.balance.tsx
|
|
18753
|
-
import
|
|
18646
|
+
import React55 from "react";
|
|
18754
18647
|
|
|
18755
18648
|
// src/design_system/sections/contact-section-form.balance.tsx
|
|
18756
|
-
import
|
|
18649
|
+
import React54, { useRef as useRef17, useState as useState28 } from "react";
|
|
18757
18650
|
var ContactSectionForm4 = ({
|
|
18758
18651
|
formDefinition,
|
|
18759
18652
|
submitButtonText = "Send message",
|
|
@@ -18807,14 +18700,14 @@ var ContactSectionForm4 = ({
|
|
|
18807
18700
|
setIsSubmitting(false);
|
|
18808
18701
|
};
|
|
18809
18702
|
if (!hasFields) return null;
|
|
18810
|
-
return /* @__PURE__ */
|
|
18703
|
+
return /* @__PURE__ */ React54.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React54.createElement(
|
|
18811
18704
|
DynamicFormFields,
|
|
18812
18705
|
{
|
|
18813
18706
|
form: resolvedFormDefinition,
|
|
18814
18707
|
privacyPolicyUrl,
|
|
18815
18708
|
termsOfServiceUrl
|
|
18816
18709
|
}
|
|
18817
|
-
), /* @__PURE__ */
|
|
18710
|
+
), /* @__PURE__ */ React54.createElement(
|
|
18818
18711
|
Button2,
|
|
18819
18712
|
{
|
|
18820
18713
|
type: "submit",
|
|
@@ -18825,7 +18718,7 @@ var ContactSectionForm4 = ({
|
|
|
18825
18718
|
isLoading: isSubmitting
|
|
18826
18719
|
},
|
|
18827
18720
|
isSubmitting ? "Sending..." : submitButtonText
|
|
18828
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
18721
|
+
), submitStatus === "success" && /* @__PURE__ */ React54.createElement("div", { className: "rounded-sm bg-success-50 p-4 text-success-700 font-body" }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React54.createElement("div", { className: "rounded-sm bg-error-50 p-4 text-error-700 font-body text-sm" }, statusMessage));
|
|
18829
18722
|
};
|
|
18830
18723
|
|
|
18831
18724
|
// src/design_system/sections/contact-section.balance.tsx
|
|
@@ -18849,7 +18742,7 @@ var ContactSection4 = ({
|
|
|
18849
18742
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
18850
18743
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
18851
18744
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
18852
|
-
return /* @__PURE__ */
|
|
18745
|
+
return /* @__PURE__ */ React55.createElement("section", { className: "bg-primary py-16 md:py-24" }, /* @__PURE__ */ React55.createElement("div", { className: "mx-auto max-w-4xl px-4 md:px-8" }, /* @__PURE__ */ React55.createElement("div", { className: "text-center mb-12" }, /* @__PURE__ */ React55.createElement("h2", { className: "font-display text-4xl font-normal leading-tight text-fg-primary md:text-5xl" }, title), /* @__PURE__ */ React55.createElement("p", { className: "mt-4 font-body text-lg leading-relaxed text-tertiary max-w-2xl mx-auto" }, subtitle)), finalContactImage && /* @__PURE__ */ React55.createElement("div", { className: "mb-12 overflow-hidden h-72 md:h-96" }, /* @__PURE__ */ React55.createElement(
|
|
18853
18746
|
PhotoWithFallback2,
|
|
18854
18747
|
{
|
|
18855
18748
|
photoUrl: finalContactImage,
|
|
@@ -18857,7 +18750,7 @@ var ContactSection4 = ({
|
|
|
18857
18750
|
fallbackId: "contact-image",
|
|
18858
18751
|
className: "h-full w-full object-cover"
|
|
18859
18752
|
}
|
|
18860
|
-
)), /* @__PURE__ */
|
|
18753
|
+
)), /* @__PURE__ */ React55.createElement("div", { className: "max-w-2xl mx-auto" }, /* @__PURE__ */ React55.createElement(
|
|
18861
18754
|
ContactSectionForm4,
|
|
18862
18755
|
{
|
|
18863
18756
|
formDefinition,
|
|
@@ -18946,7 +18839,7 @@ var AboutHome4 = ({
|
|
|
18946
18839
|
registerThemeVariant("about-home", "balance", AboutHome4);
|
|
18947
18840
|
|
|
18948
18841
|
// src/design_system/sections/testimonials-home.balance.tsx
|
|
18949
|
-
import
|
|
18842
|
+
import React56 from "react";
|
|
18950
18843
|
var TestimonialsHome4 = ({
|
|
18951
18844
|
testimonials: testimonialsData,
|
|
18952
18845
|
title = "",
|
|
@@ -18955,7 +18848,7 @@ var TestimonialsHome4 = ({
|
|
|
18955
18848
|
}) => {
|
|
18956
18849
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
18957
18850
|
const displayTestimonials = perPage ? testimonials.slice(0, perPage) : testimonials;
|
|
18958
|
-
return /* @__PURE__ */
|
|
18851
|
+
return /* @__PURE__ */ React56.createElement("section", { className: "bg-primary py-16 md:py-24" }, /* @__PURE__ */ React56.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React56.createElement("div", { className: "text-center mb-12 max-w-3xl mx-auto" }, /* @__PURE__ */ React56.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl mb-4" }, title), subtitle && /* @__PURE__ */ React56.createElement("p", { className: "font-body text-lg text-secondary" }, subtitle)), /* @__PURE__ */ React56.createElement(
|
|
18959
18852
|
CarouselSectionWrapper,
|
|
18960
18853
|
{
|
|
18961
18854
|
title: "",
|
|
@@ -18969,7 +18862,7 @@ var TestimonialsHome4 = ({
|
|
|
18969
18862
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
18970
18863
|
const rating = testimonial.rating || 5;
|
|
18971
18864
|
const initials = reviewerName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
18972
|
-
return /* @__PURE__ */
|
|
18865
|
+
return /* @__PURE__ */ React56.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React56.createElement("div", { className: "bg-secondary/30 p-8 h-full flex flex-col" }, /* @__PURE__ */ React56.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React56.createElement(
|
|
18973
18866
|
"svg",
|
|
18974
18867
|
{
|
|
18975
18868
|
key: starIdx,
|
|
@@ -18981,8 +18874,8 @@ var TestimonialsHome4 = ({
|
|
|
18981
18874
|
strokeWidth: "2",
|
|
18982
18875
|
viewBox: "0 0 24 24"
|
|
18983
18876
|
},
|
|
18984
|
-
/* @__PURE__ */
|
|
18985
|
-
))), /* @__PURE__ */
|
|
18877
|
+
/* @__PURE__ */ React56.createElement("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" })
|
|
18878
|
+
))), /* @__PURE__ */ React56.createElement("p", { className: "font-body text-base leading-relaxed text-secondary mb-8 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React56.createElement("div", { className: "flex items-center gap-4 pt-6 border-t border-primary/20" }, /* @__PURE__ */ React56.createElement(
|
|
18986
18879
|
Avatar2,
|
|
18987
18880
|
{
|
|
18988
18881
|
src: avatarUrl,
|
|
@@ -18990,14 +18883,14 @@ var TestimonialsHome4 = ({
|
|
|
18990
18883
|
initials,
|
|
18991
18884
|
size: "xl"
|
|
18992
18885
|
}
|
|
18993
|
-
), /* @__PURE__ */
|
|
18886
|
+
), /* @__PURE__ */ React56.createElement("div", null, /* @__PURE__ */ React56.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), /* @__PURE__ */ React56.createElement("p", { className: "font-body text-xs text-tertiary mt-0.5" }, "Verified Customer")))));
|
|
18994
18887
|
})
|
|
18995
18888
|
)));
|
|
18996
18889
|
};
|
|
18997
18890
|
registerThemeVariant("testimonials-home", "balance", TestimonialsHome4);
|
|
18998
18891
|
|
|
18999
18892
|
// src/design_system/sections/blog-section.balance.tsx
|
|
19000
|
-
import
|
|
18893
|
+
import React57 from "react";
|
|
19001
18894
|
var BlogSection4 = ({
|
|
19002
18895
|
blogPosts: postsData,
|
|
19003
18896
|
title = "",
|
|
@@ -19017,7 +18910,7 @@ var BlogSection4 = ({
|
|
|
19017
18910
|
return "Recent";
|
|
19018
18911
|
}
|
|
19019
18912
|
};
|
|
19020
|
-
return /* @__PURE__ */
|
|
18913
|
+
return /* @__PURE__ */ React57.createElement("section", { className: "bg-secondary py-16 md:py-24" }, /* @__PURE__ */ React57.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React57.createElement("div", { className: "text-center mb-16 max-w-3xl mx-auto" }, /* @__PURE__ */ React57.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl mb-4" }, title), subtitle && /* @__PURE__ */ React57.createElement("p", { className: "font-body text-lg text-secondary" }, subtitle)), /* @__PURE__ */ React57.createElement(
|
|
19021
18914
|
CarouselSectionWrapper,
|
|
19022
18915
|
{
|
|
19023
18916
|
title: "",
|
|
@@ -19027,16 +18920,16 @@ var BlogSection4 = ({
|
|
|
19027
18920
|
postsArray.map((post) => {
|
|
19028
18921
|
var _a;
|
|
19029
18922
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
19030
|
-
return /* @__PURE__ */
|
|
18923
|
+
return /* @__PURE__ */ React57.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React57.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col h-full group bg-primary" }, /* @__PURE__ */ React57.createElement("div", { className: "w-full h-64 overflow-hidden" }, /* @__PURE__ */ React57.createElement(
|
|
19031
18924
|
PhotoWithFallback2,
|
|
19032
18925
|
{
|
|
19033
18926
|
item: post,
|
|
19034
18927
|
fallbackId: post.id,
|
|
19035
18928
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19036
18929
|
}
|
|
19037
|
-
)), /* @__PURE__ */
|
|
18930
|
+
)), /* @__PURE__ */ React57.createElement("div", { className: "p-6 flex flex-col flex-grow" }, /* @__PURE__ */ React57.createElement("p", { className: "text-xs font-body font-medium uppercase tracking-wide mb-3 text-brand-accent" }, formatDate4(post.published_at)), /* @__PURE__ */ React57.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-3 group-hover:text-brand-accent transition-colors line-clamp-2" }, post.title), excerpt && /* @__PURE__ */ React57.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary flex-grow line-clamp-3" }, excerpt), /* @__PURE__ */ React57.createElement("span", { className: "mt-4 font-body text-sm font-medium uppercase tracking-wide", style: { color: "var(--color-text-brand-accent)" } }, "Read More \u2192"))));
|
|
19038
18931
|
})
|
|
19039
|
-
), postsArray.length > 0 && /* @__PURE__ */
|
|
18932
|
+
), postsArray.length > 0 && /* @__PURE__ */ React57.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React57.createElement(
|
|
19040
18933
|
Button2,
|
|
19041
18934
|
{
|
|
19042
18935
|
as: "a",
|
|
@@ -19051,7 +18944,7 @@ var BlogSection4 = ({
|
|
|
19051
18944
|
registerThemeVariant("blog-section", "balance", BlogSection4);
|
|
19052
18945
|
|
|
19053
18946
|
// src/design_system/sections/team-grid.balance.tsx
|
|
19054
|
-
import
|
|
18947
|
+
import React58 from "react";
|
|
19055
18948
|
var TeamGrid3 = ({
|
|
19056
18949
|
teamMembers: membersData,
|
|
19057
18950
|
title = "",
|
|
@@ -19062,10 +18955,10 @@ var TeamGrid3 = ({
|
|
|
19062
18955
|
}) => {
|
|
19063
18956
|
const members = Array.isArray(membersData) ? membersData : [];
|
|
19064
18957
|
const displayMembers = members.slice(0, maxMembers);
|
|
19065
|
-
return /* @__PURE__ */
|
|
18958
|
+
return /* @__PURE__ */ React58.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React58.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React58.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React58.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React58.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), displayMembers.length > 0 ? /* @__PURE__ */ React58.createElement("div", { className: "mt-12 md:mt-16" }, /* @__PURE__ */ React58.createElement("ul", { className: "grid w-full grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-2 md:gap-y-12 lg:grid-cols-3 xl:grid-cols-4 justify-items-center" }, displayMembers.map((member, index) => {
|
|
19066
18959
|
var _a;
|
|
19067
18960
|
const bio = ((_a = member.bio_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
19068
|
-
return /* @__PURE__ */
|
|
18961
|
+
return /* @__PURE__ */ React58.createElement("li", { key: member.id || index, className: "flex flex-col gap-5 md:gap-6 max-w-xs w-full" }, /* @__PURE__ */ React58.createElement(
|
|
19069
18962
|
PhotoWithFallback2,
|
|
19070
18963
|
{
|
|
19071
18964
|
item: member,
|
|
@@ -19073,13 +18966,13 @@ var TeamGrid3 = ({
|
|
|
19073
18966
|
alt: member.name || "Team member",
|
|
19074
18967
|
className: "h-78 w-full object-cover md:h-74 rounded-2xl"
|
|
19075
18968
|
}
|
|
19076
|
-
), /* @__PURE__ */
|
|
19077
|
-
}))) : /* @__PURE__ */
|
|
18969
|
+
), /* @__PURE__ */ React58.createElement("div", null, /* @__PURE__ */ React58.createElement("h3", { className: "text-lg font-semibold text-primary md:text-xl" }, member.name), /* @__PURE__ */ React58.createElement("p", { className: "text-md text-brand-secondary md:mt-0.5 md:text-lg" }, member.position), bio && /* @__PURE__ */ React58.createElement("p", { className: "mt-4 text-md text-tertiary leading-relaxed" }, bio)));
|
|
18970
|
+
}))) : /* @__PURE__ */ React58.createElement("div", { className: "text-center mt-12" }, /* @__PURE__ */ React58.createElement("p", { className: "text-gray-500" }, "No team members available"))));
|
|
19078
18971
|
};
|
|
19079
18972
|
registerThemeVariant("team-grid", "balance", TeamGrid3);
|
|
19080
18973
|
|
|
19081
18974
|
// src/design_system/sections/services-grid.balance.tsx
|
|
19082
|
-
import
|
|
18975
|
+
import React59 from "react";
|
|
19083
18976
|
import Link12 from "next/link";
|
|
19084
18977
|
var ServicesGrid3 = ({
|
|
19085
18978
|
services: servicesData,
|
|
@@ -19089,12 +18982,12 @@ var ServicesGrid3 = ({
|
|
|
19089
18982
|
className = ""
|
|
19090
18983
|
}) => {
|
|
19091
18984
|
const services = Array.isArray(servicesData) ? servicesData : [];
|
|
19092
|
-
return /* @__PURE__ */
|
|
18985
|
+
return /* @__PURE__ */ React59.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React59.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React59.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React59.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React59.createElement("p", { className: "mt-4 font-body text-lg text-secondary md:mt-5 md:text-xl" }, subtitle)), services.length > 0 ? /* @__PURE__ */ React59.createElement("ul", { className: "grid grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-2 md:gap-y-12 lg:grid-cols-3" }, services.map((service, index) => {
|
|
19093
18986
|
var _a, _b, _c, _d;
|
|
19094
18987
|
const description = service.summary || (service.description_markdown ? service.description_markdown.replace(/[#*\[\]()]/g, "").trim().substring(0, 120) + "..." : "");
|
|
19095
18988
|
const photo = ((_b = (_a = service.photo_attachments) == null ? void 0 : _a.find((pa) => pa.featured)) == null ? void 0 : _b.photo) || ((_d = (_c = service.photo_attachments) == null ? void 0 : _c[0]) == null ? void 0 : _d.photo);
|
|
19096
18989
|
const imageAlt = (photo == null ? void 0 : photo.title) || service.name;
|
|
19097
|
-
return /* @__PURE__ */
|
|
18990
|
+
return /* @__PURE__ */ React59.createElement("li", { key: service.id || index }, /* @__PURE__ */ React59.createElement("div", { className: "flex flex-col gap-12 bg-secondary p-5 md:inline-flex md:gap-16 md:p-6 rounded-lg group" }, /* @__PURE__ */ React59.createElement(Link12, { href: `/services/${service.slug}`, className: "block" }, /* @__PURE__ */ React59.createElement("div", { className: "h-48 w-full overflow-hidden rounded-lg md:h-64" }, /* @__PURE__ */ React59.createElement(
|
|
19098
18991
|
PhotoWithFallback2,
|
|
19099
18992
|
{
|
|
19100
18993
|
item: service,
|
|
@@ -19102,8 +18995,8 @@ var ServicesGrid3 = ({
|
|
|
19102
18995
|
alt: imageAlt || "Service image",
|
|
19103
18996
|
className: "size-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19104
18997
|
}
|
|
19105
|
-
)), /* @__PURE__ */
|
|
19106
|
-
})) : /* @__PURE__ */
|
|
18998
|
+
)), /* @__PURE__ */ React59.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mt-4 mb-3 group-hover:text-brand-accent transition-colors" }, service.name), description && /* @__PURE__ */ React59.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4" }, description), /* @__PURE__ */ React59.createElement("span", { className: "font-body text-sm font-medium uppercase tracking-wide", style: { color: "var(--color-text-brand-accent)" } }, "Learn More \u2192"))));
|
|
18999
|
+
})) : /* @__PURE__ */ React59.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React59.createElement("p", { className: "font-body text-base text-tertiary" }, "No services available"))));
|
|
19107
19000
|
};
|
|
19108
19001
|
registerThemeVariant("services-grid", "balance", ServicesGrid3);
|
|
19109
19002
|
|
|
@@ -19220,7 +19113,7 @@ var FeatureTabHorizontal = ({ title, subtitle, footer, isCurrent }) => /* @__PUR
|
|
|
19220
19113
|
);
|
|
19221
19114
|
|
|
19222
19115
|
// src/design_system/sections/service-menu-section.tsx
|
|
19223
|
-
import
|
|
19116
|
+
import React60, { useState as useState30, useEffect as useEffect11, useCallback as useCallback10, useMemo as useMemo8 } from "react";
|
|
19224
19117
|
import { createPortal } from "react-dom";
|
|
19225
19118
|
var SERVICE_MENU_MODAL_ROOT_ID = "service-menu-modal-root";
|
|
19226
19119
|
var CYCLE_INTERVAL_MIN_MS = 6e3;
|
|
@@ -19233,6 +19126,10 @@ function seedToUnit(seed) {
|
|
|
19233
19126
|
}
|
|
19234
19127
|
return (h >>> 0) / 4294967296;
|
|
19235
19128
|
}
|
|
19129
|
+
function getActivePublicOffers(offers) {
|
|
19130
|
+
if (!Array.isArray(offers) || offers.length === 0) return [];
|
|
19131
|
+
return offers.filter((o) => o.active !== false && o.expired !== true);
|
|
19132
|
+
}
|
|
19236
19133
|
function photoAttachmentDisplayUrl(pa) {
|
|
19237
19134
|
var _a, _b;
|
|
19238
19135
|
return ((_a = pa.photo) == null ? void 0 : _a.large_url) || ((_b = pa.photo) == null ? void 0 : _b.medium_url);
|
|
@@ -19284,7 +19181,8 @@ function GridCardWithImage({
|
|
|
19284
19181
|
onClick,
|
|
19285
19182
|
websitePhotos,
|
|
19286
19183
|
companyInformation,
|
|
19287
|
-
cycleSeed
|
|
19184
|
+
cycleSeed,
|
|
19185
|
+
hasSpecial
|
|
19288
19186
|
}) {
|
|
19289
19187
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
19290
19188
|
const seed = cycleSeed != null ? cycleSeed : String(fallbackId);
|
|
@@ -19312,14 +19210,21 @@ function GridCardWithImage({
|
|
|
19312
19210
|
const currentItem = list[currentIndex];
|
|
19313
19211
|
const displayAlt = (currentItem == null ? void 0 : currentItem.alt) || fallbackAlt;
|
|
19314
19212
|
const singleUrl = (_a = list[0]) == null ? void 0 : _a.url;
|
|
19315
|
-
return /* @__PURE__ */
|
|
19213
|
+
return /* @__PURE__ */ React60.createElement(
|
|
19316
19214
|
"button",
|
|
19317
19215
|
{
|
|
19318
19216
|
type: "button",
|
|
19319
19217
|
onClick,
|
|
19320
19218
|
className: "flex flex-col h-full w-full text-left group block rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-brand-accent focus-visible:ring-offset-2"
|
|
19321
19219
|
},
|
|
19322
|
-
/* @__PURE__ */
|
|
19220
|
+
/* @__PURE__ */ React60.createElement("div", { className: "w-full h-36 overflow-hidden rounded-lg mb-3 relative" }, hasSpecial ? /* @__PURE__ */ React60.createElement(
|
|
19221
|
+
"span",
|
|
19222
|
+
{
|
|
19223
|
+
className: "absolute top-2 right-2 z-10 rounded-full border border-brand-accent/40 bg-secondary/95 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-brand-accent shadow-sm backdrop-blur-sm",
|
|
19224
|
+
"aria-label": "Has special offer"
|
|
19225
|
+
},
|
|
19226
|
+
"Special"
|
|
19227
|
+
) : null, list.length === 0 ? /* @__PURE__ */ React60.createElement(
|
|
19323
19228
|
PhotoWithFallback2,
|
|
19324
19229
|
{
|
|
19325
19230
|
item: void 0,
|
|
@@ -19331,7 +19236,7 @@ function GridCardWithImage({
|
|
|
19331
19236
|
}
|
|
19332
19237
|
) : list.length === 1 && singleUrl ? (
|
|
19333
19238
|
// eslint-disable-next-line @next/next/no-img-element -- dynamic API URLs; next/image not configured for external host
|
|
19334
|
-
/* @__PURE__ */
|
|
19239
|
+
/* @__PURE__ */ React60.createElement(
|
|
19335
19240
|
"img",
|
|
19336
19241
|
{
|
|
19337
19242
|
src: singleUrl,
|
|
@@ -19339,13 +19244,13 @@ function GridCardWithImage({
|
|
|
19339
19244
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19340
19245
|
}
|
|
19341
19246
|
)
|
|
19342
|
-
) : /* @__PURE__ */
|
|
19247
|
+
) : /* @__PURE__ */ React60.createElement(React60.Fragment, null, /* @__PURE__ */ React60.createElement(
|
|
19343
19248
|
"div",
|
|
19344
19249
|
{
|
|
19345
19250
|
className: `absolute inset-0 ${transitioning ? "transition-opacity duration-[600ms] ease-in-out" : "transition-none"}`,
|
|
19346
19251
|
style: { opacity: transitioning ? 0 : 1 }
|
|
19347
19252
|
},
|
|
19348
|
-
/* @__PURE__ */
|
|
19253
|
+
/* @__PURE__ */ React60.createElement(
|
|
19349
19254
|
"img",
|
|
19350
19255
|
{
|
|
19351
19256
|
src: (_b = list[currentIndex]) == null ? void 0 : _b.url,
|
|
@@ -19353,13 +19258,13 @@ function GridCardWithImage({
|
|
|
19353
19258
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19354
19259
|
}
|
|
19355
19260
|
)
|
|
19356
|
-
), /* @__PURE__ */
|
|
19261
|
+
), /* @__PURE__ */ React60.createElement(
|
|
19357
19262
|
"div",
|
|
19358
19263
|
{
|
|
19359
19264
|
className: `absolute inset-0 ${transitioning ? "transition-opacity duration-[600ms] ease-in-out" : "transition-none"}`,
|
|
19360
19265
|
style: { opacity: transitioning ? 1 : 0 }
|
|
19361
19266
|
},
|
|
19362
|
-
/* @__PURE__ */
|
|
19267
|
+
/* @__PURE__ */ React60.createElement(
|
|
19363
19268
|
"img",
|
|
19364
19269
|
{
|
|
19365
19270
|
src: (_e = list[nextIndex]) == null ? void 0 : _e.url,
|
|
@@ -19368,8 +19273,8 @@ function GridCardWithImage({
|
|
|
19368
19273
|
}
|
|
19369
19274
|
)
|
|
19370
19275
|
))),
|
|
19371
|
-
subtitle && /* @__PURE__ */
|
|
19372
|
-
/* @__PURE__ */
|
|
19276
|
+
subtitle && /* @__PURE__ */ React60.createElement("p", { className: "text-xs font-medium text-fg-secondary uppercase tracking-wide line-clamp-1" }, subtitle),
|
|
19277
|
+
/* @__PURE__ */ React60.createElement("h4", { className: "font-display text-base font-normal text-fg-primary mt-1 group-hover:underline line-clamp-2" }, title),
|
|
19373
19278
|
children
|
|
19374
19279
|
);
|
|
19375
19280
|
}
|
|
@@ -19379,9 +19284,9 @@ function CarouselRow({
|
|
|
19379
19284
|
renderItem
|
|
19380
19285
|
}) {
|
|
19381
19286
|
if (!(items == null ? void 0 : items.length)) return null;
|
|
19382
|
-
return /* @__PURE__ */
|
|
19287
|
+
return /* @__PURE__ */ React60.createElement("div", { className: "mb-12 last:mb-0" }, /* @__PURE__ */ React60.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React60.createElement("div", { className: "flex items-center justify-between gap-4 mb-2" }, /* @__PURE__ */ React60.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary md:text-3xl" }, rowTitle), /* @__PURE__ */ React60.createElement("div", { className: "flex gap-2 flex-shrink-0" }, /* @__PURE__ */ React60.createElement(Carousel.PrevTrigger, { className: "rounded-full p-1.5 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React60.createElement("svg", { className: "w-5 h-5 text-fg-primary", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": true }, /* @__PURE__ */ React60.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }))), /* @__PURE__ */ React60.createElement(Carousel.NextTrigger, { className: "rounded-full p-1.5 border border-secondary hover:bg-primary_hover transition-colors disabled:opacity-30 disabled:cursor-not-allowed" }, /* @__PURE__ */ React60.createElement("svg", { className: "w-5 h-5 text-fg-primary", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": true }, /* @__PURE__ */ React60.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }))))), /* @__PURE__ */ React60.createElement(Carousel.Content, { className: "-ml-3" }, items.map((item, index) => {
|
|
19383
19288
|
var _a;
|
|
19384
|
-
return /* @__PURE__ */
|
|
19289
|
+
return /* @__PURE__ */ React60.createElement(Carousel.Item, { key: (_a = item.id) != null ? _a : index, className: "pl-3 basis-[70%] sm:basis-1/2 md:basis-1/3 lg:basis-1/4" }, renderItem(item, index));
|
|
19385
19290
|
}))));
|
|
19386
19291
|
}
|
|
19387
19292
|
function GridRow({
|
|
@@ -19390,9 +19295,9 @@ function GridRow({
|
|
|
19390
19295
|
renderItem
|
|
19391
19296
|
}) {
|
|
19392
19297
|
if (!(items == null ? void 0 : items.length)) return null;
|
|
19393
|
-
return /* @__PURE__ */
|
|
19298
|
+
return /* @__PURE__ */ React60.createElement("div", { className: "mb-12 last:mb-0" }, /* @__PURE__ */ React60.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-3 md:text-3xl" }, rowTitle), /* @__PURE__ */ React60.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4" }, items.map((item, index) => {
|
|
19394
19299
|
var _a;
|
|
19395
|
-
return /* @__PURE__ */
|
|
19300
|
+
return /* @__PURE__ */ React60.createElement("div", { key: (_a = item.id) != null ? _a : index, className: "min-w-0 flex" }, renderItem(item, index));
|
|
19396
19301
|
})));
|
|
19397
19302
|
}
|
|
19398
19303
|
function MenuBlock({
|
|
@@ -19402,54 +19307,57 @@ function MenuBlock({
|
|
|
19402
19307
|
layout: layout2
|
|
19403
19308
|
}) {
|
|
19404
19309
|
if (!(items == null ? void 0 : items.length)) return null;
|
|
19405
|
-
return layout2 === "carousel" ? /* @__PURE__ */
|
|
19310
|
+
return layout2 === "carousel" ? /* @__PURE__ */ React60.createElement(CarouselRow, { rowTitle, items, renderItem }) : /* @__PURE__ */ React60.createElement(GridRow, { rowTitle, items, renderItem });
|
|
19406
19311
|
}
|
|
19407
19312
|
function formatPriceCents(cents) {
|
|
19408
19313
|
if (cents == null) return null;
|
|
19409
19314
|
return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(cents / 100);
|
|
19410
19315
|
}
|
|
19411
19316
|
function ModalSection({ title, children }) {
|
|
19412
|
-
return /* @__PURE__ */
|
|
19317
|
+
return /* @__PURE__ */ React60.createElement("div", null, /* @__PURE__ */ React60.createElement("h3", { className: "font-display text-sm font-semibold text-fg-primary uppercase tracking-wide mb-2" }, title), children);
|
|
19318
|
+
}
|
|
19319
|
+
function ActiveOffersCallout({ offers }) {
|
|
19320
|
+
if (!offers.length) return null;
|
|
19321
|
+
return /* @__PURE__ */ React60.createElement("div", { className: "rounded-xl border border-secondary bg-secondary/25 p-4 md:p-5 space-y-3 ring-1 ring-brand-accent/25" }, /* @__PURE__ */ React60.createElement("p", { className: "text-xs font-semibold uppercase tracking-wide text-brand-accent" }, "Current specials"), /* @__PURE__ */ React60.createElement("ul", { className: "space-y-3 list-none m-0 p-0" }, offers.map((o) => /* @__PURE__ */ React60.createElement(
|
|
19322
|
+
"li",
|
|
19323
|
+
{
|
|
19324
|
+
key: o.id,
|
|
19325
|
+
className: "rounded-lg border border-secondary border-l-[3px] border-l-brand-accent bg-primary_hover/30 p-4"
|
|
19326
|
+
},
|
|
19327
|
+
/* @__PURE__ */ React60.createElement("p", { className: "font-display text-base font-medium text-fg-primary" }, o.name),
|
|
19328
|
+
o.value_terms ? /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm text-brand-accent mt-1 font-medium" }, o.value_terms) : null,
|
|
19329
|
+
o.description ? /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm text-fg-secondary mt-2 leading-relaxed" }, o.description) : null,
|
|
19330
|
+
o.expires_at ? /* @__PURE__ */ React60.createElement("p", { className: "text-xs text-tertiary mt-2" }, "Ends ", new Date(o.expires_at).toLocaleDateString(void 0, { dateStyle: "medium" })) : null
|
|
19331
|
+
))));
|
|
19413
19332
|
}
|
|
19414
19333
|
function DetailModalContent({
|
|
19415
19334
|
detail,
|
|
19416
19335
|
serviceItems = []
|
|
19417
19336
|
}) {
|
|
19418
|
-
var _a
|
|
19419
|
-
if (detail.type === "offer") {
|
|
19420
|
-
const o = detail.item;
|
|
19421
|
-
const categoryLine = ((_a = o.category_names) == null ? void 0 : _a.length) ? o.category_names.join(" | ") : null;
|
|
19422
|
-
const descriptionContent = o.description || o.first_service_description_markdown;
|
|
19423
|
-
const relatedServices = ((_b = o.services) == null ? void 0 : _b.length) ? o.services : (_c = o.service_items) != null ? _c : [];
|
|
19424
|
-
const relatedPackages = (_d = o.packages) != null ? _d : [];
|
|
19425
|
-
return /* @__PURE__ */ React63.createElement("div", { className: "space-y-6" }, categoryLine && /* @__PURE__ */ React63.createElement("p", { className: "text-sm font-medium text-fg-secondary uppercase tracking-wide" }, categoryLine), o.value_terms && !categoryLine && /* @__PURE__ */ React63.createElement("p", { className: "text-sm font-medium text-fg-secondary uppercase tracking-wide" }, o.value_terms), descriptionContent && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Offer details" }, /* @__PURE__ */ React63.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, o.description ? /* @__PURE__ */ React63.createElement("p", { className: "text-fg-primary" }, o.description) : /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: o.first_service_description_markdown }))), o.expires_at && (() => {
|
|
19426
|
-
const d = new Date(o.expires_at);
|
|
19427
|
-
if (Number.isNaN(d.getTime())) return null;
|
|
19428
|
-
return /* @__PURE__ */ React63.createElement("p", { className: "text-sm text-tertiary" }, "Expires ", d.toLocaleDateString(void 0, { dateStyle: "medium" }));
|
|
19429
|
-
})(), relatedServices.length > 0 && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Related services" }, /* @__PURE__ */ React63.createElement("ul", { className: "space-y-4" }, relatedServices.map((s) => /* @__PURE__ */ React63.createElement("li", { key: s.id, className: "border border-secondary rounded-lg p-4 bg-secondary/20" }, /* @__PURE__ */ React63.createElement("p", { className: "font-display font-medium text-fg-primary" }, s.name), "description_markdown" in s && s.description_markdown ? /* @__PURE__ */ React63.createElement("div", { className: "mt-2 prose prose-sm font-body text-fg-secondary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: s.description_markdown })) : s.summary ? /* @__PURE__ */ React63.createElement("p", { className: "mt-2 font-body text-sm text-fg-secondary" }, s.summary) : null)))), relatedPackages.length > 0 && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Related packages" }, /* @__PURE__ */ React63.createElement("ul", { className: "space-y-4" }, relatedPackages.map((pkg) => /* @__PURE__ */ React63.createElement("li", { key: pkg.id, className: "border border-secondary rounded-lg p-4 bg-secondary/20" }, /* @__PURE__ */ React63.createElement("p", { className: "font-display font-medium text-fg-primary" }, pkg.name), "description_markdown" in pkg && pkg.description_markdown ? /* @__PURE__ */ React63.createElement("div", { className: "mt-2 prose prose-sm font-body text-fg-secondary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: pkg.description_markdown })) : pkg.summary ? /* @__PURE__ */ React63.createElement("p", { className: "mt-2 font-body text-sm text-fg-secondary" }, pkg.summary) : null)))));
|
|
19430
|
-
}
|
|
19337
|
+
var _a;
|
|
19431
19338
|
if (detail.type === "package") {
|
|
19432
19339
|
const p = detail.item;
|
|
19433
|
-
const categoryLine = ((
|
|
19340
|
+
const categoryLine = ((_a = p.category_names) == null ? void 0 : _a.length) ? p.category_names.join(" | ") : null;
|
|
19434
19341
|
const descriptionMarkdown2 = p.description_markdown || p.summary || p.first_service_description_markdown;
|
|
19435
|
-
|
|
19436
|
-
|
|
19342
|
+
const packageSpecials = getActivePublicOffers(p.offers);
|
|
19343
|
+
return /* @__PURE__ */ React60.createElement("div", { className: "space-y-6" }, categoryLine && /* @__PURE__ */ React60.createElement("p", { className: "text-sm font-medium text-fg-secondary uppercase tracking-wide" }, categoryLine), /* @__PURE__ */ React60.createElement(ActiveOffersCallout, { offers: packageSpecials }), descriptionMarkdown2 && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Package details" }, /* @__PURE__ */ React60.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React60.createElement(MarkdownRenderer2, { content: descriptionMarkdown2 }))), p.package_items && p.package_items.length > 0 && /* @__PURE__ */ React60.createElement(ModalSection, { title: "What's included" }, /* @__PURE__ */ React60.createElement("ul", { className: "space-y-4" }, p.package_items.map((pi, i) => {
|
|
19344
|
+
var _a2, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
19437
19345
|
const fullItem = ((_a2 = pi.service_item) == null ? void 0 : _a2.id) != null ? serviceItems.find((si2) => si2.id === pi.service_item.id) : null;
|
|
19438
|
-
const name = (
|
|
19439
|
-
const desc = (_g = (
|
|
19440
|
-
return /* @__PURE__ */
|
|
19441
|
-
}))), p.pricing_info && /* @__PURE__ */
|
|
19346
|
+
const name = (_d = (_c = fullItem == null ? void 0 : fullItem.name) != null ? _c : (_b = pi.service_item) == null ? void 0 : _b.name) != null ? _d : "Item";
|
|
19347
|
+
const desc = (_g = (_e = fullItem == null ? void 0 : fullItem.summary) != null ? _e : fullItem == null ? void 0 : fullItem.description_markdown) != null ? _g : (_f = pi.service_item) == null ? void 0 : _f.summary;
|
|
19348
|
+
return /* @__PURE__ */ React60.createElement("li", { key: (_i = (_h = pi.service_item) == null ? void 0 : _h.id) != null ? _i : i, className: "border border-secondary rounded-lg p-4 bg-secondary/20" }, /* @__PURE__ */ React60.createElement("p", { className: "font-display font-medium text-fg-primary" }, pi.quantity > 1 && `${pi.quantity}\xD7 `, name), desc && /* @__PURE__ */ React60.createElement("div", { className: "mt-2 prose prose-sm font-body text-fg-secondary max-w-none" }, typeof desc === "string" && !desc.includes("\n") && !desc.match(/[#*\[\]]/) ? /* @__PURE__ */ React60.createElement("p", null, desc) : /* @__PURE__ */ React60.createElement(MarkdownRenderer2, { content: desc })));
|
|
19349
|
+
}))), p.pricing_info && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Pricing" }, /* @__PURE__ */ React60.createElement("div", { className: "rounded-lg border border-secondary bg-secondary/40 p-4" }, /* @__PURE__ */ React60.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React60.createElement(MarkdownRenderer2, { content: p.pricing_info })))));
|
|
19442
19350
|
}
|
|
19443
19351
|
const si = detail.item;
|
|
19444
19352
|
const priceStr = formatPriceCents(si.price_cents);
|
|
19445
19353
|
const summary = si.summary || si.service_summary;
|
|
19446
19354
|
const descriptionMarkdown = si.description_markdown || si.service_description_markdown;
|
|
19447
|
-
|
|
19355
|
+
const itemSpecials = getActivePublicOffers(si.offers);
|
|
19356
|
+
return /* @__PURE__ */ React60.createElement("div", { className: "space-y-6" }, si.service_name && /* @__PURE__ */ React60.createElement("p", { className: "text-sm font-medium text-fg-secondary uppercase tracking-wide" }, si.service_name), /* @__PURE__ */ React60.createElement(ActiveOffersCallout, { offers: itemSpecials }), priceStr && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Price" }, /* @__PURE__ */ React60.createElement("p", { className: "font-display text-lg font-normal text-fg-primary" }, priceStr), si.duration_minutes != null && si.duration_minutes > 0 && /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm text-fg-secondary mt-1" }, "Duration: ", si.duration_minutes, " min")), summary && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Overview" }, /* @__PURE__ */ React60.createElement("p", { className: "font-body text-fg-primary" }, summary)), descriptionMarkdown && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Full description" }, /* @__PURE__ */ React60.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React60.createElement(MarkdownRenderer2, { content: descriptionMarkdown }))), si.pricing_info && /* @__PURE__ */ React60.createElement(ModalSection, { title: "Pricing details" }, /* @__PURE__ */ React60.createElement("div", { className: "rounded-lg border border-secondary bg-secondary/40 p-4" }, /* @__PURE__ */ React60.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React60.createElement(MarkdownRenderer2, { content: si.pricing_info })))));
|
|
19448
19357
|
}
|
|
19449
19358
|
function ServiceMenuSection({
|
|
19450
19359
|
title = "Service Menu",
|
|
19451
19360
|
subtitle,
|
|
19452
|
-
offers = null,
|
|
19453
19361
|
packages = null,
|
|
19454
19362
|
services = null,
|
|
19455
19363
|
websitePhotos,
|
|
@@ -19459,24 +19367,20 @@ function ServiceMenuSection({
|
|
|
19459
19367
|
servicesRowTitle = "Treatments",
|
|
19460
19368
|
variant = "section"
|
|
19461
19369
|
}) {
|
|
19462
|
-
const
|
|
19463
|
-
() => Array.isArray(offers) ? offers.filter((o) => !o.expired) : [],
|
|
19464
|
-
[offers]
|
|
19465
|
-
);
|
|
19466
|
-
const packageList = React63.useMemo(
|
|
19370
|
+
const packageList = React60.useMemo(
|
|
19467
19371
|
() => Array.isArray(packages) ? packages : [],
|
|
19468
19372
|
[packages]
|
|
19469
19373
|
);
|
|
19470
|
-
const serviceList =
|
|
19374
|
+
const serviceList = React60.useMemo(
|
|
19471
19375
|
() => Array.isArray(services) ? services : [],
|
|
19472
19376
|
[services]
|
|
19473
19377
|
);
|
|
19474
|
-
const serviceItemIdToService =
|
|
19378
|
+
const serviceItemIdToService = React60.useMemo(() => {
|
|
19475
19379
|
const m = /* @__PURE__ */ new Map();
|
|
19476
19380
|
serviceList.forEach((s) => (s.service_items || []).forEach((si) => m.set(si.id, s)));
|
|
19477
19381
|
return m;
|
|
19478
19382
|
}, [serviceList]);
|
|
19479
|
-
const packagesForMenu =
|
|
19383
|
+
const packagesForMenu = React60.useMemo(
|
|
19480
19384
|
() => packageList.map((pkg) => {
|
|
19481
19385
|
var _a, _b, _c;
|
|
19482
19386
|
const category_names = [
|
|
@@ -19494,20 +19398,6 @@ function ServiceMenuSection({
|
|
|
19494
19398
|
}),
|
|
19495
19399
|
[packageList, serviceItemIdToService]
|
|
19496
19400
|
);
|
|
19497
|
-
const offersForMenu = React63.useMemo(
|
|
19498
|
-
() => offerList.map((offer) => {
|
|
19499
|
-
var _a, _b, _c;
|
|
19500
|
-
const category_names = (_b = ((_a = offer.category_names) == null ? void 0 : _a.length) ? offer.category_names : null) != null ? _b : (offer.service_ids || []).map((id3) => {
|
|
19501
|
-
var _a2;
|
|
19502
|
-
return (_a2 = serviceList.find((s) => s.id === id3)) == null ? void 0 : _a2.name;
|
|
19503
|
-
}).filter(Boolean);
|
|
19504
|
-
const firstServiceId = (_c = offer.service_ids) == null ? void 0 : _c[0];
|
|
19505
|
-
const firstService = firstServiceId ? serviceList.find((s) => s.id === firstServiceId) : void 0;
|
|
19506
|
-
const first_service_description_markdown = (firstService == null ? void 0 : firstService.description_markdown) || (firstService == null ? void 0 : firstService.summary) || null;
|
|
19507
|
-
return __spreadProps(__spreadValues({}, offer), { category_names: category_names != null ? category_names : [], first_service_description_markdown });
|
|
19508
|
-
}),
|
|
19509
|
-
[offerList, serviceList]
|
|
19510
|
-
);
|
|
19511
19401
|
const serviceItemsForMenu = serviceList.flatMap(
|
|
19512
19402
|
(s) => (s.service_items || []).map((si) => __spreadProps(__spreadValues({}, si), {
|
|
19513
19403
|
service_name: s.name,
|
|
@@ -19515,10 +19405,9 @@ function ServiceMenuSection({
|
|
|
19515
19405
|
service_description_markdown: s.description_markdown
|
|
19516
19406
|
}))
|
|
19517
19407
|
);
|
|
19518
|
-
const hasAny =
|
|
19408
|
+
const hasAny = packagesForMenu.length > 0 || serviceItemsForMenu.length > 0;
|
|
19519
19409
|
const CAROUSEL_MIN = 3;
|
|
19520
19410
|
const isPage = variant === "page";
|
|
19521
|
-
const offersLayout = isPage ? "grid" : offersForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19522
19411
|
const packagesLayout = isPage ? "grid" : packagesForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19523
19412
|
const serviceItemsLayout = isPage ? "grid" : serviceItemsForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19524
19413
|
const [detailItem, setDetailItem] = useState30(null);
|
|
@@ -19536,31 +19425,6 @@ function ServiceMenuSection({
|
|
|
19536
19425
|
};
|
|
19537
19426
|
}, []);
|
|
19538
19427
|
const closeModal = useCallback10(() => setDetailItem(null), []);
|
|
19539
|
-
const renderOfferCard = useCallback10(
|
|
19540
|
-
(offer, index) => {
|
|
19541
|
-
var _a, _b;
|
|
19542
|
-
const categorySubtitle = ((_a = offer.category_names) == null ? void 0 : _a.length) ? offer.category_names.join(" | ") : (_b = offer.value_terms) != null ? _b : null;
|
|
19543
|
-
const cardDesc = offer.description || offer.first_service_description_markdown;
|
|
19544
|
-
const plainDesc = cardDesc ? (typeof cardDesc === "string" ? cardDesc : "").replace(/[#*`\[\]]/g, "").replace(/\n+/g, " ").trim() : "";
|
|
19545
|
-
const descText = plainDesc.length > 120 ? plainDesc.slice(0, 120) + "\u2026" : plainDesc;
|
|
19546
|
-
return /* @__PURE__ */ React63.createElement(
|
|
19547
|
-
GridCardWithImage,
|
|
19548
|
-
{
|
|
19549
|
-
photoAttachments: offer.photo_attachments,
|
|
19550
|
-
fallbackId: offer.id,
|
|
19551
|
-
fallbackAlt: offer.name,
|
|
19552
|
-
title: offer.name,
|
|
19553
|
-
subtitle: categorySubtitle,
|
|
19554
|
-
onClick: () => setDetailItem({ type: "offer", item: offer }),
|
|
19555
|
-
websitePhotos,
|
|
19556
|
-
companyInformation,
|
|
19557
|
-
cycleSeed: `offer-${offer.id}-${index}`
|
|
19558
|
-
},
|
|
19559
|
-
descText && /* @__PURE__ */ React63.createElement("p", { className: "font-body text-sm text-tertiary mt-1 line-clamp-2" }, descText)
|
|
19560
|
-
);
|
|
19561
|
-
},
|
|
19562
|
-
[websitePhotos, companyInformation]
|
|
19563
|
-
);
|
|
19564
19428
|
const renderPackageCard = useCallback10(
|
|
19565
19429
|
(pkg, index) => {
|
|
19566
19430
|
var _a;
|
|
@@ -19568,7 +19432,8 @@ function ServiceMenuSection({
|
|
|
19568
19432
|
const cardDesc = pkg.description_markdown || pkg.summary || pkg.first_service_description_markdown;
|
|
19569
19433
|
const plainDesc = cardDesc ? cardDesc.replace(/[#*`\[\]]/g, "").replace(/\n+/g, " ").trim() : "";
|
|
19570
19434
|
const descText = plainDesc.length > 120 ? plainDesc.slice(0, 120) + "\u2026" : plainDesc;
|
|
19571
|
-
|
|
19435
|
+
const hasSpecial = getActivePublicOffers(pkg.offers).length > 0;
|
|
19436
|
+
return /* @__PURE__ */ React60.createElement(
|
|
19572
19437
|
GridCardWithImage,
|
|
19573
19438
|
{
|
|
19574
19439
|
photoAttachments: pkg.photo_attachments,
|
|
@@ -19579,9 +19444,10 @@ function ServiceMenuSection({
|
|
|
19579
19444
|
onClick: () => setDetailItem({ type: "package", item: pkg }),
|
|
19580
19445
|
websitePhotos,
|
|
19581
19446
|
companyInformation,
|
|
19582
|
-
cycleSeed: `pkg-${pkg.id}-${index}
|
|
19447
|
+
cycleSeed: `pkg-${pkg.id}-${index}`,
|
|
19448
|
+
hasSpecial
|
|
19583
19449
|
},
|
|
19584
|
-
descText && /* @__PURE__ */
|
|
19450
|
+
descText && /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm text-tertiary mt-1 line-clamp-2" }, descText)
|
|
19585
19451
|
);
|
|
19586
19452
|
},
|
|
19587
19453
|
[websitePhotos, companyInformation]
|
|
@@ -19589,7 +19455,7 @@ function ServiceMenuSection({
|
|
|
19589
19455
|
const renderServiceItemCard = useCallback10(
|
|
19590
19456
|
(si, index) => {
|
|
19591
19457
|
var _a, _b, _c, _d;
|
|
19592
|
-
return /* @__PURE__ */
|
|
19458
|
+
return /* @__PURE__ */ React60.createElement(
|
|
19593
19459
|
GridCardWithImage,
|
|
19594
19460
|
{
|
|
19595
19461
|
photoAttachments: si.photo_attachments,
|
|
@@ -19600,15 +19466,16 @@ function ServiceMenuSection({
|
|
|
19600
19466
|
onClick: () => setDetailItem({ type: "service_item", item: si }),
|
|
19601
19467
|
websitePhotos,
|
|
19602
19468
|
companyInformation,
|
|
19603
|
-
cycleSeed: `service-item-${si.id}-${index}
|
|
19469
|
+
cycleSeed: `service-item-${si.id}-${index}`,
|
|
19470
|
+
hasSpecial: getActivePublicOffers(si.offers).length > 0
|
|
19604
19471
|
},
|
|
19605
|
-
formatPriceCents(si.price_cents) && /* @__PURE__ */
|
|
19472
|
+
formatPriceCents(si.price_cents) && /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm font-medium text-fg-primary mt-1" }, formatPriceCents(si.price_cents)),
|
|
19606
19473
|
(() => {
|
|
19607
19474
|
const desc = si.summary || si.description_markdown || si.service_summary || si.service_description_markdown;
|
|
19608
19475
|
if (!desc) return null;
|
|
19609
19476
|
const plain = desc.replace(/[#*`\[\]]/g, "").replace(/\n+/g, " ").trim();
|
|
19610
19477
|
const text = plain.length > 120 ? plain.slice(0, 120) + "\u2026" : plain;
|
|
19611
|
-
return /* @__PURE__ */
|
|
19478
|
+
return /* @__PURE__ */ React60.createElement("p", { className: "font-body text-sm text-tertiary mt-1 line-clamp-2" }, text);
|
|
19612
19479
|
})()
|
|
19613
19480
|
);
|
|
19614
19481
|
},
|
|
@@ -19616,15 +19483,7 @@ function ServiceMenuSection({
|
|
|
19616
19483
|
);
|
|
19617
19484
|
if (!hasAny) return null;
|
|
19618
19485
|
const modalTitle = detailItem ? detailItem.item.name : "";
|
|
19619
|
-
return /* @__PURE__ */
|
|
19620
|
-
MenuBlock,
|
|
19621
|
-
{
|
|
19622
|
-
rowTitle: "Offers",
|
|
19623
|
-
items: offersForMenu,
|
|
19624
|
-
layout: offersLayout,
|
|
19625
|
-
renderItem: renderOfferCard
|
|
19626
|
-
}
|
|
19627
|
-
), /* @__PURE__ */ React63.createElement(
|
|
19486
|
+
return /* @__PURE__ */ React60.createElement("section", { className: variant === "page" ? "py-12 md:py-20" : "py-12 md:py-16" }, /* @__PURE__ */ React60.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, variant === "section" && /* @__PURE__ */ React60.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, title && /* @__PURE__ */ React60.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React60.createElement("p", { className: "mt-4 font-display text-lg leading-relaxed text-tertiary md:text-xl max-w-3xl mx-auto" }, subtitle)), /* @__PURE__ */ React60.createElement(
|
|
19628
19487
|
MenuBlock,
|
|
19629
19488
|
{
|
|
19630
19489
|
rowTitle: "Packages",
|
|
@@ -19632,7 +19491,7 @@ function ServiceMenuSection({
|
|
|
19632
19491
|
layout: packagesLayout,
|
|
19633
19492
|
renderItem: renderPackageCard
|
|
19634
19493
|
}
|
|
19635
|
-
), /* @__PURE__ */
|
|
19494
|
+
), /* @__PURE__ */ React60.createElement(
|
|
19636
19495
|
MenuBlock,
|
|
19637
19496
|
{
|
|
19638
19497
|
rowTitle: servicesRowTitle,
|
|
@@ -19640,8 +19499,8 @@ function ServiceMenuSection({
|
|
|
19640
19499
|
layout: serviceItemsLayout,
|
|
19641
19500
|
renderItem: renderServiceItemCard
|
|
19642
19501
|
}
|
|
19643
|
-
), variant === "section" && viewAllHref && viewAllText && /* @__PURE__ */
|
|
19644
|
-
/* @__PURE__ */
|
|
19502
|
+
), variant === "section" && viewAllHref && viewAllText && /* @__PURE__ */ React60.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React60.createElement(Button2, { href: viewAllHref, color: "primary", size: "md" }, viewAllText))), portalTarget && detailItem && createPortal(
|
|
19503
|
+
/* @__PURE__ */ React60.createElement(
|
|
19645
19504
|
Modal,
|
|
19646
19505
|
{
|
|
19647
19506
|
isOpen: true,
|
|
@@ -19649,7 +19508,7 @@ function ServiceMenuSection({
|
|
|
19649
19508
|
title: modalTitle,
|
|
19650
19509
|
maxWidth: "2xl"
|
|
19651
19510
|
},
|
|
19652
|
-
/* @__PURE__ */
|
|
19511
|
+
/* @__PURE__ */ React60.createElement(
|
|
19653
19512
|
DetailModalContent,
|
|
19654
19513
|
{
|
|
19655
19514
|
detail: detailItem,
|
|
@@ -19669,9 +19528,9 @@ function createThemedExport2(componentName, BaseComponent) {
|
|
|
19669
19528
|
const { theme } = useTheme();
|
|
19670
19529
|
try {
|
|
19671
19530
|
const Component2 = getThemedComponent(componentName, theme);
|
|
19672
|
-
return
|
|
19531
|
+
return React61.createElement(Component2, props);
|
|
19673
19532
|
} catch (e) {
|
|
19674
|
-
return
|
|
19533
|
+
return React61.createElement(BaseComponent, props);
|
|
19675
19534
|
}
|
|
19676
19535
|
};
|
|
19677
19536
|
}
|
|
@@ -19710,9 +19569,6 @@ var PolicyDocumentSection2 = PolicyDocumentSection;
|
|
|
19710
19569
|
var SocialMediaHero3 = createThemedExport2("hero-social-media", SocialMediaHero);
|
|
19711
19570
|
var TestimonialsHero3 = createThemedExport2("hero-testimonials", TestimonialsHero);
|
|
19712
19571
|
var HomeHeroComponent2 = createThemedExport2("home-hero-component", HomeHeroComponent);
|
|
19713
|
-
var OffersSection2 = createThemedExport2("offers-section", OffersSection);
|
|
19714
|
-
var OffersGallery2 = createThemedExport2("offers-gallery", OffersGallery);
|
|
19715
|
-
var OfferDetailSection2 = createThemedExport2("offer-detail", OfferDetailSection);
|
|
19716
19572
|
export {
|
|
19717
19573
|
AboutHome5 as AboutHome,
|
|
19718
19574
|
BlogCardFullWidthHorizontal,
|
|
@@ -19773,10 +19629,6 @@ export {
|
|
|
19773
19629
|
LocationDetailHero3 as LocationDetailHero,
|
|
19774
19630
|
LocationDetailsSection3 as LocationDetailsSection,
|
|
19775
19631
|
LocationGrid3 as LocationGrid,
|
|
19776
|
-
OfferDetailSection2 as OfferDetailSection,
|
|
19777
|
-
OffersGallery2 as OffersGallery,
|
|
19778
|
-
OffersGrid,
|
|
19779
|
-
OffersSection2 as OffersSection,
|
|
19780
19632
|
PolicyDocumentSection2 as PolicyDocumentSection,
|
|
19781
19633
|
ServiceDetailContent2 as ServiceDetailContent,
|
|
19782
19634
|
ServiceDetailHero3 as ServiceDetailHero,
|