keystone-design-bootstrap 1.0.47 → 1.0.49
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-CvRhU9ss.d.ts → blog-post-D7HFCDp1.d.ts} +2 -2
- package/dist/design_system/elements/index.d.ts +25 -1
- package/dist/design_system/elements/index.js +103 -3
- package/dist/design_system/elements/index.js.map +1 -1
- package/dist/design_system/sections/index.d.ts +64 -3
- package/dist/design_system/sections/index.js +1305 -458
- package/dist/design_system/sections/index.js.map +1 -1
- package/dist/form-BLZuTGkr.d.ts +137 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1335 -487
- package/dist/index.js.map +1 -1
- package/dist/lib/server-api.d.ts +49 -4
- package/dist/lib/server-api.js +17 -0
- package/dist/lib/server-api.js.map +1 -1
- package/dist/photos-8jMeetqV.d.ts +47 -0
- package/dist/types/index.d.ts +6 -5
- package/dist/utils/photo-helpers.d.ts +6 -15
- package/dist/utils/photo-helpers.js +10 -1
- package/dist/utils/photo-helpers.js.map +1 -1
- package/package.json +1 -1
- package/src/design_system/elements/index.tsx +4 -0
- package/src/design_system/elements/modal/modal.tsx +129 -0
- package/src/design_system/sections/header-navigation.aman.tsx +3 -3
- package/src/design_system/sections/header-navigation.balance.tsx +2 -2
- package/src/design_system/sections/header-navigation.barelux.tsx +2 -2
- package/src/design_system/sections/index.tsx +20 -2
- package/src/design_system/sections/offer-detail.tsx +46 -0
- package/src/design_system/sections/offers-gallery.tsx +40 -0
- package/src/design_system/sections/offers-grid.tsx +108 -0
- package/src/design_system/sections/offers-section.tsx +90 -0
- package/src/design_system/sections/service-menu-section.tsx +813 -0
- package/src/lib/server-api.ts +63 -0
- package/src/types/api/photos.ts +11 -10
- package/src/types/api/service.ts +21 -0
- package/src/utils/photo-helpers.ts +3 -14
- package/dist/company-information-C_k_sLSB.d.ts +0 -46
- package/dist/form-CWXC-IHT.d.ts +0 -88
- package/dist/website-photos-_n2g24IM.d.ts +0 -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 React64 from "react";
|
|
42
42
|
|
|
43
43
|
// src/lib/component-registry.ts
|
|
44
44
|
var registry = /* @__PURE__ */ new Map();
|
|
@@ -71,10 +71,10 @@ function useTheme() {
|
|
|
71
71
|
|
|
72
72
|
// src/design_system/sections/hero-home.tsx
|
|
73
73
|
import { Fragment, useMemo as useMemo3, useState as useState5 } from "react";
|
|
74
|
-
import
|
|
74
|
+
import React15 from "react";
|
|
75
75
|
|
|
76
76
|
// src/design_system/elements/index.tsx
|
|
77
|
-
import
|
|
77
|
+
import React14 from "react";
|
|
78
78
|
|
|
79
79
|
// src/design_system/elements/buttons/button.tsx
|
|
80
80
|
import React2, { isValidElement } from "react";
|
|
@@ -3696,15 +3696,114 @@ function VideoPlayButton({ onClick, className = "" }) {
|
|
|
3696
3696
|
);
|
|
3697
3697
|
}
|
|
3698
3698
|
|
|
3699
|
+
// src/design_system/elements/modal/modal.tsx
|
|
3700
|
+
import React13, { useEffect as useEffect6, useRef as useRef4 } from "react";
|
|
3701
|
+
var MAX_WIDTH_CLASSES = {
|
|
3702
|
+
sm: "max-w-sm",
|
|
3703
|
+
md: "max-w-md",
|
|
3704
|
+
lg: "max-w-lg",
|
|
3705
|
+
xl: "max-w-xl",
|
|
3706
|
+
"2xl": "max-w-2xl",
|
|
3707
|
+
"3xl": "max-w-3xl",
|
|
3708
|
+
"4xl": "max-w-4xl",
|
|
3709
|
+
"5xl": "max-w-5xl"
|
|
3710
|
+
};
|
|
3711
|
+
function Modal({
|
|
3712
|
+
isOpen,
|
|
3713
|
+
onClose,
|
|
3714
|
+
title,
|
|
3715
|
+
titleId = "modal-title",
|
|
3716
|
+
children,
|
|
3717
|
+
overlayClassName,
|
|
3718
|
+
panelClassName,
|
|
3719
|
+
maxWidth = "md"
|
|
3720
|
+
}) {
|
|
3721
|
+
const overlayRef = useRef4(null);
|
|
3722
|
+
const closeButtonRef = useRef4(null);
|
|
3723
|
+
useEffect6(() => {
|
|
3724
|
+
var _a;
|
|
3725
|
+
if (!isOpen) return;
|
|
3726
|
+
const previouslyFocused = document.activeElement;
|
|
3727
|
+
(_a = closeButtonRef.current) == null ? void 0 : _a.focus();
|
|
3728
|
+
const handleEscape = (e) => {
|
|
3729
|
+
if (e.key === "Escape") onClose();
|
|
3730
|
+
};
|
|
3731
|
+
document.addEventListener("keydown", handleEscape);
|
|
3732
|
+
document.body.style.overflow = "hidden";
|
|
3733
|
+
return () => {
|
|
3734
|
+
document.removeEventListener("keydown", handleEscape);
|
|
3735
|
+
document.body.style.overflow = "";
|
|
3736
|
+
previouslyFocused == null ? void 0 : previouslyFocused.focus();
|
|
3737
|
+
};
|
|
3738
|
+
}, [isOpen, onClose]);
|
|
3739
|
+
if (!isOpen) return null;
|
|
3740
|
+
const maxWidthClass = MAX_WIDTH_CLASSES[maxWidth];
|
|
3741
|
+
return /* @__PURE__ */ React13.createElement(
|
|
3742
|
+
"div",
|
|
3743
|
+
{
|
|
3744
|
+
ref: overlayRef,
|
|
3745
|
+
className: overlayClassName != null ? overlayClassName : "fixed inset-0 z-[200] flex items-center justify-center p-4 bg-black/50",
|
|
3746
|
+
role: "dialog",
|
|
3747
|
+
"aria-modal": "true",
|
|
3748
|
+
"aria-labelledby": title ? titleId : void 0,
|
|
3749
|
+
onClick: (e) => e.target === overlayRef.current && onClose()
|
|
3750
|
+
},
|
|
3751
|
+
/* @__PURE__ */ React13.createElement(
|
|
3752
|
+
"div",
|
|
3753
|
+
{
|
|
3754
|
+
className: panelClassName != null ? panelClassName : `bg-primary border border-secondary rounded-lg shadow-xl w-full overflow-hidden ${maxWidthClass} max-h-[90vh] flex flex-col`,
|
|
3755
|
+
onClick: (e) => e.stopPropagation()
|
|
3756
|
+
},
|
|
3757
|
+
/* @__PURE__ */ React13.createElement("div", { className: "flex items-start justify-between gap-4 p-4 md:p-6 border-b border-secondary flex-shrink-0" }, title ? /* @__PURE__ */ React13.createElement(
|
|
3758
|
+
"h2",
|
|
3759
|
+
{
|
|
3760
|
+
id: titleId,
|
|
3761
|
+
className: "font-display text-lg font-normal text-fg-primary md:text-xl flex-1 min-w-0"
|
|
3762
|
+
},
|
|
3763
|
+
title
|
|
3764
|
+
) : /* @__PURE__ */ React13.createElement("span", { className: "flex-1", "aria-hidden": true }), /* @__PURE__ */ React13.createElement(
|
|
3765
|
+
"button",
|
|
3766
|
+
{
|
|
3767
|
+
ref: closeButtonRef,
|
|
3768
|
+
type: "button",
|
|
3769
|
+
onClick: onClose,
|
|
3770
|
+
className: "shrink-0 p-1 text-fg-primary hover:text-brand-accent rounded focus:outline-none focus:ring-2 focus:ring-brand-accent",
|
|
3771
|
+
"aria-label": "Close"
|
|
3772
|
+
},
|
|
3773
|
+
/* @__PURE__ */ React13.createElement(
|
|
3774
|
+
"svg",
|
|
3775
|
+
{
|
|
3776
|
+
className: "w-5 h-5",
|
|
3777
|
+
fill: "none",
|
|
3778
|
+
stroke: "currentColor",
|
|
3779
|
+
viewBox: "0 0 24 24",
|
|
3780
|
+
"aria-hidden": true
|
|
3781
|
+
},
|
|
3782
|
+
/* @__PURE__ */ React13.createElement(
|
|
3783
|
+
"path",
|
|
3784
|
+
{
|
|
3785
|
+
strokeLinecap: "round",
|
|
3786
|
+
strokeLinejoin: "round",
|
|
3787
|
+
strokeWidth: 2,
|
|
3788
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
3789
|
+
}
|
|
3790
|
+
)
|
|
3791
|
+
)
|
|
3792
|
+
)),
|
|
3793
|
+
/* @__PURE__ */ React13.createElement("div", { className: "overflow-y-auto flex-1 p-4 md:p-6" }, children)
|
|
3794
|
+
)
|
|
3795
|
+
);
|
|
3796
|
+
}
|
|
3797
|
+
|
|
3699
3798
|
// src/design_system/elements/index.tsx
|
|
3700
3799
|
function createThemedExport(componentName, BaseComponent) {
|
|
3701
3800
|
return function ThemedComponent(props) {
|
|
3702
3801
|
const { theme } = useTheme();
|
|
3703
3802
|
try {
|
|
3704
3803
|
const Component2 = getThemedComponent(componentName, theme);
|
|
3705
|
-
return
|
|
3804
|
+
return React14.createElement(Component2, props);
|
|
3706
3805
|
} catch (e) {
|
|
3707
|
-
return
|
|
3806
|
+
return React14.createElement(BaseComponent, props);
|
|
3708
3807
|
}
|
|
3709
3808
|
};
|
|
3710
3809
|
}
|
|
@@ -3779,13 +3878,13 @@ var AvatarsWithReview = ({
|
|
|
3779
3878
|
};
|
|
3780
3879
|
});
|
|
3781
3880
|
}, [stockPhotos]);
|
|
3782
|
-
return /* @__PURE__ */
|
|
3881
|
+
return /* @__PURE__ */ React15.createElement("div", { className: cx("flex items-center gap-4", className) }, /* @__PURE__ */ React15.createElement("div", { className: "inline-flex -space-x-3 overflow-hidden" }, avatarPhotos.map((avatar, index) => /* @__PURE__ */ React15.createElement(
|
|
3783
3882
|
"div",
|
|
3784
3883
|
{
|
|
3785
3884
|
key: index,
|
|
3786
3885
|
className: "inline-block size-10 rounded-full ring-[1.5px] ring-bg-primary outline-1 -outline-offset-1 outline-avatar-contrast-border overflow-hidden"
|
|
3787
3886
|
},
|
|
3788
|
-
/* @__PURE__ */
|
|
3887
|
+
/* @__PURE__ */ React15.createElement(
|
|
3789
3888
|
PhotoWithFallback2,
|
|
3790
3889
|
{
|
|
3791
3890
|
photoUrl: avatar.url,
|
|
@@ -3794,10 +3893,10 @@ var AvatarsWithReview = ({
|
|
|
3794
3893
|
className: "size-full object-cover"
|
|
3795
3894
|
}
|
|
3796
3895
|
)
|
|
3797
|
-
))), /* @__PURE__ */
|
|
3896
|
+
))), /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-1" }, Array(5).fill(null).map((_, index) => {
|
|
3798
3897
|
const clipId0 = `clip0_star_${index}`;
|
|
3799
3898
|
const clipId1 = `clip1_star_${index}`;
|
|
3800
|
-
return /* @__PURE__ */
|
|
3899
|
+
return /* @__PURE__ */ React15.createElement(
|
|
3801
3900
|
"svg",
|
|
3802
3901
|
{
|
|
3803
3902
|
key: index,
|
|
@@ -3808,22 +3907,22 @@ var AvatarsWithReview = ({
|
|
|
3808
3907
|
className: "relative size-5 shrink-0 grow-0",
|
|
3809
3908
|
preserveAspectRatio: "none"
|
|
3810
3909
|
},
|
|
3811
|
-
/* @__PURE__ */
|
|
3910
|
+
/* @__PURE__ */ React15.createElement("g", { clipPath: `url(#${clipId0})` }, /* @__PURE__ */ React15.createElement(
|
|
3812
3911
|
"path",
|
|
3813
3912
|
{
|
|
3814
3913
|
d: "M9.53834 1.60996C9.70914 1.19932 10.2909 1.19932 10.4617 1.60996L12.5278 6.57744C12.5998 6.75056 12.7626 6.86885 12.9495 6.88383L18.3123 7.31376C18.7556 7.3493 18.9354 7.90256 18.5976 8.19189L14.5117 11.6919C14.3693 11.8139 14.3071 12.0053 14.3506 12.1876L15.5989 17.4208C15.7021 17.8534 15.2315 18.1954 14.8519 17.9635L10.2606 15.1592C10.1006 15.0615 9.89938 15.0615 9.73937 15.1592L5.14806 17.9635C4.76851 18.1954 4.29788 17.8534 4.40108 17.4208L5.64939 12.1876C5.69289 12.0053 5.6307 11.8139 5.48831 11.6919L1.40241 8.19189C1.06464 7.90256 1.24441 7.3493 1.68773 7.31376L7.05054 6.88383C7.23744 6.86885 7.40024 6.75056 7.47225 6.57744L9.53834 1.60996Z",
|
|
3815
3914
|
className: "fill-bg-tertiary"
|
|
3816
3915
|
}
|
|
3817
|
-
), /* @__PURE__ */
|
|
3916
|
+
), /* @__PURE__ */ React15.createElement("g", { clipPath: `url(#${clipId1})` }, /* @__PURE__ */ React15.createElement(
|
|
3818
3917
|
"path",
|
|
3819
3918
|
{
|
|
3820
3919
|
d: "M9.53834 1.60996C9.70914 1.19932 10.2909 1.19932 10.4617 1.60996L12.5278 6.57744C12.5998 6.75056 12.7626 6.86885 12.9495 6.88383L18.3123 7.31376C18.7556 7.3493 18.9354 7.90256 18.5976 8.19189L14.5117 11.6919C14.3693 11.8139 14.3071 12.0053 14.3506 12.1876L15.5989 17.4208C15.7021 17.8534 15.2315 18.1954 14.8519 17.9635L10.2606 15.1592C10.1006 15.0615 9.89938 15.0615 9.73937 15.1592L5.14806 17.9635C4.76851 18.1954 4.29788 17.8534 4.40108 17.4208L5.64939 12.1876C5.69289 12.0053 5.6307 11.8139 5.48831 11.6919L1.40241 8.19189C1.06464 7.90256 1.24441 7.3493 1.68773 7.31376L7.05054 6.88383C7.23744 6.86885 7.40024 6.75056 7.47225 6.57744L9.53834 1.60996Z",
|
|
3821
3920
|
className: "fill-warning-300"
|
|
3822
3921
|
}
|
|
3823
3922
|
))),
|
|
3824
|
-
/* @__PURE__ */
|
|
3923
|
+
/* @__PURE__ */ React15.createElement("defs", null, /* @__PURE__ */ React15.createElement("clipPath", { id: clipId0 }, /* @__PURE__ */ React15.createElement("rect", { width: 20, height: 20, fill: "white" })), /* @__PURE__ */ React15.createElement("clipPath", { id: clipId1 }, /* @__PURE__ */ React15.createElement("rect", { width: 20, height: 20, fill: "white" })))
|
|
3825
3924
|
);
|
|
3826
|
-
}))), /* @__PURE__ */
|
|
3925
|
+
}))), /* @__PURE__ */ React15.createElement("p", { className: "text-md font-medium text-tertiary" }, "from ", count, "+ reviews")));
|
|
3827
3926
|
};
|
|
3828
3927
|
var HeroHome = ({
|
|
3829
3928
|
websitePhotos,
|
|
@@ -3842,7 +3941,7 @@ var HeroHome = ({
|
|
|
3842
3941
|
alt: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.alt) || "Hero image"
|
|
3843
3942
|
};
|
|
3844
3943
|
const stockPhotos = (websitePhotos == null ? void 0 : websitePhotos.stock_photos) || [];
|
|
3845
|
-
return /* @__PURE__ */
|
|
3944
|
+
return /* @__PURE__ */ React15.createElement(Fragment, null, /* @__PURE__ */ React15.createElement("section", { className: "bg-primary py-16 md:pb-24" }, /* @__PURE__ */ React15.createElement("div", { className: "mx-auto grid max-w-container grid-cols-1 items-center gap-16 px-4 md:px-8 lg:grid-cols-2 lg:gap-8" }, /* @__PURE__ */ React15.createElement("div", { className: "flex max-w-3xl flex-col items-start lg:pr-8" }, /* @__PURE__ */ React15.createElement("h1", { className: "text-display-md font-semibold text-primary md:text-display-lg lg:text-display-xl" }, headline || "Welcome"), /* @__PURE__ */ React15.createElement("p", { className: "mt-4 max-w-lg text-lg text-balance text-tertiary md:mt-6 md:text-xl" }, subhead || ""), email_signup && /* @__PURE__ */ React15.createElement(
|
|
3846
3945
|
Form2,
|
|
3847
3946
|
{
|
|
3848
3947
|
onSubmit: (e) => {
|
|
@@ -3855,7 +3954,7 @@ var HeroHome = ({
|
|
|
3855
3954
|
},
|
|
3856
3955
|
className: "mt-8 flex w-full flex-col items-stretch gap-4 md:mt-12 md:max-w-120 md:flex-row md:items-start"
|
|
3857
3956
|
},
|
|
3858
|
-
/* @__PURE__ */
|
|
3957
|
+
/* @__PURE__ */ React15.createElement(
|
|
3859
3958
|
Input3,
|
|
3860
3959
|
{
|
|
3861
3960
|
isRequired: true,
|
|
@@ -3864,7 +3963,7 @@ var HeroHome = ({
|
|
|
3864
3963
|
type: "email",
|
|
3865
3964
|
placeholder: email_signup.placeholder,
|
|
3866
3965
|
wrapperClassName: "py-0.5",
|
|
3867
|
-
hint: /* @__PURE__ */
|
|
3966
|
+
hint: /* @__PURE__ */ React15.createElement("span", null, "We care about your data in our", " ", /* @__PURE__ */ React15.createElement(
|
|
3868
3967
|
"a",
|
|
3869
3968
|
{
|
|
3870
3969
|
href: email_signup.privacy_policy_link,
|
|
@@ -3874,8 +3973,8 @@ var HeroHome = ({
|
|
|
3874
3973
|
), ".")
|
|
3875
3974
|
}
|
|
3876
3975
|
),
|
|
3877
|
-
/* @__PURE__ */
|
|
3878
|
-
), /* @__PURE__ */
|
|
3976
|
+
/* @__PURE__ */ React15.createElement(Button2, { type: "submit", color: "primary", size: "xl" }, email_signup.button_text)
|
|
3977
|
+
), /* @__PURE__ */ React15.createElement(
|
|
3879
3978
|
AvatarsWithReview,
|
|
3880
3979
|
{
|
|
3881
3980
|
count: reviews == null ? void 0 : reviews.count,
|
|
@@ -3884,11 +3983,11 @@ var HeroHome = ({
|
|
|
3884
3983
|
}
|
|
3885
3984
|
), (() => {
|
|
3886
3985
|
const statsToShow = statistics && statistics.length > 0 ? statistics.slice(0, 4) : [];
|
|
3887
|
-
return statsToShow.length > 0 && /* @__PURE__ */
|
|
3986
|
+
return statsToShow.length > 0 && /* @__PURE__ */ React15.createElement("dl", { className: "mt-8 grid grid-cols-2 gap-x-6 gap-y-4 md:mt-12" }, statsToShow.map((stat, index) => {
|
|
3888
3987
|
const IconComponent2 = mapIcon(stat.icon);
|
|
3889
|
-
return /* @__PURE__ */
|
|
3988
|
+
return /* @__PURE__ */ React15.createElement("div", { key: index, className: "flex flex-col gap-2" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, IconComponent2 && /* @__PURE__ */ React15.createElement("div", { className: "size-5 shrink-0" }, /* @__PURE__ */ React15.createElement(IconComponent2, { className: "w-full h-full" })), /* @__PURE__ */ React15.createElement("dd", { className: "text-lg font-semibold text-primary md:text-xl" }, stat.number)), /* @__PURE__ */ React15.createElement("dt", { className: "text-sm font-medium text-tertiary md:text-md" }, stat.label));
|
|
3890
3989
|
}));
|
|
3891
|
-
})()), /* @__PURE__ */
|
|
3990
|
+
})()), /* @__PURE__ */ React15.createElement("div", { className: "relative lg:h-full lg:min-h-160" }, /* @__PURE__ */ React15.createElement(
|
|
3892
3991
|
PhotoWithFallback2,
|
|
3893
3992
|
{
|
|
3894
3993
|
photoUrl: heroImage.url,
|
|
@@ -3896,7 +3995,7 @@ var HeroHome = ({
|
|
|
3896
3995
|
fallbackId: "hero-home-image",
|
|
3897
3996
|
className: "inset-0 h-70 w-full object-cover md:h-110 lg:absolute lg:h-full"
|
|
3898
3997
|
}
|
|
3899
|
-
), videoUrl && /* @__PURE__ */
|
|
3998
|
+
), videoUrl && /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React15.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))))), videoUrl && /* @__PURE__ */ React15.createElement(
|
|
3900
3999
|
VideoModal,
|
|
3901
4000
|
{
|
|
3902
4001
|
isOpen: showVideo,
|
|
@@ -4049,6 +4148,14 @@ var AboutHome = ({
|
|
|
4049
4148
|
};
|
|
4050
4149
|
|
|
4051
4150
|
// src/utils/photo-helpers.ts
|
|
4151
|
+
var VIDEO_EXTENSIONS = [".mp4", ".mov", ".webm", ".m4v", ".avi", ".mkv", ".flv", ".wmv"];
|
|
4152
|
+
function isVideoUrl(url) {
|
|
4153
|
+
var _a;
|
|
4154
|
+
if (!url || typeof url !== "string") return false;
|
|
4155
|
+
const path = (_a = url.split("?")[0]) != null ? _a : "";
|
|
4156
|
+
const ext = path.slice(path.lastIndexOf(".")).toLowerCase();
|
|
4157
|
+
return VIDEO_EXTENSIONS.includes(ext);
|
|
4158
|
+
}
|
|
4052
4159
|
function getPhotoUrl(photos) {
|
|
4053
4160
|
if (photos && photos.length > 0) {
|
|
4054
4161
|
const featuredPhoto = photos.find((pa) => pa.featured);
|
|
@@ -4108,21 +4215,21 @@ var TestimonialsHome = ({
|
|
|
4108
4215
|
};
|
|
4109
4216
|
|
|
4110
4217
|
// src/design_system/sections/testimonials-grid.tsx
|
|
4111
|
-
import
|
|
4218
|
+
import React16 from "react";
|
|
4112
4219
|
var TestimonialsGrid = ({
|
|
4113
4220
|
testimonials: testimonialsData,
|
|
4114
4221
|
title = "",
|
|
4115
4222
|
subtitle = ""
|
|
4116
4223
|
}) => {
|
|
4117
4224
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
4118
|
-
return /* @__PURE__ */
|
|
4225
|
+
return /* @__PURE__ */ React16.createElement("section", { className: "py-16 md:py-24" }, /* @__PURE__ */ React16.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React16.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React16.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React16.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), testimonials.length > 0 ? /* @__PURE__ */ React16.createElement("div", { className: "grid max-w-container grid-cols-1 gap-5 lg:grid-cols-3 lg:gap-6" }, testimonials.map((testimonial, index) => {
|
|
4119
4226
|
var _a;
|
|
4120
4227
|
const reviewerName = testimonial.reviewer_name || "Customer";
|
|
4121
4228
|
const quote = ((_a = testimonial.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
4122
4229
|
const username = `@${reviewerName.toLowerCase().replace(/\s+/g, "")}`;
|
|
4123
4230
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
4124
4231
|
const rating = testimonial.rating || 5;
|
|
4125
|
-
return /* @__PURE__ */
|
|
4232
|
+
return /* @__PURE__ */ React16.createElement("div", { key: testimonial.id || index, className: "flex flex-col gap-6 rounded-2xl bg-secondary p-6 md:p-8" }, /* @__PURE__ */ React16.createElement("div", { className: "flex gap-0.5" }, Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ React16.createElement(
|
|
4126
4233
|
"svg",
|
|
4127
4234
|
{
|
|
4128
4235
|
key: i,
|
|
@@ -4132,8 +4239,8 @@ var TestimonialsGrid = ({
|
|
|
4132
4239
|
strokeWidth: 2,
|
|
4133
4240
|
viewBox: "0 0 24 24"
|
|
4134
4241
|
},
|
|
4135
|
-
/* @__PURE__ */
|
|
4136
|
-
))), /* @__PURE__ */
|
|
4242
|
+
/* @__PURE__ */ React16.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" })
|
|
4243
|
+
))), /* @__PURE__ */ React16.createElement("p", { className: "text-md text-primary" }, quote), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-3 mt-auto" }, /* @__PURE__ */ React16.createElement("div", { className: "size-12 shrink-0 overflow-hidden rounded-full" }, /* @__PURE__ */ React16.createElement(
|
|
4137
4244
|
PhotoWithFallback2,
|
|
4138
4245
|
{
|
|
4139
4246
|
photoUrl: avatarUrl,
|
|
@@ -4141,8 +4248,8 @@ var TestimonialsGrid = ({
|
|
|
4141
4248
|
fallbackId: `testimonial-${testimonial.id || index}`,
|
|
4142
4249
|
className: "size-full object-cover"
|
|
4143
4250
|
}
|
|
4144
|
-
)), /* @__PURE__ */
|
|
4145
|
-
})) : /* @__PURE__ */
|
|
4251
|
+
)), /* @__PURE__ */ React16.createElement("div", null, /* @__PURE__ */ React16.createElement("p", { className: "text-sm font-semibold text-primary" }, reviewerName), /* @__PURE__ */ React16.createElement("p", { className: "text-sm text-tertiary" }, username))));
|
|
4252
|
+
})) : /* @__PURE__ */ React16.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React16.createElement("p", { className: "text-gray-500" }, "No testimonials available"))));
|
|
4146
4253
|
};
|
|
4147
4254
|
|
|
4148
4255
|
// src/design_system/sections/faq-home.tsx
|
|
@@ -4233,12 +4340,12 @@ var FAQHome = ({
|
|
|
4233
4340
|
};
|
|
4234
4341
|
|
|
4235
4342
|
// src/design_system/sections/blog-section.tsx
|
|
4236
|
-
import
|
|
4343
|
+
import React17 from "react";
|
|
4237
4344
|
import Link from "next/link";
|
|
4238
4345
|
import { ArrowLeft as ArrowLeft2, ArrowRight as ArrowRight5, ArrowUpRight } from "@untitledui/icons";
|
|
4239
4346
|
|
|
4240
4347
|
// src/design_system/elements/carousel/carousel-base.tsx
|
|
4241
|
-
import { cloneElement as cloneElement3, createContext as createContext8, isValidElement as isValidElement12, useCallback as useCallback4, useContext as useContext9, useEffect as
|
|
4348
|
+
import { cloneElement as cloneElement3, createContext as createContext8, isValidElement as isValidElement12, useCallback as useCallback4, useContext as useContext9, useEffect as useEffect7, useRef as useRef5, useSyncExternalStore as useSyncExternalStore3 } from "react";
|
|
4242
4349
|
import useEmblaCarousel2 from "embla-carousel-react";
|
|
4243
4350
|
var CarouselContext2 = createContext8(null);
|
|
4244
4351
|
var useCarousel2 = () => {
|
|
@@ -4262,7 +4369,7 @@ var CarouselRoot2 = (_a) => {
|
|
|
4262
4369
|
}),
|
|
4263
4370
|
plugins
|
|
4264
4371
|
);
|
|
4265
|
-
const snapshotRef =
|
|
4372
|
+
const snapshotRef = useRef5(DEFAULT_SNAPSHOT2);
|
|
4266
4373
|
const getSnapshot = useCallback4(() => {
|
|
4267
4374
|
if (!api) {
|
|
4268
4375
|
return DEFAULT_SNAPSHOT2;
|
|
@@ -4314,7 +4421,7 @@ var CarouselRoot2 = (_a) => {
|
|
|
4314
4421
|
},
|
|
4315
4422
|
[scrollPrev, scrollNext]
|
|
4316
4423
|
);
|
|
4317
|
-
|
|
4424
|
+
useEffect7(() => {
|
|
4318
4425
|
if (!api || !setApi) return;
|
|
4319
4426
|
setApi(api);
|
|
4320
4427
|
}, [api, setApi]);
|
|
@@ -4439,7 +4546,7 @@ var BlogSection = ({
|
|
|
4439
4546
|
return "Recent";
|
|
4440
4547
|
}
|
|
4441
4548
|
};
|
|
4442
|
-
return /* @__PURE__ */
|
|
4549
|
+
return /* @__PURE__ */ React17.createElement("section", { className: `overflow-hidden ${backgroundColor} py-16 md:py-24` }, /* @__PURE__ */ React17.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col items-start justify-between lg:flex-row" }, /* @__PURE__ */ React17.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React17.createElement("p", { className: "text-sm font-semibold text-brand-secondary md:text-md" }, "Latest posts"), /* @__PURE__ */ React17.createElement("h2", { className: "mt-3 text-display-sm font-semibold text-primary md:text-display-md" }, title), /* @__PURE__ */ React17.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), showViewAll && /* @__PURE__ */ React17.createElement("div", { className: "hidden gap-3 lg:flex" }, /* @__PURE__ */ React17.createElement(Button2, { size: "xl", href: "/blog" }, "View all posts"))), postsArray.length > 0 ? /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
|
|
4443
4550
|
Carousel2.Root,
|
|
4444
4551
|
{
|
|
4445
4552
|
className: "mt-12 md:mt-16",
|
|
@@ -4447,11 +4554,11 @@ var BlogSection = ({
|
|
|
4447
4554
|
align: "start"
|
|
4448
4555
|
}
|
|
4449
4556
|
},
|
|
4450
|
-
/* @__PURE__ */
|
|
4557
|
+
/* @__PURE__ */ React17.createElement(Carousel2.Content, { overflowHidden: false, className: "gap-6 pr-4 md:gap-8 md:pr-8" }, postsArray.map((post, index) => {
|
|
4451
4558
|
var _a;
|
|
4452
4559
|
const author = Array.isArray(post.blog_post_authors) && post.blog_post_authors.length > 0 ? post.blog_post_authors[0] : null;
|
|
4453
4560
|
const excerpt = ((_a = post.excerpt_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
4454
|
-
return /* @__PURE__ */
|
|
4561
|
+
return /* @__PURE__ */ React17.createElement(Carousel2.Item, { key: post.id || index, className: "max-w-xs md:max-w-96" }, /* @__PURE__ */ React17.createElement("article", { className: cx("flex flex-col gap-4") }, /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement("a", { href: `/blog/${post.slug || post.id}`, className: "w-full", tabIndex: -1 }, /* @__PURE__ */ React17.createElement(
|
|
4455
4562
|
PhotoWithFallback2,
|
|
4456
4563
|
{
|
|
4457
4564
|
item: post,
|
|
@@ -4459,48 +4566,50 @@ var BlogSection = ({
|
|
|
4459
4566
|
alt: post.title || "Blog post",
|
|
4460
4567
|
className: cx("aspect-[1.5] w-full object-cover")
|
|
4461
4568
|
}
|
|
4462
|
-
)), /* @__PURE__ */
|
|
4569
|
+
)), /* @__PURE__ */ React17.createElement("div", { className: "absolute inset-x-0 bottom-0 overflow-hidden bg-linear-to-b from-transparent to-black/40" }, /* @__PURE__ */ React17.createElement("div", { className: "relative flex items-start justify-between bg-alpha-white/30 p-4 backdrop-blur-md before:absolute before:inset-x-0 before:top-0 before:h-px before:bg-alpha-white/30 md:p-5" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement(
|
|
4463
4570
|
"a",
|
|
4464
4571
|
{
|
|
4465
4572
|
href: (author == null ? void 0 : author.slug) ? `/blog/author/${author.slug}` : "/blog",
|
|
4466
4573
|
className: "block rounded-xs text-sm font-semibold text-white outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2"
|
|
4467
4574
|
},
|
|
4468
4575
|
(author == null ? void 0 : author.name) || "Author"
|
|
4469
|
-
), /* @__PURE__ */
|
|
4576
|
+
), /* @__PURE__ */ React17.createElement("time", { className: "block text-sm text-white" }, formatDate4(post.published_at || ""))), /* @__PURE__ */ React17.createElement(
|
|
4470
4577
|
Link,
|
|
4471
4578
|
{
|
|
4472
4579
|
href: "/blog",
|
|
4473
4580
|
className: "rounded-xs text-sm font-semibold text-white outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2"
|
|
4474
4581
|
},
|
|
4475
4582
|
"Blog"
|
|
4476
|
-
)))), /* @__PURE__ */
|
|
4583
|
+
)))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React17.createElement(
|
|
4477
4584
|
"a",
|
|
4478
4585
|
{
|
|
4479
4586
|
href: `/blog/${post.slug || post.id}`,
|
|
4480
4587
|
className: "group/title flex justify-between gap-x-4 rounded-md text-lg font-semibold text-primary outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2"
|
|
4481
4588
|
},
|
|
4482
4589
|
post.title || "Untitled Post",
|
|
4483
|
-
/* @__PURE__ */
|
|
4590
|
+
/* @__PURE__ */ React17.createElement(
|
|
4484
4591
|
ArrowUpRight,
|
|
4485
4592
|
{
|
|
4486
4593
|
className: "mt-0.5 size-6 shrink-0 text-fg-quaternary transition duration-100 ease-linear group-hover/title:text-fg-quaternary_hover",
|
|
4487
4594
|
"aria-hidden": "true"
|
|
4488
4595
|
}
|
|
4489
4596
|
)
|
|
4490
|
-
), excerpt && /* @__PURE__ */
|
|
4597
|
+
), excerpt && /* @__PURE__ */ React17.createElement("p", { className: "line-clamp-2 text-md text-tertiary" }, excerpt))));
|
|
4491
4598
|
})),
|
|
4492
|
-
/* @__PURE__ */
|
|
4493
|
-
), showViewAll && /* @__PURE__ */
|
|
4599
|
+
/* @__PURE__ */ React17.createElement("div", { className: "mt-8 flex gap-4 md:gap-8" }, /* @__PURE__ */ React17.createElement(Carousel2.PrevTrigger, { asChild: true }, /* @__PURE__ */ React17.createElement(RoundButton2, { icon: ArrowLeft2 })), /* @__PURE__ */ React17.createElement(Carousel2.NextTrigger, { asChild: true }, /* @__PURE__ */ React17.createElement(RoundButton2, { icon: ArrowRight5 })))
|
|
4600
|
+
), showViewAll && /* @__PURE__ */ React17.createElement("div", { className: "mt-12 flex flex-col gap-3 lg:hidden" }, /* @__PURE__ */ React17.createElement(Button2, { size: "xl", href: "/blog" }, "View all posts"))) : /* @__PURE__ */ React17.createElement("div", { className: "mt-12 text-center md:mt-16" }, /* @__PURE__ */ React17.createElement("p", { className: "text-gray-500" }, "No blog posts available"))));
|
|
4494
4601
|
};
|
|
4495
4602
|
|
|
4496
4603
|
// src/design_system/sections/contact-section.tsx
|
|
4497
|
-
import
|
|
4604
|
+
import React21 from "react";
|
|
4498
4605
|
|
|
4499
4606
|
// src/design_system/sections/contact-section-form.tsx
|
|
4500
|
-
import
|
|
4607
|
+
import React20, { useRef as useRef6, useState as useState9 } from "react";
|
|
4501
4608
|
|
|
4502
4609
|
// src/design_system/components/DynamicFormFields.tsx
|
|
4503
|
-
import
|
|
4610
|
+
import React18, { useState as useState8 } from "react";
|
|
4611
|
+
import ReactMarkdown2 from "react-markdown";
|
|
4612
|
+
import remarkGfm2 from "remark-gfm";
|
|
4504
4613
|
|
|
4505
4614
|
// src/utils/countries.tsx
|
|
4506
4615
|
import Image6 from "next/image";
|
|
@@ -5872,12 +5981,53 @@ function allFieldsFlat(fields) {
|
|
|
5872
5981
|
}
|
|
5873
5982
|
return out;
|
|
5874
5983
|
}
|
|
5875
|
-
function renderField(field, index, showCountryCode, selectedCountryPhone, onCountryChange, phoneValues, setPhoneValues) {
|
|
5876
|
-
var _a, _b, _c, _d;
|
|
5984
|
+
function renderField(field, index, showCountryCode, selectedCountryPhone, onCountryChange, phoneValues, setPhoneValues, companyName, privacyPolicyUrl, termsOfServiceUrl) {
|
|
5985
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5877
5986
|
const name = (_a = field.name) != null ? _a : `field-${index}`;
|
|
5987
|
+
const type = ((_b = field.type) != null ? _b : "text").toString().toLowerCase();
|
|
5878
5988
|
if (field.type === "hidden") {
|
|
5879
|
-
const val = (
|
|
5880
|
-
return /* @__PURE__ */
|
|
5989
|
+
const val = (_c = field.value) != null ? _c : "";
|
|
5990
|
+
return /* @__PURE__ */ React18.createElement("input", { key: name, type: "hidden", name, value: val });
|
|
5991
|
+
}
|
|
5992
|
+
if (type === "checkbox") {
|
|
5993
|
+
const labelRaw = (_d = field.label) != null ? _d : "";
|
|
5994
|
+
const companyNameClean = companyName.replace(/\*\*/g, "").trim();
|
|
5995
|
+
let labelWithCompany = companyNameClean ? labelRaw.replace(/\{\{company_name\}\}/gi, companyNameClean) : labelRaw;
|
|
5996
|
+
if (name === "tos_privacy_consent" && privacyPolicyUrl && termsOfServiceUrl) {
|
|
5997
|
+
labelWithCompany = labelWithCompany.replace(/\*\*Terms of Service\*\*/gi, `**[Terms of Service](${termsOfServiceUrl})**`).replace(/\*\*Privacy Policy\*\*/gi, `**[Privacy Policy](${privacyPolicyUrl})**`);
|
|
5998
|
+
}
|
|
5999
|
+
const id3 = `checkbox-${name}-${index}`;
|
|
6000
|
+
return /* @__PURE__ */ React18.createElement("div", { key: name, className: "flex items-start gap-3" }, /* @__PURE__ */ React18.createElement(
|
|
6001
|
+
"input",
|
|
6002
|
+
{
|
|
6003
|
+
type: "checkbox",
|
|
6004
|
+
id: id3,
|
|
6005
|
+
name,
|
|
6006
|
+
value: "on",
|
|
6007
|
+
required: Boolean(field.required),
|
|
6008
|
+
"aria-describedby": id3 ? `${id3}-desc` : void 0,
|
|
6009
|
+
className: "mt-1 h-4 w-4 shrink-0 rounded border-secondary focus:ring-focus-ring"
|
|
6010
|
+
}
|
|
6011
|
+
), /* @__PURE__ */ React18.createElement(
|
|
6012
|
+
"label",
|
|
6013
|
+
{
|
|
6014
|
+
id: id3 ? `${id3}-desc` : void 0,
|
|
6015
|
+
htmlFor: id3,
|
|
6016
|
+
className: "font-body text-sm text-tertiary [&_a]:underline [&_a]:outline-focus-ring [&_strong]:font-semibold"
|
|
6017
|
+
},
|
|
6018
|
+
/* @__PURE__ */ React18.createElement(
|
|
6019
|
+
ReactMarkdown2,
|
|
6020
|
+
{
|
|
6021
|
+
remarkPlugins: [remarkGfm2],
|
|
6022
|
+
components: {
|
|
6023
|
+
p: ({ children }) => /* @__PURE__ */ React18.createElement("span", null, children),
|
|
6024
|
+
strong: (props) => /* @__PURE__ */ React18.createElement("strong", __spreadValues({ className: "font-semibold" }, props)),
|
|
6025
|
+
a: (props) => /* @__PURE__ */ React18.createElement("a", __spreadProps(__spreadValues({}, props), { className: "underline outline-focus-ring focus-visible:outline-2 focus-visible:outline-offset-2" }))
|
|
6026
|
+
}
|
|
6027
|
+
},
|
|
6028
|
+
labelWithCompany
|
|
6029
|
+
)
|
|
6030
|
+
));
|
|
5881
6031
|
}
|
|
5882
6032
|
if (field.type === "tel" && showCountryCode) {
|
|
5883
6033
|
const countryOptions = countries_default.map((c) => ({
|
|
@@ -5886,22 +6036,22 @@ function renderField(field, index, showCountryCode, selectedCountryPhone, onCoun
|
|
|
5886
6036
|
}));
|
|
5887
6037
|
const country = countries_default.find((c) => c.code === selectedCountryPhone);
|
|
5888
6038
|
const nationalMask = getNationalMask(country);
|
|
5889
|
-
const value = (
|
|
5890
|
-
const placeholder = nationalMask ? nationalMask.replace(/#/g, "0") : (
|
|
6039
|
+
const value = (_e = phoneValues[name]) != null ? _e : "";
|
|
6040
|
+
const placeholder = nationalMask ? nationalMask.replace(/#/g, "0") : (_f = field.placeholder) != null ? _f : "";
|
|
5891
6041
|
const handlePhoneChange = (valueOrEvent) => {
|
|
5892
6042
|
const raw = typeof valueOrEvent === "string" ? valueOrEvent : valueOrEvent && typeof valueOrEvent === "object" && "target" in valueOrEvent && valueOrEvent.target && typeof valueOrEvent.target.value === "string" ? valueOrEvent.target.value : "";
|
|
5893
6043
|
const digits = raw.replace(/\D/g, "");
|
|
5894
6044
|
const formatted = nationalMask ? formatDigitsToMask(digits, nationalMask) : digits;
|
|
5895
6045
|
setPhoneValues((prev) => __spreadProps(__spreadValues({}, prev), { [name]: formatted }));
|
|
5896
6046
|
};
|
|
5897
|
-
return /* @__PURE__ */
|
|
6047
|
+
return /* @__PURE__ */ React18.createElement(
|
|
5898
6048
|
InputGroup2,
|
|
5899
6049
|
{
|
|
5900
6050
|
key: name,
|
|
5901
6051
|
label: field.label,
|
|
5902
6052
|
isRequired: Boolean(field.required),
|
|
5903
6053
|
size: "md",
|
|
5904
|
-
leadingAddon: /* @__PURE__ */
|
|
6054
|
+
leadingAddon: /* @__PURE__ */ React18.createElement(
|
|
5905
6055
|
NativeSelect2,
|
|
5906
6056
|
{
|
|
5907
6057
|
"aria-label": "Country code",
|
|
@@ -5911,7 +6061,7 @@ function renderField(field, index, showCountryCode, selectedCountryPhone, onCoun
|
|
|
5911
6061
|
}
|
|
5912
6062
|
)
|
|
5913
6063
|
},
|
|
5914
|
-
/* @__PURE__ */
|
|
6064
|
+
/* @__PURE__ */ React18.createElement(
|
|
5915
6065
|
InputBase3,
|
|
5916
6066
|
{
|
|
5917
6067
|
type: "tel",
|
|
@@ -5925,7 +6075,7 @@ function renderField(field, index, showCountryCode, selectedCountryPhone, onCoun
|
|
|
5925
6075
|
);
|
|
5926
6076
|
}
|
|
5927
6077
|
if (field.type === "textarea") {
|
|
5928
|
-
return /* @__PURE__ */
|
|
6078
|
+
return /* @__PURE__ */ React18.createElement(
|
|
5929
6079
|
Textarea,
|
|
5930
6080
|
{
|
|
5931
6081
|
key: name,
|
|
@@ -5938,7 +6088,7 @@ function renderField(field, index, showCountryCode, selectedCountryPhone, onCoun
|
|
|
5938
6088
|
);
|
|
5939
6089
|
}
|
|
5940
6090
|
const inputType = INPUT_TYPES.includes(field.type) ? field.type : "text";
|
|
5941
|
-
return /* @__PURE__ */
|
|
6091
|
+
return /* @__PURE__ */ React18.createElement(
|
|
5942
6092
|
Input3,
|
|
5943
6093
|
{
|
|
5944
6094
|
key: name,
|
|
@@ -5951,11 +6101,13 @@ function renderField(field, index, showCountryCode, selectedCountryPhone, onCoun
|
|
|
5951
6101
|
}
|
|
5952
6102
|
);
|
|
5953
6103
|
}
|
|
5954
|
-
function DynamicFormFields({ form, jobSlug }) {
|
|
6104
|
+
function DynamicFormFields({ form, jobSlug, privacyPolicyUrl, termsOfServiceUrl }) {
|
|
6105
|
+
var _a;
|
|
5955
6106
|
const [selectedCountryPhone, setSelectedCountryPhone] = useState8("US");
|
|
5956
6107
|
const [phoneValues, setPhoneValues] = useState8({});
|
|
5957
6108
|
const { settings } = form;
|
|
5958
6109
|
const fields = Array.isArray(form.fields) ? form.fields : [];
|
|
6110
|
+
const companyName = (_a = form.company_name) != null ? _a : "";
|
|
5959
6111
|
const handleCountryChange = (newCode) => {
|
|
5960
6112
|
setSelectedCountryPhone(newCode);
|
|
5961
6113
|
const country = countries_default.find((c) => c.code === newCode);
|
|
@@ -5976,24 +6128,40 @@ function DynamicFormFields({ form, jobSlug }) {
|
|
|
5976
6128
|
});
|
|
5977
6129
|
};
|
|
5978
6130
|
const showCountryCode = (settings == null ? void 0 : settings.show_country_code) !== false;
|
|
5979
|
-
const showPrivacyCheckbox = (settings == null ? void 0 : settings.show_privacy_checkbox) !== false;
|
|
5980
6131
|
const flat = allFieldsFlat(fields);
|
|
5981
6132
|
const hasPhoneField = flat.some((f) => f.type === "tel");
|
|
5982
|
-
|
|
5983
|
-
var
|
|
6133
|
+
const hasCheckboxFields = flat.some((f) => {
|
|
6134
|
+
var _a2;
|
|
6135
|
+
return ((_a2 = f.type) != null ? _a2 : "").toString().toLowerCase() === "checkbox";
|
|
6136
|
+
});
|
|
6137
|
+
const showPrivacyCheckbox = (settings == null ? void 0 : settings.show_privacy_checkbox) !== false && hasPhoneField && !hasCheckboxFields;
|
|
6138
|
+
const renderFieldWithProps = (item, i) => renderField(
|
|
6139
|
+
item,
|
|
6140
|
+
i,
|
|
6141
|
+
showCountryCode,
|
|
6142
|
+
selectedCountryPhone,
|
|
6143
|
+
handleCountryChange,
|
|
6144
|
+
phoneValues,
|
|
6145
|
+
setPhoneValues,
|
|
6146
|
+
companyName,
|
|
6147
|
+
privacyPolicyUrl,
|
|
6148
|
+
termsOfServiceUrl
|
|
6149
|
+
);
|
|
6150
|
+
return /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-6" }, fields.map((item, index) => {
|
|
6151
|
+
var _a2;
|
|
5984
6152
|
if (Array.isArray(item)) {
|
|
5985
6153
|
if (item.length === 0) return null;
|
|
5986
|
-
return /* @__PURE__ */
|
|
6154
|
+
return /* @__PURE__ */ React18.createElement(
|
|
5987
6155
|
"div",
|
|
5988
6156
|
{
|
|
5989
6157
|
key: `row-${index}`,
|
|
5990
6158
|
className: "flex flex-col gap-x-8 gap-y-6 md:flex-row"
|
|
5991
6159
|
},
|
|
5992
|
-
item.map((f, i) => /* @__PURE__ */
|
|
6160
|
+
item.map((f, i) => /* @__PURE__ */ React18.createElement("div", { key: f.name, className: "flex-1" }, renderFieldWithProps(f, i)))
|
|
5993
6161
|
);
|
|
5994
6162
|
}
|
|
5995
|
-
return /* @__PURE__ */
|
|
5996
|
-
}), jobSlug ? /* @__PURE__ */
|
|
6163
|
+
return /* @__PURE__ */ React18.createElement("div", { key: (_a2 = item.name) != null ? _a2 : `field-${index}` }, renderFieldWithProps(item, index));
|
|
6164
|
+
}), jobSlug ? /* @__PURE__ */ React18.createElement("input", { type: "hidden", name: "jobSlug", value: jobSlug }) : null, showPrivacyCheckbox && /* @__PURE__ */ React18.createElement(PrivacyCheckbox2, null));
|
|
5997
6165
|
}
|
|
5998
6166
|
|
|
5999
6167
|
// src/tracking/trackMetaLead.ts
|
|
@@ -6004,7 +6172,7 @@ function trackMetaLead(eventId) {
|
|
|
6004
6172
|
}
|
|
6005
6173
|
|
|
6006
6174
|
// src/next/contexts/form-definitions.tsx
|
|
6007
|
-
import
|
|
6175
|
+
import React19, { createContext as createContext9, useContext as useContext10 } from "react";
|
|
6008
6176
|
var FormDefinitionsContext = createContext9({
|
|
6009
6177
|
leadFormDefinition: null,
|
|
6010
6178
|
jobApplicationFormDefinition: null
|
|
@@ -6019,14 +6187,16 @@ var ContactSectionForm = ({
|
|
|
6019
6187
|
submitButtonText = "Send message",
|
|
6020
6188
|
successMessage = "Thank you for contacting us! We'll get back to you soon.",
|
|
6021
6189
|
thankYouMessage,
|
|
6022
|
-
onSuccess
|
|
6190
|
+
onSuccess,
|
|
6191
|
+
privacyPolicyUrl,
|
|
6192
|
+
termsOfServiceUrl
|
|
6023
6193
|
}) => {
|
|
6024
6194
|
const { leadFormDefinition } = useFormDefinitions();
|
|
6025
6195
|
const resolvedFormDefinition = formDefinition != null ? formDefinition : leadFormDefinition;
|
|
6026
6196
|
const [isSubmitting, setIsSubmitting] = useState9(false);
|
|
6027
6197
|
const [submitStatus, setSubmitStatus] = useState9("idle");
|
|
6028
6198
|
const [statusMessage, setStatusMessage] = useState9("");
|
|
6029
|
-
const formRef =
|
|
6199
|
+
const formRef = useRef6(null);
|
|
6030
6200
|
if (!resolvedFormDefinition || !Array.isArray(resolvedFormDefinition.fields) || resolvedFormDefinition.fields.length === 0) {
|
|
6031
6201
|
return null;
|
|
6032
6202
|
}
|
|
@@ -6039,7 +6209,8 @@ var ContactSectionForm = ({
|
|
|
6039
6209
|
const formData = new FormData(e.currentTarget);
|
|
6040
6210
|
const data = { formType: "lead" };
|
|
6041
6211
|
formData.forEach((value, key) => {
|
|
6042
|
-
if (key
|
|
6212
|
+
if (key.endsWith("_prefix")) return;
|
|
6213
|
+
if (typeof value === "string") data[key] = value;
|
|
6043
6214
|
});
|
|
6044
6215
|
try {
|
|
6045
6216
|
const response = await fetch("/api/form/", {
|
|
@@ -6065,7 +6236,14 @@ var ContactSectionForm = ({
|
|
|
6065
6236
|
}
|
|
6066
6237
|
setIsSubmitting(false);
|
|
6067
6238
|
};
|
|
6068
|
-
return /* @__PURE__ */
|
|
6239
|
+
return /* @__PURE__ */ React20.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React20.createElement(
|
|
6240
|
+
DynamicFormFields,
|
|
6241
|
+
{
|
|
6242
|
+
form: resolvedFormDefinition,
|
|
6243
|
+
privacyPolicyUrl,
|
|
6244
|
+
termsOfServiceUrl
|
|
6245
|
+
}
|
|
6246
|
+
)), submitStatus === "success" && /* @__PURE__ */ React20.createElement("div", { className: "rounded-lg bg-success-50 p-4 text-success-700" }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React20.createElement("div", { className: "rounded-lg bg-error-50 p-4 text-error-700" }, statusMessage), /* @__PURE__ */ React20.createElement(
|
|
6069
6247
|
Button2,
|
|
6070
6248
|
{
|
|
6071
6249
|
type: "submit",
|
|
@@ -6078,17 +6256,34 @@ var ContactSectionForm = ({
|
|
|
6078
6256
|
};
|
|
6079
6257
|
|
|
6080
6258
|
// src/design_system/sections/contact-section.tsx
|
|
6259
|
+
function getLegalUrlsFromConfig(config) {
|
|
6260
|
+
var _a, _b, _c;
|
|
6261
|
+
if (!((_a = config == null ? void 0 : config.navigation) == null ? void 0 : _a.footer)) return {};
|
|
6262
|
+
const flat = config.navigation.footer.flat();
|
|
6263
|
+
const privacy = (_b = flat.find((l) => l.label === "Privacy Policy")) == null ? void 0 : _b.href;
|
|
6264
|
+
const terms = (_c = flat.find((l) => l.label === "Terms of Service")) == null ? void 0 : _c.href;
|
|
6265
|
+
return { privacyPolicyUrl: privacy, termsOfServiceUrl: terms };
|
|
6266
|
+
}
|
|
6081
6267
|
var ContactSection = ({
|
|
6082
6268
|
websitePhotos,
|
|
6083
6269
|
title = "",
|
|
6084
6270
|
subtitle = "",
|
|
6085
|
-
formDefinition
|
|
6271
|
+
formDefinition,
|
|
6272
|
+
config
|
|
6086
6273
|
}) => {
|
|
6274
|
+
const { privacyPolicyUrl, termsOfServiceUrl } = getLegalUrlsFromConfig(config);
|
|
6087
6275
|
const contactPhoto = websitePhotos == null ? void 0 : websitePhotos.contact;
|
|
6088
6276
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
6089
6277
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
6090
6278
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
6091
|
-
return /* @__PURE__ */
|
|
6279
|
+
return /* @__PURE__ */ React21.createElement("section", { className: "bg-primary py-16 md:pt-16 md:pb-24" }, /* @__PURE__ */ React21.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-12 md:gap-16 lg:grid-cols-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex w-full flex-col gap-12" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-display-md font-semibold text-primary" }, title), subtitle && /* @__PURE__ */ React21.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), /* @__PURE__ */ React21.createElement(
|
|
6280
|
+
ContactSectionForm,
|
|
6281
|
+
{
|
|
6282
|
+
formDefinition,
|
|
6283
|
+
privacyPolicyUrl,
|
|
6284
|
+
termsOfServiceUrl
|
|
6285
|
+
}
|
|
6286
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "max-lg:hidden h-full min-h-0" }, /* @__PURE__ */ React21.createElement(
|
|
6092
6287
|
PhotoWithFallback2,
|
|
6093
6288
|
{
|
|
6094
6289
|
photoUrl: finalContactImage,
|
|
@@ -6193,7 +6388,7 @@ var FooterHome = ({
|
|
|
6193
6388
|
};
|
|
6194
6389
|
|
|
6195
6390
|
// src/design_system/sections/header-navigation.tsx
|
|
6196
|
-
import
|
|
6391
|
+
import React22, { useRef as useRef7, useState as useState10 } from "react";
|
|
6197
6392
|
import Link4 from "next/link";
|
|
6198
6393
|
import Image8 from "next/image";
|
|
6199
6394
|
import { ChevronDown as ChevronDown4 } from "@untitledui/icons";
|
|
@@ -6263,7 +6458,7 @@ function resolveCtaUrls(companyInformation, _ctaButton, overrides) {
|
|
|
6263
6458
|
var MobileNavItem = ({ label, href, children, onClose }) => {
|
|
6264
6459
|
const [isOpen, setIsOpen] = useState10(false);
|
|
6265
6460
|
if (href) {
|
|
6266
|
-
return /* @__PURE__ */
|
|
6461
|
+
return /* @__PURE__ */ React22.createElement("li", null, /* @__PURE__ */ React22.createElement(
|
|
6267
6462
|
Link4,
|
|
6268
6463
|
{
|
|
6269
6464
|
href,
|
|
@@ -6273,7 +6468,7 @@ var MobileNavItem = ({ label, href, children, onClose }) => {
|
|
|
6273
6468
|
label
|
|
6274
6469
|
));
|
|
6275
6470
|
}
|
|
6276
|
-
return /* @__PURE__ */
|
|
6471
|
+
return /* @__PURE__ */ React22.createElement("li", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React22.createElement(
|
|
6277
6472
|
"button",
|
|
6278
6473
|
{
|
|
6279
6474
|
"aria-expanded": isOpen,
|
|
@@ -6281,13 +6476,13 @@ var MobileNavItem = ({ label, href, children, onClose }) => {
|
|
|
6281
6476
|
className: "flex w-full items-center justify-between px-4 py-3 text-sm font-medium text-primary hover:bg-primary_hover"
|
|
6282
6477
|
},
|
|
6283
6478
|
label,
|
|
6284
|
-
/* @__PURE__ */
|
|
6479
|
+
/* @__PURE__ */ React22.createElement(
|
|
6285
6480
|
ChevronDown4,
|
|
6286
6481
|
{
|
|
6287
6482
|
className: cx("size-4 stroke-[2.625px] text-fg-quaternary transition duration-100 ease-linear", isOpen ? "-rotate-180" : "rotate-0")
|
|
6288
6483
|
}
|
|
6289
6484
|
)
|
|
6290
|
-
), isOpen && /* @__PURE__ */
|
|
6485
|
+
), isOpen && /* @__PURE__ */ React22.createElement("div", null, children));
|
|
6291
6486
|
};
|
|
6292
6487
|
function HeaderNavigation({
|
|
6293
6488
|
variant = "standard",
|
|
@@ -6300,7 +6495,7 @@ function HeaderNavigation({
|
|
|
6300
6495
|
websitePhotos
|
|
6301
6496
|
}) {
|
|
6302
6497
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
6303
|
-
const headerRef =
|
|
6498
|
+
const headerRef = useRef7(null);
|
|
6304
6499
|
const navigation = navigationOverride || ((_a = config == null ? void 0 : config.navigation) == null ? void 0 : _a.header) || [];
|
|
6305
6500
|
const logoImage = logoImageOverride || getLogoUrl(websitePhotos) || ((_b = props == null ? void 0 : props.logo) == null ? void 0 : _b.image);
|
|
6306
6501
|
const logoText = logoTextOverride || (companyInformation == null ? void 0 : companyInformation.company_name) || ((_c = props == null ? void 0 : props.logo) == null ? void 0 : _c.text) || "";
|
|
@@ -6328,7 +6523,7 @@ function HeaderNavigation({
|
|
|
6328
6523
|
};
|
|
6329
6524
|
const HoverDropdown = ({ label, href, children }) => {
|
|
6330
6525
|
const [isOpen, setIsOpen] = useState10(false);
|
|
6331
|
-
const timeoutRef =
|
|
6526
|
+
const timeoutRef = React22.useRef(null);
|
|
6332
6527
|
const handleMouseEnter = () => {
|
|
6333
6528
|
if (timeoutRef.current) {
|
|
6334
6529
|
clearTimeout(timeoutRef.current);
|
|
@@ -6342,37 +6537,37 @@ function HeaderNavigation({
|
|
|
6342
6537
|
}, 100);
|
|
6343
6538
|
timeoutRef.current = id3;
|
|
6344
6539
|
};
|
|
6345
|
-
|
|
6540
|
+
React22.useEffect(() => {
|
|
6346
6541
|
return () => {
|
|
6347
6542
|
if (timeoutRef.current) {
|
|
6348
6543
|
clearTimeout(timeoutRef.current);
|
|
6349
6544
|
}
|
|
6350
6545
|
};
|
|
6351
6546
|
}, []);
|
|
6352
|
-
return /* @__PURE__ */
|
|
6547
|
+
return /* @__PURE__ */ React22.createElement(
|
|
6353
6548
|
"div",
|
|
6354
6549
|
{
|
|
6355
6550
|
className: "relative",
|
|
6356
6551
|
onMouseEnter: handleMouseEnter,
|
|
6357
6552
|
onMouseLeave: handleMouseLeave
|
|
6358
6553
|
},
|
|
6359
|
-
/* @__PURE__ */
|
|
6554
|
+
/* @__PURE__ */ React22.createElement(
|
|
6360
6555
|
Link4,
|
|
6361
6556
|
{
|
|
6362
6557
|
href: href || "#",
|
|
6363
6558
|
className: "flex cursor-pointer items-center gap-0.5 rounded-lg px-1.5 py-1 text-sm font-medium text-secondary outline-focus-ring transition duration-100 ease-linear hover:text-secondary_hover focus-visible:outline-2 focus-visible:outline-offset-2"
|
|
6364
6559
|
},
|
|
6365
|
-
/* @__PURE__ */
|
|
6366
|
-
/* @__PURE__ */
|
|
6560
|
+
/* @__PURE__ */ React22.createElement("span", { className: "px-0.5" }, label),
|
|
6561
|
+
/* @__PURE__ */ React22.createElement(ChevronDown4, { className: cx("size-4 stroke-[2.625px] text-fg-quaternary transition duration-100 ease-linear", isOpen ? "-rotate-180" : "rotate-0") })
|
|
6367
6562
|
),
|
|
6368
|
-
isOpen && /* @__PURE__ */
|
|
6563
|
+
isOpen && /* @__PURE__ */ React22.createElement(
|
|
6369
6564
|
"div",
|
|
6370
6565
|
{
|
|
6371
6566
|
className: "absolute top-full left-0 z-50 mt-1 origin-top animate-in fade-in slide-in-from-top-1 duration-75 ease-out",
|
|
6372
6567
|
onMouseEnter: handleMouseEnter,
|
|
6373
6568
|
onMouseLeave: handleMouseLeave
|
|
6374
6569
|
},
|
|
6375
|
-
/* @__PURE__ */
|
|
6570
|
+
/* @__PURE__ */ React22.createElement("div", { className: "w-max max-w-sm" }, children)
|
|
6376
6571
|
)
|
|
6377
6572
|
);
|
|
6378
6573
|
};
|
|
@@ -6381,7 +6576,7 @@ function HeaderNavigation({
|
|
|
6381
6576
|
return {
|
|
6382
6577
|
label: navItem.label,
|
|
6383
6578
|
href: navItem.href,
|
|
6384
|
-
menu: /* @__PURE__ */
|
|
6579
|
+
menu: /* @__PURE__ */ React22.createElement(
|
|
6385
6580
|
GenericHeaderComponent,
|
|
6386
6581
|
{
|
|
6387
6582
|
items: navItem.children.map((child) => ({
|
|
@@ -6398,7 +6593,7 @@ function HeaderNavigation({
|
|
|
6398
6593
|
href: navItem.href
|
|
6399
6594
|
};
|
|
6400
6595
|
});
|
|
6401
|
-
return /* @__PURE__ */
|
|
6596
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
|
|
6402
6597
|
"header",
|
|
6403
6598
|
{
|
|
6404
6599
|
ref: headerRef,
|
|
@@ -6407,7 +6602,7 @@ function HeaderNavigation({
|
|
|
6407
6602
|
getVariantClasses()
|
|
6408
6603
|
)
|
|
6409
6604
|
},
|
|
6410
|
-
/* @__PURE__ */
|
|
6605
|
+
/* @__PURE__ */ React22.createElement("div", { className: "flex size-full max-w-container flex-1 items-center pr-3 pl-4 md:px-8" }, /* @__PURE__ */ React22.createElement("div", { className: "flex w-full justify-between gap-4" }, /* @__PURE__ */ React22.createElement("div", { className: "flex flex-1 items-center gap-5" }, /* @__PURE__ */ React22.createElement(Link4, { href: (logo == null ? void 0 : logo.href) || "/", className: "flex items-center space-x-2" }, logoImage ? /* @__PURE__ */ React22.createElement(
|
|
6411
6606
|
Image8,
|
|
6412
6607
|
{
|
|
6413
6608
|
src: logoImage,
|
|
@@ -6416,14 +6611,14 @@ function HeaderNavigation({
|
|
|
6416
6611
|
width: 32,
|
|
6417
6612
|
height: 32
|
|
6418
6613
|
}
|
|
6419
|
-
) : /* @__PURE__ */
|
|
6614
|
+
) : /* @__PURE__ */ React22.createElement("div", { className: "h-8 w-8 bg-blue-600 rounded-lg flex items-center justify-center" }, /* @__PURE__ */ React22.createElement("span", { className: "text-white font-bold text-lg" }, ((_e = logoText == null ? void 0 : logoText.charAt(0)) == null ? void 0 : _e.toUpperCase()) || "")), /* @__PURE__ */ React22.createElement("span", { className: "text-xl font-bold text-primary hidden md:block" }, logoText)), /* @__PURE__ */ React22.createElement("nav", { className: "max-md:hidden" }, /* @__PURE__ */ React22.createElement("ul", { className: "flex items-center gap-0.5" }, headerNavItems.map((navItem) => /* @__PURE__ */ React22.createElement("li", { key: navItem.label }, navItem.menu ? /* @__PURE__ */ React22.createElement(HoverDropdown, { label: navItem.label, href: navItem.href }, navItem.menu) : /* @__PURE__ */ React22.createElement(
|
|
6420
6615
|
Link4,
|
|
6421
6616
|
{
|
|
6422
6617
|
href: navItem.href || "#",
|
|
6423
6618
|
className: "flex cursor-pointer items-center gap-0.5 rounded-lg px-1.5 py-1 text-sm font-medium text-secondary outline-focus-ring transition duration-100 ease-linear hover:text-secondary_hover focus:outline-offset-2 focus-visible:outline-2"
|
|
6424
6619
|
},
|
|
6425
|
-
/* @__PURE__ */
|
|
6426
|
-
)))))), /* @__PURE__ */
|
|
6620
|
+
/* @__PURE__ */ React22.createElement("span", { className: "px-0.5" }, navItem.label)
|
|
6621
|
+
)))))), /* @__PURE__ */ React22.createElement("div", { className: "hidden items-center gap-3 md:flex" }, (cta_button == null ? void 0 : cta_button.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React22.createElement(
|
|
6427
6622
|
Button2,
|
|
6428
6623
|
{
|
|
6429
6624
|
href: ctaUrls.secondaryHref,
|
|
@@ -6433,7 +6628,7 @@ function HeaderNavigation({
|
|
|
6433
6628
|
size: "lg"
|
|
6434
6629
|
},
|
|
6435
6630
|
cta_button.label
|
|
6436
|
-
), /* @__PURE__ */
|
|
6631
|
+
), /* @__PURE__ */ React22.createElement(
|
|
6437
6632
|
Button2,
|
|
6438
6633
|
{
|
|
6439
6634
|
href: ctaUrls.primaryHref,
|
|
@@ -6443,7 +6638,7 @@ function HeaderNavigation({
|
|
|
6443
6638
|
size: "lg"
|
|
6444
6639
|
},
|
|
6445
6640
|
(cta_button == null ? void 0 : cta_button.secondary_label) && ctaUrls.hasSecondary ? cta_button.secondary_label : (cta_button == null ? void 0 : cta_button.label) || "Get Started"
|
|
6446
|
-
)), /* @__PURE__ */
|
|
6641
|
+
)), /* @__PURE__ */ React22.createElement(AriaDialogTrigger, null, /* @__PURE__ */ React22.createElement(
|
|
6447
6642
|
AriaButton8,
|
|
6448
6643
|
{
|
|
6449
6644
|
"aria-label": "Toggle navigation menu",
|
|
@@ -6453,7 +6648,7 @@ function HeaderNavigation({
|
|
|
6453
6648
|
isFocusVisible && "outline-2 outline-offset-2 outline-focus-ring"
|
|
6454
6649
|
)
|
|
6455
6650
|
},
|
|
6456
|
-
/* @__PURE__ */
|
|
6651
|
+
/* @__PURE__ */ React22.createElement("svg", { "aria-hidden": "true", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ React22.createElement(
|
|
6457
6652
|
"path",
|
|
6458
6653
|
{
|
|
6459
6654
|
className: "hidden text-secondary group-aria-expanded:block",
|
|
@@ -6463,7 +6658,7 @@ function HeaderNavigation({
|
|
|
6463
6658
|
strokeLinecap: "round",
|
|
6464
6659
|
strokeLinejoin: "round"
|
|
6465
6660
|
}
|
|
6466
|
-
), /* @__PURE__ */
|
|
6661
|
+
), /* @__PURE__ */ React22.createElement(
|
|
6467
6662
|
"path",
|
|
6468
6663
|
{
|
|
6469
6664
|
className: "text-secondary group-aria-expanded:hidden",
|
|
@@ -6474,7 +6669,7 @@ function HeaderNavigation({
|
|
|
6474
6669
|
strokeLinejoin: "round"
|
|
6475
6670
|
}
|
|
6476
6671
|
))
|
|
6477
|
-
), /* @__PURE__ */
|
|
6672
|
+
), /* @__PURE__ */ React22.createElement(
|
|
6478
6673
|
AriaPopover3,
|
|
6479
6674
|
{
|
|
6480
6675
|
triggerRef: headerRef,
|
|
@@ -6484,15 +6679,15 @@ function HeaderNavigation({
|
|
|
6484
6679
|
containerPadding: 0,
|
|
6485
6680
|
placement: "bottom left"
|
|
6486
6681
|
},
|
|
6487
|
-
/* @__PURE__ */
|
|
6488
|
-
(navItem) => navItem.menu ? /* @__PURE__ */
|
|
6682
|
+
/* @__PURE__ */ React22.createElement(AriaDialog, { className: "outline-hidden" }, /* @__PURE__ */ React22.createElement("nav", { className: "w-full bg-primary shadow-lg" }, /* @__PURE__ */ React22.createElement("ul", { className: "flex flex-col gap-0.5 py-5" }, headerNavItems.map(
|
|
6683
|
+
(navItem) => navItem.menu ? /* @__PURE__ */ React22.createElement(
|
|
6489
6684
|
MobileNavItem,
|
|
6490
6685
|
{
|
|
6491
6686
|
key: navItem.label,
|
|
6492
6687
|
label: navItem.label
|
|
6493
6688
|
},
|
|
6494
6689
|
navItem.menu
|
|
6495
|
-
) : /* @__PURE__ */
|
|
6690
|
+
) : /* @__PURE__ */ React22.createElement(
|
|
6496
6691
|
MobileNavItem,
|
|
6497
6692
|
{
|
|
6498
6693
|
key: navItem.label,
|
|
@@ -6500,7 +6695,7 @@ function HeaderNavigation({
|
|
|
6500
6695
|
href: navItem.href
|
|
6501
6696
|
}
|
|
6502
6697
|
)
|
|
6503
|
-
)), /* @__PURE__ */
|
|
6698
|
+
)), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3 border-t border-secondary px-4 py-6" }, (cta_button == null ? void 0 : cta_button.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React22.createElement(
|
|
6504
6699
|
Button2,
|
|
6505
6700
|
{
|
|
6506
6701
|
href: ctaUrls.secondaryHref,
|
|
@@ -6510,7 +6705,7 @@ function HeaderNavigation({
|
|
|
6510
6705
|
size: "lg"
|
|
6511
6706
|
},
|
|
6512
6707
|
cta_button.label
|
|
6513
|
-
), /* @__PURE__ */
|
|
6708
|
+
), /* @__PURE__ */ React22.createElement(
|
|
6514
6709
|
Button2,
|
|
6515
6710
|
{
|
|
6516
6711
|
href: ctaUrls.primaryHref,
|
|
@@ -6522,7 +6717,7 @@ function HeaderNavigation({
|
|
|
6522
6717
|
(cta_button == null ? void 0 : cta_button.secondary_label) && ctaUrls.hasSecondary ? cta_button.secondary_label : (cta_button == null ? void 0 : cta_button.label) || "Get Started"
|
|
6523
6718
|
))))
|
|
6524
6719
|
))))
|
|
6525
|
-
), /* @__PURE__ */
|
|
6720
|
+
), /* @__PURE__ */ React22.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden bg-fg-primary" }, /* @__PURE__ */ React22.createElement("div", { className: "flex gap-0" }, (cta_button == null ? void 0 : cta_button.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React22.createElement(
|
|
6526
6721
|
Button2,
|
|
6527
6722
|
{
|
|
6528
6723
|
href: ctaUrls.secondaryHref,
|
|
@@ -6532,7 +6727,7 @@ function HeaderNavigation({
|
|
|
6532
6727
|
className: "flex-1 font-body text-sm uppercase tracking-wide py-4 rounded-none border-r border-white/20"
|
|
6533
6728
|
},
|
|
6534
6729
|
cta_button.label
|
|
6535
|
-
), /* @__PURE__ */
|
|
6730
|
+
), /* @__PURE__ */ React22.createElement(
|
|
6536
6731
|
Button2,
|
|
6537
6732
|
{
|
|
6538
6733
|
href: ctaUrls.primaryHref,
|
|
@@ -6565,7 +6760,7 @@ var StatisticsSection = ({
|
|
|
6565
6760
|
};
|
|
6566
6761
|
|
|
6567
6762
|
// src/design_system/sections/values-section.tsx
|
|
6568
|
-
import
|
|
6763
|
+
import React23 from "react";
|
|
6569
6764
|
var ValuesSection = ({
|
|
6570
6765
|
values = [],
|
|
6571
6766
|
label = "",
|
|
@@ -6576,16 +6771,16 @@ var ValuesSection = ({
|
|
|
6576
6771
|
className = ""
|
|
6577
6772
|
}) => {
|
|
6578
6773
|
const hasValues = values.length > 0;
|
|
6579
|
-
return /* @__PURE__ */
|
|
6774
|
+
return /* @__PURE__ */ React23.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React23.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React23.createElement("div", { className: "mx-auto flex w-full max-w-3xl flex-col items-center text-center" }, label && /* @__PURE__ */ React23.createElement("span", { className: "text-sm font-semibold text-brand-secondary md:text-md" }, label), title && /* @__PURE__ */ React23.createElement("h2", { className: `${label ? "mt-3" : ""} text-display-sm font-semibold text-primary md:text-display-md` }, title), subtitle && /* @__PURE__ */ React23.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle), description && !hasValues && /* @__PURE__ */ React23.createElement("p", { className: "mt-4 text-md text-tertiary md:mt-6 md:text-lg" }, description)), values.length > 0 ? /* @__PURE__ */ React23.createElement("div", { className: "mt-12 md:mt-16" }, (() => {
|
|
6580
6775
|
const anyIconMissing = values.some(
|
|
6581
6776
|
(value) => typeof value.icon === "string" && value.icon && !mapIcon(value.icon)
|
|
6582
6777
|
);
|
|
6583
6778
|
const useStarForAll = anyIconMissing;
|
|
6584
|
-
return /* @__PURE__ */
|
|
6779
|
+
return /* @__PURE__ */ React23.createElement("ul", { className: "grid w-full grid-cols-1 justify-items-center gap-x-8 gap-y-10 sm:grid-cols-2 md:gap-y-16 lg:grid-cols-3" }, values.map((value, index) => {
|
|
6585
6780
|
const IconComponent2 = useStarForAll ? mapIcon("star") : mapIcon(value.icon) || mapIcon("star");
|
|
6586
6781
|
if (!IconComponent2) return null;
|
|
6587
|
-
const IconWrapper = ({ className: className2 }) => /* @__PURE__ */
|
|
6588
|
-
return /* @__PURE__ */
|
|
6782
|
+
const IconWrapper = ({ className: className2 }) => /* @__PURE__ */ React23.createElement("div", { className: className2 }, /* @__PURE__ */ React23.createElement(IconComponent2, { className: "w-full h-full" }));
|
|
6783
|
+
return /* @__PURE__ */ React23.createElement("li", { key: index }, /* @__PURE__ */ React23.createElement("div", { className: "flex max-w-sm flex-col items-center gap-4 text-center" }, /* @__PURE__ */ React23.createElement(
|
|
6589
6784
|
FeaturedIcon2,
|
|
6590
6785
|
{
|
|
6591
6786
|
icon: IconWrapper,
|
|
@@ -6594,7 +6789,7 @@ var ValuesSection = ({
|
|
|
6594
6789
|
theme: "modern",
|
|
6595
6790
|
className: "hidden md:inline-flex"
|
|
6596
6791
|
}
|
|
6597
|
-
), /* @__PURE__ */
|
|
6792
|
+
), /* @__PURE__ */ React23.createElement(
|
|
6598
6793
|
FeaturedIcon2,
|
|
6599
6794
|
{
|
|
6600
6795
|
icon: IconWrapper,
|
|
@@ -6603,13 +6798,13 @@ var ValuesSection = ({
|
|
|
6603
6798
|
theme: "modern",
|
|
6604
6799
|
className: "inline-flex md:hidden"
|
|
6605
6800
|
}
|
|
6606
|
-
), /* @__PURE__ */
|
|
6801
|
+
), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-primary" }, value.title), /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-md text-tertiary" }, value.description))));
|
|
6607
6802
|
}));
|
|
6608
6803
|
})()) : null));
|
|
6609
6804
|
};
|
|
6610
6805
|
|
|
6611
6806
|
// src/design_system/sections/team-grid.tsx
|
|
6612
|
-
import
|
|
6807
|
+
import React24 from "react";
|
|
6613
6808
|
var TeamGrid = ({
|
|
6614
6809
|
teamMembers: membersData,
|
|
6615
6810
|
title = "",
|
|
@@ -6620,10 +6815,10 @@ var TeamGrid = ({
|
|
|
6620
6815
|
}) => {
|
|
6621
6816
|
const members = Array.isArray(membersData) ? membersData : [];
|
|
6622
6817
|
const displayMembers = members.slice(0, maxMembers);
|
|
6623
|
-
return /* @__PURE__ */
|
|
6818
|
+
return /* @__PURE__ */ React24.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React24.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React24.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React24.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React24.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), displayMembers.length > 0 ? /* @__PURE__ */ React24.createElement("div", { className: "mt-12 md:mt-16" }, /* @__PURE__ */ React24.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" }, displayMembers.map((member, index) => {
|
|
6624
6819
|
var _a;
|
|
6625
6820
|
const bio = ((_a = member.bio_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
6626
|
-
return /* @__PURE__ */
|
|
6821
|
+
return /* @__PURE__ */ React24.createElement("li", { key: member.id || index, className: "flex flex-col gap-5 md:gap-6" }, /* @__PURE__ */ React24.createElement(
|
|
6627
6822
|
PhotoWithFallback2,
|
|
6628
6823
|
{
|
|
6629
6824
|
item: member,
|
|
@@ -6631,15 +6826,15 @@ var TeamGrid = ({
|
|
|
6631
6826
|
alt: member.name || "Team member",
|
|
6632
6827
|
className: "h-78 w-full object-cover md:h-74 rounded-2xl"
|
|
6633
6828
|
}
|
|
6634
|
-
), /* @__PURE__ */
|
|
6635
|
-
}))) : /* @__PURE__ */
|
|
6829
|
+
), /* @__PURE__ */ React24.createElement("div", null, /* @__PURE__ */ React24.createElement("h3", { className: "text-lg font-semibold text-primary md:text-xl" }, member.name), /* @__PURE__ */ React24.createElement("p", { className: "text-md text-brand-secondary md:mt-0.5 md:text-lg" }, member.position), bio && /* @__PURE__ */ React24.createElement("p", { className: "mt-4 text-md text-tertiary leading-relaxed" }, bio)));
|
|
6830
|
+
}))) : /* @__PURE__ */ React24.createElement("div", { className: "text-center mt-12" }, /* @__PURE__ */ React24.createElement("p", { className: "text-gray-500" }, "No team members available"))));
|
|
6636
6831
|
};
|
|
6637
6832
|
|
|
6638
6833
|
// src/design_system/sections/location-grid.tsx
|
|
6639
|
-
import
|
|
6834
|
+
import React25 from "react";
|
|
6640
6835
|
import { ArrowRight as ArrowRight6 } from "@untitledui/icons";
|
|
6641
|
-
var LocationIcon = ({ className }) => /* @__PURE__ */
|
|
6642
|
-
var PhoneIcon = ({ className }) => /* @__PURE__ */
|
|
6836
|
+
var LocationIcon = ({ className }) => /* @__PURE__ */ React25.createElement("svg", { className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React25.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React25.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" }));
|
|
6837
|
+
var PhoneIcon = ({ className }) => /* @__PURE__ */ React25.createElement("svg", { className, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React25.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" }));
|
|
6643
6838
|
var LocationGrid = ({
|
|
6644
6839
|
locations: locationsData,
|
|
6645
6840
|
companyInformation,
|
|
@@ -6653,16 +6848,16 @@ var LocationGrid = ({
|
|
|
6653
6848
|
const locations = Array.isArray(locationsData) ? locationsData : [];
|
|
6654
6849
|
const resolved = companyInformation ? resolveCtaUrls(companyInformation) : null;
|
|
6655
6850
|
const primaryCtaHref = (_a = primaryCtaHrefOverride != null ? primaryCtaHrefOverride : resolved == null ? void 0 : resolved.primaryHref) != null ? _a : "/contact";
|
|
6656
|
-
return /* @__PURE__ */
|
|
6851
|
+
return /* @__PURE__ */ React25.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React25.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React25.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React25.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React25.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), locations.length > 0 ? /* @__PURE__ */ React25.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" }, locations.map((location, index) => {
|
|
6657
6852
|
const fullAddress = `${location.address_line_1}${location.address_line_2 ? `, ${location.address_line_2}` : ""}, ${location.city}, ${location.state} ${location.zip_code}`.trim();
|
|
6658
|
-
return /* @__PURE__ */
|
|
6853
|
+
return /* @__PURE__ */ React25.createElement("li", { key: location.id || index, className: "flex flex-col gap-6 rounded-2xl bg-secondary p-6 ring-1 ring-secondary_alt md:p-8" }, /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React25.createElement("h3", { className: "text-lg font-semibold text-primary md:text-xl" }, location.name), fullAddress && /* @__PURE__ */ React25.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React25.createElement("div", { className: "size-5 shrink-0 mt-0.5 text-fg-quaternary" }, /* @__PURE__ */ React25.createElement(LocationIcon, { className: "w-full h-full" })), /* @__PURE__ */ React25.createElement("span", { className: "text-md text-tertiary" }, fullAddress)), location.phone && /* @__PURE__ */ React25.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React25.createElement("div", { className: "size-5 shrink-0 text-fg-quaternary" }, /* @__PURE__ */ React25.createElement(PhoneIcon, { className: "w-full h-full" })), /* @__PURE__ */ React25.createElement(
|
|
6659
6854
|
"a",
|
|
6660
6855
|
{
|
|
6661
6856
|
href: `tel:${location.phone}`,
|
|
6662
6857
|
className: "text-md text-tertiary hover:text-primary transition-colors"
|
|
6663
6858
|
},
|
|
6664
6859
|
location.phone
|
|
6665
|
-
))), /* @__PURE__ */
|
|
6860
|
+
))), /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-3 mt-auto" }, /* @__PURE__ */ React25.createElement(
|
|
6666
6861
|
Button2,
|
|
6667
6862
|
{
|
|
6668
6863
|
size: "lg",
|
|
@@ -6671,11 +6866,11 @@ var LocationGrid = ({
|
|
|
6671
6866
|
},
|
|
6672
6867
|
"View details"
|
|
6673
6868
|
)));
|
|
6674
|
-
})) : /* @__PURE__ */
|
|
6869
|
+
})) : /* @__PURE__ */ React25.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React25.createElement("div", { className: "text-gray-400 text-6xl mb-4" }, "\u{1F4CD}"), /* @__PURE__ */ React25.createElement("h3", { className: "text-xl font-semibold text-primary mb-2" }, "No Locations Available"), /* @__PURE__ */ React25.createElement("p", { className: "text-gray-600 mb-4" }, "We're working on adding our service locations."), /* @__PURE__ */ React25.createElement(Button2, { href: primaryCtaHref, target: isExternalCtaUrl(primaryCtaHref) ? "_blank" : void 0, rel: isExternalCtaUrl(primaryCtaHref) ? "noopener noreferrer" : void 0 }, "Contact Us"))));
|
|
6675
6870
|
};
|
|
6676
6871
|
|
|
6677
6872
|
// src/design_system/sections/location-details-section.tsx
|
|
6678
|
-
import
|
|
6873
|
+
import React26 from "react";
|
|
6679
6874
|
import { Mail01, MarkerPin02, Phone, Clock as Clock2 } from "@untitledui/icons";
|
|
6680
6875
|
var parseBusinessHours = (hours) => {
|
|
6681
6876
|
if (!hours) return [];
|
|
@@ -6725,7 +6920,7 @@ var LocationDetailsSection = ({
|
|
|
6725
6920
|
const showMap = true;
|
|
6726
6921
|
const fullAddress = `${location.address_line_1}${location.address_line_2 ? `, ${location.address_line_2}` : ""}, ${location.city}, ${location.state} ${location.zip_code}`.trim();
|
|
6727
6922
|
const businessHours = location.business_hours ? parseBusinessHours(location.business_hours) : [];
|
|
6728
|
-
return /* @__PURE__ */
|
|
6923
|
+
return /* @__PURE__ */ React26.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React26.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React26.createElement("div", { className: "flex w-full max-w-3xl flex-col" }, label && /* @__PURE__ */ React26.createElement("span", { className: "text-sm font-semibold text-brand-secondary md:text-md" }, label), title && /* @__PURE__ */ React26.createElement("h2", { className: "mt-3 text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React26.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), /* @__PURE__ */ React26.createElement("div", { className: "mt-12 grid grid-cols-1 items-start gap-12 md:mt-16 md:gap-16 lg:grid-cols-3" }, /* @__PURE__ */ React26.createElement("ul", { className: "col-span-1 grid w-full grid-cols-1 gap-x-8 gap-y-10 md:grid-cols-2 lg:grid-cols-1 lg:gap-y-12" }, location.address_line_1 && /* @__PURE__ */ React26.createElement("li", { className: "flex max-w-sm flex-col items-start gap-4 lg:flex-row" }, /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "hidden md:flex", size: "lg", icon: MarkerPin02, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "md:hidden", size: "md", icon: MarkerPin02, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement("div", { className: "lg:pt-2.5" }, /* @__PURE__ */ React26.createElement("h3", { className: "text-lg font-semibold text-primary" }, officeLabel), /* @__PURE__ */ React26.createElement("p", { className: "mt-1 text-md text-tertiary" }, officeDescription), /* @__PURE__ */ React26.createElement(
|
|
6729
6924
|
Button2,
|
|
6730
6925
|
{
|
|
6731
6926
|
href: `https://maps.google.com/?q=${encodeURIComponent(fullAddress)}`,
|
|
@@ -6738,7 +6933,7 @@ var LocationDetailsSection = ({
|
|
|
6738
6933
|
${location.address_line_2}` : "",
|
|
6739
6934
|
`
|
|
6740
6935
|
${location.city}, ${location.state} ${location.zip_code}`
|
|
6741
|
-
))), location.phone && /* @__PURE__ */
|
|
6936
|
+
))), location.phone && /* @__PURE__ */ React26.createElement("li", { className: "flex max-w-sm flex-col items-start gap-4 lg:flex-row" }, /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "hidden md:flex", size: "lg", icon: Phone, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "md:hidden", size: "md", icon: Phone, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement("div", { className: "lg:pt-2.5" }, /* @__PURE__ */ React26.createElement("h3", { className: "text-lg font-semibold text-primary" }, phoneLabel), /* @__PURE__ */ React26.createElement("p", { className: "mt-1 text-md text-tertiary" }, phoneDescription), /* @__PURE__ */ React26.createElement(Button2, { href: `tel:${location.phone}`, color: "link-color", size: "lg", className: "mt-4 lg:mt-5" }, location.phone))), location.email && /* @__PURE__ */ React26.createElement("li", { className: "flex max-w-sm flex-col items-start gap-4 lg:flex-row" }, /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "hidden md:flex", size: "lg", icon: Mail01, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "md:hidden", size: "md", icon: Mail01, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement("div", { className: "lg:pt-2.5" }, /* @__PURE__ */ React26.createElement("h3", { className: "text-lg font-semibold text-primary" }, emailLabel), /* @__PURE__ */ React26.createElement("p", { className: "mt-1 text-md text-tertiary" }, emailDescription), /* @__PURE__ */ React26.createElement(Button2, { href: `mailto:${location.email}`, color: "link-color", size: "lg", className: "mt-4 lg:mt-5" }, location.email))), businessHours.length > 0 && /* @__PURE__ */ React26.createElement("li", { className: "flex max-w-sm flex-col items-start gap-4 lg:flex-row" }, /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "hidden md:flex", size: "lg", icon: Clock2, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement(FeaturedIcon2, { className: "md:hidden", size: "md", icon: Clock2, color: "brand", theme: "light" }), /* @__PURE__ */ React26.createElement("div", { className: "lg:pt-2.5" }, /* @__PURE__ */ React26.createElement("h3", { className: "text-lg font-semibold text-primary" }, "Business Hours"), /* @__PURE__ */ React26.createElement("div", { className: "mt-1 flex flex-col gap-2 text-md text-tertiary" }, businessHours.map(({ day, hours }) => /* @__PURE__ */ React26.createElement("div", { key: day, className: "flex justify-between gap-4" }, /* @__PURE__ */ React26.createElement("span", { className: "font-medium capitalize" }, day, ":"), /* @__PURE__ */ React26.createElement("span", null, hours))))))), showMap && fullAddress && /* @__PURE__ */ React26.createElement("div", { className: "col-span-2 h-60 w-full border-none lg:h-full" }, /* @__PURE__ */ React26.createElement(
|
|
6742
6937
|
GoogleMap2,
|
|
6743
6938
|
{
|
|
6744
6939
|
address: fullAddress,
|
|
@@ -6749,7 +6944,7 @@ ${location.city}, ${location.state} ${location.zip_code}`
|
|
|
6749
6944
|
};
|
|
6750
6945
|
|
|
6751
6946
|
// src/design_system/sections/services-grid.tsx
|
|
6752
|
-
import
|
|
6947
|
+
import React27 from "react";
|
|
6753
6948
|
import { ArrowRight as ArrowRight7 } from "@untitledui/icons";
|
|
6754
6949
|
var ServicesGrid = ({
|
|
6755
6950
|
services: servicesData,
|
|
@@ -6759,12 +6954,12 @@ var ServicesGrid = ({
|
|
|
6759
6954
|
className = ""
|
|
6760
6955
|
}) => {
|
|
6761
6956
|
const services = Array.isArray(servicesData) ? servicesData : [];
|
|
6762
|
-
return /* @__PURE__ */
|
|
6957
|
+
return /* @__PURE__ */ React27.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React27.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React27.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React27.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React27.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), services.length > 0 ? /* @__PURE__ */ React27.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) => {
|
|
6763
6958
|
var _a, _b, _c, _d;
|
|
6764
6959
|
const description = service.summary || (service.description_markdown ? service.description_markdown.replace(/[#*\[\]()]/g, "").trim().substring(0, 120) + "..." : "");
|
|
6765
6960
|
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);
|
|
6766
6961
|
const imageAlt = (photo == null ? void 0 : photo.title) || service.name;
|
|
6767
|
-
return /* @__PURE__ */
|
|
6962
|
+
return /* @__PURE__ */ React27.createElement("li", { key: service.id || index }, /* @__PURE__ */ React27.createElement("div", { className: "flex flex-col gap-12 bg-secondary p-5 md:inline-flex md:gap-16 md:p-6" }, /* @__PURE__ */ React27.createElement("div", { className: "h-48 w-full overflow-hidden rounded-lg md:h-64" }, /* @__PURE__ */ React27.createElement(
|
|
6768
6963
|
PhotoWithFallback2,
|
|
6769
6964
|
{
|
|
6770
6965
|
item: service,
|
|
@@ -6772,7 +6967,7 @@ var ServicesGrid = ({
|
|
|
6772
6967
|
alt: imageAlt || "Service image",
|
|
6773
6968
|
className: "size-full object-cover"
|
|
6774
6969
|
}
|
|
6775
|
-
)), /* @__PURE__ */
|
|
6970
|
+
)), /* @__PURE__ */ React27.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React27.createElement("div", null, /* @__PURE__ */ React27.createElement("h3", { className: "text-lg font-semibold text-primary" }, service.name), description && /* @__PURE__ */ React27.createElement("p", { className: "mt-1 text-md text-tertiary" }, description)), /* @__PURE__ */ React27.createElement(
|
|
6776
6971
|
Button2,
|
|
6777
6972
|
{
|
|
6778
6973
|
color: "link-color",
|
|
@@ -6782,25 +6977,29 @@ var ServicesGrid = ({
|
|
|
6782
6977
|
},
|
|
6783
6978
|
"Learn more"
|
|
6784
6979
|
))));
|
|
6785
|
-
})) : /* @__PURE__ */
|
|
6980
|
+
})) : /* @__PURE__ */ React27.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React27.createElement("p", { className: "text-gray-500" }, "No services available"))));
|
|
6786
6981
|
};
|
|
6787
6982
|
|
|
6788
6983
|
// src/design_system/sections/social-media-grid.tsx
|
|
6789
|
-
import
|
|
6984
|
+
import React28, { useState as useState11 } from "react";
|
|
6790
6985
|
import Image9 from "next/image";
|
|
6791
6986
|
import { ArrowLeft as ArrowLeft3, ArrowRight as ArrowRight8 } from "@untitledui/icons";
|
|
6792
6987
|
function getPostImageUrls(post) {
|
|
6793
|
-
var _a;
|
|
6794
|
-
|
|
6988
|
+
var _a, _b;
|
|
6989
|
+
const videoSet = ((_a = post.video_urls) == null ? void 0 : _a.length) ? new Set(post.video_urls) : null;
|
|
6990
|
+
const isVideo = (url) => isVideoUrl(url) || videoSet !== null && videoSet.has(url);
|
|
6991
|
+
if ((_b = post.image_urls) == null ? void 0 : _b.length) {
|
|
6992
|
+
return post.image_urls.filter((url) => !isVideo(url));
|
|
6993
|
+
}
|
|
6795
6994
|
const attachments = post.photo_attachments || [];
|
|
6796
6995
|
const sorted = [...attachments].sort((a, b) => {
|
|
6797
|
-
var _a2,
|
|
6798
|
-
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((
|
|
6996
|
+
var _a2, _b2;
|
|
6997
|
+
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((_b2 = b.sort_order) != null ? _b2 : 0);
|
|
6799
6998
|
});
|
|
6800
6999
|
return sorted.map((pa) => {
|
|
6801
|
-
var _a2,
|
|
6802
|
-
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((
|
|
6803
|
-
}).filter((url) => Boolean(url));
|
|
7000
|
+
var _a2, _b2, _c, _d;
|
|
7001
|
+
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((_b2 = pa.photo) == null ? void 0 : _b2.original_url) || ((_c = pa.photo) == null ? void 0 : _c.medium_url) || ((_d = pa.photo) == null ? void 0 : _d.thumbnail_url);
|
|
7002
|
+
}).filter((url) => Boolean(url)).filter((url) => !isVideo(url));
|
|
6804
7003
|
}
|
|
6805
7004
|
var getPlatformBadge = (platform) => {
|
|
6806
7005
|
const platformLower = (platform == null ? void 0 : platform.toLowerCase()) || "social";
|
|
@@ -6839,19 +7038,19 @@ var SocialMediaGrid = ({
|
|
|
6839
7038
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
6840
7039
|
const endIndex = startIndex + postsPerPage;
|
|
6841
7040
|
const paginatedPosts = posts.slice(startIndex, endIndex);
|
|
6842
|
-
return /* @__PURE__ */
|
|
7041
|
+
return /* @__PURE__ */ React28.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React28.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React28.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React28.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React28.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), paginatedPosts.length > 0 ? /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.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 xl:grid-cols-4" }, paginatedPosts.map((post, index) => {
|
|
6843
7042
|
var _a;
|
|
6844
7043
|
const images = getPostImageUrls(post);
|
|
6845
7044
|
const hasMultipleImages = images.length > 1;
|
|
6846
7045
|
const firstImage = images[0];
|
|
6847
7046
|
const content = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
6848
|
-
return /* @__PURE__ */
|
|
7047
|
+
return /* @__PURE__ */ React28.createElement("li", { key: post.id || index, className: "flex flex-col gap-5 md:gap-6" }, /* @__PURE__ */ React28.createElement("div", { className: "relative h-78 w-full overflow-hidden md:h-74" }, firstImage ? hasMultipleImages ? /* @__PURE__ */ React28.createElement(
|
|
6849
7048
|
Carousel2.Root,
|
|
6850
7049
|
{
|
|
6851
7050
|
opts: { align: "start" },
|
|
6852
7051
|
className: "h-full w-full"
|
|
6853
7052
|
},
|
|
6854
|
-
/* @__PURE__ */
|
|
7053
|
+
/* @__PURE__ */ React28.createElement(Carousel2.Content, { className: "h-full" }, images.map((imgUrl, imgIndex) => /* @__PURE__ */ React28.createElement(Carousel2.Item, { key: imgIndex, className: "h-full" }, /* @__PURE__ */ React28.createElement(
|
|
6855
7054
|
Image9,
|
|
6856
7055
|
{
|
|
6857
7056
|
src: imgUrl,
|
|
@@ -6861,8 +7060,8 @@ var SocialMediaGrid = ({
|
|
|
6861
7060
|
height: 600
|
|
6862
7061
|
}
|
|
6863
7062
|
)))),
|
|
6864
|
-
/* @__PURE__ */
|
|
6865
|
-
) : /* @__PURE__ */
|
|
7063
|
+
/* @__PURE__ */ React28.createElement("div", { className: "absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2" }, /* @__PURE__ */ React28.createElement(Carousel2.PrevTrigger, { asChild: true }, /* @__PURE__ */ React28.createElement(RoundButton2, { icon: ArrowLeft3 })), /* @__PURE__ */ React28.createElement(Carousel2.NextTrigger, { asChild: true }, /* @__PURE__ */ React28.createElement(RoundButton2, { icon: ArrowRight8 })))
|
|
7064
|
+
) : /* @__PURE__ */ React28.createElement(
|
|
6866
7065
|
PhotoWithFallback2,
|
|
6867
7066
|
{
|
|
6868
7067
|
item: post,
|
|
@@ -6871,7 +7070,7 @@ var SocialMediaGrid = ({
|
|
|
6871
7070
|
fallbackId: `social-post-${post.id || index}`,
|
|
6872
7071
|
className: "size-full object-cover"
|
|
6873
7072
|
}
|
|
6874
|
-
) : /* @__PURE__ */
|
|
7073
|
+
) : /* @__PURE__ */ React28.createElement(
|
|
6875
7074
|
PhotoWithFallback2,
|
|
6876
7075
|
{
|
|
6877
7076
|
item: post,
|
|
@@ -6880,10 +7079,10 @@ var SocialMediaGrid = ({
|
|
|
6880
7079
|
fallbackId: `social-post-${post.id || index}`,
|
|
6881
7080
|
className: "size-full object-cover"
|
|
6882
7081
|
}
|
|
6883
|
-
), post.platform && /* @__PURE__ */
|
|
7082
|
+
), post.platform && /* @__PURE__ */ React28.createElement("div", { className: cx(
|
|
6884
7083
|
"absolute top-4 right-4 rounded-full px-3 py-1.5 text-sm font-semibold text-white",
|
|
6885
7084
|
getPlatformBadge(post.platform)
|
|
6886
|
-
) }, post.platform.charAt(0).toUpperCase() + post.platform.slice(1))), /* @__PURE__ */
|
|
7085
|
+
) }, post.platform.charAt(0).toUpperCase() + post.platform.slice(1))), /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React28.createElement("span", { className: "text-sm text-tertiary" }, formatDate(post.posted_at))), content && /* @__PURE__ */ React28.createElement("p", { className: "text-md text-tertiary line-clamp-4" }, content), /* @__PURE__ */ React28.createElement(
|
|
6887
7086
|
Button2,
|
|
6888
7087
|
{
|
|
6889
7088
|
href: post.external_post_url || `https://${post.platform.toLowerCase()}.com`,
|
|
@@ -6895,18 +7094,18 @@ var SocialMediaGrid = ({
|
|
|
6895
7094
|
"View on ",
|
|
6896
7095
|
post.platform
|
|
6897
7096
|
)));
|
|
6898
|
-
})), totalPages > 1 && /* @__PURE__ */
|
|
7097
|
+
})), totalPages > 1 && /* @__PURE__ */ React28.createElement("div", { className: "mt-12" }, /* @__PURE__ */ React28.createElement(
|
|
6899
7098
|
PaginationPageMinimalCenter2,
|
|
6900
7099
|
{
|
|
6901
7100
|
page: currentPage,
|
|
6902
7101
|
total: totalPages,
|
|
6903
7102
|
onPageChange: setCurrentPage
|
|
6904
7103
|
}
|
|
6905
|
-
))) : /* @__PURE__ */
|
|
7104
|
+
))) : /* @__PURE__ */ React28.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React28.createElement("p", { className: "text-gray-500" }, "No social media posts available"))));
|
|
6906
7105
|
};
|
|
6907
7106
|
|
|
6908
7107
|
// src/design_system/sections/job-gallery.tsx
|
|
6909
|
-
import
|
|
7108
|
+
import React29 from "react";
|
|
6910
7109
|
import { Clock as Clock3, CurrencyDollarCircle } from "@untitledui/icons";
|
|
6911
7110
|
var JobGallery = ({
|
|
6912
7111
|
jobs: jobsData,
|
|
@@ -6925,7 +7124,7 @@ var JobGallery = ({
|
|
|
6925
7124
|
const careersPhoto = websitePhotos == null ? void 0 : websitePhotos.careers;
|
|
6926
7125
|
const finalHeaderImage = careersPhoto == null ? void 0 : careersPhoto.url;
|
|
6927
7126
|
const finalHeaderImageAlt = (careersPhoto == null ? void 0 : careersPhoto.alt) || "Team collaboration";
|
|
6928
|
-
const groupedJobs =
|
|
7127
|
+
const groupedJobs = React29.useMemo(() => {
|
|
6929
7128
|
const jobs = Array.isArray(jobsData) ? jobsData : [];
|
|
6930
7129
|
if (!jobs.length) return [];
|
|
6931
7130
|
const groups = {};
|
|
@@ -6938,7 +7137,7 @@ var JobGallery = ({
|
|
|
6938
7137
|
});
|
|
6939
7138
|
return Object.entries(groups);
|
|
6940
7139
|
}, [jobsData]);
|
|
6941
|
-
return /* @__PURE__ */
|
|
7140
|
+
return /* @__PURE__ */ React29.createElement("div", { className: `${backgroundColor} ${className}` }, /* @__PURE__ */ React29.createElement("section", { className: `${backgroundColor} py-16 md:py-24` }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto flex w-full max-w-3xl flex-col items-center text-center" }, label && /* @__PURE__ */ React29.createElement("span", { className: "text-sm font-semibold text-brand-secondary md:text-md" }, label), /* @__PURE__ */ React29.createElement("h1", { className: "mt-3 text-display-md font-semibold text-primary md:text-display-lg" }, title), /* @__PURE__ */ React29.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-6 md:text-xl" }, subtitle)))), /* @__PURE__ */ React29.createElement("section", { className: `${backgroundColor} py-16 md:py-24` }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto flex w-full max-w-3xl flex-col items-center text-center" }, /* @__PURE__ */ React29.createElement(Badge2, { className: "hidden md:flex", size: "lg", color: "brand", type: "pill-color" }, "Careers"), /* @__PURE__ */ React29.createElement(Badge2, { className: "md:hidden", size: "md", color: "brand", type: "pill-color" }, "Careers"), /* @__PURE__ */ React29.createElement("h2", { className: "mt-4 text-display-sm font-semibold text-primary md:text-display-md" }, title), /* @__PURE__ */ React29.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), /* @__PURE__ */ React29.createElement("div", { className: "mt-12 h-60 w-full md:mt-16 md:h-140 rounded-xl overflow-hidden" }, /* @__PURE__ */ React29.createElement(
|
|
6942
7141
|
PhotoWithFallback2,
|
|
6943
7142
|
{
|
|
6944
7143
|
photoUrl: finalHeaderImage,
|
|
@@ -6946,20 +7145,20 @@ var JobGallery = ({
|
|
|
6946
7145
|
fallbackId: "careers-header",
|
|
6947
7146
|
className: "size-full object-cover"
|
|
6948
7147
|
}
|
|
6949
|
-
)), groupedJobs.length > 0 ? /* @__PURE__ */
|
|
7148
|
+
)), groupedJobs.length > 0 ? /* @__PURE__ */ React29.createElement("div", { className: "mx-auto mt-12 max-w-3xl md:mt-16" }, /* @__PURE__ */ React29.createElement("ul", { className: "flex flex-col gap-8 md:gap-16" }, groupedJobs.map(([category, categoryJobs]) => /* @__PURE__ */ React29.createElement("li", { key: category }, /* @__PURE__ */ React29.createElement("h2", { className: "text-lg font-semibold text-primary md:text-xl" }, category), /* @__PURE__ */ React29.createElement("ul", { className: "mt-5 flex flex-col gap-4 md:mt-8 md:gap-6" }, categoryJobs.map((job, index) => {
|
|
6950
7149
|
var _a2;
|
|
6951
7150
|
const description = ((_a2 = job.description_markdown) == null ? void 0 : _a2.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
6952
|
-
return /* @__PURE__ */
|
|
7151
|
+
return /* @__PURE__ */ React29.createElement("li", { key: job.id || index }, /* @__PURE__ */ React29.createElement(
|
|
6953
7152
|
"a",
|
|
6954
7153
|
{
|
|
6955
7154
|
href: `/careers/${job.slug}`,
|
|
6956
7155
|
className: "flex flex-col rounded-2xl bg-primary p-6 ring-1 ring-secondary ring-inset hover:ring-2 hover:ring-brand-secondary transition-all"
|
|
6957
7156
|
},
|
|
6958
|
-
/* @__PURE__ */
|
|
6959
|
-
/* @__PURE__ */
|
|
6960
|
-
/* @__PURE__ */
|
|
7157
|
+
/* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-start gap-2 md:flex-row" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-md font-semibold text-primary" }, job.title), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-1 gap-2 md:flex-row-reverse md:justify-between" }, job.location && /* @__PURE__ */ React29.createElement(Badge2, { color: "gray", size: "md", type: "modern" }, job.location), job.employment_type && /* @__PURE__ */ React29.createElement(BadgeWithDot2, { color: "brand", size: "md", type: "modern" }, job.employment_type))),
|
|
7158
|
+
/* @__PURE__ */ React29.createElement("p", { className: "mt-2 text-md text-tertiary line-clamp-2" }, description),
|
|
7159
|
+
/* @__PURE__ */ React29.createElement("div", { className: "mt-5 flex gap-4" }, job.employment_type && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement(Clock3, { size: 20, className: "text-fg-quaternary" }), /* @__PURE__ */ React29.createElement("span", { className: "text-sm font-medium text-tertiary" }, job.employment_type)), job.salary_range && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement(CurrencyDollarCircle, { size: 20, className: "text-fg-quaternary" }), /* @__PURE__ */ React29.createElement("span", { className: "text-sm font-medium text-tertiary" }, job.salary_range)))
|
|
6961
7160
|
));
|
|
6962
|
-
})))))) : /* @__PURE__ */
|
|
7161
|
+
})))))) : /* @__PURE__ */ React29.createElement("div", { className: "text-center mt-12" }, /* @__PURE__ */ React29.createElement("p", { className: "text-gray-500 mb-4" }, "No open positions at the moment."), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600 mb-6" }, "We're always looking for talented individuals to join our team."), /* @__PURE__ */ React29.createElement(Button2, { href: primaryCtaHref, target: isExternalCtaUrl(primaryCtaHref) ? "_blank" : void 0, rel: isExternalCtaUrl(primaryCtaHref) ? "noopener noreferrer" : void 0 }, "Send Us Your Resume")))));
|
|
6963
7162
|
};
|
|
6964
7163
|
|
|
6965
7164
|
// src/design_system/sections/blog-home.tsx
|
|
@@ -7042,7 +7241,7 @@ var BlogHome = ({
|
|
|
7042
7241
|
};
|
|
7043
7242
|
|
|
7044
7243
|
// src/design_system/sections/blog-gallery.tsx
|
|
7045
|
-
import
|
|
7244
|
+
import React30, { useState as useState12 } from "react";
|
|
7046
7245
|
import { ArrowUpRight as ArrowUpRight4 } from "@untitledui/icons";
|
|
7047
7246
|
|
|
7048
7247
|
// src/design_system/sections/blog-cards.tsx
|
|
@@ -7476,16 +7675,16 @@ var BlogGallery = ({
|
|
|
7476
7675
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
7477
7676
|
const endIndex = startIndex + postsPerPage;
|
|
7478
7677
|
const paginatedNonFeaturedPosts = nonFeaturedPosts.slice(startIndex, endIndex);
|
|
7479
|
-
|
|
7678
|
+
React30.useEffect(() => {
|
|
7480
7679
|
setCurrentPage(1);
|
|
7481
7680
|
}, [sortBy]);
|
|
7482
|
-
return /* @__PURE__ */
|
|
7681
|
+
return /* @__PURE__ */ React30.createElement("section", { className }, /* @__PURE__ */ React30.createElement("div", { className: "mx-auto flex w-full max-w-container flex-col gap-12 px-4 md:gap-16 md:px-8" }, posts.length > 0 ? /* @__PURE__ */ React30.createElement(React30.Fragment, null, featuredPost && /* @__PURE__ */ React30.createElement(
|
|
7483
7682
|
"a",
|
|
7484
7683
|
{
|
|
7485
7684
|
href: `/blog/${featuredPost.slug}`,
|
|
7486
7685
|
className: "group hidden w-full overflow-hidden rounded-2xl outline-focus-ring select-none focus:outline-2 focus:outline-offset-4 md:flex md:flex-col"
|
|
7487
7686
|
},
|
|
7488
|
-
/* @__PURE__ */
|
|
7687
|
+
/* @__PURE__ */ React30.createElement("div", { className: "relative w-full overflow-hidden rounded-t-2xl md:h-145 lg:h-180" }, /* @__PURE__ */ React30.createElement(
|
|
7489
7688
|
PhotoWithFallback2,
|
|
7490
7689
|
{
|
|
7491
7690
|
item: featuredPost,
|
|
@@ -7496,9 +7695,9 @@ var BlogGallery = ({
|
|
|
7496
7695
|
)),
|
|
7497
7696
|
(() => {
|
|
7498
7697
|
const { title, summary, publishedAt, authorName, authorAvatarUrl } = getBlogPostData(featuredPost);
|
|
7499
|
-
return /* @__PURE__ */
|
|
7698
|
+
return /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col gap-4 rounded-b-2xl border border-t-0 border-secondary bg-primary p-6" }, /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-start gap-2" }, /* @__PURE__ */ React30.createElement("p", { className: "flex-1 text-display-xs font-semibold text-primary" }, title), /* @__PURE__ */ React30.createElement(ArrowUpRight4, { className: "size-5 shrink-0 text-tertiary group-hover:text-brand-secondary" })), summary && /* @__PURE__ */ React30.createElement("p", { className: "line-clamp-2 text-md text-tertiary" }, summary)), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-wrap items-center gap-4 text-sm text-tertiary" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React30.createElement(Avatar2, { focusable: true, size: "sm", src: authorAvatarUrl, alt: authorName }), /* @__PURE__ */ React30.createElement("span", { className: "font-medium" }, authorName)), /* @__PURE__ */ React30.createElement("span", null, publishedAt)));
|
|
7500
7699
|
})()
|
|
7501
|
-
), featuredPost && /* @__PURE__ */
|
|
7700
|
+
), featuredPost && /* @__PURE__ */ React30.createElement("div", { className: "md:hidden" }, /* @__PURE__ */ React30.createElement(BlogCardVertical, { article: featuredPost })), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-end gap-8 md:flex-row" }, /* @__PURE__ */ React30.createElement("div", { className: "relative w-full md:w-auto md:min-w-36 md:max-w-40" }, /* @__PURE__ */ React30.createElement(
|
|
7502
7701
|
Select3,
|
|
7503
7702
|
{
|
|
7504
7703
|
"aria-label": "Sort by",
|
|
@@ -7507,8 +7706,8 @@ var BlogGallery = ({
|
|
|
7507
7706
|
onSelectionChange: (value) => setSortBy(value),
|
|
7508
7707
|
items: defaultSortByOptions
|
|
7509
7708
|
},
|
|
7510
|
-
(item) => /* @__PURE__ */
|
|
7511
|
-
))), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */
|
|
7709
|
+
(item) => /* @__PURE__ */ React30.createElement(SelectItem2, { id: item.id }, item.label)
|
|
7710
|
+
))), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */ React30.createElement("ul", { className: "grid grid-cols-1 gap-x-8 gap-y-12 md:grid-cols-2 md:gap-y-12 lg:grid-cols-3" }, paginatedNonFeaturedPosts.map((post) => /* @__PURE__ */ React30.createElement("li", { key: post.id, className: cx(!isDesktop && "nth-[n+7]:hidden") }, /* @__PURE__ */ React30.createElement(BlogCardVertical, { article: post })))), totalPages > 1 && /* @__PURE__ */ React30.createElement(
|
|
7512
7711
|
PaginationPageDefault2,
|
|
7513
7712
|
{
|
|
7514
7713
|
rounded: true,
|
|
@@ -7516,11 +7715,11 @@ var BlogGallery = ({
|
|
|
7516
7715
|
total: totalPages,
|
|
7517
7716
|
onPageChange: setCurrentPage
|
|
7518
7717
|
}
|
|
7519
|
-
)) : /* @__PURE__ */
|
|
7718
|
+
)) : /* @__PURE__ */ React30.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React30.createElement("p", { className: "text-gray-500" }, "No blog posts available"))));
|
|
7520
7719
|
};
|
|
7521
7720
|
|
|
7522
7721
|
// src/design_system/sections/blog-post.tsx
|
|
7523
|
-
import
|
|
7722
|
+
import React31, { useState as useState13 } from "react";
|
|
7524
7723
|
import { Link01, Copy01 } from "@untitledui/icons";
|
|
7525
7724
|
|
|
7526
7725
|
// src/utils/markdown-toc.ts
|
|
@@ -7590,16 +7789,16 @@ var BlogPostSection = ({
|
|
|
7590
7789
|
}
|
|
7591
7790
|
};
|
|
7592
7791
|
if (!blogPost) {
|
|
7593
|
-
return /* @__PURE__ */
|
|
7792
|
+
return /* @__PURE__ */ React31.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React31.createElement("div", { className: "text-gray-600 text-6xl mb-4" }, "\u{1F4DD}"), /* @__PURE__ */ React31.createElement("h3", { className: "text-xl font-semibold text-gray-900 mb-2" }, "Blog Post Not Found"), /* @__PURE__ */ React31.createElement("p", { className: "text-gray-600 mb-4" }, "The blog post you're looking for doesn't exist."), /* @__PURE__ */ React31.createElement(Button2, { href: "/blog" }, "View All Blog Posts"));
|
|
7594
7793
|
}
|
|
7595
|
-
return /* @__PURE__ */
|
|
7794
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("section", { className: "bg-primary py-2 md:py-2" }, /* @__PURE__ */ React31.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React31.createElement(
|
|
7596
7795
|
Breadcrumb2,
|
|
7597
7796
|
{
|
|
7598
7797
|
backHref: "/blog",
|
|
7599
7798
|
backLabel: "Blog",
|
|
7600
7799
|
currentLabel: blogPost.title
|
|
7601
7800
|
}
|
|
7602
|
-
))), /* @__PURE__ */
|
|
7801
|
+
))), /* @__PURE__ */ React31.createElement("section", { className: "bg-primary py-4 md:py-6" }, /* @__PURE__ */ React31.createElement("div", { className: "relative mx-auto max-w-container gap-16 px-4 pb-16 md:gap-8 md:px-8 md:pt-16 md:pb-24 grid grid-cols-1 items-center md:grid-cols-2" }, /* @__PURE__ */ React31.createElement("div", { className: "flex max-w-180 flex-col items-start" }, /* @__PURE__ */ React31.createElement(
|
|
7603
7802
|
BadgeGroup2,
|
|
7604
7803
|
{
|
|
7605
7804
|
size: "md",
|
|
@@ -7610,7 +7809,7 @@ var BlogPostSection = ({
|
|
|
7610
7809
|
iconTrailing: null
|
|
7611
7810
|
},
|
|
7612
7811
|
blogPost.reading_time_minutes ? `${blogPost.reading_time_minutes} min read` : blogPost.published_at ? formatDate4(blogPost.published_at) : "Recent"
|
|
7613
|
-
), /* @__PURE__ */
|
|
7812
|
+
), /* @__PURE__ */ React31.createElement("h1", { className: "mt-4 text-display-md font-semibold text-primary md:text-display-lg" }, blogPost.title), blogPost.excerpt && /* @__PURE__ */ React31.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-6 md:max-w-120 md:text-xl" }, (blogPost.excerpt || ((_b = blogPost.excerpt_markdown) == null ? void 0 : _b.replace(/[#*\[\]()]/g, "").trim()) || "").replace(/[#*\[\]()]/g, "").trim())), /* @__PURE__ */ React31.createElement(
|
|
7614
7813
|
PhotoWithFallback2,
|
|
7615
7814
|
{
|
|
7616
7815
|
item: blogPost,
|
|
@@ -7618,7 +7817,7 @@ var BlogPostSection = ({
|
|
|
7618
7817
|
alt: blogPost.title,
|
|
7619
7818
|
className: "order-first -ml-4 h-36 w-screen max-w-none object-cover md:order-1 md:ml-0 md:h-96 md:w-full md:max-w-full rounded-2xl"
|
|
7620
7819
|
}
|
|
7621
|
-
)), blogPost.content_markdown && /* @__PURE__ */
|
|
7820
|
+
)), blogPost.content_markdown && /* @__PURE__ */ React31.createElement("div", { className: "mx-auto max-w-container px-4 pb-16 md:px-8 md:pb-24" }, /* @__PURE__ */ React31.createElement("div", { className: "mx-auto flex justify-center gap-16" }, /* @__PURE__ */ React31.createElement("div", { className: "hidden w-70 flex-col gap-8 lg:flex" }, tableOfContents.length > 0 && /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("div", { className: "w-full border-t border-secondary" }), /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React31.createElement("p", { className: "text-md font-semibold text-brand-secondary" }, "Table of contents"), /* @__PURE__ */ React31.createElement("ul", { className: "flex flex-col gap-3" }, tableOfContents.map((item) => /* @__PURE__ */ React31.createElement("li", { key: item.id }, /* @__PURE__ */ React31.createElement(
|
|
7622
7821
|
Button2,
|
|
7623
7822
|
{
|
|
7624
7823
|
size: "lg",
|
|
@@ -7626,12 +7825,12 @@ var BlogPostSection = ({
|
|
|
7626
7825
|
href: `#${item.id}`,
|
|
7627
7826
|
className: `${item.level === 3 ? "pl-4" : ""} w-full text-left whitespace-normal justify-start`
|
|
7628
7827
|
},
|
|
7629
|
-
/* @__PURE__ */
|
|
7630
|
-
))))), /* @__PURE__ */
|
|
7828
|
+
/* @__PURE__ */ React31.createElement("span", { className: "break-words block w-full" }, item.title)
|
|
7829
|
+
))))), /* @__PURE__ */ React31.createElement("div", { className: "w-full border-t border-secondary" })), blogPost.blog_post_authors && Array.isArray(blogPost.blog_post_authors) && blogPost.blog_post_authors.length > 0 && /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React31.createElement("p", { className: "text-md font-semibold text-brand-secondary" }, "Author"), /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-3" }, (() => {
|
|
7631
7830
|
const author = blogPost.blog_post_authors[0];
|
|
7632
7831
|
const authorName = (author == null ? void 0 : author.name) || "Author";
|
|
7633
7832
|
const authorAvatarUrl = getAvatarUrl(author == null ? void 0 : author.photo_attachments, author == null ? void 0 : author.id, authorName);
|
|
7634
|
-
return /* @__PURE__ */
|
|
7833
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(
|
|
7635
7834
|
Avatar2,
|
|
7636
7835
|
{
|
|
7637
7836
|
src: authorAvatarUrl != null ? authorAvatarUrl : void 0,
|
|
@@ -7639,8 +7838,8 @@ var BlogPostSection = ({
|
|
|
7639
7838
|
initials: authorName.trim().charAt(0).toUpperCase() || "?",
|
|
7640
7839
|
size: "md"
|
|
7641
7840
|
}
|
|
7642
|
-
), /* @__PURE__ */
|
|
7643
|
-
})())), /* @__PURE__ */
|
|
7841
|
+
), /* @__PURE__ */ React31.createElement("div", null, /* @__PURE__ */ React31.createElement("p", { className: "text-md font-semibold text-primary" }, authorName), (author == null ? void 0 : author.bio_markdown) && /* @__PURE__ */ React31.createElement("p", { className: "text-md text-tertiary" }, author.bio_markdown.replace(/[#*\[\]()]/g, "").trim().substring(0, 100))));
|
|
7842
|
+
})())), /* @__PURE__ */ React31.createElement("div", { className: "w-full border-t border-secondary" }), /* @__PURE__ */ React31.createElement(
|
|
7644
7843
|
Form2,
|
|
7645
7844
|
{
|
|
7646
7845
|
onSubmit: (e) => {
|
|
@@ -7650,30 +7849,30 @@ var BlogPostSection = ({
|
|
|
7650
7849
|
},
|
|
7651
7850
|
className: "flex flex-col gap-4"
|
|
7652
7851
|
},
|
|
7653
|
-
/* @__PURE__ */
|
|
7654
|
-
/* @__PURE__ */
|
|
7655
|
-
/* @__PURE__ */
|
|
7656
|
-
), /* @__PURE__ */
|
|
7852
|
+
/* @__PURE__ */ React31.createElement("label", { htmlFor: "blog-email-input", className: "text-md font-semibold text-brand-secondary" }, "Subscribe to our newsletter"),
|
|
7853
|
+
/* @__PURE__ */ React31.createElement(Input3, { isRequired: true, id: "blog-email-input", name: "email", type: "email", placeholder: "Enter your email", size: "md" }),
|
|
7854
|
+
/* @__PURE__ */ React31.createElement(Button2, { type: "submit", size: "xl" }, "Subscribe")
|
|
7855
|
+
), /* @__PURE__ */ React31.createElement("div", { className: "w-full border-t border-secondary" }), /* @__PURE__ */ React31.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React31.createElement(
|
|
7657
7856
|
"button",
|
|
7658
7857
|
{
|
|
7659
7858
|
onClick: handleShareLink,
|
|
7660
7859
|
title: "Share link",
|
|
7661
7860
|
className: "inline-flex h-max cursor-pointer items-center justify-center gap-1.5 rounded-lg px-3.5 py-2.5 text-sm font-semibold outline-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2 bg-secondary text-primary hover:bg-secondary_hover"
|
|
7662
7861
|
},
|
|
7663
|
-
/* @__PURE__ */
|
|
7664
|
-
), /* @__PURE__ */
|
|
7862
|
+
/* @__PURE__ */ React31.createElement(Link01, { className: "size-5 shrink-0" })
|
|
7863
|
+
), /* @__PURE__ */ React31.createElement(
|
|
7665
7864
|
"button",
|
|
7666
7865
|
{
|
|
7667
7866
|
onClick: handleCopyLink,
|
|
7668
7867
|
title: copied ? "Copied!" : "Copy link",
|
|
7669
7868
|
className: "inline-flex h-max cursor-pointer items-center justify-center gap-1.5 rounded-lg px-3.5 py-2.5 text-sm font-semibold outline-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2 bg-secondary text-fg-quaternary hover:bg-secondary_hover"
|
|
7670
7869
|
},
|
|
7671
|
-
/* @__PURE__ */
|
|
7672
|
-
))), /* @__PURE__ */
|
|
7870
|
+
/* @__PURE__ */ React31.createElement(Copy01, { className: "size-5 shrink-0" })
|
|
7871
|
+
))), /* @__PURE__ */ React31.createElement("div", { className: "max-w-prose lg:max-w-180" }, /* @__PURE__ */ React31.createElement("div", { className: "prose-centered-quote mx-auto prose md:prose-lg", id: "content" }, /* @__PURE__ */ React31.createElement(MarkdownRenderer2, { content: blogPost.content_markdown || "" })), /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-start justify-between gap-y-8 lg:hidden lg:flex-row mt-8" }, blogPost.blog_post_authors && Array.isArray(blogPost.blog_post_authors) && blogPost.blog_post_authors.length > 0 && /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React31.createElement("p", { className: "text-md font-semibold text-brand-secondary" }, "Author"), /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-3" }, (() => {
|
|
7673
7872
|
const author = blogPost.blog_post_authors[0];
|
|
7674
7873
|
const authorName = (author == null ? void 0 : author.name) || "Author";
|
|
7675
7874
|
const authorAvatarUrl = getAvatarUrl(author == null ? void 0 : author.photo_attachments, author == null ? void 0 : author.id, authorName);
|
|
7676
|
-
return /* @__PURE__ */
|
|
7875
|
+
return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement(
|
|
7677
7876
|
Avatar2,
|
|
7678
7877
|
{
|
|
7679
7878
|
src: authorAvatarUrl != null ? authorAvatarUrl : void 0,
|
|
@@ -7681,24 +7880,24 @@ var BlogPostSection = ({
|
|
|
7681
7880
|
initials: authorName.trim().charAt(0).toUpperCase() || "?",
|
|
7682
7881
|
size: "md"
|
|
7683
7882
|
}
|
|
7684
|
-
), /* @__PURE__ */
|
|
7685
|
-
})())), /* @__PURE__ */
|
|
7883
|
+
), /* @__PURE__ */ React31.createElement("div", null, /* @__PURE__ */ React31.createElement("p", { className: "text-md font-semibold text-primary" }, authorName), (author == null ? void 0 : author.bio_markdown) && /* @__PURE__ */ React31.createElement("p", { className: "text-md text-tertiary" }, author.bio_markdown.replace(/[#*\[\]()]/g, "").trim().substring(0, 100))));
|
|
7884
|
+
})())), /* @__PURE__ */ React31.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React31.createElement(
|
|
7686
7885
|
"button",
|
|
7687
7886
|
{
|
|
7688
7887
|
onClick: handleShareLink,
|
|
7689
7888
|
title: "Share link",
|
|
7690
7889
|
className: "inline-flex h-max cursor-pointer items-center justify-center gap-1.5 rounded-lg px-3.5 py-2.5 text-sm font-semibold outline-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2 bg-secondary text-primary hover:bg-secondary_hover"
|
|
7691
7890
|
},
|
|
7692
|
-
/* @__PURE__ */
|
|
7693
|
-
), /* @__PURE__ */
|
|
7891
|
+
/* @__PURE__ */ React31.createElement(Link01, { className: "size-5 shrink-0" })
|
|
7892
|
+
), /* @__PURE__ */ React31.createElement(
|
|
7694
7893
|
"button",
|
|
7695
7894
|
{
|
|
7696
7895
|
onClick: handleCopyLink,
|
|
7697
7896
|
title: copied ? "Copied!" : "Copy link",
|
|
7698
7897
|
className: "inline-flex h-max cursor-pointer items-center justify-center gap-1.5 rounded-lg px-3.5 py-2.5 text-sm font-semibold outline-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2 bg-secondary text-fg-quaternary hover:bg-secondary_hover"
|
|
7699
7898
|
},
|
|
7700
|
-
/* @__PURE__ */
|
|
7701
|
-
))))))), /* @__PURE__ */
|
|
7899
|
+
/* @__PURE__ */ React31.createElement(Copy01, { className: "size-5 shrink-0" })
|
|
7900
|
+
))))))), /* @__PURE__ */ React31.createElement("section", { className: "bg-primary pb-16 md:pb-24" }, /* @__PURE__ */ React31.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React31.createElement("div", { className: "mx-auto max-w-prose md:max-w-180" }, /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-end border-t border-secondary pt-8" }, blogPost.tags && Array.isArray(blogPost.tags) && blogPost.tags.length > 0 && /* @__PURE__ */ React31.createElement("div", { className: "flex flex-wrap gap-2" }, blogPost.tags.map((tag, index) => /* @__PURE__ */ React31.createElement(Badge2, { key: index, color: "gray", size: "md", type: "modern" }, typeof tag === "string" ? tag : tag.name))))))));
|
|
7702
7901
|
};
|
|
7703
7902
|
|
|
7704
7903
|
// src/design_system/sections/contact-home.tsx
|
|
@@ -7718,7 +7917,7 @@ var ContactHome = ({
|
|
|
7718
7917
|
};
|
|
7719
7918
|
|
|
7720
7919
|
// src/design_system/sections/faq-grid.tsx
|
|
7721
|
-
import
|
|
7920
|
+
import React32 from "react";
|
|
7722
7921
|
var renderMarkdown = (content) => {
|
|
7723
7922
|
let html = content.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" class="text-brand-secondary underline">$1</a>');
|
|
7724
7923
|
html = html.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>");
|
|
@@ -7744,17 +7943,17 @@ var FAQGrid = ({
|
|
|
7744
7943
|
const faqs = Array.isArray(faqsData) ? faqsData : [];
|
|
7745
7944
|
const resolved = companyInformation ? resolveCtaUrls(companyInformation) : null;
|
|
7746
7945
|
const effectiveCtaButtonHref = (_a = ctaButtonHref != null ? ctaButtonHref : resolved == null ? void 0 : resolved.primaryHref) != null ? _a : "/contact";
|
|
7747
|
-
return /* @__PURE__ */
|
|
7946
|
+
return /* @__PURE__ */ React32.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}`, id: "faq" }, /* @__PURE__ */ React32.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, /* @__PURE__ */ React32.createElement("div", { className: "flex w-full max-w-3xl flex-col" }, /* @__PURE__ */ React32.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React32.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), faqs.length > 0 && /* @__PURE__ */ React32.createElement("div", { className: "mt-12 md:mt-16" }, /* @__PURE__ */ React32.createElement("dl", { className: "grid w-full grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-2 md:gap-y-16 lg:grid-cols-3" }, faqs.map((faq, index) => {
|
|
7748
7947
|
const answerContent = faq.answer_markdown || "";
|
|
7749
7948
|
const answerHtml = renderMarkdown(answerContent);
|
|
7750
|
-
return /* @__PURE__ */
|
|
7949
|
+
return /* @__PURE__ */ React32.createElement("div", { key: faq.id || index }, /* @__PURE__ */ React32.createElement("div", { className: "flex max-w-sm flex-col" }, /* @__PURE__ */ React32.createElement("dt", { className: "text-md font-semibold text-primary" }, faq.question), /* @__PURE__ */ React32.createElement(
|
|
7751
7950
|
"dd",
|
|
7752
7951
|
{
|
|
7753
7952
|
className: "mt-1 text-md text-tertiary",
|
|
7754
7953
|
dangerouslySetInnerHTML: { __html: answerHtml }
|
|
7755
7954
|
}
|
|
7756
7955
|
)));
|
|
7757
|
-
}))), (ctaTitle || ctaSubtitle || ctaButtonText) && /* @__PURE__ */
|
|
7956
|
+
}))), (ctaTitle || ctaSubtitle || ctaButtonText) && /* @__PURE__ */ React32.createElement("div", { className: "mt-12 flex flex-col items-start justify-between gap-6 rounded-2xl bg-secondary px-5 py-8 md:mt-16 md:flex-row md:gap-8 md:p-8" }, /* @__PURE__ */ React32.createElement("div", { className: "w-full max-w-3xl" }, ctaTitle && /* @__PURE__ */ React32.createElement("h4", { className: "text-xl font-semibold text-primary" }, ctaTitle), ctaSubtitle && /* @__PURE__ */ React32.createElement("p", { className: "mt-2 text-md text-tertiary md:text-lg" }, ctaSubtitle)), ctaButtonText && /* @__PURE__ */ React32.createElement(
|
|
7758
7957
|
Button2,
|
|
7759
7958
|
{
|
|
7760
7959
|
size: "xl",
|
|
@@ -7935,7 +8134,7 @@ import { Fragment as Fragment2 } from "react";
|
|
|
7935
8134
|
import Image10 from "next/image";
|
|
7936
8135
|
|
|
7937
8136
|
// src/design_system/elements/IconComponent.tsx
|
|
7938
|
-
import
|
|
8137
|
+
import React33 from "react";
|
|
7939
8138
|
var IconComponent = ({ icon, color: color2 = "blue", className = "" }) => {
|
|
7940
8139
|
const getIconColor = (colorName) => {
|
|
7941
8140
|
switch (colorName) {
|
|
@@ -7960,26 +8159,26 @@ var IconComponent = ({ icon, color: color2 = "blue", className = "" }) => {
|
|
|
7960
8159
|
const renderIcon = () => {
|
|
7961
8160
|
switch (icon) {
|
|
7962
8161
|
case "star":
|
|
7963
|
-
return /* @__PURE__ */
|
|
8162
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }));
|
|
7964
8163
|
case "heart":
|
|
7965
|
-
return /* @__PURE__ */
|
|
8164
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { fillRule: "evenodd", d: "M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z", clipRule: "evenodd" }));
|
|
7966
8165
|
case "home":
|
|
7967
|
-
return /* @__PURE__ */
|
|
8166
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { d: "M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" }));
|
|
7968
8167
|
case "person":
|
|
7969
|
-
return /* @__PURE__ */
|
|
8168
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { fillRule: "evenodd", d: "M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z", clipRule: "evenodd" }));
|
|
7970
8169
|
case "phone":
|
|
7971
|
-
return /* @__PURE__ */
|
|
8170
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { d: "M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.01 1.01l-.804 1.646a1 1 0 00.01 1.01l.74 4.435a1 1 0 01-.986.836H3a1 1 0 01-1-1V3z" }));
|
|
7972
8171
|
case "email":
|
|
7973
|
-
return /* @__PURE__ */
|
|
8172
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { d: "M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z" }), /* @__PURE__ */ React33.createElement("path", { d: "M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z" }));
|
|
7974
8173
|
case "location":
|
|
7975
|
-
return /* @__PURE__ */
|
|
8174
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { fillRule: "evenodd", d: "M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z", clipRule: "evenodd" }));
|
|
7976
8175
|
case "clock":
|
|
7977
|
-
return /* @__PURE__ */
|
|
8176
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z", clipRule: "evenodd" }));
|
|
7978
8177
|
default:
|
|
7979
|
-
return /* @__PURE__ */
|
|
8178
|
+
return /* @__PURE__ */ React33.createElement("svg", { className: `w-full h-full ${getIconColor(color2)}`, fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React33.createElement("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }));
|
|
7980
8179
|
}
|
|
7981
8180
|
};
|
|
7982
|
-
return /* @__PURE__ */
|
|
8181
|
+
return /* @__PURE__ */ React33.createElement("div", { className }, renderIcon());
|
|
7983
8182
|
};
|
|
7984
8183
|
var IconComponent_default = IconComponent;
|
|
7985
8184
|
|
|
@@ -8147,14 +8346,14 @@ var JobDetailHero = ({
|
|
|
8147
8346
|
};
|
|
8148
8347
|
|
|
8149
8348
|
// src/design_system/sections/job-application-form.tsx
|
|
8150
|
-
import
|
|
8349
|
+
import React34, { useRef as useRef8, useState as useState14 } from "react";
|
|
8151
8350
|
var JobApplicationForm = ({ jobSlug, formDefinition, inline = false }) => {
|
|
8152
8351
|
const { jobApplicationFormDefinition } = useFormDefinitions();
|
|
8153
8352
|
const resolvedFormDefinition = formDefinition != null ? formDefinition : jobApplicationFormDefinition;
|
|
8154
8353
|
const [isSubmitting, setIsSubmitting] = useState14(false);
|
|
8155
8354
|
const [submitStatus, setSubmitStatus] = useState14("idle");
|
|
8156
8355
|
const [statusMessage, setStatusMessage] = useState14("");
|
|
8157
|
-
const formRef =
|
|
8356
|
+
const formRef = useRef8(null);
|
|
8158
8357
|
const hasFields = resolvedFormDefinition != null && Array.isArray(resolvedFormDefinition.fields) && resolvedFormDefinition.fields.length > 0;
|
|
8159
8358
|
const handleSubmit = async (e) => {
|
|
8160
8359
|
var _a;
|
|
@@ -8190,7 +8389,7 @@ var JobApplicationForm = ({ jobSlug, formDefinition, inline = false }) => {
|
|
|
8190
8389
|
setIsSubmitting(false);
|
|
8191
8390
|
};
|
|
8192
8391
|
if (!hasFields) return null;
|
|
8193
|
-
const formContent = /* @__PURE__ */
|
|
8392
|
+
const formContent = /* @__PURE__ */ React34.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React34.createElement(DynamicFormFields, { form: resolvedFormDefinition, jobSlug }), submitStatus === "success" && /* @__PURE__ */ React34.createElement("div", { className: "rounded-lg bg-success-50 p-4 text-success-700" }, statusMessage), submitStatus === "error" && /* @__PURE__ */ React34.createElement("div", { className: "rounded-lg bg-error-50 p-4 text-error-700" }, statusMessage), /* @__PURE__ */ React34.createElement(
|
|
8194
8393
|
Button2,
|
|
8195
8394
|
{
|
|
8196
8395
|
type: "submit",
|
|
@@ -8203,7 +8402,7 @@ var JobApplicationForm = ({ jobSlug, formDefinition, inline = false }) => {
|
|
|
8203
8402
|
isSubmitting ? "Submitting..." : "Submit Application"
|
|
8204
8403
|
));
|
|
8205
8404
|
if (inline) return formContent;
|
|
8206
|
-
return /* @__PURE__ */
|
|
8405
|
+
return /* @__PURE__ */ React34.createElement("section", { id: "application-form", className: "bg-primary py-16 md:py-20" }, /* @__PURE__ */ React34.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React34.createElement("div", { className: "mx-auto max-w-2xl" }, /* @__PURE__ */ React34.createElement("div", { className: "mb-8 text-center" }, /* @__PURE__ */ React34.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, "Apply for this Position"), /* @__PURE__ */ React34.createElement("p", { className: "mt-4 text-lg text-tertiary" }, "Fill out the form below to submit your application")), formContent)));
|
|
8207
8406
|
};
|
|
8208
8407
|
|
|
8209
8408
|
// src/design_system/sections/job-detail-section.tsx
|
|
@@ -8239,9 +8438,116 @@ var PolicyDocumentSection = ({
|
|
|
8239
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 }))));
|
|
8240
8439
|
};
|
|
8241
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
|
+
|
|
8242
8548
|
// src/design_system/sections/hero-home.aman.tsx
|
|
8243
8549
|
import { Fragment as Fragment3, useState as useState15 } from "react";
|
|
8244
|
-
import
|
|
8550
|
+
import React38 from "react";
|
|
8245
8551
|
var HeroHome2 = ({
|
|
8246
8552
|
websitePhotos,
|
|
8247
8553
|
companyInformation,
|
|
@@ -8259,7 +8565,7 @@ var HeroHome2 = ({
|
|
|
8259
8565
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
8260
8566
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || "Hero image"
|
|
8261
8567
|
};
|
|
8262
|
-
return /* @__PURE__ */
|
|
8568
|
+
return /* @__PURE__ */ React38.createElement(Fragment3, null, /* @__PURE__ */ React38.createElement("section", { className: "py-24 md:py-32" }, /* @__PURE__ */ React38.createElement("div", { className: "mx-auto max-w-4xl px-4 text-center md:px-8" }, /* @__PURE__ */ React38.createElement("h1", { className: "font-display text-5xl font-normal leading-tight text-fg-primary md:text-6xl lg:text-7xl" }, headline), /* @__PURE__ */ React38.createElement("p", { className: "mt-6 font-body text-lg leading-relaxed text-tertiary md:text-xl max-w-3xl mx-auto" }, subhead), ctaText && /* @__PURE__ */ React38.createElement(
|
|
8263
8569
|
"a",
|
|
8264
8570
|
{
|
|
8265
8571
|
href: effectiveCtaHref,
|
|
@@ -8269,7 +8575,7 @@ var HeroHome2 = ({
|
|
|
8269
8575
|
style: { color: "var(--color-text-brand-accent)" }
|
|
8270
8576
|
},
|
|
8271
8577
|
ctaText
|
|
8272
|
-
))), /* @__PURE__ */
|
|
8578
|
+
))), /* @__PURE__ */ React38.createElement("section", null, /* @__PURE__ */ React38.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React38.createElement("div", { className: "relative w-full h-[400px] md:h-[500px] lg:h-[600px]" }, /* @__PURE__ */ React38.createElement(
|
|
8273
8579
|
PhotoWithFallback2,
|
|
8274
8580
|
{
|
|
8275
8581
|
photoUrl: heroImage.url,
|
|
@@ -8277,7 +8583,7 @@ var HeroHome2 = ({
|
|
|
8277
8583
|
fallbackId: "hero-home-brand",
|
|
8278
8584
|
className: "w-full h-full object-cover"
|
|
8279
8585
|
}
|
|
8280
|
-
), videoUrl && /* @__PURE__ */
|
|
8586
|
+
), videoUrl && /* @__PURE__ */ React38.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React38.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))))), videoUrl && /* @__PURE__ */ React38.createElement(
|
|
8281
8587
|
VideoModal,
|
|
8282
8588
|
{
|
|
8283
8589
|
isOpen: showVideo,
|
|
@@ -8289,7 +8595,7 @@ var HeroHome2 = ({
|
|
|
8289
8595
|
registerThemeVariant("hero-home", "aman", HeroHome2);
|
|
8290
8596
|
|
|
8291
8597
|
// src/design_system/sections/header-navigation.aman.tsx
|
|
8292
|
-
import
|
|
8598
|
+
import React39, { useState as useState16, useRef as useRef9, useCallback as useCallback5 } from "react";
|
|
8293
8599
|
import Link6 from "next/link";
|
|
8294
8600
|
import Image11 from "next/image";
|
|
8295
8601
|
var MAX_DROPDOWN_ITEMS = 3;
|
|
@@ -8302,20 +8608,20 @@ function HeaderNavigation2({
|
|
|
8302
8608
|
companyInformation,
|
|
8303
8609
|
websitePhotos
|
|
8304
8610
|
}) {
|
|
8305
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
8611
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
8306
8612
|
const [activeDropdown, setActiveDropdown] = useState16(null);
|
|
8307
8613
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState16(false);
|
|
8308
8614
|
const [dropdownTop, setDropdownTop] = useState16(0);
|
|
8309
8615
|
const [isScrolled, setIsScrolled] = useState16(false);
|
|
8310
|
-
const closeTimeoutRef =
|
|
8311
|
-
|
|
8616
|
+
const closeTimeoutRef = useRef9(null);
|
|
8617
|
+
React39.useEffect(() => {
|
|
8312
8618
|
const handleScroll = () => {
|
|
8313
8619
|
setIsScrolled(window.scrollY > 10);
|
|
8314
8620
|
};
|
|
8315
8621
|
window.addEventListener("scroll", handleScroll);
|
|
8316
8622
|
return () => window.removeEventListener("scroll", handleScroll);
|
|
8317
8623
|
}, []);
|
|
8318
|
-
|
|
8624
|
+
React39.useEffect(() => {
|
|
8319
8625
|
return () => {
|
|
8320
8626
|
if (closeTimeoutRef.current) {
|
|
8321
8627
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -8378,10 +8684,10 @@ function HeaderNavigation2({
|
|
|
8378
8684
|
viewAllLabel: ""
|
|
8379
8685
|
};
|
|
8380
8686
|
};
|
|
8381
|
-
return /* @__PURE__ */
|
|
8687
|
+
return /* @__PURE__ */ React39.createElement(React39.Fragment, null, /* @__PURE__ */ React39.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary border-b border-secondary transition-all duration-300" }, /* @__PURE__ */ React39.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React39.createElement("div", { className: cx(
|
|
8382
8688
|
"relative flex items-center justify-between transition-all duration-300",
|
|
8383
8689
|
isScrolled ? "py-2" : "py-8"
|
|
8384
|
-
) }, /* @__PURE__ */
|
|
8690
|
+
) }, /* @__PURE__ */ React39.createElement(Link6, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center" }, logoUrl && /* @__PURE__ */ React39.createElement(
|
|
8385
8691
|
Image11,
|
|
8386
8692
|
{
|
|
8387
8693
|
src: logoUrl,
|
|
@@ -8390,7 +8696,7 @@ function HeaderNavigation2({
|
|
|
8390
8696
|
width: 120,
|
|
8391
8697
|
height: 40
|
|
8392
8698
|
}
|
|
8393
|
-
)), /* @__PURE__ */
|
|
8699
|
+
)), /* @__PURE__ */ React39.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__ */ React39.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__ */ React39.createElement(
|
|
8394
8700
|
Button2,
|
|
8395
8701
|
{
|
|
8396
8702
|
href: ctaUrls.secondaryHref,
|
|
@@ -8401,18 +8707,18 @@ function HeaderNavigation2({
|
|
|
8401
8707
|
className: "font-body text-sm uppercase tracking-wide px-6 py-2 rounded-sm"
|
|
8402
8708
|
},
|
|
8403
8709
|
props.cta_button.label
|
|
8404
|
-
), /* @__PURE__ */
|
|
8710
|
+
), /* @__PURE__ */ React39.createElement(
|
|
8405
8711
|
Button2,
|
|
8406
8712
|
{
|
|
8407
8713
|
href: ctaUrls.primaryHref,
|
|
8408
|
-
target: (
|
|
8409
|
-
rel: ((
|
|
8714
|
+
target: (_h = (_g = props == null ? void 0 : props.cta_button) == null ? void 0 : _g.target) != null ? _h : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
8715
|
+
rel: ((_i = props == null ? void 0 : props.cta_button) == null ? void 0 : _i.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
8410
8716
|
size: "sm",
|
|
8411
8717
|
color: "primary",
|
|
8412
8718
|
className: "font-body text-sm uppercase tracking-wide px-6 py-2 rounded-sm"
|
|
8413
8719
|
},
|
|
8414
|
-
((
|
|
8415
|
-
))), /* @__PURE__ */
|
|
8720
|
+
((_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__ */ React39.createElement("nav", { className: "border-b border-secondary" }, /* @__PURE__ */ React39.createElement("div", { className: "flex items-center justify-center gap-8 py-4" }, navigation.map((item, i) => /* @__PURE__ */ React39.createElement(
|
|
8416
8722
|
"div",
|
|
8417
8723
|
{
|
|
8418
8724
|
key: i,
|
|
@@ -8420,7 +8726,7 @@ function HeaderNavigation2({
|
|
|
8420
8726
|
onMouseEnter: (e) => handleMouseEnter(item, e),
|
|
8421
8727
|
onMouseLeave: handleMouseLeave
|
|
8422
8728
|
},
|
|
8423
|
-
/* @__PURE__ */
|
|
8729
|
+
/* @__PURE__ */ React39.createElement(
|
|
8424
8730
|
Link6,
|
|
8425
8731
|
{
|
|
8426
8732
|
href: item.href,
|
|
@@ -8431,7 +8737,7 @@ function HeaderNavigation2({
|
|
|
8431
8737
|
},
|
|
8432
8738
|
item.label
|
|
8433
8739
|
),
|
|
8434
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
8740
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React39.createElement(
|
|
8435
8741
|
"div",
|
|
8436
8742
|
{
|
|
8437
8743
|
className: "fixed left-0 right-0 w-full pt-6 pb-6 border-b border-secondary bg-primary z-50",
|
|
@@ -8439,9 +8745,9 @@ function HeaderNavigation2({
|
|
|
8439
8745
|
onMouseEnter: handleDropdownMouseEnter,
|
|
8440
8746
|
onMouseLeave: handleDropdownMouseLeave
|
|
8441
8747
|
},
|
|
8442
|
-
/* @__PURE__ */
|
|
8748
|
+
/* @__PURE__ */ React39.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React39.createElement("div", { className: "flex items-center justify-center gap-8" }, (() => {
|
|
8443
8749
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
8444
|
-
return /* @__PURE__ */
|
|
8750
|
+
return /* @__PURE__ */ React39.createElement(React39.Fragment, null, items.map((link, j) => /* @__PURE__ */ React39.createElement(
|
|
8445
8751
|
Link6,
|
|
8446
8752
|
{
|
|
8447
8753
|
key: j,
|
|
@@ -8449,7 +8755,7 @@ function HeaderNavigation2({
|
|
|
8449
8755
|
className: "font-body text-sm text-fg-primary hover:underline whitespace-nowrap"
|
|
8450
8756
|
},
|
|
8451
8757
|
link.label
|
|
8452
|
-
)), showViewAll && /* @__PURE__ */
|
|
8758
|
+
)), showViewAll && /* @__PURE__ */ React39.createElement(
|
|
8453
8759
|
Link6,
|
|
8454
8760
|
{
|
|
8455
8761
|
href: viewAllHref,
|
|
@@ -8460,15 +8766,15 @@ function HeaderNavigation2({
|
|
|
8460
8766
|
));
|
|
8461
8767
|
})()))
|
|
8462
8768
|
)
|
|
8463
|
-
)))))), /* @__PURE__ */
|
|
8769
|
+
)))))), /* @__PURE__ */ React39.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary border-b border-secondary" }, /* @__PURE__ */ React39.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React39.createElement(
|
|
8464
8770
|
"button",
|
|
8465
8771
|
{
|
|
8466
8772
|
onClick: () => setIsMobileMenuOpen(true),
|
|
8467
8773
|
className: "text-fg-primary",
|
|
8468
8774
|
"aria-label": "Open menu"
|
|
8469
8775
|
},
|
|
8470
|
-
/* @__PURE__ */
|
|
8471
|
-
), /* @__PURE__ */
|
|
8776
|
+
/* @__PURE__ */ React39.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React39.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
8777
|
+
), /* @__PURE__ */ React39.createElement(Link6, { href: ((_l = props == null ? void 0 : props.logo) == null ? void 0 : _l.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React39.createElement(
|
|
8472
8778
|
Image11,
|
|
8473
8779
|
{
|
|
8474
8780
|
src: logoUrl,
|
|
@@ -8477,15 +8783,15 @@ function HeaderNavigation2({
|
|
|
8477
8783
|
width: 120,
|
|
8478
8784
|
height: 32
|
|
8479
8785
|
}
|
|
8480
|
-
) : /* @__PURE__ */
|
|
8786
|
+
) : /* @__PURE__ */ React39.createElement("span", { className: "font-display text-xl font-normal uppercase tracking-widest text-fg-primary" }, companyName)), /* @__PURE__ */ React39.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React39.createElement("div", { className: "fixed inset-0 bg-white z-50 md:hidden" }, /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React39.createElement("div", { className: "flex items-center justify-between px-4 py-4 border-b border-secondary" }, /* @__PURE__ */ React39.createElement(
|
|
8481
8787
|
"button",
|
|
8482
8788
|
{
|
|
8483
8789
|
onClick: () => setIsMobileMenuOpen(false),
|
|
8484
8790
|
className: "text-fg-primary",
|
|
8485
8791
|
"aria-label": "Close menu"
|
|
8486
8792
|
},
|
|
8487
|
-
/* @__PURE__ */
|
|
8488
|
-
), /* @__PURE__ */
|
|
8793
|
+
/* @__PURE__ */ React39.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React39.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
8794
|
+
), /* @__PURE__ */ React39.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React39.createElement(
|
|
8489
8795
|
Image11,
|
|
8490
8796
|
{
|
|
8491
8797
|
src: logoUrl,
|
|
@@ -8494,9 +8800,9 @@ function HeaderNavigation2({
|
|
|
8494
8800
|
width: 120,
|
|
8495
8801
|
height: 32
|
|
8496
8802
|
}
|
|
8497
|
-
) : /* @__PURE__ */
|
|
8803
|
+
) : /* @__PURE__ */ React39.createElement("span", { className: "font-display text-xl font-normal uppercase tracking-widest text-fg-primary" }, companyName)), /* @__PURE__ */ React39.createElement("div", { className: "w-6" })), /* @__PURE__ */ React39.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React39.createElement("ul", { className: "space-y-4" }, navigation.map((item, i) => {
|
|
8498
8804
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
8499
|
-
return /* @__PURE__ */
|
|
8805
|
+
return /* @__PURE__ */ React39.createElement("li", { key: i }, /* @__PURE__ */ React39.createElement(
|
|
8500
8806
|
Link6,
|
|
8501
8807
|
{
|
|
8502
8808
|
href: item.href,
|
|
@@ -8504,7 +8810,7 @@ function HeaderNavigation2({
|
|
|
8504
8810
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8505
8811
|
},
|
|
8506
8812
|
item.label
|
|
8507
|
-
), items.length > 0 && /* @__PURE__ */
|
|
8813
|
+
), items.length > 0 && /* @__PURE__ */ React39.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, items.map((link, j) => /* @__PURE__ */ React39.createElement("li", { key: j }, /* @__PURE__ */ React39.createElement(
|
|
8508
8814
|
Link6,
|
|
8509
8815
|
{
|
|
8510
8816
|
href: link.href,
|
|
@@ -8512,7 +8818,7 @@ function HeaderNavigation2({
|
|
|
8512
8818
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8513
8819
|
},
|
|
8514
8820
|
link.label
|
|
8515
|
-
))), showViewAll && /* @__PURE__ */
|
|
8821
|
+
))), showViewAll && /* @__PURE__ */ React39.createElement("li", null, /* @__PURE__ */ React39.createElement(
|
|
8516
8822
|
Link6,
|
|
8517
8823
|
{
|
|
8518
8824
|
href: viewAllHref,
|
|
@@ -8522,7 +8828,7 @@ function HeaderNavigation2({
|
|
|
8522
8828
|
viewAllLabel,
|
|
8523
8829
|
" \u2192"
|
|
8524
8830
|
))));
|
|
8525
|
-
}))), /* @__PURE__ */
|
|
8831
|
+
}))), /* @__PURE__ */ React39.createElement("div", { className: "border-t border-secondary px-4 py-6" }, /* @__PURE__ */ React39.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__ */ React39.createElement(
|
|
8526
8832
|
Button2,
|
|
8527
8833
|
{
|
|
8528
8834
|
href: ctaUrls.secondaryHref,
|
|
@@ -8533,18 +8839,18 @@ function HeaderNavigation2({
|
|
|
8533
8839
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8534
8840
|
},
|
|
8535
8841
|
props.cta_button.label
|
|
8536
|
-
), /* @__PURE__ */
|
|
8842
|
+
), /* @__PURE__ */ React39.createElement(
|
|
8537
8843
|
Button2,
|
|
8538
8844
|
{
|
|
8539
8845
|
href: ctaUrls.primaryHref,
|
|
8540
|
-
target: (
|
|
8541
|
-
rel: ((
|
|
8846
|
+
target: (_o = (_n = props == null ? void 0 : props.cta_button) == null ? void 0 : _n.target) != null ? _o : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
8847
|
+
rel: ((_p = props == null ? void 0 : props.cta_button) == null ? void 0 : _p.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
8542
8848
|
color: "primary",
|
|
8543
8849
|
className: "w-full font-body text-sm uppercase tracking-wide py-3 rounded-sm",
|
|
8544
8850
|
onClick: () => setIsMobileMenuOpen(false)
|
|
8545
8851
|
},
|
|
8546
|
-
((
|
|
8547
|
-
))))), /* @__PURE__ */
|
|
8852
|
+
((_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__ */ React39.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden bg-fg-primary" }, /* @__PURE__ */ React39.createElement("div", { className: "flex gap-0" }, ((_s = props == null ? void 0 : props.cta_button) == null ? void 0 : _s.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React39.createElement(
|
|
8548
8854
|
Button2,
|
|
8549
8855
|
{
|
|
8550
8856
|
href: ctaUrls.secondaryHref,
|
|
@@ -8554,16 +8860,16 @@ function HeaderNavigation2({
|
|
|
8554
8860
|
className: "flex-1 font-body text-sm uppercase tracking-wide py-4 rounded-none border-r border-gray-700"
|
|
8555
8861
|
},
|
|
8556
8862
|
props.cta_button.label
|
|
8557
|
-
), /* @__PURE__ */
|
|
8863
|
+
), /* @__PURE__ */ React39.createElement(
|
|
8558
8864
|
Button2,
|
|
8559
8865
|
{
|
|
8560
8866
|
href: ctaUrls.primaryHref,
|
|
8561
|
-
target: (
|
|
8562
|
-
rel: ((
|
|
8867
|
+
target: (_u = (_t = props == null ? void 0 : props.cta_button) == null ? void 0 : _t.target) != null ? _u : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
8868
|
+
rel: ((_v = props == null ? void 0 : props.cta_button) == null ? void 0 : _v.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
8563
8869
|
color: "primary",
|
|
8564
|
-
className: `${((
|
|
8870
|
+
className: `${((_w = props == null ? void 0 : props.cta_button) == null ? void 0 : _w.secondary_label) && ctaUrls.hasSecondary ? "flex-1" : "w-full"} font-body text-sm uppercase tracking-wide py-4 rounded-none`
|
|
8565
8871
|
},
|
|
8566
|
-
((
|
|
8872
|
+
((_x = props == null ? void 0 : props.cta_button) == null ? void 0 : _x.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_y = props == null ? void 0 : props.cta_button) == null ? void 0 : _y.label) || "Contact"
|
|
8567
8873
|
))));
|
|
8568
8874
|
}
|
|
8569
8875
|
registerThemeVariant("header-navigation", "aman", HeaderNavigation2);
|
|
@@ -8655,7 +8961,7 @@ var ServicesGrid2 = ({
|
|
|
8655
8961
|
registerThemeVariant("services-grid", "aman", ServicesGrid2);
|
|
8656
8962
|
|
|
8657
8963
|
// src/design_system/sections/testimonials-home.aman.tsx
|
|
8658
|
-
import
|
|
8964
|
+
import React40 from "react";
|
|
8659
8965
|
var TestimonialsHome2 = ({
|
|
8660
8966
|
testimonials: testimonialsData,
|
|
8661
8967
|
title = "",
|
|
@@ -8663,7 +8969,7 @@ var TestimonialsHome2 = ({
|
|
|
8663
8969
|
}) => {
|
|
8664
8970
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
8665
8971
|
const displayTestimonials = perPage ? testimonials.slice(0, perPage) : testimonials;
|
|
8666
|
-
return /* @__PURE__ */
|
|
8972
|
+
return /* @__PURE__ */ React40.createElement("section", null, /* @__PURE__ */ React40.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React40.createElement(
|
|
8667
8973
|
CarouselSectionWrapper,
|
|
8668
8974
|
{
|
|
8669
8975
|
title,
|
|
@@ -8678,7 +8984,7 @@ var TestimonialsHome2 = ({
|
|
|
8678
8984
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
8679
8985
|
const rating = testimonial.rating || 5;
|
|
8680
8986
|
const isVerified = true;
|
|
8681
|
-
return /* @__PURE__ */
|
|
8987
|
+
return /* @__PURE__ */ React40.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React40.createElement("div", { className: "bg-white p-8 flex flex-col h-full" }, /* @__PURE__ */ React40.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React40.createElement(
|
|
8682
8988
|
"svg",
|
|
8683
8989
|
{
|
|
8684
8990
|
key: starIdx,
|
|
@@ -8690,8 +8996,8 @@ var TestimonialsHome2 = ({
|
|
|
8690
8996
|
strokeWidth: "2",
|
|
8691
8997
|
viewBox: "0 0 24 24"
|
|
8692
8998
|
},
|
|
8693
|
-
/* @__PURE__ */
|
|
8694
|
-
))), /* @__PURE__ */
|
|
8999
|
+
/* @__PURE__ */ React40.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" })
|
|
9000
|
+
))), /* @__PURE__ */ React40.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React40.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React40.createElement(
|
|
8695
9001
|
PhotoWithFallback2,
|
|
8696
9002
|
{
|
|
8697
9003
|
photoUrl: avatarUrl,
|
|
@@ -8699,21 +9005,21 @@ var TestimonialsHome2 = ({
|
|
|
8699
9005
|
fallbackId: testimonial.id || i,
|
|
8700
9006
|
className: "w-full h-full object-cover"
|
|
8701
9007
|
}
|
|
8702
|
-
)), /* @__PURE__ */
|
|
9008
|
+
)), /* @__PURE__ */ React40.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React40.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React40.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React40.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React40.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__ */ React40.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username)))));
|
|
8703
9009
|
})
|
|
8704
9010
|
)));
|
|
8705
9011
|
};
|
|
8706
9012
|
registerThemeVariant("testimonials-home", "aman", TestimonialsHome2);
|
|
8707
9013
|
|
|
8708
9014
|
// src/design_system/sections/testimonials-grid.aman.tsx
|
|
8709
|
-
import
|
|
9015
|
+
import React41 from "react";
|
|
8710
9016
|
var TestimonialsGrid2 = ({
|
|
8711
9017
|
testimonials: testimonialsData,
|
|
8712
9018
|
title = "",
|
|
8713
9019
|
subtitle = ""
|
|
8714
9020
|
}) => {
|
|
8715
9021
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
8716
|
-
return /* @__PURE__ */
|
|
9022
|
+
return /* @__PURE__ */ React41.createElement("section", null, /* @__PURE__ */ React41.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React41.createElement("div", { className: "mb-12 text-center" }, title && /* @__PURE__ */ React41.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React41.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__ */ React41.createElement("div", { className: "grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3" }, testimonials.map((testimonial, i) => {
|
|
8717
9023
|
var _a;
|
|
8718
9024
|
const quote = ((_a = testimonial.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
8719
9025
|
const reviewerName = testimonial.reviewer_name || "Customer";
|
|
@@ -8721,7 +9027,7 @@ var TestimonialsGrid2 = ({
|
|
|
8721
9027
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
8722
9028
|
const rating = testimonial.rating || 5;
|
|
8723
9029
|
const isVerified = true;
|
|
8724
|
-
return /* @__PURE__ */
|
|
9030
|
+
return /* @__PURE__ */ React41.createElement("div", { key: testimonial.id || i, className: "bg-white p-8 flex flex-col h-full" }, /* @__PURE__ */ React41.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React41.createElement(
|
|
8725
9031
|
"svg",
|
|
8726
9032
|
{
|
|
8727
9033
|
key: starIdx,
|
|
@@ -8733,8 +9039,8 @@ var TestimonialsGrid2 = ({
|
|
|
8733
9039
|
strokeWidth: "2",
|
|
8734
9040
|
viewBox: "0 0 24 24"
|
|
8735
9041
|
},
|
|
8736
|
-
/* @__PURE__ */
|
|
8737
|
-
))), /* @__PURE__ */
|
|
9042
|
+
/* @__PURE__ */ React41.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" })
|
|
9043
|
+
))), /* @__PURE__ */ React41.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React41.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React41.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React41.createElement(
|
|
8738
9044
|
PhotoWithFallback2,
|
|
8739
9045
|
{
|
|
8740
9046
|
photoUrl: avatarUrl,
|
|
@@ -8742,29 +9048,31 @@ var TestimonialsGrid2 = ({
|
|
|
8742
9048
|
fallbackId: testimonial.id || i,
|
|
8743
9049
|
className: "w-full h-full object-cover"
|
|
8744
9050
|
}
|
|
8745
|
-
)), /* @__PURE__ */
|
|
8746
|
-
})) : /* @__PURE__ */
|
|
9051
|
+
)), /* @__PURE__ */ React41.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React41.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React41.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React41.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React41.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__ */ React41.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username))));
|
|
9052
|
+
})) : /* @__PURE__ */ React41.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React41.createElement("p", { className: "font-body text-base text-tertiary" }, "No testimonials available"))));
|
|
8747
9053
|
};
|
|
8748
9054
|
registerThemeVariant("testimonials-grid", "aman", TestimonialsGrid2);
|
|
8749
9055
|
|
|
8750
9056
|
// src/design_system/sections/contact-section.aman.tsx
|
|
8751
|
-
import
|
|
9057
|
+
import React43 from "react";
|
|
8752
9058
|
|
|
8753
9059
|
// src/design_system/sections/contact-section-form.aman.tsx
|
|
8754
|
-
import
|
|
9060
|
+
import React42, { useRef as useRef10, useState as useState17 } from "react";
|
|
8755
9061
|
var ContactSectionForm2 = ({
|
|
8756
9062
|
formDefinition,
|
|
8757
9063
|
submitButtonText = "Send message",
|
|
8758
9064
|
successMessage = "Thank you for contacting us! We'll get back to you soon.",
|
|
8759
9065
|
thankYouMessage,
|
|
8760
|
-
onSuccess
|
|
9066
|
+
onSuccess,
|
|
9067
|
+
privacyPolicyUrl,
|
|
9068
|
+
termsOfServiceUrl
|
|
8761
9069
|
}) => {
|
|
8762
9070
|
const { leadFormDefinition } = useFormDefinitions();
|
|
8763
9071
|
const resolvedFormDefinition = formDefinition != null ? formDefinition : leadFormDefinition;
|
|
8764
9072
|
const [isSubmitting, setIsSubmitting] = useState17(false);
|
|
8765
9073
|
const [submitStatus, setSubmitStatus] = useState17("idle");
|
|
8766
9074
|
const [statusMessage, setStatusMessage] = useState17("");
|
|
8767
|
-
const formRef =
|
|
9075
|
+
const formRef = useRef10(null);
|
|
8768
9076
|
const hasFields = resolvedFormDefinition != null && Array.isArray(resolvedFormDefinition.fields) && resolvedFormDefinition.fields.length > 0;
|
|
8769
9077
|
const handleSubmit = async (e) => {
|
|
8770
9078
|
var _a;
|
|
@@ -8775,7 +9083,8 @@ var ContactSectionForm2 = ({
|
|
|
8775
9083
|
const formData = new FormData(e.currentTarget);
|
|
8776
9084
|
const data = { formType: "lead" };
|
|
8777
9085
|
formData.forEach((value, key) => {
|
|
8778
|
-
if (key
|
|
9086
|
+
if (key.endsWith("_prefix")) return;
|
|
9087
|
+
if (typeof value === "string") data[key] = value;
|
|
8779
9088
|
});
|
|
8780
9089
|
try {
|
|
8781
9090
|
const response = await fetch("/api/form/", {
|
|
@@ -8802,7 +9111,14 @@ var ContactSectionForm2 = ({
|
|
|
8802
9111
|
setIsSubmitting(false);
|
|
8803
9112
|
};
|
|
8804
9113
|
if (!hasFields) return null;
|
|
8805
|
-
return /* @__PURE__ */
|
|
9114
|
+
return /* @__PURE__ */ React42.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React42.createElement(
|
|
9115
|
+
DynamicFormFields,
|
|
9116
|
+
{
|
|
9117
|
+
form: resolvedFormDefinition,
|
|
9118
|
+
privacyPolicyUrl,
|
|
9119
|
+
termsOfServiceUrl
|
|
9120
|
+
}
|
|
9121
|
+
), /* @__PURE__ */ React42.createElement(
|
|
8806
9122
|
Button2,
|
|
8807
9123
|
{
|
|
8808
9124
|
type: "submit",
|
|
@@ -8813,21 +9129,38 @@ var ContactSectionForm2 = ({
|
|
|
8813
9129
|
isLoading: isSubmitting
|
|
8814
9130
|
},
|
|
8815
9131
|
isSubmitting ? "Sending..." : submitButtonText
|
|
8816
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
9132
|
+
), submitStatus === "success" && /* @__PURE__ */ React42.createElement("div", { className: "rounded-sm bg-success-50 p-4 text-success-700 font-body" }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React42.createElement("div", { className: "rounded-sm bg-error-50 p-4 text-error-700 font-body text-sm" }, statusMessage));
|
|
8817
9133
|
};
|
|
8818
9134
|
|
|
8819
9135
|
// src/design_system/sections/contact-section.aman.tsx
|
|
9136
|
+
function getLegalUrlsFromConfig2(config) {
|
|
9137
|
+
var _a, _b, _c;
|
|
9138
|
+
if (!((_a = config == null ? void 0 : config.navigation) == null ? void 0 : _a.footer)) return {};
|
|
9139
|
+
const flat = config.navigation.footer.flat();
|
|
9140
|
+
const privacy = (_b = flat.find((l) => l.label === "Privacy Policy")) == null ? void 0 : _b.href;
|
|
9141
|
+
const terms = (_c = flat.find((l) => l.label === "Terms of Service")) == null ? void 0 : _c.href;
|
|
9142
|
+
return { privacyPolicyUrl: privacy, termsOfServiceUrl: terms };
|
|
9143
|
+
}
|
|
8820
9144
|
var ContactSection2 = ({
|
|
8821
9145
|
websitePhotos,
|
|
8822
9146
|
title = "",
|
|
8823
9147
|
subtitle = "",
|
|
8824
|
-
formDefinition
|
|
9148
|
+
formDefinition,
|
|
9149
|
+
config
|
|
8825
9150
|
}) => {
|
|
9151
|
+
const { privacyPolicyUrl, termsOfServiceUrl } = getLegalUrlsFromConfig2(config);
|
|
8826
9152
|
const contactPhoto = websitePhotos == null ? void 0 : websitePhotos.contact;
|
|
8827
9153
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
8828
9154
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
8829
9155
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
8830
|
-
return /* @__PURE__ */
|
|
9156
|
+
return /* @__PURE__ */ React43.createElement("section", null, /* @__PURE__ */ React43.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React43.createElement("div", { className: "grid grid-cols-1 gap-12 md:gap-16 lg:grid-cols-2" }, /* @__PURE__ */ React43.createElement("div", { className: "flex w-full flex-col" }, /* @__PURE__ */ React43.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React43.createElement("h2", { className: "font-display text-4xl font-normal leading-tight text-fg-primary md:text-5xl" }, title), /* @__PURE__ */ React43.createElement("p", { className: "mt-4 font-body text-lg leading-relaxed text-tertiary" }, subtitle)), /* @__PURE__ */ React43.createElement(
|
|
9157
|
+
ContactSectionForm2,
|
|
9158
|
+
{
|
|
9159
|
+
formDefinition,
|
|
9160
|
+
privacyPolicyUrl,
|
|
9161
|
+
termsOfServiceUrl
|
|
9162
|
+
}
|
|
9163
|
+
)), /* @__PURE__ */ React43.createElement("div", { className: "max-lg:hidden h-full min-h-0 overflow-hidden" }, /* @__PURE__ */ React43.createElement(
|
|
8831
9164
|
PhotoWithFallback2,
|
|
8832
9165
|
{
|
|
8833
9166
|
photoUrl: finalContactImage || "",
|
|
@@ -9067,17 +9400,21 @@ registerThemeVariant("location-details-section", "aman", LocationDetailsSection2
|
|
|
9067
9400
|
|
|
9068
9401
|
// src/design_system/sections/social-media-grid.aman.tsx
|
|
9069
9402
|
function getPostImageUrls2(post) {
|
|
9070
|
-
var _a;
|
|
9071
|
-
|
|
9403
|
+
var _a, _b;
|
|
9404
|
+
const videoSet = ((_a = post.video_urls) == null ? void 0 : _a.length) ? new Set(post.video_urls) : null;
|
|
9405
|
+
const isVideo = (url) => isVideoUrl(url) || videoSet !== null && videoSet.has(url);
|
|
9406
|
+
if ((_b = post.image_urls) == null ? void 0 : _b.length) {
|
|
9407
|
+
return post.image_urls.filter((url) => !isVideo(url));
|
|
9408
|
+
}
|
|
9072
9409
|
const attachments = post.photo_attachments || [];
|
|
9073
9410
|
const sorted = [...attachments].sort((a, b) => {
|
|
9074
|
-
var _a2,
|
|
9075
|
-
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((
|
|
9411
|
+
var _a2, _b2;
|
|
9412
|
+
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((_b2 = b.sort_order) != null ? _b2 : 0);
|
|
9076
9413
|
});
|
|
9077
9414
|
return sorted.map((pa) => {
|
|
9078
|
-
var _a2,
|
|
9079
|
-
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((
|
|
9080
|
-
}).filter((url) => Boolean(url));
|
|
9415
|
+
var _a2, _b2, _c, _d;
|
|
9416
|
+
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((_b2 = pa.photo) == null ? void 0 : _b2.original_url) || ((_c = pa.photo) == null ? void 0 : _c.medium_url) || ((_d = pa.photo) == null ? void 0 : _d.thumbnail_url);
|
|
9417
|
+
}).filter((url) => Boolean(url)).filter((url) => !isVideo(url));
|
|
9081
9418
|
}
|
|
9082
9419
|
var formatDate2 = (dateString) => {
|
|
9083
9420
|
if (!dateString) return "Recent";
|
|
@@ -9177,7 +9514,7 @@ var BlogHome2 = ({
|
|
|
9177
9514
|
registerThemeVariant("blog-home", "aman", BlogHome2);
|
|
9178
9515
|
|
|
9179
9516
|
// src/design_system/sections/blog-gallery.aman.tsx
|
|
9180
|
-
import
|
|
9517
|
+
import React44, { useState as useState18 } from "react";
|
|
9181
9518
|
var BlogGallery2 = ({
|
|
9182
9519
|
blogPosts: postsData,
|
|
9183
9520
|
postsPerPage = 12,
|
|
@@ -9191,13 +9528,13 @@ var BlogGallery2 = ({
|
|
|
9191
9528
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
9192
9529
|
const endIndex = startIndex + postsPerPage;
|
|
9193
9530
|
const paginatedNonFeaturedPosts = nonFeaturedPosts.slice(startIndex, endIndex);
|
|
9194
|
-
return /* @__PURE__ */
|
|
9531
|
+
return /* @__PURE__ */ React44.createElement("section", { className }, /* @__PURE__ */ React44.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, posts.length > 0 ? /* @__PURE__ */ React44.createElement(React44.Fragment, null, featuredPost && /* @__PURE__ */ React44.createElement(
|
|
9195
9532
|
"a",
|
|
9196
9533
|
{
|
|
9197
9534
|
href: `/blog/${featuredPost.slug}`,
|
|
9198
9535
|
className: "block mb-16 group"
|
|
9199
9536
|
},
|
|
9200
|
-
/* @__PURE__ */
|
|
9537
|
+
/* @__PURE__ */ React44.createElement("div", { className: "w-full h-96 md:h-[500px] mb-8 overflow-hidden" }, /* @__PURE__ */ React44.createElement(
|
|
9201
9538
|
PhotoWithFallback2,
|
|
9202
9539
|
{
|
|
9203
9540
|
item: featuredPost,
|
|
@@ -9205,19 +9542,19 @@ var BlogGallery2 = ({
|
|
|
9205
9542
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9206
9543
|
}
|
|
9207
9544
|
)),
|
|
9208
|
-
/* @__PURE__ */
|
|
9209
|
-
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */
|
|
9545
|
+
/* @__PURE__ */ React44.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React44.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__ */ React44.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__ */ React44.createElement("p", { className: "font-display text-lg leading-relaxed text-tertiary" }, featuredPost.excerpt_markdown.replace(/[#*\[\]()]/g, "").trim()))
|
|
9546
|
+
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */ React44.createElement("div", { className: "grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3 mb-16" }, paginatedNonFeaturedPosts.map((post) => {
|
|
9210
9547
|
var _a;
|
|
9211
9548
|
const excerpt = post.excerpt_markdown || ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
9212
|
-
return /* @__PURE__ */
|
|
9549
|
+
return /* @__PURE__ */ React44.createElement("a", { key: post.id, href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React44.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden" }, /* @__PURE__ */ React44.createElement(
|
|
9213
9550
|
PhotoWithFallback2,
|
|
9214
9551
|
{
|
|
9215
9552
|
item: post,
|
|
9216
9553
|
fallbackId: post.id,
|
|
9217
9554
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9218
9555
|
}
|
|
9219
|
-
)), /* @__PURE__ */
|
|
9220
|
-
})), totalPages > 1 && /* @__PURE__ */
|
|
9556
|
+
)), /* @__PURE__ */ React44.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__ */ React44.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline" }, post.title), excerpt && /* @__PURE__ */ React44.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt));
|
|
9557
|
+
})), totalPages > 1 && /* @__PURE__ */ React44.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React44.createElement(
|
|
9221
9558
|
PaginationPageDefault2,
|
|
9222
9559
|
{
|
|
9223
9560
|
rounded: true,
|
|
@@ -9225,7 +9562,7 @@ var BlogGallery2 = ({
|
|
|
9225
9562
|
total: totalPages,
|
|
9226
9563
|
onPageChange: setCurrentPage
|
|
9227
9564
|
}
|
|
9228
|
-
))) : /* @__PURE__ */
|
|
9565
|
+
))) : /* @__PURE__ */ React44.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React44.createElement("p", { className: "font-body text-base text-tertiary" }, "No posts available"))));
|
|
9229
9566
|
};
|
|
9230
9567
|
registerThemeVariant("blog-gallery", "aman", BlogGallery2);
|
|
9231
9568
|
|
|
@@ -9256,7 +9593,7 @@ var BlogPostSection2 = ({
|
|
|
9256
9593
|
registerThemeVariant("blog-post", "aman", BlogPostSection2);
|
|
9257
9594
|
|
|
9258
9595
|
// src/design_system/sections/blog-section.aman.tsx
|
|
9259
|
-
import
|
|
9596
|
+
import React45 from "react";
|
|
9260
9597
|
var BlogSection2 = ({
|
|
9261
9598
|
blogPosts: postsData,
|
|
9262
9599
|
title = "",
|
|
@@ -9275,7 +9612,7 @@ var BlogSection2 = ({
|
|
|
9275
9612
|
return "Recent";
|
|
9276
9613
|
}
|
|
9277
9614
|
};
|
|
9278
|
-
return /* @__PURE__ */
|
|
9615
|
+
return /* @__PURE__ */ React45.createElement("section", null, /* @__PURE__ */ React45.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React45.createElement(
|
|
9279
9616
|
CarouselSectionWrapper,
|
|
9280
9617
|
{
|
|
9281
9618
|
title,
|
|
@@ -9285,14 +9622,14 @@ var BlogSection2 = ({
|
|
|
9285
9622
|
postsArray.map((post) => {
|
|
9286
9623
|
var _a;
|
|
9287
9624
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
9288
|
-
return /* @__PURE__ */
|
|
9625
|
+
return /* @__PURE__ */ React45.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React45.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col h-full group" }, /* @__PURE__ */ React45.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden" }, /* @__PURE__ */ React45.createElement(
|
|
9289
9626
|
PhotoWithFallback2,
|
|
9290
9627
|
{
|
|
9291
9628
|
item: post,
|
|
9292
9629
|
fallbackId: post.id,
|
|
9293
9630
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9294
9631
|
}
|
|
9295
|
-
)), /* @__PURE__ */
|
|
9632
|
+
)), /* @__PURE__ */ React45.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__ */ React45.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-1" }, post.title), excerpt && /* @__PURE__ */ React45.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt)));
|
|
9296
9633
|
})
|
|
9297
9634
|
)));
|
|
9298
9635
|
};
|
|
@@ -9306,9 +9643,9 @@ import { createContext as createContext10 } from "react";
|
|
|
9306
9643
|
var LayoutGroupContext = createContext10({});
|
|
9307
9644
|
|
|
9308
9645
|
// node_modules/framer-motion/dist/es/utils/use-constant.mjs
|
|
9309
|
-
import { useRef as
|
|
9646
|
+
import { useRef as useRef11 } from "react";
|
|
9310
9647
|
function useConstant(init) {
|
|
9311
|
-
const ref =
|
|
9648
|
+
const ref = useRef11(null);
|
|
9312
9649
|
if (ref.current === null) {
|
|
9313
9650
|
ref.current = init();
|
|
9314
9651
|
}
|
|
@@ -9316,13 +9653,13 @@ function useConstant(init) {
|
|
|
9316
9653
|
}
|
|
9317
9654
|
|
|
9318
9655
|
// node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs
|
|
9319
|
-
import { useLayoutEffect, useEffect as
|
|
9656
|
+
import { useLayoutEffect, useEffect as useEffect8 } from "react";
|
|
9320
9657
|
|
|
9321
9658
|
// node_modules/framer-motion/dist/es/utils/is-browser.mjs
|
|
9322
9659
|
var isBrowser = typeof window !== "undefined";
|
|
9323
9660
|
|
|
9324
9661
|
// node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs
|
|
9325
|
-
var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect :
|
|
9662
|
+
var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect8;
|
|
9326
9663
|
|
|
9327
9664
|
// node_modules/framer-motion/dist/es/context/PresenceContext.mjs
|
|
9328
9665
|
import { createContext as createContext11 } from "react";
|
|
@@ -12466,14 +12803,14 @@ var MotionConfigContext = createContext12({
|
|
|
12466
12803
|
});
|
|
12467
12804
|
|
|
12468
12805
|
// node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs
|
|
12469
|
-
import { useContext as useContext11, useId as useId4, useEffect as
|
|
12806
|
+
import { useContext as useContext11, useId as useId4, useEffect as useEffect9, useCallback as useCallback6 } from "react";
|
|
12470
12807
|
function usePresence(subscribe = true) {
|
|
12471
12808
|
const context = useContext11(PresenceContext);
|
|
12472
12809
|
if (context === null)
|
|
12473
12810
|
return [true, null];
|
|
12474
12811
|
const { isPresent, onExitComplete, register } = context;
|
|
12475
12812
|
const id3 = useId4();
|
|
12476
|
-
|
|
12813
|
+
useEffect9(() => {
|
|
12477
12814
|
if (subscribe) {
|
|
12478
12815
|
return register(id3);
|
|
12479
12816
|
}
|
|
@@ -13175,7 +13512,7 @@ function useMotionRef(visualState, visualElement, externalRef) {
|
|
|
13175
13512
|
}
|
|
13176
13513
|
|
|
13177
13514
|
// node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs
|
|
13178
|
-
import { useContext as useContext14, useRef as
|
|
13515
|
+
import { useContext as useContext14, useRef as useRef12, useInsertionEffect, useEffect as useEffect10 } from "react";
|
|
13179
13516
|
|
|
13180
13517
|
// node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs
|
|
13181
13518
|
var camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase();
|
|
@@ -13195,7 +13532,7 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
|
|
|
13195
13532
|
const lazyContext = useContext14(LazyContext);
|
|
13196
13533
|
const presenceContext = useContext14(PresenceContext);
|
|
13197
13534
|
const reducedMotionConfig = useContext14(MotionConfigContext).reducedMotion;
|
|
13198
|
-
const visualElementRef =
|
|
13535
|
+
const visualElementRef = useRef12(null);
|
|
13199
13536
|
createVisualElement = createVisualElement || lazyContext.renderer;
|
|
13200
13537
|
if (!visualElementRef.current && createVisualElement) {
|
|
13201
13538
|
visualElementRef.current = createVisualElement(Component2, {
|
|
@@ -13212,14 +13549,14 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
|
|
|
13212
13549
|
if (visualElement && !visualElement.projection && ProjectionNodeConstructor && (visualElement.type === "html" || visualElement.type === "svg")) {
|
|
13213
13550
|
createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);
|
|
13214
13551
|
}
|
|
13215
|
-
const isMounted =
|
|
13552
|
+
const isMounted = useRef12(false);
|
|
13216
13553
|
useInsertionEffect(() => {
|
|
13217
13554
|
if (visualElement && isMounted.current) {
|
|
13218
13555
|
visualElement.update(props, presenceContext);
|
|
13219
13556
|
}
|
|
13220
13557
|
});
|
|
13221
13558
|
const optimisedAppearId = props[optimizedAppearDataAttribute];
|
|
13222
|
-
const wantsHandoff =
|
|
13559
|
+
const wantsHandoff = useRef12(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) == null ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) == null ? void 0 : _b.call(window, optimisedAppearId)));
|
|
13223
13560
|
useIsomorphicLayoutEffect(() => {
|
|
13224
13561
|
if (!visualElement)
|
|
13225
13562
|
return;
|
|
@@ -13231,7 +13568,7 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
|
|
|
13231
13568
|
visualElement.animationState.animateChanges();
|
|
13232
13569
|
}
|
|
13233
13570
|
});
|
|
13234
|
-
|
|
13571
|
+
useEffect10(() => {
|
|
13235
13572
|
if (!visualElement)
|
|
13236
13573
|
return;
|
|
13237
13574
|
if (!wantsHandoff.current && visualElement.animationState) {
|
|
@@ -17296,11 +17633,11 @@ var JobDetailHero2 = ({
|
|
|
17296
17633
|
registerThemeVariant("hero-job-detail", "aman", JobDetailHero2);
|
|
17297
17634
|
|
|
17298
17635
|
// src/design_system/sections/job-application-form.aman.tsx
|
|
17299
|
-
import
|
|
17636
|
+
import React46, { useRef as useRef13, useState as useState21 } from "react";
|
|
17300
17637
|
|
|
17301
17638
|
// src/design_system/sections/hero-home.barelux.tsx
|
|
17302
17639
|
import { Fragment as Fragment6, useState as useState22 } from "react";
|
|
17303
|
-
import
|
|
17640
|
+
import React47 from "react";
|
|
17304
17641
|
var HeroHome3 = ({
|
|
17305
17642
|
websitePhotos,
|
|
17306
17643
|
companyInformation,
|
|
@@ -17319,7 +17656,7 @@ var HeroHome3 = ({
|
|
|
17319
17656
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
17320
17657
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || ""
|
|
17321
17658
|
};
|
|
17322
|
-
return /* @__PURE__ */
|
|
17659
|
+
return /* @__PURE__ */ React47.createElement(Fragment6, null, /* @__PURE__ */ React47.createElement("section", { className: "relative w-full h-[60vh] min-h-[500px] max-h-[550px]" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0" }, /* @__PURE__ */ React47.createElement(
|
|
17323
17660
|
PhotoWithFallback2,
|
|
17324
17661
|
{
|
|
17325
17662
|
photoUrl: heroImage.url,
|
|
@@ -17327,7 +17664,7 @@ var HeroHome3 = ({
|
|
|
17327
17664
|
fallbackId: "hero-home-barelux",
|
|
17328
17665
|
className: "w-full h-full object-cover"
|
|
17329
17666
|
}
|
|
17330
|
-
)), /* @__PURE__ */
|
|
17667
|
+
)), /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0 bg-black/50" }), /* @__PURE__ */ React47.createElement("div", { className: "relative h-full flex items-center" }, /* @__PURE__ */ React47.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8 w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "max-w-2xl" }, tagline && /* @__PURE__ */ React47.createElement("p", { className: "font-body text-sm font-semibold uppercase tracking-widest text-white mb-5" }, tagline), /* @__PURE__ */ React47.createElement("h1", { className: "font-display text-display-xl font-normal leading-none text-white mb-4" }, headline), /* @__PURE__ */ React47.createElement("p", { className: "font-body text-base md:text-lg leading-normal text-white mb-6 max-w-xl" }, subhead), ctaText && /* @__PURE__ */ React47.createElement(
|
|
17331
17668
|
Button2,
|
|
17332
17669
|
{
|
|
17333
17670
|
href: effectiveCtaHref,
|
|
@@ -17337,7 +17674,7 @@ var HeroHome3 = ({
|
|
|
17337
17674
|
size: "md"
|
|
17338
17675
|
},
|
|
17339
17676
|
ctaText
|
|
17340
|
-
)))), videoUrl && /* @__PURE__ */
|
|
17677
|
+
)))), videoUrl && /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React47.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))), videoUrl && /* @__PURE__ */ React47.createElement(
|
|
17341
17678
|
VideoModal,
|
|
17342
17679
|
{
|
|
17343
17680
|
isOpen: showVideo,
|
|
@@ -17349,7 +17686,7 @@ var HeroHome3 = ({
|
|
|
17349
17686
|
registerThemeVariant("hero-home", "barelux", HeroHome3);
|
|
17350
17687
|
|
|
17351
17688
|
// src/design_system/sections/header-navigation.barelux.tsx
|
|
17352
|
-
import
|
|
17689
|
+
import React48, { useState as useState23, useRef as useRef14, useCallback as useCallback8 } from "react";
|
|
17353
17690
|
import Link8 from "next/link";
|
|
17354
17691
|
import Image12 from "next/image";
|
|
17355
17692
|
var MAX_DROPDOWN_ITEMS2 = 6;
|
|
@@ -17362,11 +17699,11 @@ function HeaderNavigation3({
|
|
|
17362
17699
|
companyInformation,
|
|
17363
17700
|
websitePhotos
|
|
17364
17701
|
}) {
|
|
17365
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
17702
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
17366
17703
|
const [activeDropdown, setActiveDropdown] = useState23(null);
|
|
17367
17704
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState23(false);
|
|
17368
|
-
const closeTimeoutRef =
|
|
17369
|
-
|
|
17705
|
+
const closeTimeoutRef = useRef14(null);
|
|
17706
|
+
React48.useEffect(() => {
|
|
17370
17707
|
return () => {
|
|
17371
17708
|
if (closeTimeoutRef.current) {
|
|
17372
17709
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -17422,7 +17759,7 @@ function HeaderNavigation3({
|
|
|
17422
17759
|
viewAllLabel: ""
|
|
17423
17760
|
};
|
|
17424
17761
|
};
|
|
17425
|
-
return /* @__PURE__ */
|
|
17762
|
+
return /* @__PURE__ */ React48.createElement(React48.Fragment, null, /* @__PURE__ */ React48.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary border-b border-primary" }, /* @__PURE__ */ React48.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between py-4" }, /* @__PURE__ */ React48.createElement(Link8, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center flex-shrink-0" }, logoUrl ? /* @__PURE__ */ React48.createElement(
|
|
17426
17763
|
Image12,
|
|
17427
17764
|
{
|
|
17428
17765
|
src: logoUrl,
|
|
@@ -17431,7 +17768,7 @@ function HeaderNavigation3({
|
|
|
17431
17768
|
width: 120,
|
|
17432
17769
|
height: 40
|
|
17433
17770
|
}
|
|
17434
|
-
) : /* @__PURE__ */
|
|
17771
|
+
) : /* @__PURE__ */ React48.createElement("span", { className: "font-display text-xl font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React48.createElement("nav", { className: "flex items-center gap-8 flex-1 ml-12" }, navigation.map((item, i) => /* @__PURE__ */ React48.createElement(
|
|
17435
17772
|
"div",
|
|
17436
17773
|
{
|
|
17437
17774
|
key: i,
|
|
@@ -17439,16 +17776,16 @@ function HeaderNavigation3({
|
|
|
17439
17776
|
onMouseEnter: () => handleMouseEnter(item),
|
|
17440
17777
|
onMouseLeave: handleMouseLeave
|
|
17441
17778
|
},
|
|
17442
|
-
/* @__PURE__ */
|
|
17779
|
+
/* @__PURE__ */ React48.createElement(
|
|
17443
17780
|
Link8,
|
|
17444
17781
|
{
|
|
17445
17782
|
href: item.href,
|
|
17446
17783
|
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"
|
|
17447
17784
|
},
|
|
17448
17785
|
item.label,
|
|
17449
|
-
item.children && item.children.length > 0 && /* @__PURE__ */
|
|
17786
|
+
item.children && item.children.length > 0 && /* @__PURE__ */ React48.createElement("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ React48.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
17450
17787
|
),
|
|
17451
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
17788
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React48.createElement(
|
|
17452
17789
|
"div",
|
|
17453
17790
|
{
|
|
17454
17791
|
className: "absolute left-0 top-full mt-2 w-64 py-3 bg-white border border-secondary rounded-lg shadow-lg z-50",
|
|
@@ -17457,7 +17794,7 @@ function HeaderNavigation3({
|
|
|
17457
17794
|
},
|
|
17458
17795
|
(() => {
|
|
17459
17796
|
const { items, showViewAll, viewAllHref, viewAllLabel } = getDropdownItems(item);
|
|
17460
|
-
return /* @__PURE__ */
|
|
17797
|
+
return /* @__PURE__ */ React48.createElement(React48.Fragment, null, items.map((link, j) => /* @__PURE__ */ React48.createElement(
|
|
17461
17798
|
Link8,
|
|
17462
17799
|
{
|
|
17463
17800
|
key: j,
|
|
@@ -17465,7 +17802,7 @@ function HeaderNavigation3({
|
|
|
17465
17802
|
className: "block font-body text-md text-fg-primary hover:text-brand-accent hover:bg-secondary transition-colors px-4 py-2"
|
|
17466
17803
|
},
|
|
17467
17804
|
link.label
|
|
17468
|
-
)), showViewAll && /* @__PURE__ */
|
|
17805
|
+
)), showViewAll && /* @__PURE__ */ React48.createElement(
|
|
17469
17806
|
Link8,
|
|
17470
17807
|
{
|
|
17471
17808
|
href: viewAllHref,
|
|
@@ -17476,7 +17813,7 @@ function HeaderNavigation3({
|
|
|
17476
17813
|
));
|
|
17477
17814
|
})()
|
|
17478
17815
|
)
|
|
17479
|
-
))), /* @__PURE__ */
|
|
17816
|
+
))), /* @__PURE__ */ React48.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__ */ React48.createElement(
|
|
17480
17817
|
Button2,
|
|
17481
17818
|
{
|
|
17482
17819
|
href: ctaUrls.secondaryHref,
|
|
@@ -17486,25 +17823,25 @@ function HeaderNavigation3({
|
|
|
17486
17823
|
size: "sm"
|
|
17487
17824
|
},
|
|
17488
17825
|
props.cta_button.label
|
|
17489
|
-
), /* @__PURE__ */
|
|
17826
|
+
), /* @__PURE__ */ React48.createElement(
|
|
17490
17827
|
Button2,
|
|
17491
17828
|
{
|
|
17492
17829
|
href: ctaUrls.primaryHref,
|
|
17493
|
-
target: (
|
|
17494
|
-
rel: ((
|
|
17830
|
+
target: (_g = (_f = props == null ? void 0 : props.cta_button) == null ? void 0 : _f.target) != null ? _g : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
17831
|
+
rel: ((_h = props == null ? void 0 : props.cta_button) == null ? void 0 : _h.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
17495
17832
|
color: "primary",
|
|
17496
17833
|
size: "sm"
|
|
17497
17834
|
},
|
|
17498
|
-
((
|
|
17499
|
-
))))), /* @__PURE__ */
|
|
17835
|
+
((_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__ */ React48.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary border-b border-secondary" }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React48.createElement(
|
|
17500
17837
|
"button",
|
|
17501
17838
|
{
|
|
17502
17839
|
onClick: () => setIsMobileMenuOpen(true),
|
|
17503
17840
|
className: "text-fg-primary",
|
|
17504
17841
|
"aria-label": "Open menu"
|
|
17505
17842
|
},
|
|
17506
|
-
/* @__PURE__ */
|
|
17507
|
-
), /* @__PURE__ */
|
|
17843
|
+
/* @__PURE__ */ React48.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React48.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
17844
|
+
), /* @__PURE__ */ React48.createElement(Link8, { href: ((_k = props == null ? void 0 : props.logo) == null ? void 0 : _k.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React48.createElement(
|
|
17508
17845
|
Image12,
|
|
17509
17846
|
{
|
|
17510
17847
|
src: logoUrl,
|
|
@@ -17513,15 +17850,15 @@ function HeaderNavigation3({
|
|
|
17513
17850
|
width: 120,
|
|
17514
17851
|
height: 32
|
|
17515
17852
|
}
|
|
17516
|
-
) : /* @__PURE__ */
|
|
17853
|
+
) : /* @__PURE__ */ React48.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React48.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 bg-white z-50 md:hidden" }, /* @__PURE__ */ React48.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between px-4 py-4 border-b border-secondary" }, /* @__PURE__ */ React48.createElement(
|
|
17517
17854
|
"button",
|
|
17518
17855
|
{
|
|
17519
17856
|
onClick: () => setIsMobileMenuOpen(false),
|
|
17520
17857
|
className: "text-fg-primary",
|
|
17521
17858
|
"aria-label": "Close menu"
|
|
17522
17859
|
},
|
|
17523
|
-
/* @__PURE__ */
|
|
17524
|
-
), /* @__PURE__ */
|
|
17860
|
+
/* @__PURE__ */ React48.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React48.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
17861
|
+
), /* @__PURE__ */ React48.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React48.createElement(
|
|
17525
17862
|
Image12,
|
|
17526
17863
|
{
|
|
17527
17864
|
src: logoUrl,
|
|
@@ -17530,9 +17867,9 @@ function HeaderNavigation3({
|
|
|
17530
17867
|
width: 120,
|
|
17531
17868
|
height: 32
|
|
17532
17869
|
}
|
|
17533
|
-
) : /* @__PURE__ */
|
|
17870
|
+
) : /* @__PURE__ */ React48.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React48.createElement("div", { className: "w-6" })), /* @__PURE__ */ React48.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React48.createElement("ul", { className: "space-y-4" }, navigation.map((item, i) => {
|
|
17534
17871
|
const { items } = getDropdownItems(item);
|
|
17535
|
-
return /* @__PURE__ */
|
|
17872
|
+
return /* @__PURE__ */ React48.createElement("li", { key: i }, /* @__PURE__ */ React48.createElement(
|
|
17536
17873
|
Link8,
|
|
17537
17874
|
{
|
|
17538
17875
|
href: item.href,
|
|
@@ -17540,7 +17877,7 @@ function HeaderNavigation3({
|
|
|
17540
17877
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17541
17878
|
},
|
|
17542
17879
|
item.label
|
|
17543
|
-
), items.length > 0 && /* @__PURE__ */
|
|
17880
|
+
), items.length > 0 && /* @__PURE__ */ React48.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, items.map((link, j) => /* @__PURE__ */ React48.createElement("li", { key: j }, /* @__PURE__ */ React48.createElement(
|
|
17544
17881
|
Link8,
|
|
17545
17882
|
{
|
|
17546
17883
|
href: link.href,
|
|
@@ -17549,7 +17886,7 @@ function HeaderNavigation3({
|
|
|
17549
17886
|
},
|
|
17550
17887
|
link.label
|
|
17551
17888
|
)))));
|
|
17552
|
-
}))), /* @__PURE__ */
|
|
17889
|
+
}))), /* @__PURE__ */ React48.createElement("div", { className: "border-t border-secondary px-4 py-6" }, /* @__PURE__ */ React48.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__ */ React48.createElement(
|
|
17553
17890
|
Button2,
|
|
17554
17891
|
{
|
|
17555
17892
|
href: ctaUrls.secondaryHref,
|
|
@@ -17559,7 +17896,7 @@ function HeaderNavigation3({
|
|
|
17559
17896
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17560
17897
|
},
|
|
17561
17898
|
props.cta_button.secondary_label
|
|
17562
|
-
), /* @__PURE__ */
|
|
17899
|
+
), /* @__PURE__ */ React48.createElement(
|
|
17563
17900
|
Button2,
|
|
17564
17901
|
{
|
|
17565
17902
|
href: ctaUrls.primaryHref,
|
|
@@ -17568,8 +17905,8 @@ function HeaderNavigation3({
|
|
|
17568
17905
|
className: "w-full",
|
|
17569
17906
|
onClick: () => setIsMobileMenuOpen(false)
|
|
17570
17907
|
},
|
|
17571
|
-
((
|
|
17572
|
-
))))), /* @__PURE__ */
|
|
17908
|
+
((_m = props == null ? void 0 : props.cta_button) == null ? void 0 : _m.label) || ""
|
|
17909
|
+
))))), /* @__PURE__ */ React48.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden bg-fg-primary" }, /* @__PURE__ */ React48.createElement("div", { className: "flex gap-0" }, ((_n = props == null ? void 0 : props.cta_button) == null ? void 0 : _n.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React48.createElement(
|
|
17573
17910
|
Button2,
|
|
17574
17911
|
{
|
|
17575
17912
|
href: ctaUrls.secondaryHref,
|
|
@@ -17579,38 +17916,38 @@ function HeaderNavigation3({
|
|
|
17579
17916
|
className: "flex-1 font-body text-sm uppercase tracking-wide py-4 rounded-none border-r border-white/20"
|
|
17580
17917
|
},
|
|
17581
17918
|
props.cta_button.label
|
|
17582
|
-
), /* @__PURE__ */
|
|
17919
|
+
), /* @__PURE__ */ React48.createElement(
|
|
17583
17920
|
Button2,
|
|
17584
17921
|
{
|
|
17585
17922
|
href: ctaUrls.primaryHref,
|
|
17586
|
-
target: (
|
|
17587
|
-
rel: ((
|
|
17923
|
+
target: (_p = (_o = props == null ? void 0 : props.cta_button) == null ? void 0 : _o.target) != null ? _p : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
17924
|
+
rel: ((_q = props == null ? void 0 : props.cta_button) == null ? void 0 : _q.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
17588
17925
|
color: "primary",
|
|
17589
|
-
className: `${((
|
|
17926
|
+
className: `${((_r = props == null ? void 0 : props.cta_button) == null ? void 0 : _r.secondary_label) && ctaUrls.hasSecondary ? "flex-1" : "w-full"} font-body text-sm uppercase tracking-wide py-4 rounded-none`
|
|
17590
17927
|
},
|
|
17591
|
-
((
|
|
17928
|
+
((_s = props == null ? void 0 : props.cta_button) == null ? void 0 : _s.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_t = props == null ? void 0 : props.cta_button) == null ? void 0 : _t.label) || "Contact"
|
|
17592
17929
|
))));
|
|
17593
17930
|
}
|
|
17594
17931
|
registerThemeVariant("header-navigation", "barelux", HeaderNavigation3);
|
|
17595
17932
|
|
|
17596
17933
|
// src/design_system/sections/services-home.barelux.tsx
|
|
17597
|
-
import
|
|
17934
|
+
import React49 from "react";
|
|
17598
17935
|
var ServicesHome3 = ({
|
|
17599
17936
|
services = [],
|
|
17600
17937
|
title = "",
|
|
17601
17938
|
subtitle = ""
|
|
17602
17939
|
}) => {
|
|
17603
17940
|
const displayServices = services;
|
|
17604
|
-
return /* @__PURE__ */
|
|
17941
|
+
return /* @__PURE__ */ React49.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-secondary" }, /* @__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" }, /* @__PURE__ */ React49.createElement("h2", { className: "font-display text-display-md font-normal text-fg-primary mb-4" }, title), /* @__PURE__ */ React49.createElement("p", { className: "font-body text-base text-secondary leading-normal" }, subtitle)), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-wrap justify-center gap-6" }, displayServices.map((service) => {
|
|
17605
17942
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
17606
|
-
return /* @__PURE__ */
|
|
17943
|
+
return /* @__PURE__ */ React49.createElement(
|
|
17607
17944
|
"a",
|
|
17608
17945
|
{
|
|
17609
17946
|
key: service.id,
|
|
17610
17947
|
href: `/services/${service.slug}`,
|
|
17611
17948
|
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"
|
|
17612
17949
|
},
|
|
17613
|
-
/* @__PURE__ */
|
|
17950
|
+
/* @__PURE__ */ React49.createElement("div", { className: "relative w-full h-56 overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React49.createElement(
|
|
17614
17951
|
PhotoWithFallback2,
|
|
17615
17952
|
{
|
|
17616
17953
|
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) || "",
|
|
@@ -17619,7 +17956,7 @@ var ServicesHome3 = ({
|
|
|
17619
17956
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
17620
17957
|
}
|
|
17621
17958
|
)),
|
|
17622
|
-
/* @__PURE__ */
|
|
17959
|
+
/* @__PURE__ */ React49.createElement("div", { className: "p-6" }, /* @__PURE__ */ React49.createElement("h3", { className: "font-body text-base font-semibold uppercase tracking-wide text-fg-primary mb-3 leading-tight" }, service.name), service.summary && /* @__PURE__ */ React49.createElement("p", { className: "font-body text-sm text-tertiary leading-relaxed" }, service.summary))
|
|
17623
17960
|
);
|
|
17624
17961
|
}))));
|
|
17625
17962
|
};
|
|
@@ -17669,7 +18006,7 @@ var AboutHome3 = ({
|
|
|
17669
18006
|
registerThemeVariant("about-home", "barelux", AboutHome3);
|
|
17670
18007
|
|
|
17671
18008
|
// src/design_system/sections/testimonials-home.barelux.tsx
|
|
17672
|
-
import
|
|
18009
|
+
import React50 from "react";
|
|
17673
18010
|
import { ChevronLeft as ChevronLeft7, ChevronRight as ChevronRight2 } from "@untitledui/icons";
|
|
17674
18011
|
var TestimonialsHome3 = ({
|
|
17675
18012
|
testimonials: testimonialsData,
|
|
@@ -17680,7 +18017,7 @@ var TestimonialsHome3 = ({
|
|
|
17680
18017
|
emptyMessage = "No testimonials available"
|
|
17681
18018
|
}) => {
|
|
17682
18019
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
17683
|
-
return /* @__PURE__ */
|
|
18020
|
+
return /* @__PURE__ */ React50.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-secondary" }, /* @__PURE__ */ React50.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React50.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React50.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React50.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), testimonials.length > 0 ? /* @__PURE__ */ React50.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React50.createElement("div", { className: "flex items-center justify-end mb-8" }, /* @__PURE__ */ React50.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React50.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__ */ React50.createElement(ChevronLeft7, { className: "w-6 h-6 text-fg-primary" })), /* @__PURE__ */ React50.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__ */ React50.createElement(ChevronRight2, { className: "w-6 h-6 text-fg-primary" })))), /* @__PURE__ */ React50.createElement(Carousel.Content, { className: "-ml-4" }, testimonials.map((testimonial, i) => {
|
|
17684
18021
|
var _a;
|
|
17685
18022
|
const quote = ((_a = testimonial.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
17686
18023
|
const reviewerName = testimonial.reviewer_name || "";
|
|
@@ -17688,7 +18025,7 @@ var TestimonialsHome3 = ({
|
|
|
17688
18025
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
17689
18026
|
const rating = testimonial.rating || 5;
|
|
17690
18027
|
const isVerified = true;
|
|
17691
|
-
return /* @__PURE__ */
|
|
18028
|
+
return /* @__PURE__ */ React50.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React50.createElement("div", { className: "bg-white rounded-2xl p-8 flex flex-col shadow-sm", style: { minHeight: "400px" } }, /* @__PURE__ */ React50.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React50.createElement(
|
|
17692
18029
|
"svg",
|
|
17693
18030
|
{
|
|
17694
18031
|
key: starIdx,
|
|
@@ -17700,8 +18037,8 @@ var TestimonialsHome3 = ({
|
|
|
17700
18037
|
strokeWidth: "2",
|
|
17701
18038
|
viewBox: "0 0 24 24"
|
|
17702
18039
|
},
|
|
17703
|
-
/* @__PURE__ */
|
|
17704
|
-
))), /* @__PURE__ */
|
|
18040
|
+
/* @__PURE__ */ React50.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" })
|
|
18041
|
+
))), /* @__PURE__ */ React50.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-6 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React50.createElement("div", { className: "w-12 h-12 rounded-full overflow-hidden flex-shrink-0" }, /* @__PURE__ */ React50.createElement(
|
|
17705
18042
|
PhotoWithFallback2,
|
|
17706
18043
|
{
|
|
17707
18044
|
photoUrl: avatarUrl,
|
|
@@ -17709,8 +18046,8 @@ var TestimonialsHome3 = ({
|
|
|
17709
18046
|
fallbackId: testimonial.id || i,
|
|
17710
18047
|
className: "w-full h-full object-cover"
|
|
17711
18048
|
}
|
|
17712
|
-
)), /* @__PURE__ */
|
|
17713
|
-
}))) : /* @__PURE__ */
|
|
18049
|
+
)), /* @__PURE__ */ React50.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React50.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), isVerified && /* @__PURE__ */ React50.createElement("svg", { className: "w-4 h-4 text-fg-primary", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React50.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__ */ React50.createElement("p", { className: "font-body text-xs", style: { color: "var(--color-text-brand-secondary)" } }, username)))));
|
|
18050
|
+
}))) : /* @__PURE__ */ React50.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React50.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage)), testimonials.length > 0 && viewAllText && /* @__PURE__ */ React50.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React50.createElement(
|
|
17714
18051
|
Button2,
|
|
17715
18052
|
{
|
|
17716
18053
|
href: viewAllHref,
|
|
@@ -17723,7 +18060,7 @@ var TestimonialsHome3 = ({
|
|
|
17723
18060
|
registerThemeVariant("testimonials-home", "barelux", TestimonialsHome3);
|
|
17724
18061
|
|
|
17725
18062
|
// src/design_system/sections/blog-section.barelux.tsx
|
|
17726
|
-
import
|
|
18063
|
+
import React51 from "react";
|
|
17727
18064
|
import { ChevronLeft as ChevronLeft8, ChevronRight as ChevronRight3 } from "@untitledui/icons";
|
|
17728
18065
|
var BlogSection3 = ({
|
|
17729
18066
|
blogPosts: postsData,
|
|
@@ -17748,18 +18085,18 @@ var BlogSection3 = ({
|
|
|
17748
18085
|
return recentLabel;
|
|
17749
18086
|
}
|
|
17750
18087
|
};
|
|
17751
|
-
return /* @__PURE__ */
|
|
18088
|
+
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: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React51.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React51.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), postsArray.length > 0 ? /* @__PURE__ */ React51.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-end mb-8" }, /* @__PURE__ */ React51.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React51.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__ */ React51.createElement(ChevronLeft8, { className: "w-6 h-6 text-fg-primary" })), /* @__PURE__ */ React51.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__ */ React51.createElement(ChevronRight3, { className: "w-6 h-6 text-fg-primary" })))), /* @__PURE__ */ React51.createElement(Carousel.Content, { className: "-ml-4" }, postsArray.map((post) => {
|
|
17752
18089
|
var _a;
|
|
17753
18090
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
17754
|
-
return /* @__PURE__ */
|
|
18091
|
+
return /* @__PURE__ */ React51.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React51.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React51.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React51.createElement(
|
|
17755
18092
|
PhotoWithFallback2,
|
|
17756
18093
|
{
|
|
17757
18094
|
item: post,
|
|
17758
18095
|
fallbackId: post.id,
|
|
17759
18096
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
17760
18097
|
}
|
|
17761
|
-
)), /* @__PURE__ */
|
|
17762
|
-
}))) : /* @__PURE__ */
|
|
18098
|
+
)), /* @__PURE__ */ React51.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__ */ React51.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-2" }, post.title), excerpt && /* @__PURE__ */ React51.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 line-clamp-3" }, excerpt)));
|
|
18099
|
+
}))) : /* @__PURE__ */ React51.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React51.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage)), postsArray.length > 0 && viewAllText && /* @__PURE__ */ React51.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React51.createElement(
|
|
17763
18100
|
Button2,
|
|
17764
18101
|
{
|
|
17765
18102
|
href: viewAllHref,
|
|
@@ -17772,7 +18109,7 @@ var BlogSection3 = ({
|
|
|
17772
18109
|
registerThemeVariant("blog-section", "barelux", BlogSection3);
|
|
17773
18110
|
|
|
17774
18111
|
// src/design_system/sections/blog-gallery.barelux.tsx
|
|
17775
|
-
import
|
|
18112
|
+
import React52, { useState as useState24 } from "react";
|
|
17776
18113
|
var BlogGallery3 = ({
|
|
17777
18114
|
blogPosts: postsData,
|
|
17778
18115
|
postsPerPage = 12,
|
|
@@ -17790,13 +18127,13 @@ var BlogGallery3 = ({
|
|
|
17790
18127
|
const startIndex = (currentPage - 1) * postsPerPage;
|
|
17791
18128
|
const endIndex = startIndex + postsPerPage;
|
|
17792
18129
|
const paginatedNonFeaturedPosts = nonFeaturedPosts.slice(startIndex, endIndex);
|
|
17793
|
-
return /* @__PURE__ */
|
|
18130
|
+
return /* @__PURE__ */ React52.createElement("section", { className: `py-16 md:py-20 lg:py-24 bg-primary ${className}` }, /* @__PURE__ */ React52.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React52.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, /* @__PURE__ */ React52.createElement("h1", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-4" }, title), /* @__PURE__ */ React52.createElement("p", { className: "font-body text-lg text-secondary leading-normal" }, subtitle)), posts.length > 0 ? /* @__PURE__ */ React52.createElement(React52.Fragment, null, featuredPost && /* @__PURE__ */ React52.createElement(
|
|
17794
18131
|
"a",
|
|
17795
18132
|
{
|
|
17796
18133
|
href: `/blog/${featuredPost.slug}`,
|
|
17797
18134
|
className: "block mb-16 group"
|
|
17798
18135
|
},
|
|
17799
|
-
/* @__PURE__ */
|
|
18136
|
+
/* @__PURE__ */ React52.createElement("div", { className: "w-full h-96 md:h-[500px] mb-8 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React52.createElement(
|
|
17800
18137
|
PhotoWithFallback2,
|
|
17801
18138
|
{
|
|
17802
18139
|
item: featuredPost,
|
|
@@ -17804,19 +18141,19 @@ var BlogGallery3 = ({
|
|
|
17804
18141
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
17805
18142
|
}
|
|
17806
18143
|
)),
|
|
17807
|
-
/* @__PURE__ */
|
|
17808
|
-
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */
|
|
18144
|
+
/* @__PURE__ */ React52.createElement("div", { className: "max-w-3xl" }, /* @__PURE__ */ React52.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__ */ React52.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__ */ React52.createElement("p", { className: "font-body text-lg leading-relaxed text-tertiary" }, featuredPost.excerpt_markdown.replace(/[#*\[\]()]/g, "").trim()))
|
|
18145
|
+
), paginatedNonFeaturedPosts.length > 0 && /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3 mb-16" }, paginatedNonFeaturedPosts.map((post) => {
|
|
17809
18146
|
var _a;
|
|
17810
18147
|
const excerpt = post.excerpt_markdown || ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
17811
|
-
return /* @__PURE__ */
|
|
18148
|
+
return /* @__PURE__ */ React52.createElement("a", { key: post.id, href: `/blog/${post.slug}`, className: "flex flex-col group" }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-64 mb-6 overflow-hidden rounded-2xl" }, /* @__PURE__ */ React52.createElement(
|
|
17812
18149
|
PhotoWithFallback2,
|
|
17813
18150
|
{
|
|
17814
18151
|
item: post,
|
|
17815
18152
|
fallbackId: post.id,
|
|
17816
18153
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
17817
18154
|
}
|
|
17818
|
-
)), /* @__PURE__ */
|
|
17819
|
-
})), totalPages > 1 && /* @__PURE__ */
|
|
18155
|
+
)), /* @__PURE__ */ React52.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__ */ React52.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-4 group-hover:underline line-clamp-2" }, post.title), excerpt && /* @__PURE__ */ React52.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4 flex-grow line-clamp-3" }, excerpt));
|
|
18156
|
+
})), totalPages > 1 && /* @__PURE__ */ React52.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React52.createElement(
|
|
17820
18157
|
PaginationPageDefault2,
|
|
17821
18158
|
{
|
|
17822
18159
|
rounded: true,
|
|
@@ -17824,23 +18161,27 @@ var BlogGallery3 = ({
|
|
|
17824
18161
|
total: totalPages,
|
|
17825
18162
|
onPageChange: setCurrentPage
|
|
17826
18163
|
}
|
|
17827
|
-
))) : /* @__PURE__ */
|
|
18164
|
+
))) : /* @__PURE__ */ React52.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React52.createElement("p", { className: "font-body text-base text-tertiary" }, emptyMessage))));
|
|
17828
18165
|
};
|
|
17829
18166
|
registerThemeVariant("blog-gallery", "barelux", BlogGallery3);
|
|
17830
18167
|
|
|
17831
18168
|
// src/design_system/sections/social-media-grid.barelux.tsx
|
|
17832
18169
|
function getPostImageUrls3(post) {
|
|
17833
|
-
var _a;
|
|
17834
|
-
|
|
18170
|
+
var _a, _b;
|
|
18171
|
+
const videoSet = ((_a = post.video_urls) == null ? void 0 : _a.length) ? new Set(post.video_urls) : null;
|
|
18172
|
+
const isVideo = (url) => isVideoUrl(url) || videoSet !== null && videoSet.has(url);
|
|
18173
|
+
if ((_b = post.image_urls) == null ? void 0 : _b.length) {
|
|
18174
|
+
return post.image_urls.filter((url) => !isVideo(url));
|
|
18175
|
+
}
|
|
17835
18176
|
const attachments = post.photo_attachments || [];
|
|
17836
18177
|
const sorted = [...attachments].sort((a, b) => {
|
|
17837
|
-
var _a2,
|
|
17838
|
-
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((
|
|
18178
|
+
var _a2, _b2;
|
|
18179
|
+
return ((_a2 = a.sort_order) != null ? _a2 : 0) - ((_b2 = b.sort_order) != null ? _b2 : 0);
|
|
17839
18180
|
});
|
|
17840
18181
|
return sorted.map((pa) => {
|
|
17841
|
-
var _a2,
|
|
17842
|
-
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((
|
|
17843
|
-
}).filter((url) => Boolean(url));
|
|
18182
|
+
var _a2, _b2, _c, _d;
|
|
18183
|
+
return ((_a2 = pa.photo) == null ? void 0 : _a2.large_url) || ((_b2 = pa.photo) == null ? void 0 : _b2.original_url) || ((_c = pa.photo) == null ? void 0 : _c.medium_url) || ((_d = pa.photo) == null ? void 0 : _d.thumbnail_url);
|
|
18184
|
+
}).filter((url) => Boolean(url)).filter((url) => !isVideo(url));
|
|
17844
18185
|
}
|
|
17845
18186
|
var formatDate3 = (dateString, recentLabel = "Recent") => {
|
|
17846
18187
|
if (!dateString) return recentLabel;
|
|
@@ -17915,23 +18256,25 @@ var SocialMediaGrid3 = ({
|
|
|
17915
18256
|
registerThemeVariant("social-media-grid", "barelux", SocialMediaGrid3);
|
|
17916
18257
|
|
|
17917
18258
|
// src/design_system/sections/contact-section.barelux.tsx
|
|
17918
|
-
import
|
|
18259
|
+
import React54 from "react";
|
|
17919
18260
|
|
|
17920
18261
|
// src/design_system/sections/contact-section-form.barelux.tsx
|
|
17921
|
-
import
|
|
18262
|
+
import React53, { useRef as useRef15, useState as useState25 } from "react";
|
|
17922
18263
|
var ContactSectionForm3 = ({
|
|
17923
18264
|
formDefinition,
|
|
17924
18265
|
submitButtonText = "Send message",
|
|
17925
18266
|
successMessage = "Thank you for contacting us! We'll get back to you soon.",
|
|
17926
18267
|
thankYouMessage,
|
|
17927
|
-
onSuccess
|
|
18268
|
+
onSuccess,
|
|
18269
|
+
privacyPolicyUrl,
|
|
18270
|
+
termsOfServiceUrl
|
|
17928
18271
|
}) => {
|
|
17929
18272
|
const { leadFormDefinition } = useFormDefinitions();
|
|
17930
18273
|
const resolvedFormDefinition = formDefinition != null ? formDefinition : leadFormDefinition;
|
|
17931
18274
|
const [isSubmitting, setIsSubmitting] = useState25(false);
|
|
17932
18275
|
const [submitStatus, setSubmitStatus] = useState25("idle");
|
|
17933
18276
|
const [statusMessage, setStatusMessage] = useState25("");
|
|
17934
|
-
const formRef =
|
|
18277
|
+
const formRef = useRef15(null);
|
|
17935
18278
|
const hasFields = resolvedFormDefinition != null && Array.isArray(resolvedFormDefinition.fields) && resolvedFormDefinition.fields.length > 0;
|
|
17936
18279
|
const handleSubmit = async (e) => {
|
|
17937
18280
|
var _a;
|
|
@@ -17942,7 +18285,8 @@ var ContactSectionForm3 = ({
|
|
|
17942
18285
|
const formData = new FormData(e.currentTarget);
|
|
17943
18286
|
const data = { formType: "lead" };
|
|
17944
18287
|
formData.forEach((value, key) => {
|
|
17945
|
-
if (key
|
|
18288
|
+
if (key.endsWith("_prefix")) return;
|
|
18289
|
+
if (typeof value === "string") data[key] = value;
|
|
17946
18290
|
});
|
|
17947
18291
|
try {
|
|
17948
18292
|
const response = await fetch("/api/form/", {
|
|
@@ -17969,7 +18313,14 @@ var ContactSectionForm3 = ({
|
|
|
17969
18313
|
setIsSubmitting(false);
|
|
17970
18314
|
};
|
|
17971
18315
|
if (!hasFields) return null;
|
|
17972
|
-
return /* @__PURE__ */
|
|
18316
|
+
return /* @__PURE__ */ React53.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React53.createElement(
|
|
18317
|
+
DynamicFormFields,
|
|
18318
|
+
{
|
|
18319
|
+
form: resolvedFormDefinition,
|
|
18320
|
+
privacyPolicyUrl,
|
|
18321
|
+
termsOfServiceUrl
|
|
18322
|
+
}
|
|
18323
|
+
), /* @__PURE__ */ React53.createElement(
|
|
17973
18324
|
Button2,
|
|
17974
18325
|
{
|
|
17975
18326
|
type: "submit",
|
|
@@ -17980,21 +18331,38 @@ var ContactSectionForm3 = ({
|
|
|
17980
18331
|
isLoading: isSubmitting
|
|
17981
18332
|
},
|
|
17982
18333
|
submitStatus === "success" ? successMessage.split("!")[0] + "!" : isSubmitting ? "Sending..." : submitButtonText
|
|
17983
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
18334
|
+
), submitStatus === "success" && /* @__PURE__ */ React53.createElement("div", { className: "font-body text-sm text-center", style: { color: "var(--color-text-brand-accent)" } }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React53.createElement("div", { className: "rounded-lg bg-error-50 p-4 text-error-700 font-body text-sm text-center" }, statusMessage));
|
|
17984
18335
|
};
|
|
17985
18336
|
|
|
17986
18337
|
// src/design_system/sections/contact-section.barelux.tsx
|
|
18338
|
+
function getLegalUrlsFromConfig3(config) {
|
|
18339
|
+
var _a, _b, _c;
|
|
18340
|
+
if (!((_a = config == null ? void 0 : config.navigation) == null ? void 0 : _a.footer)) return {};
|
|
18341
|
+
const flat = config.navigation.footer.flat();
|
|
18342
|
+
const privacy = (_b = flat.find((l) => l.label === "Privacy Policy")) == null ? void 0 : _b.href;
|
|
18343
|
+
const terms = (_c = flat.find((l) => l.label === "Terms of Service")) == null ? void 0 : _c.href;
|
|
18344
|
+
return { privacyPolicyUrl: privacy, termsOfServiceUrl: terms };
|
|
18345
|
+
}
|
|
17987
18346
|
var ContactSection3 = ({
|
|
17988
18347
|
websitePhotos,
|
|
17989
18348
|
title = "",
|
|
17990
18349
|
subtitle = "",
|
|
17991
|
-
formDefinition
|
|
18350
|
+
formDefinition,
|
|
18351
|
+
config
|
|
17992
18352
|
}) => {
|
|
18353
|
+
const { privacyPolicyUrl, termsOfServiceUrl } = getLegalUrlsFromConfig3(config);
|
|
17993
18354
|
const contactPhoto = websitePhotos == null ? void 0 : websitePhotos.contact;
|
|
17994
18355
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
17995
18356
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
17996
18357
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
17997
|
-
return /* @__PURE__ */
|
|
18358
|
+
return /* @__PURE__ */ React54.createElement("section", { className: "py-16 md:py-20 lg:py-24 bg-primary" }, /* @__PURE__ */ React54.createElement("div", { className: "mx-auto max-w-7xl px-4 md:px-8" }, /* @__PURE__ */ React54.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16" }, /* @__PURE__ */ React54.createElement("div", null, /* @__PURE__ */ React54.createElement("h2", { className: "font-display text-4xl font-medium text-fg-primary md:text-5xl mb-6" }, title), /* @__PURE__ */ React54.createElement("p", { className: "font-body text-lg text-secondary leading-relaxed mb-8" }, subtitle), /* @__PURE__ */ React54.createElement(
|
|
18359
|
+
ContactSectionForm3,
|
|
18360
|
+
{
|
|
18361
|
+
formDefinition,
|
|
18362
|
+
privacyPolicyUrl,
|
|
18363
|
+
termsOfServiceUrl
|
|
18364
|
+
}
|
|
18365
|
+
)), finalContactImage && /* @__PURE__ */ React54.createElement("div", { className: "max-lg:hidden relative h-full min-h-0 overflow-hidden rounded-lg" }, /* @__PURE__ */ React54.createElement(
|
|
17998
18366
|
PhotoWithFallback2,
|
|
17999
18367
|
{
|
|
18000
18368
|
photoUrl: finalContactImage,
|
|
@@ -18059,7 +18427,7 @@ registerThemeVariant("footer-home", "barelux", FooterHome3);
|
|
|
18059
18427
|
|
|
18060
18428
|
// src/design_system/sections/hero-home.balance.tsx
|
|
18061
18429
|
import { Fragment as Fragment7, useState as useState26 } from "react";
|
|
18062
|
-
import
|
|
18430
|
+
import React55 from "react";
|
|
18063
18431
|
var HeroHome4 = ({
|
|
18064
18432
|
websitePhotos,
|
|
18065
18433
|
companyInformation,
|
|
@@ -18077,7 +18445,7 @@ var HeroHome4 = ({
|
|
|
18077
18445
|
url: ((_b = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _b.url) || "",
|
|
18078
18446
|
alt: ((_c = websitePhotos == null ? void 0 : websitePhotos.hero) == null ? void 0 : _c.alt) || "Hero image"
|
|
18079
18447
|
};
|
|
18080
|
-
return /* @__PURE__ */
|
|
18448
|
+
return /* @__PURE__ */ React55.createElement(Fragment7, null, /* @__PURE__ */ React55.createElement("section", { className: "bg-primary py-20 md:py-28" }, /* @__PURE__ */ React55.createElement("div", { className: "mx-auto max-w-4xl px-4 text-center md:px-8" }, /* @__PURE__ */ React55.createElement("h1", { className: "font-display text-5xl font-normal leading-tight text-fg-primary md:text-6xl lg:text-7xl" }, headline), /* @__PURE__ */ React55.createElement("p", { className: "mt-6 font-body text-lg leading-relaxed text-secondary md:text-xl max-w-3xl mx-auto" }, subhead), ctaText && /* @__PURE__ */ React55.createElement("div", { className: "mt-10" }, /* @__PURE__ */ React55.createElement(
|
|
18081
18449
|
Button2,
|
|
18082
18450
|
{
|
|
18083
18451
|
as: "a",
|
|
@@ -18089,7 +18457,7 @@ var HeroHome4 = ({
|
|
|
18089
18457
|
className: "font-body font-medium"
|
|
18090
18458
|
},
|
|
18091
18459
|
ctaText
|
|
18092
|
-
)))), /* @__PURE__ */
|
|
18460
|
+
)))), /* @__PURE__ */ React55.createElement("section", { className: "bg-primary" }, /* @__PURE__ */ React55.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8 pb-16 md:pb-24" }, /* @__PURE__ */ React55.createElement("div", { className: "relative w-full h-[450px] md:h-[550px] lg:h-[650px] overflow-hidden" }, /* @__PURE__ */ React55.createElement(
|
|
18093
18461
|
PhotoWithFallback2,
|
|
18094
18462
|
{
|
|
18095
18463
|
photoUrl: heroImage.url,
|
|
@@ -18097,7 +18465,7 @@ var HeroHome4 = ({
|
|
|
18097
18465
|
fallbackId: "hero-home-balance",
|
|
18098
18466
|
className: "w-full h-full object-cover"
|
|
18099
18467
|
}
|
|
18100
|
-
), videoUrl && /* @__PURE__ */
|
|
18468
|
+
), videoUrl && /* @__PURE__ */ React55.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React55.createElement(VideoPlayButton, { onClick: () => setShowVideo(true) }))))), videoUrl && /* @__PURE__ */ React55.createElement(
|
|
18101
18469
|
VideoModal,
|
|
18102
18470
|
{
|
|
18103
18471
|
isOpen: showVideo,
|
|
@@ -18109,7 +18477,7 @@ var HeroHome4 = ({
|
|
|
18109
18477
|
registerThemeVariant("hero-home", "balance", HeroHome4);
|
|
18110
18478
|
|
|
18111
18479
|
// src/design_system/sections/header-navigation.balance.tsx
|
|
18112
|
-
import
|
|
18480
|
+
import React56, { useState as useState27, useRef as useRef16, useCallback as useCallback9 } from "react";
|
|
18113
18481
|
import Link10 from "next/link";
|
|
18114
18482
|
import Image13 from "next/image";
|
|
18115
18483
|
function HeaderNavigation4({
|
|
@@ -18121,11 +18489,11 @@ function HeaderNavigation4({
|
|
|
18121
18489
|
companyInformation,
|
|
18122
18490
|
websitePhotos
|
|
18123
18491
|
}) {
|
|
18124
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
18492
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
18125
18493
|
const [activeDropdown, setActiveDropdown] = useState27(null);
|
|
18126
18494
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState27(false);
|
|
18127
|
-
const closeTimeoutRef =
|
|
18128
|
-
|
|
18495
|
+
const closeTimeoutRef = useRef16(null);
|
|
18496
|
+
React56.useEffect(() => {
|
|
18129
18497
|
return () => {
|
|
18130
18498
|
if (closeTimeoutRef.current) {
|
|
18131
18499
|
clearTimeout(closeTimeoutRef.current);
|
|
@@ -18163,7 +18531,7 @@ function HeaderNavigation4({
|
|
|
18163
18531
|
const handleDropdownMouseLeave = useCallback9(() => {
|
|
18164
18532
|
handleMouseLeave();
|
|
18165
18533
|
}, [handleMouseLeave]);
|
|
18166
|
-
return /* @__PURE__ */
|
|
18534
|
+
return /* @__PURE__ */ React56.createElement(React56.Fragment, null, /* @__PURE__ */ React56.createElement("header", { className: "hidden md:block sticky top-0 z-50 bg-primary", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React56.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React56.createElement("div", { className: "relative flex items-center justify-between py-5" }, /* @__PURE__ */ React56.createElement(Link10, { href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/", className: "flex items-center z-10" }, logoUrl ? /* @__PURE__ */ React56.createElement(
|
|
18167
18535
|
Image13,
|
|
18168
18536
|
{
|
|
18169
18537
|
src: logoUrl,
|
|
@@ -18172,7 +18540,7 @@ function HeaderNavigation4({
|
|
|
18172
18540
|
width: 180,
|
|
18173
18541
|
height: 48
|
|
18174
18542
|
}
|
|
18175
|
-
) : /* @__PURE__ */
|
|
18543
|
+
) : /* @__PURE__ */ React56.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React56.createElement("span", { className: "font-display text-2xl font-normal", style: { color: "rgb(148, 102, 76)" } }, companyName), /* @__PURE__ */ React56.createElement("span", { className: "font-body text-xs tracking-widest uppercase", style: { color: "rgb(148, 102, 76)", opacity: 0.7 } }, "Concierge Cosmetic Injections"))), /* @__PURE__ */ React56.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__ */ React56.createElement(
|
|
18176
18544
|
"div",
|
|
18177
18545
|
{
|
|
18178
18546
|
key: item.label,
|
|
@@ -18180,7 +18548,7 @@ function HeaderNavigation4({
|
|
|
18180
18548
|
onMouseEnter: () => handleMouseEnter(item),
|
|
18181
18549
|
onMouseLeave: handleMouseLeave
|
|
18182
18550
|
},
|
|
18183
|
-
item.href ? /* @__PURE__ */
|
|
18551
|
+
item.href ? /* @__PURE__ */ React56.createElement(
|
|
18184
18552
|
Link10,
|
|
18185
18553
|
{
|
|
18186
18554
|
href: item.href,
|
|
@@ -18188,15 +18556,15 @@ function HeaderNavigation4({
|
|
|
18188
18556
|
style: { color: "rgb(170, 143, 123)" }
|
|
18189
18557
|
},
|
|
18190
18558
|
item.label
|
|
18191
|
-
) : /* @__PURE__ */
|
|
18192
|
-
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */
|
|
18559
|
+
) : /* @__PURE__ */ React56.createElement("span", { className: "font-display text-xl font-semibold px-5 py-2 cursor-pointer", style: { color: "rgb(170, 143, 123)" } }, item.label),
|
|
18560
|
+
item.children && item.children.length > 0 && activeDropdown === item.label && /* @__PURE__ */ React56.createElement(
|
|
18193
18561
|
"div",
|
|
18194
18562
|
{
|
|
18195
18563
|
className: "absolute left-0 top-full pt-2",
|
|
18196
18564
|
onMouseEnter: handleDropdownMouseEnter,
|
|
18197
18565
|
onMouseLeave: handleDropdownMouseLeave
|
|
18198
18566
|
},
|
|
18199
|
-
/* @__PURE__ */
|
|
18567
|
+
/* @__PURE__ */ React56.createElement("div", { className: "balance-dropdown-panel bg-primary border border-secondary shadow-md min-w-48 py-2" }, item.children.map((child) => /* @__PURE__ */ React56.createElement(
|
|
18200
18568
|
Link10,
|
|
18201
18569
|
{
|
|
18202
18570
|
key: child.href,
|
|
@@ -18207,7 +18575,7 @@ function HeaderNavigation4({
|
|
|
18207
18575
|
child.label
|
|
18208
18576
|
)))
|
|
18209
18577
|
)
|
|
18210
|
-
))), /* @__PURE__ */
|
|
18578
|
+
))), /* @__PURE__ */ React56.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__ */ React56.createElement(
|
|
18211
18579
|
Button2,
|
|
18212
18580
|
{
|
|
18213
18581
|
href: ctaUrls.secondaryHref,
|
|
@@ -18217,25 +18585,25 @@ function HeaderNavigation4({
|
|
|
18217
18585
|
size: "sm"
|
|
18218
18586
|
},
|
|
18219
18587
|
props.cta_button.label
|
|
18220
|
-
), /* @__PURE__ */
|
|
18588
|
+
), /* @__PURE__ */ React56.createElement(
|
|
18221
18589
|
Button2,
|
|
18222
18590
|
{
|
|
18223
18591
|
href: ctaUrls.primaryHref,
|
|
18224
|
-
target: (
|
|
18225
|
-
rel: ((
|
|
18592
|
+
target: (_g = (_f = props == null ? void 0 : props.cta_button) == null ? void 0 : _f.target) != null ? _g : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
18593
|
+
rel: ((_h = props == null ? void 0 : props.cta_button) == null ? void 0 : _h.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
18226
18594
|
color: "primary",
|
|
18227
18595
|
size: "sm"
|
|
18228
18596
|
},
|
|
18229
|
-
((
|
|
18230
|
-
))))), /* @__PURE__ */
|
|
18597
|
+
((_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__ */ React56.createElement("header", { className: "md:hidden sticky top-0 z-50 bg-primary", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React56.createElement("div", { className: "flex items-center justify-between px-4 py-4" }, /* @__PURE__ */ React56.createElement(
|
|
18231
18599
|
"button",
|
|
18232
18600
|
{
|
|
18233
18601
|
onClick: () => setIsMobileMenuOpen(true),
|
|
18234
18602
|
className: "text-fg-primary",
|
|
18235
18603
|
"aria-label": "Open menu"
|
|
18236
18604
|
},
|
|
18237
|
-
/* @__PURE__ */
|
|
18238
|
-
), /* @__PURE__ */
|
|
18605
|
+
/* @__PURE__ */ React56.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React56.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }))
|
|
18606
|
+
), /* @__PURE__ */ React56.createElement(Link10, { href: ((_k = props == null ? void 0 : props.logo) == null ? void 0 : _k.href) || "/", className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React56.createElement(
|
|
18239
18607
|
Image13,
|
|
18240
18608
|
{
|
|
18241
18609
|
src: logoUrl,
|
|
@@ -18244,15 +18612,15 @@ function HeaderNavigation4({
|
|
|
18244
18612
|
width: 120,
|
|
18245
18613
|
height: 32
|
|
18246
18614
|
}
|
|
18247
|
-
) : /* @__PURE__ */
|
|
18615
|
+
) : /* @__PURE__ */ React56.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React56.createElement("div", { className: "w-6" }))), isMobileMenuOpen && /* @__PURE__ */ React56.createElement("div", { className: "balance-mobile-menu fixed inset-0 bg-primary z-50 md:hidden" }, /* @__PURE__ */ React56.createElement("div", { className: "flex flex-col h-full" }, /* @__PURE__ */ React56.createElement("div", { className: "flex items-center justify-between px-4 py-4", style: { borderBottom: "3px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React56.createElement(
|
|
18248
18616
|
"button",
|
|
18249
18617
|
{
|
|
18250
18618
|
onClick: () => setIsMobileMenuOpen(false),
|
|
18251
18619
|
className: "text-fg-primary",
|
|
18252
18620
|
"aria-label": "Close menu"
|
|
18253
18621
|
},
|
|
18254
|
-
/* @__PURE__ */
|
|
18255
|
-
), /* @__PURE__ */
|
|
18622
|
+
/* @__PURE__ */ React56.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React56.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
|
|
18623
|
+
), /* @__PURE__ */ React56.createElement("div", { className: "flex items-center" }, logoUrl ? /* @__PURE__ */ React56.createElement(
|
|
18256
18624
|
Image13,
|
|
18257
18625
|
{
|
|
18258
18626
|
src: logoUrl,
|
|
@@ -18261,7 +18629,7 @@ function HeaderNavigation4({
|
|
|
18261
18629
|
width: 120,
|
|
18262
18630
|
height: 32
|
|
18263
18631
|
}
|
|
18264
|
-
) : /* @__PURE__ */
|
|
18632
|
+
) : /* @__PURE__ */ React56.createElement("span", { className: "font-display text-lg font-normal text-fg-primary" }, companyName)), /* @__PURE__ */ React56.createElement("div", { className: "w-6" })), /* @__PURE__ */ React56.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-8" }, /* @__PURE__ */ React56.createElement("ul", { className: "space-y-4" }, navigation.map((item) => /* @__PURE__ */ React56.createElement("li", { key: item.label }, /* @__PURE__ */ React56.createElement(
|
|
18265
18633
|
Link10,
|
|
18266
18634
|
{
|
|
18267
18635
|
href: item.href || "#",
|
|
@@ -18270,7 +18638,7 @@ function HeaderNavigation4({
|
|
|
18270
18638
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18271
18639
|
},
|
|
18272
18640
|
item.label
|
|
18273
|
-
), item.children && item.children.length > 0 && /* @__PURE__ */
|
|
18641
|
+
), item.children && item.children.length > 0 && /* @__PURE__ */ React56.createElement("ul", { className: "ml-4 mt-2 space-y-2" }, item.children.map((child) => /* @__PURE__ */ React56.createElement("li", { key: child.href }, /* @__PURE__ */ React56.createElement(
|
|
18274
18642
|
Link10,
|
|
18275
18643
|
{
|
|
18276
18644
|
href: child.href,
|
|
@@ -18278,7 +18646,7 @@ function HeaderNavigation4({
|
|
|
18278
18646
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18279
18647
|
},
|
|
18280
18648
|
child.label
|
|
18281
|
-
)))))))), /* @__PURE__ */
|
|
18649
|
+
)))))))), /* @__PURE__ */ React56.createElement("div", { className: "px-4 py-6", style: { borderTop: "1px solid rgb(217, 191, 168)" } }, /* @__PURE__ */ React56.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__ */ React56.createElement(
|
|
18282
18650
|
Button2,
|
|
18283
18651
|
{
|
|
18284
18652
|
href: ctaUrls.secondaryHref,
|
|
@@ -18288,7 +18656,7 @@ function HeaderNavigation4({
|
|
|
18288
18656
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18289
18657
|
},
|
|
18290
18658
|
props.cta_button.secondary_label
|
|
18291
|
-
), /* @__PURE__ */
|
|
18659
|
+
), /* @__PURE__ */ React56.createElement(
|
|
18292
18660
|
Button2,
|
|
18293
18661
|
{
|
|
18294
18662
|
href: ctaUrls.primaryHref,
|
|
@@ -18297,8 +18665,8 @@ function HeaderNavigation4({
|
|
|
18297
18665
|
className: "w-full",
|
|
18298
18666
|
onClick: () => setIsMobileMenuOpen(false)
|
|
18299
18667
|
},
|
|
18300
|
-
((
|
|
18301
|
-
))))), /* @__PURE__ */
|
|
18668
|
+
((_m = props == null ? void 0 : props.cta_button) == null ? void 0 : _m.label) || ""
|
|
18669
|
+
))))), /* @__PURE__ */ React56.createElement("div", { className: "fixed bottom-0 left-0 right-0 z-40 md:hidden", style: { backgroundColor: "rgb(148, 133, 84)" } }, /* @__PURE__ */ React56.createElement("div", { className: "flex gap-0" }, ((_n = props == null ? void 0 : props.cta_button) == null ? void 0 : _n.secondary_label) && ctaUrls.hasSecondary && /* @__PURE__ */ React56.createElement(
|
|
18302
18670
|
Button2,
|
|
18303
18671
|
{
|
|
18304
18672
|
href: ctaUrls.secondaryHref,
|
|
@@ -18309,16 +18677,16 @@ function HeaderNavigation4({
|
|
|
18309
18677
|
style: { borderRight: "1px solid rgba(255, 255, 255, 0.2)" }
|
|
18310
18678
|
},
|
|
18311
18679
|
props.cta_button.label
|
|
18312
|
-
), /* @__PURE__ */
|
|
18680
|
+
), /* @__PURE__ */ React56.createElement(
|
|
18313
18681
|
Button2,
|
|
18314
18682
|
{
|
|
18315
18683
|
href: ctaUrls.primaryHref,
|
|
18316
|
-
target: (
|
|
18317
|
-
rel: ((
|
|
18684
|
+
target: (_p = (_o = props == null ? void 0 : props.cta_button) == null ? void 0 : _o.target) != null ? _p : isExternalCtaUrl(ctaUrls.primaryHref) ? "_blank" : void 0,
|
|
18685
|
+
rel: ((_q = props == null ? void 0 : props.cta_button) == null ? void 0 : _q.target) === "_blank" || isExternalCtaUrl(ctaUrls.primaryHref) ? "noopener noreferrer" : void 0,
|
|
18318
18686
|
color: "primary",
|
|
18319
|
-
className: `${((
|
|
18687
|
+
className: `${((_r = props == null ? void 0 : props.cta_button) == null ? void 0 : _r.secondary_label) && ctaUrls.hasSecondary ? "flex-1" : "w-full"} font-body text-sm uppercase tracking-wide py-4 rounded-none`
|
|
18320
18688
|
},
|
|
18321
|
-
((
|
|
18689
|
+
((_s = props == null ? void 0 : props.cta_button) == null ? void 0 : _s.secondary_label) && ctaUrls.hasSecondary ? props.cta_button.secondary_label : ((_t = props == null ? void 0 : props.cta_button) == null ? void 0 : _t.label) || "Contact"
|
|
18322
18690
|
))));
|
|
18323
18691
|
}
|
|
18324
18692
|
registerThemeVariant("header-navigation", "balance", HeaderNavigation4);
|
|
@@ -18382,23 +18750,25 @@ var FooterHome4 = ({
|
|
|
18382
18750
|
registerThemeVariant("footer-home", "balance", FooterHome4);
|
|
18383
18751
|
|
|
18384
18752
|
// src/design_system/sections/contact-section.balance.tsx
|
|
18385
|
-
import
|
|
18753
|
+
import React58 from "react";
|
|
18386
18754
|
|
|
18387
18755
|
// src/design_system/sections/contact-section-form.balance.tsx
|
|
18388
|
-
import
|
|
18756
|
+
import React57, { useRef as useRef17, useState as useState28 } from "react";
|
|
18389
18757
|
var ContactSectionForm4 = ({
|
|
18390
18758
|
formDefinition,
|
|
18391
18759
|
submitButtonText = "Send message",
|
|
18392
18760
|
successMessage = "Thank you for contacting us! We'll get back to you soon.",
|
|
18393
18761
|
thankYouMessage,
|
|
18394
|
-
onSuccess
|
|
18762
|
+
onSuccess,
|
|
18763
|
+
privacyPolicyUrl,
|
|
18764
|
+
termsOfServiceUrl
|
|
18395
18765
|
}) => {
|
|
18396
18766
|
const { leadFormDefinition } = useFormDefinitions();
|
|
18397
18767
|
const resolvedFormDefinition = formDefinition != null ? formDefinition : leadFormDefinition;
|
|
18398
18768
|
const [isSubmitting, setIsSubmitting] = useState28(false);
|
|
18399
18769
|
const [submitStatus, setSubmitStatus] = useState28("idle");
|
|
18400
18770
|
const [statusMessage, setStatusMessage] = useState28("");
|
|
18401
|
-
const formRef =
|
|
18771
|
+
const formRef = useRef17(null);
|
|
18402
18772
|
const hasFields = resolvedFormDefinition != null && Array.isArray(resolvedFormDefinition.fields) && resolvedFormDefinition.fields.length > 0;
|
|
18403
18773
|
const handleSubmit = async (e) => {
|
|
18404
18774
|
var _a;
|
|
@@ -18409,7 +18779,8 @@ var ContactSectionForm4 = ({
|
|
|
18409
18779
|
const formData = new FormData(e.currentTarget);
|
|
18410
18780
|
const data = { formType: "lead" };
|
|
18411
18781
|
formData.forEach((value, key) => {
|
|
18412
|
-
if (key
|
|
18782
|
+
if (key.endsWith("_prefix")) return;
|
|
18783
|
+
if (typeof value === "string") data[key] = value;
|
|
18413
18784
|
});
|
|
18414
18785
|
try {
|
|
18415
18786
|
const response = await fetch("/api/form/", {
|
|
@@ -18436,7 +18807,14 @@ var ContactSectionForm4 = ({
|
|
|
18436
18807
|
setIsSubmitting(false);
|
|
18437
18808
|
};
|
|
18438
18809
|
if (!hasFields) return null;
|
|
18439
|
-
return /* @__PURE__ */
|
|
18810
|
+
return /* @__PURE__ */ React57.createElement(Form2, { ref: formRef, onSubmit: handleSubmit, className: "flex flex-col gap-6" }, /* @__PURE__ */ React57.createElement(
|
|
18811
|
+
DynamicFormFields,
|
|
18812
|
+
{
|
|
18813
|
+
form: resolvedFormDefinition,
|
|
18814
|
+
privacyPolicyUrl,
|
|
18815
|
+
termsOfServiceUrl
|
|
18816
|
+
}
|
|
18817
|
+
), /* @__PURE__ */ React57.createElement(
|
|
18440
18818
|
Button2,
|
|
18441
18819
|
{
|
|
18442
18820
|
type: "submit",
|
|
@@ -18447,21 +18825,31 @@ var ContactSectionForm4 = ({
|
|
|
18447
18825
|
isLoading: isSubmitting
|
|
18448
18826
|
},
|
|
18449
18827
|
isSubmitting ? "Sending..." : submitButtonText
|
|
18450
|
-
), submitStatus === "success" && /* @__PURE__ */
|
|
18828
|
+
), submitStatus === "success" && /* @__PURE__ */ React57.createElement("div", { className: "rounded-sm bg-success-50 p-4 text-success-700 font-body" }, thankYouMessage != null ? thankYouMessage : statusMessage), submitStatus === "error" && /* @__PURE__ */ React57.createElement("div", { className: "rounded-sm bg-error-50 p-4 text-error-700 font-body text-sm" }, statusMessage));
|
|
18451
18829
|
};
|
|
18452
18830
|
|
|
18453
18831
|
// src/design_system/sections/contact-section.balance.tsx
|
|
18832
|
+
function getLegalUrlsFromConfig4(config) {
|
|
18833
|
+
var _a, _b, _c;
|
|
18834
|
+
if (!((_a = config == null ? void 0 : config.navigation) == null ? void 0 : _a.footer)) return {};
|
|
18835
|
+
const flat = config.navigation.footer.flat();
|
|
18836
|
+
const privacy = (_b = flat.find((l) => l.label === "Privacy Policy")) == null ? void 0 : _b.href;
|
|
18837
|
+
const terms = (_c = flat.find((l) => l.label === "Terms of Service")) == null ? void 0 : _c.href;
|
|
18838
|
+
return { privacyPolicyUrl: privacy, termsOfServiceUrl: terms };
|
|
18839
|
+
}
|
|
18454
18840
|
var ContactSection4 = ({
|
|
18455
18841
|
websitePhotos,
|
|
18456
18842
|
title = "",
|
|
18457
18843
|
subtitle = "",
|
|
18458
|
-
formDefinition
|
|
18844
|
+
formDefinition,
|
|
18845
|
+
config
|
|
18459
18846
|
}) => {
|
|
18847
|
+
const { privacyPolicyUrl, termsOfServiceUrl } = getLegalUrlsFromConfig4(config);
|
|
18460
18848
|
const contactPhoto = websitePhotos == null ? void 0 : websitePhotos.contact;
|
|
18461
18849
|
const contactImageUrl = contactPhoto == null ? void 0 : contactPhoto.url;
|
|
18462
18850
|
const finalContactImage = contactImageUrl && contactImageUrl.trim() !== "" ? contactImageUrl : void 0;
|
|
18463
18851
|
const finalContactImageAlt = (contactPhoto == null ? void 0 : contactPhoto.alt) || "Contact image";
|
|
18464
|
-
return /* @__PURE__ */
|
|
18852
|
+
return /* @__PURE__ */ React58.createElement("section", { className: "bg-primary py-16 md:py-24" }, /* @__PURE__ */ React58.createElement("div", { className: "mx-auto max-w-4xl px-4 md:px-8" }, /* @__PURE__ */ React58.createElement("div", { className: "text-center mb-12" }, /* @__PURE__ */ React58.createElement("h2", { className: "font-display text-4xl font-normal leading-tight text-fg-primary md:text-5xl" }, title), /* @__PURE__ */ React58.createElement("p", { className: "mt-4 font-body text-lg leading-relaxed text-tertiary max-w-2xl mx-auto" }, subtitle)), finalContactImage && /* @__PURE__ */ React58.createElement("div", { className: "mb-12 overflow-hidden h-72 md:h-96" }, /* @__PURE__ */ React58.createElement(
|
|
18465
18853
|
PhotoWithFallback2,
|
|
18466
18854
|
{
|
|
18467
18855
|
photoUrl: finalContactImage,
|
|
@@ -18469,7 +18857,14 @@ var ContactSection4 = ({
|
|
|
18469
18857
|
fallbackId: "contact-image",
|
|
18470
18858
|
className: "h-full w-full object-cover"
|
|
18471
18859
|
}
|
|
18472
|
-
)), /* @__PURE__ */
|
|
18860
|
+
)), /* @__PURE__ */ React58.createElement("div", { className: "max-w-2xl mx-auto" }, /* @__PURE__ */ React58.createElement(
|
|
18861
|
+
ContactSectionForm4,
|
|
18862
|
+
{
|
|
18863
|
+
formDefinition,
|
|
18864
|
+
privacyPolicyUrl,
|
|
18865
|
+
termsOfServiceUrl
|
|
18866
|
+
}
|
|
18867
|
+
))));
|
|
18473
18868
|
};
|
|
18474
18869
|
registerThemeVariant("contact-section", "balance", ContactSection4);
|
|
18475
18870
|
|
|
@@ -18551,7 +18946,7 @@ var AboutHome4 = ({
|
|
|
18551
18946
|
registerThemeVariant("about-home", "balance", AboutHome4);
|
|
18552
18947
|
|
|
18553
18948
|
// src/design_system/sections/testimonials-home.balance.tsx
|
|
18554
|
-
import
|
|
18949
|
+
import React59 from "react";
|
|
18555
18950
|
var TestimonialsHome4 = ({
|
|
18556
18951
|
testimonials: testimonialsData,
|
|
18557
18952
|
title = "",
|
|
@@ -18560,7 +18955,7 @@ var TestimonialsHome4 = ({
|
|
|
18560
18955
|
}) => {
|
|
18561
18956
|
const testimonials = Array.isArray(testimonialsData) ? testimonialsData : [];
|
|
18562
18957
|
const displayTestimonials = perPage ? testimonials.slice(0, perPage) : testimonials;
|
|
18563
|
-
return /* @__PURE__ */
|
|
18958
|
+
return /* @__PURE__ */ React59.createElement("section", { className: "bg-primary py-16 md:py-24" }, /* @__PURE__ */ React59.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React59.createElement("div", { className: "text-center mb-12 max-w-3xl mx-auto" }, /* @__PURE__ */ React59.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl mb-4" }, title), subtitle && /* @__PURE__ */ React59.createElement("p", { className: "font-body text-lg text-secondary" }, subtitle)), /* @__PURE__ */ React59.createElement(
|
|
18564
18959
|
CarouselSectionWrapper,
|
|
18565
18960
|
{
|
|
18566
18961
|
title: "",
|
|
@@ -18574,7 +18969,7 @@ var TestimonialsHome4 = ({
|
|
|
18574
18969
|
const avatarUrl = getAvatarUrl(testimonial.photo_attachments, testimonial.id, reviewerName);
|
|
18575
18970
|
const rating = testimonial.rating || 5;
|
|
18576
18971
|
const initials = reviewerName.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
18577
|
-
return /* @__PURE__ */
|
|
18972
|
+
return /* @__PURE__ */ React59.createElement(Carousel.Item, { key: testimonial.id || i, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React59.createElement("div", { className: "bg-secondary/30 p-8 h-full flex flex-col" }, /* @__PURE__ */ React59.createElement("div", { className: "flex gap-1 mb-6" }, Array.from({ length: 5 }).map((_, starIdx) => /* @__PURE__ */ React59.createElement(
|
|
18578
18973
|
"svg",
|
|
18579
18974
|
{
|
|
18580
18975
|
key: starIdx,
|
|
@@ -18586,8 +18981,8 @@ var TestimonialsHome4 = ({
|
|
|
18586
18981
|
strokeWidth: "2",
|
|
18587
18982
|
viewBox: "0 0 24 24"
|
|
18588
18983
|
},
|
|
18589
|
-
/* @__PURE__ */
|
|
18590
|
-
))), /* @__PURE__ */
|
|
18984
|
+
/* @__PURE__ */ React59.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" })
|
|
18985
|
+
))), /* @__PURE__ */ React59.createElement("p", { className: "font-body text-base leading-relaxed text-secondary mb-8 flex-grow" }, '"', quote, '"'), /* @__PURE__ */ React59.createElement("div", { className: "flex items-center gap-4 pt-6 border-t border-primary/20" }, /* @__PURE__ */ React59.createElement(
|
|
18591
18986
|
Avatar2,
|
|
18592
18987
|
{
|
|
18593
18988
|
src: avatarUrl,
|
|
@@ -18595,14 +18990,14 @@ var TestimonialsHome4 = ({
|
|
|
18595
18990
|
initials,
|
|
18596
18991
|
size: "xl"
|
|
18597
18992
|
}
|
|
18598
|
-
), /* @__PURE__ */
|
|
18993
|
+
), /* @__PURE__ */ React59.createElement("div", null, /* @__PURE__ */ React59.createElement("p", { className: "font-body text-sm font-medium text-fg-primary" }, reviewerName), /* @__PURE__ */ React59.createElement("p", { className: "font-body text-xs text-tertiary mt-0.5" }, "Verified Customer")))));
|
|
18599
18994
|
})
|
|
18600
18995
|
)));
|
|
18601
18996
|
};
|
|
18602
18997
|
registerThemeVariant("testimonials-home", "balance", TestimonialsHome4);
|
|
18603
18998
|
|
|
18604
18999
|
// src/design_system/sections/blog-section.balance.tsx
|
|
18605
|
-
import
|
|
19000
|
+
import React60 from "react";
|
|
18606
19001
|
var BlogSection4 = ({
|
|
18607
19002
|
blogPosts: postsData,
|
|
18608
19003
|
title = "",
|
|
@@ -18622,7 +19017,7 @@ var BlogSection4 = ({
|
|
|
18622
19017
|
return "Recent";
|
|
18623
19018
|
}
|
|
18624
19019
|
};
|
|
18625
|
-
return /* @__PURE__ */
|
|
19020
|
+
return /* @__PURE__ */ React60.createElement("section", { className: "bg-secondary py-16 md:py-24" }, /* @__PURE__ */ React60.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, /* @__PURE__ */ React60.createElement("div", { className: "text-center mb-16 max-w-3xl mx-auto" }, /* @__PURE__ */ React60.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl mb-4" }, title), subtitle && /* @__PURE__ */ React60.createElement("p", { className: "font-body text-lg text-secondary" }, subtitle)), /* @__PURE__ */ React60.createElement(
|
|
18626
19021
|
CarouselSectionWrapper,
|
|
18627
19022
|
{
|
|
18628
19023
|
title: "",
|
|
@@ -18632,16 +19027,16 @@ var BlogSection4 = ({
|
|
|
18632
19027
|
postsArray.map((post) => {
|
|
18633
19028
|
var _a;
|
|
18634
19029
|
const excerpt = ((_a = post.content_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim().substring(0, 150)) || "";
|
|
18635
|
-
return /* @__PURE__ */
|
|
19030
|
+
return /* @__PURE__ */ React60.createElement(Carousel.Item, { key: post.id, className: "pl-4 md:basis-1/2 lg:basis-1/3" }, /* @__PURE__ */ React60.createElement("a", { href: `/blog/${post.slug}`, className: "flex flex-col h-full group bg-primary" }, /* @__PURE__ */ React60.createElement("div", { className: "w-full h-64 overflow-hidden" }, /* @__PURE__ */ React60.createElement(
|
|
18636
19031
|
PhotoWithFallback2,
|
|
18637
19032
|
{
|
|
18638
19033
|
item: post,
|
|
18639
19034
|
fallbackId: post.id,
|
|
18640
19035
|
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
18641
19036
|
}
|
|
18642
|
-
)), /* @__PURE__ */
|
|
19037
|
+
)), /* @__PURE__ */ React60.createElement("div", { className: "p-6 flex flex-col flex-grow" }, /* @__PURE__ */ React60.createElement("p", { className: "text-xs font-body font-medium uppercase tracking-wide mb-3 text-brand-accent" }, formatDate4(post.published_at)), /* @__PURE__ */ React60.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__ */ React60.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary flex-grow line-clamp-3" }, excerpt), /* @__PURE__ */ React60.createElement("span", { className: "mt-4 font-body text-sm font-medium uppercase tracking-wide", style: { color: "var(--color-text-brand-accent)" } }, "Read More \u2192"))));
|
|
18643
19038
|
})
|
|
18644
|
-
), postsArray.length > 0 && /* @__PURE__ */
|
|
19039
|
+
), postsArray.length > 0 && /* @__PURE__ */ React60.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React60.createElement(
|
|
18645
19040
|
Button2,
|
|
18646
19041
|
{
|
|
18647
19042
|
as: "a",
|
|
@@ -18656,7 +19051,7 @@ var BlogSection4 = ({
|
|
|
18656
19051
|
registerThemeVariant("blog-section", "balance", BlogSection4);
|
|
18657
19052
|
|
|
18658
19053
|
// src/design_system/sections/team-grid.balance.tsx
|
|
18659
|
-
import
|
|
19054
|
+
import React61 from "react";
|
|
18660
19055
|
var TeamGrid3 = ({
|
|
18661
19056
|
teamMembers: membersData,
|
|
18662
19057
|
title = "",
|
|
@@ -18667,10 +19062,10 @@ var TeamGrid3 = ({
|
|
|
18667
19062
|
}) => {
|
|
18668
19063
|
const members = Array.isArray(membersData) ? membersData : [];
|
|
18669
19064
|
const displayMembers = members.slice(0, maxMembers);
|
|
18670
|
-
return /* @__PURE__ */
|
|
19065
|
+
return /* @__PURE__ */ React61.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React61.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React61.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React61.createElement("h2", { className: "text-display-sm font-semibold text-primary md:text-display-md" }, title), subtitle && /* @__PURE__ */ React61.createElement("p", { className: "mt-4 text-lg text-tertiary md:mt-5 md:text-xl" }, subtitle)), displayMembers.length > 0 ? /* @__PURE__ */ React61.createElement("div", { className: "mt-12 md:mt-16" }, /* @__PURE__ */ React61.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) => {
|
|
18671
19066
|
var _a;
|
|
18672
19067
|
const bio = ((_a = member.bio_markdown) == null ? void 0 : _a.replace(/[#*\[\]()]/g, "").trim()) || "";
|
|
18673
|
-
return /* @__PURE__ */
|
|
19068
|
+
return /* @__PURE__ */ React61.createElement("li", { key: member.id || index, className: "flex flex-col gap-5 md:gap-6 max-w-xs w-full" }, /* @__PURE__ */ React61.createElement(
|
|
18674
19069
|
PhotoWithFallback2,
|
|
18675
19070
|
{
|
|
18676
19071
|
item: member,
|
|
@@ -18678,13 +19073,13 @@ var TeamGrid3 = ({
|
|
|
18678
19073
|
alt: member.name || "Team member",
|
|
18679
19074
|
className: "h-78 w-full object-cover md:h-74 rounded-2xl"
|
|
18680
19075
|
}
|
|
18681
|
-
), /* @__PURE__ */
|
|
18682
|
-
}))) : /* @__PURE__ */
|
|
19076
|
+
), /* @__PURE__ */ React61.createElement("div", null, /* @__PURE__ */ React61.createElement("h3", { className: "text-lg font-semibold text-primary md:text-xl" }, member.name), /* @__PURE__ */ React61.createElement("p", { className: "text-md text-brand-secondary md:mt-0.5 md:text-lg" }, member.position), bio && /* @__PURE__ */ React61.createElement("p", { className: "mt-4 text-md text-tertiary leading-relaxed" }, bio)));
|
|
19077
|
+
}))) : /* @__PURE__ */ React61.createElement("div", { className: "text-center mt-12" }, /* @__PURE__ */ React61.createElement("p", { className: "text-gray-500" }, "No team members available"))));
|
|
18683
19078
|
};
|
|
18684
19079
|
registerThemeVariant("team-grid", "balance", TeamGrid3);
|
|
18685
19080
|
|
|
18686
19081
|
// src/design_system/sections/services-grid.balance.tsx
|
|
18687
|
-
import
|
|
19082
|
+
import React62 from "react";
|
|
18688
19083
|
import Link12 from "next/link";
|
|
18689
19084
|
var ServicesGrid3 = ({
|
|
18690
19085
|
services: servicesData,
|
|
@@ -18694,12 +19089,12 @@ var ServicesGrid3 = ({
|
|
|
18694
19089
|
className = ""
|
|
18695
19090
|
}) => {
|
|
18696
19091
|
const services = Array.isArray(servicesData) ? servicesData : [];
|
|
18697
|
-
return /* @__PURE__ */
|
|
19092
|
+
return /* @__PURE__ */ React62.createElement("section", { className: `${backgroundColor} py-16 md:py-24 ${className}` }, /* @__PURE__ */ React62.createElement("div", { className: "mx-auto w-full max-w-container px-4 md:px-8" }, (title || subtitle) && /* @__PURE__ */ React62.createElement("div", { className: "mx-auto mb-12 flex w-full max-w-3xl flex-col items-center text-center" }, title && /* @__PURE__ */ React62.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React62.createElement("p", { className: "mt-4 font-body text-lg text-secondary md:mt-5 md:text-xl" }, subtitle)), services.length > 0 ? /* @__PURE__ */ React62.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) => {
|
|
18698
19093
|
var _a, _b, _c, _d;
|
|
18699
19094
|
const description = service.summary || (service.description_markdown ? service.description_markdown.replace(/[#*\[\]()]/g, "").trim().substring(0, 120) + "..." : "");
|
|
18700
19095
|
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);
|
|
18701
19096
|
const imageAlt = (photo == null ? void 0 : photo.title) || service.name;
|
|
18702
|
-
return /* @__PURE__ */
|
|
19097
|
+
return /* @__PURE__ */ React62.createElement("li", { key: service.id || index }, /* @__PURE__ */ React62.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__ */ React62.createElement(Link12, { href: `/services/${service.slug}`, className: "block" }, /* @__PURE__ */ React62.createElement("div", { className: "h-48 w-full overflow-hidden rounded-lg md:h-64" }, /* @__PURE__ */ React62.createElement(
|
|
18703
19098
|
PhotoWithFallback2,
|
|
18704
19099
|
{
|
|
18705
19100
|
item: service,
|
|
@@ -18707,8 +19102,8 @@ var ServicesGrid3 = ({
|
|
|
18707
19102
|
alt: imageAlt || "Service image",
|
|
18708
19103
|
className: "size-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
18709
19104
|
}
|
|
18710
|
-
)), /* @__PURE__ */
|
|
18711
|
-
})) : /* @__PURE__ */
|
|
19105
|
+
)), /* @__PURE__ */ React62.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__ */ React62.createElement("p", { className: "font-body text-base leading-relaxed text-tertiary mb-4" }, description), /* @__PURE__ */ React62.createElement("span", { className: "font-body text-sm font-medium uppercase tracking-wide", style: { color: "var(--color-text-brand-accent)" } }, "Learn More \u2192"))));
|
|
19106
|
+
})) : /* @__PURE__ */ React62.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React62.createElement("p", { className: "font-body text-base text-tertiary" }, "No services available"))));
|
|
18712
19107
|
};
|
|
18713
19108
|
registerThemeVariant("services-grid", "balance", ServicesGrid3);
|
|
18714
19109
|
|
|
@@ -18824,15 +19219,459 @@ var FeatureTabHorizontal = ({ title, subtitle, footer, isCurrent }) => /* @__PUR
|
|
|
18824
19219
|
footer
|
|
18825
19220
|
);
|
|
18826
19221
|
|
|
19222
|
+
// src/design_system/sections/service-menu-section.tsx
|
|
19223
|
+
import React63, { useState as useState30, useEffect as useEffect11, useCallback as useCallback10, useMemo as useMemo8 } from "react";
|
|
19224
|
+
import { createPortal } from "react-dom";
|
|
19225
|
+
var SERVICE_MENU_MODAL_ROOT_ID = "service-menu-modal-root";
|
|
19226
|
+
var CYCLE_INTERVAL_MIN_MS = 6e3;
|
|
19227
|
+
var CYCLE_INTERVAL_MAX_MS = 8e3;
|
|
19228
|
+
function seedToUnit(seed) {
|
|
19229
|
+
let h = 2166136261 >>> 0;
|
|
19230
|
+
for (let i = 0; i < seed.length; i++) {
|
|
19231
|
+
h ^= seed.charCodeAt(i);
|
|
19232
|
+
h = Math.imul(h, 16777619) >>> 0 >>> 0;
|
|
19233
|
+
}
|
|
19234
|
+
return (h >>> 0) / 4294967296;
|
|
19235
|
+
}
|
|
19236
|
+
function photoAttachmentDisplayUrl(pa) {
|
|
19237
|
+
var _a, _b;
|
|
19238
|
+
return ((_a = pa.photo) == null ? void 0 : _a.large_url) || ((_b = pa.photo) == null ? void 0 : _b.medium_url);
|
|
19239
|
+
}
|
|
19240
|
+
function photoAttachmentAlt(pa) {
|
|
19241
|
+
var _a, _b;
|
|
19242
|
+
return ((_a = pa.photo) == null ? void 0 : _a.alt_text) || ((_b = pa.photo) == null ? void 0 : _b.title) || "";
|
|
19243
|
+
}
|
|
19244
|
+
function shuffleWithSeed(array, seed) {
|
|
19245
|
+
if (array.length <= 1) return array;
|
|
19246
|
+
const arr = [...array];
|
|
19247
|
+
let h = 2166136261 >>> 0;
|
|
19248
|
+
for (let i = 0; i < seed.length; i++) {
|
|
19249
|
+
h ^= seed.charCodeAt(i);
|
|
19250
|
+
h = Math.imul(h, 16777619) >>> 0 >>> 0;
|
|
19251
|
+
}
|
|
19252
|
+
const next = (step) => {
|
|
19253
|
+
h = Math.imul(1664525, h + step >>> 0) + 1013904223 >>> 0;
|
|
19254
|
+
return (h >>> 0) / 4294967296;
|
|
19255
|
+
};
|
|
19256
|
+
for (let i = arr.length - 1; i > 0; i--) {
|
|
19257
|
+
const j = Math.floor(next(i) * (i + 1));
|
|
19258
|
+
[arr[i], arr[j]] = [arr[j], arr[i]];
|
|
19259
|
+
}
|
|
19260
|
+
return arr;
|
|
19261
|
+
}
|
|
19262
|
+
var CROSSFADE_DURATION_MS = 600;
|
|
19263
|
+
function useCycledPhotoList(photoAttachments, seed) {
|
|
19264
|
+
return useMemo8(
|
|
19265
|
+
() => {
|
|
19266
|
+
const arr = Array.isArray(photoAttachments) && photoAttachments.length > 0 ? photoAttachments : [];
|
|
19267
|
+
if (arr.length === 0) return [];
|
|
19268
|
+
const shuffled = shuffleWithSeed(arr, seed);
|
|
19269
|
+
return shuffled.map((pa) => {
|
|
19270
|
+
var _a;
|
|
19271
|
+
return { url: (_a = photoAttachmentDisplayUrl(pa)) != null ? _a : "", alt: photoAttachmentAlt(pa) };
|
|
19272
|
+
}).filter((x) => x.url);
|
|
19273
|
+
},
|
|
19274
|
+
[photoAttachments, seed]
|
|
19275
|
+
);
|
|
19276
|
+
}
|
|
19277
|
+
function GridCardWithImage({
|
|
19278
|
+
photoAttachments,
|
|
19279
|
+
fallbackId,
|
|
19280
|
+
fallbackAlt,
|
|
19281
|
+
title,
|
|
19282
|
+
subtitle,
|
|
19283
|
+
children,
|
|
19284
|
+
onClick,
|
|
19285
|
+
websitePhotos,
|
|
19286
|
+
companyInformation,
|
|
19287
|
+
cycleSeed
|
|
19288
|
+
}) {
|
|
19289
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
19290
|
+
const seed = cycleSeed != null ? cycleSeed : String(fallbackId);
|
|
19291
|
+
const list = useCycledPhotoList(photoAttachments, seed);
|
|
19292
|
+
const [currentIndex, setCurrentIndex] = useState30(0);
|
|
19293
|
+
const [transitioning, setTransitioning] = useState30(false);
|
|
19294
|
+
const intervalMs = useMemo8(
|
|
19295
|
+
() => CYCLE_INTERVAL_MIN_MS + Math.floor(seedToUnit(seed) * (CYCLE_INTERVAL_MAX_MS - CYCLE_INTERVAL_MIN_MS + 1)),
|
|
19296
|
+
[seed]
|
|
19297
|
+
);
|
|
19298
|
+
useEffect11(() => {
|
|
19299
|
+
if (list.length <= 1) return;
|
|
19300
|
+
const id3 = setInterval(() => setTransitioning(true), intervalMs);
|
|
19301
|
+
return () => clearInterval(id3);
|
|
19302
|
+
}, [list.length, intervalMs]);
|
|
19303
|
+
useEffect11(() => {
|
|
19304
|
+
if (!transitioning || list.length <= 1) return;
|
|
19305
|
+
const t = setTimeout(() => {
|
|
19306
|
+
setCurrentIndex((i) => (i + 1) % list.length);
|
|
19307
|
+
setTransitioning(false);
|
|
19308
|
+
}, CROSSFADE_DURATION_MS);
|
|
19309
|
+
return () => clearTimeout(t);
|
|
19310
|
+
}, [transitioning, list.length]);
|
|
19311
|
+
const nextIndex = list.length > 1 ? (currentIndex + 1) % list.length : 0;
|
|
19312
|
+
const currentItem = list[currentIndex];
|
|
19313
|
+
const displayAlt = (currentItem == null ? void 0 : currentItem.alt) || fallbackAlt;
|
|
19314
|
+
const singleUrl = (_a = list[0]) == null ? void 0 : _a.url;
|
|
19315
|
+
return /* @__PURE__ */ React63.createElement(
|
|
19316
|
+
"button",
|
|
19317
|
+
{
|
|
19318
|
+
type: "button",
|
|
19319
|
+
onClick,
|
|
19320
|
+
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
|
+
},
|
|
19322
|
+
/* @__PURE__ */ React63.createElement("div", { className: "w-full h-36 overflow-hidden rounded-lg mb-3 relative" }, list.length === 0 ? /* @__PURE__ */ React63.createElement(
|
|
19323
|
+
PhotoWithFallback2,
|
|
19324
|
+
{
|
|
19325
|
+
item: void 0,
|
|
19326
|
+
fallbackId,
|
|
19327
|
+
alt: fallbackAlt,
|
|
19328
|
+
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",
|
|
19329
|
+
websitePhotos,
|
|
19330
|
+
companyInformation
|
|
19331
|
+
}
|
|
19332
|
+
) : list.length === 1 && singleUrl ? (
|
|
19333
|
+
// eslint-disable-next-line @next/next/no-img-element -- dynamic API URLs; next/image not configured for external host
|
|
19334
|
+
/* @__PURE__ */ React63.createElement(
|
|
19335
|
+
"img",
|
|
19336
|
+
{
|
|
19337
|
+
src: singleUrl,
|
|
19338
|
+
alt: displayAlt,
|
|
19339
|
+
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19340
|
+
}
|
|
19341
|
+
)
|
|
19342
|
+
) : /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
|
|
19343
|
+
"div",
|
|
19344
|
+
{
|
|
19345
|
+
className: `absolute inset-0 ${transitioning ? "transition-opacity duration-[600ms] ease-in-out" : "transition-none"}`,
|
|
19346
|
+
style: { opacity: transitioning ? 0 : 1 }
|
|
19347
|
+
},
|
|
19348
|
+
/* @__PURE__ */ React63.createElement(
|
|
19349
|
+
"img",
|
|
19350
|
+
{
|
|
19351
|
+
src: (_b = list[currentIndex]) == null ? void 0 : _b.url,
|
|
19352
|
+
alt: (_d = (_c = list[currentIndex]) == null ? void 0 : _c.alt) != null ? _d : displayAlt,
|
|
19353
|
+
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19354
|
+
}
|
|
19355
|
+
)
|
|
19356
|
+
), /* @__PURE__ */ React63.createElement(
|
|
19357
|
+
"div",
|
|
19358
|
+
{
|
|
19359
|
+
className: `absolute inset-0 ${transitioning ? "transition-opacity duration-[600ms] ease-in-out" : "transition-none"}`,
|
|
19360
|
+
style: { opacity: transitioning ? 1 : 0 }
|
|
19361
|
+
},
|
|
19362
|
+
/* @__PURE__ */ React63.createElement(
|
|
19363
|
+
"img",
|
|
19364
|
+
{
|
|
19365
|
+
src: (_e = list[nextIndex]) == null ? void 0 : _e.url,
|
|
19366
|
+
alt: (_g = (_f = list[nextIndex]) == null ? void 0 : _f.alt) != null ? _g : displayAlt,
|
|
19367
|
+
className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
19368
|
+
}
|
|
19369
|
+
)
|
|
19370
|
+
))),
|
|
19371
|
+
subtitle && /* @__PURE__ */ React63.createElement("p", { className: "text-xs font-medium text-fg-secondary uppercase tracking-wide line-clamp-1" }, subtitle),
|
|
19372
|
+
/* @__PURE__ */ React63.createElement("h4", { className: "font-display text-base font-normal text-fg-primary mt-1 group-hover:underline line-clamp-2" }, title),
|
|
19373
|
+
children
|
|
19374
|
+
);
|
|
19375
|
+
}
|
|
19376
|
+
function CarouselRow({
|
|
19377
|
+
rowTitle,
|
|
19378
|
+
items,
|
|
19379
|
+
renderItem
|
|
19380
|
+
}) {
|
|
19381
|
+
if (!(items == null ? void 0 : items.length)) return null;
|
|
19382
|
+
return /* @__PURE__ */ React63.createElement("div", { className: "mb-12 last:mb-0" }, /* @__PURE__ */ React63.createElement(Carousel.Root, { opts: { align: "start", loop: true } }, /* @__PURE__ */ React63.createElement("div", { className: "flex items-center justify-between gap-4 mb-2" }, /* @__PURE__ */ React63.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary md:text-3xl" }, rowTitle), /* @__PURE__ */ React63.createElement("div", { className: "flex gap-2 flex-shrink-0" }, /* @__PURE__ */ React63.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__ */ React63.createElement("svg", { className: "w-5 h-5 text-fg-primary", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": true }, /* @__PURE__ */ React63.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }))), /* @__PURE__ */ React63.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__ */ React63.createElement("svg", { className: "w-5 h-5 text-fg-primary", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": true }, /* @__PURE__ */ React63.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }))))), /* @__PURE__ */ React63.createElement(Carousel.Content, { className: "-ml-3" }, items.map((item, index) => {
|
|
19383
|
+
var _a;
|
|
19384
|
+
return /* @__PURE__ */ React63.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
|
+
}))));
|
|
19386
|
+
}
|
|
19387
|
+
function GridRow({
|
|
19388
|
+
rowTitle,
|
|
19389
|
+
items,
|
|
19390
|
+
renderItem
|
|
19391
|
+
}) {
|
|
19392
|
+
if (!(items == null ? void 0 : items.length)) return null;
|
|
19393
|
+
return /* @__PURE__ */ React63.createElement("div", { className: "mb-12 last:mb-0" }, /* @__PURE__ */ React63.createElement("h3", { className: "font-display text-2xl font-normal text-fg-primary mb-3 md:text-3xl" }, rowTitle), /* @__PURE__ */ React63.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
|
+
var _a;
|
|
19395
|
+
return /* @__PURE__ */ React63.createElement("div", { key: (_a = item.id) != null ? _a : index, className: "min-w-0 flex" }, renderItem(item, index));
|
|
19396
|
+
})));
|
|
19397
|
+
}
|
|
19398
|
+
function MenuBlock({
|
|
19399
|
+
rowTitle,
|
|
19400
|
+
items,
|
|
19401
|
+
renderItem,
|
|
19402
|
+
layout: layout2
|
|
19403
|
+
}) {
|
|
19404
|
+
if (!(items == null ? void 0 : items.length)) return null;
|
|
19405
|
+
return layout2 === "carousel" ? /* @__PURE__ */ React63.createElement(CarouselRow, { rowTitle, items, renderItem }) : /* @__PURE__ */ React63.createElement(GridRow, { rowTitle, items, renderItem });
|
|
19406
|
+
}
|
|
19407
|
+
function formatPriceCents(cents) {
|
|
19408
|
+
if (cents == null) return null;
|
|
19409
|
+
return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(cents / 100);
|
|
19410
|
+
}
|
|
19411
|
+
function ModalSection({ title, children }) {
|
|
19412
|
+
return /* @__PURE__ */ React63.createElement("div", null, /* @__PURE__ */ React63.createElement("h3", { className: "font-display text-sm font-semibold text-fg-primary uppercase tracking-wide mb-2" }, title), children);
|
|
19413
|
+
}
|
|
19414
|
+
function DetailModalContent({
|
|
19415
|
+
detail,
|
|
19416
|
+
serviceItems = []
|
|
19417
|
+
}) {
|
|
19418
|
+
var _a, _b, _c, _d, _e;
|
|
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
|
+
}
|
|
19431
|
+
if (detail.type === "package") {
|
|
19432
|
+
const p = detail.item;
|
|
19433
|
+
const categoryLine = ((_e = p.category_names) == null ? void 0 : _e.length) ? p.category_names.join(" | ") : null;
|
|
19434
|
+
const descriptionMarkdown2 = p.description_markdown || p.summary || p.first_service_description_markdown;
|
|
19435
|
+
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), descriptionMarkdown2 && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Package details" }, /* @__PURE__ */ React63.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: descriptionMarkdown2 }))), p.package_items && p.package_items.length > 0 && /* @__PURE__ */ React63.createElement(ModalSection, { title: "What's included" }, /* @__PURE__ */ React63.createElement("ul", { className: "space-y-4" }, p.package_items.map((pi, i) => {
|
|
19436
|
+
var _a2, _b2, _c2, _d2, _e2, _f, _g, _h, _i;
|
|
19437
|
+
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 = (_d2 = (_c2 = fullItem == null ? void 0 : fullItem.name) != null ? _c2 : (_b2 = pi.service_item) == null ? void 0 : _b2.name) != null ? _d2 : "Item";
|
|
19439
|
+
const desc = (_g = (_e2 = fullItem == null ? void 0 : fullItem.summary) != null ? _e2 : fullItem == null ? void 0 : fullItem.description_markdown) != null ? _g : (_f = pi.service_item) == null ? void 0 : _f.summary;
|
|
19440
|
+
return /* @__PURE__ */ React63.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__ */ React63.createElement("p", { className: "font-display font-medium text-fg-primary" }, pi.quantity > 1 && `${pi.quantity}\xD7 `, name), desc && /* @__PURE__ */ React63.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__ */ React63.createElement("p", null, desc) : /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: desc })));
|
|
19441
|
+
}))), p.pricing_info && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Pricing" }, /* @__PURE__ */ React63.createElement("div", { className: "rounded-lg border border-secondary bg-secondary/40 p-4" }, /* @__PURE__ */ React63.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: p.pricing_info })))));
|
|
19442
|
+
}
|
|
19443
|
+
const si = detail.item;
|
|
19444
|
+
const priceStr = formatPriceCents(si.price_cents);
|
|
19445
|
+
const summary = si.summary || si.service_summary;
|
|
19446
|
+
const descriptionMarkdown = si.description_markdown || si.service_description_markdown;
|
|
19447
|
+
return /* @__PURE__ */ React63.createElement("div", { className: "space-y-6" }, si.service_name && /* @__PURE__ */ React63.createElement("p", { className: "text-sm font-medium text-fg-secondary uppercase tracking-wide" }, si.service_name), priceStr && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Price" }, /* @__PURE__ */ React63.createElement("p", { className: "font-display text-lg font-normal text-fg-primary" }, priceStr), si.duration_minutes != null && si.duration_minutes > 0 && /* @__PURE__ */ React63.createElement("p", { className: "font-body text-sm text-fg-secondary mt-1" }, "Duration: ", si.duration_minutes, " min")), summary && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Overview" }, /* @__PURE__ */ React63.createElement("p", { className: "font-body text-fg-primary" }, summary)), descriptionMarkdown && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Full description" }, /* @__PURE__ */ React63.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: descriptionMarkdown }))), si.pricing_info && /* @__PURE__ */ React63.createElement(ModalSection, { title: "Pricing details" }, /* @__PURE__ */ React63.createElement("div", { className: "rounded-lg border border-secondary bg-secondary/40 p-4" }, /* @__PURE__ */ React63.createElement("div", { className: "prose prose-sm font-body text-fg-primary max-w-none" }, /* @__PURE__ */ React63.createElement(MarkdownRenderer2, { content: si.pricing_info })))));
|
|
19448
|
+
}
|
|
19449
|
+
function ServiceMenuSection({
|
|
19450
|
+
title = "Service Menu",
|
|
19451
|
+
subtitle,
|
|
19452
|
+
offers = null,
|
|
19453
|
+
packages = null,
|
|
19454
|
+
services = null,
|
|
19455
|
+
websitePhotos,
|
|
19456
|
+
companyInformation,
|
|
19457
|
+
viewAllHref,
|
|
19458
|
+
viewAllText = "View All",
|
|
19459
|
+
servicesRowTitle = "Treatments",
|
|
19460
|
+
variant = "section"
|
|
19461
|
+
}) {
|
|
19462
|
+
const offerList = React63.useMemo(
|
|
19463
|
+
() => Array.isArray(offers) ? offers.filter((o) => !o.expired) : [],
|
|
19464
|
+
[offers]
|
|
19465
|
+
);
|
|
19466
|
+
const packageList = React63.useMemo(
|
|
19467
|
+
() => Array.isArray(packages) ? packages : [],
|
|
19468
|
+
[packages]
|
|
19469
|
+
);
|
|
19470
|
+
const serviceList = React63.useMemo(
|
|
19471
|
+
() => Array.isArray(services) ? services : [],
|
|
19472
|
+
[services]
|
|
19473
|
+
);
|
|
19474
|
+
const serviceItemIdToService = React63.useMemo(() => {
|
|
19475
|
+
const m = /* @__PURE__ */ new Map();
|
|
19476
|
+
serviceList.forEach((s) => (s.service_items || []).forEach((si) => m.set(si.id, s)));
|
|
19477
|
+
return m;
|
|
19478
|
+
}, [serviceList]);
|
|
19479
|
+
const packagesForMenu = React63.useMemo(
|
|
19480
|
+
() => packageList.map((pkg) => {
|
|
19481
|
+
var _a, _b, _c;
|
|
19482
|
+
const category_names = [
|
|
19483
|
+
...new Set(
|
|
19484
|
+
(pkg.package_items || []).map((pi) => {
|
|
19485
|
+
var _a2, _b2, _c2;
|
|
19486
|
+
return (_c2 = serviceItemIdToService.get((_b2 = (_a2 = pi.service_item) == null ? void 0 : _a2.id) != null ? _b2 : 0)) == null ? void 0 : _c2.name;
|
|
19487
|
+
}).filter(Boolean)
|
|
19488
|
+
)
|
|
19489
|
+
];
|
|
19490
|
+
const firstPi = (_a = pkg.package_items) == null ? void 0 : _a[0];
|
|
19491
|
+
const firstService = firstPi ? serviceItemIdToService.get((_c = (_b = firstPi.service_item) == null ? void 0 : _b.id) != null ? _c : 0) : void 0;
|
|
19492
|
+
const first_service_description_markdown = (firstService == null ? void 0 : firstService.description_markdown) || (firstService == null ? void 0 : firstService.summary) || null;
|
|
19493
|
+
return __spreadProps(__spreadValues({}, pkg), { category_names, first_service_description_markdown });
|
|
19494
|
+
}),
|
|
19495
|
+
[packageList, serviceItemIdToService]
|
|
19496
|
+
);
|
|
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
|
+
const serviceItemsForMenu = serviceList.flatMap(
|
|
19512
|
+
(s) => (s.service_items || []).map((si) => __spreadProps(__spreadValues({}, si), {
|
|
19513
|
+
service_name: s.name,
|
|
19514
|
+
service_summary: s.summary,
|
|
19515
|
+
service_description_markdown: s.description_markdown
|
|
19516
|
+
}))
|
|
19517
|
+
);
|
|
19518
|
+
const hasAny = offersForMenu.length > 0 || packagesForMenu.length > 0 || serviceItemsForMenu.length > 0;
|
|
19519
|
+
const CAROUSEL_MIN = 3;
|
|
19520
|
+
const isPage = variant === "page";
|
|
19521
|
+
const offersLayout = isPage ? "grid" : offersForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19522
|
+
const packagesLayout = isPage ? "grid" : packagesForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19523
|
+
const serviceItemsLayout = isPage ? "grid" : serviceItemsForMenu.length >= CAROUSEL_MIN ? "carousel" : "grid";
|
|
19524
|
+
const [detailItem, setDetailItem] = useState30(null);
|
|
19525
|
+
const [portalTarget, setPortalTarget] = useState30(null);
|
|
19526
|
+
useEffect11(() => {
|
|
19527
|
+
let el = document.getElementById(SERVICE_MENU_MODAL_ROOT_ID);
|
|
19528
|
+
if (!el) {
|
|
19529
|
+
el = document.createElement("div");
|
|
19530
|
+
el.id = SERVICE_MENU_MODAL_ROOT_ID;
|
|
19531
|
+
document.body.appendChild(el);
|
|
19532
|
+
}
|
|
19533
|
+
setPortalTarget(el);
|
|
19534
|
+
return () => {
|
|
19535
|
+
el == null ? void 0 : el.remove();
|
|
19536
|
+
};
|
|
19537
|
+
}, []);
|
|
19538
|
+
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
|
+
const renderPackageCard = useCallback10(
|
|
19565
|
+
(pkg, index) => {
|
|
19566
|
+
var _a;
|
|
19567
|
+
const categorySubtitle = ((_a = pkg.category_names) == null ? void 0 : _a.length) ? pkg.category_names.join(" | ") : null;
|
|
19568
|
+
const cardDesc = pkg.description_markdown || pkg.summary || pkg.first_service_description_markdown;
|
|
19569
|
+
const plainDesc = cardDesc ? cardDesc.replace(/[#*`\[\]]/g, "").replace(/\n+/g, " ").trim() : "";
|
|
19570
|
+
const descText = plainDesc.length > 120 ? plainDesc.slice(0, 120) + "\u2026" : plainDesc;
|
|
19571
|
+
return /* @__PURE__ */ React63.createElement(
|
|
19572
|
+
GridCardWithImage,
|
|
19573
|
+
{
|
|
19574
|
+
photoAttachments: pkg.photo_attachments,
|
|
19575
|
+
fallbackId: `pkg-${pkg.id}`,
|
|
19576
|
+
fallbackAlt: pkg.name,
|
|
19577
|
+
title: pkg.name,
|
|
19578
|
+
subtitle: categorySubtitle,
|
|
19579
|
+
onClick: () => setDetailItem({ type: "package", item: pkg }),
|
|
19580
|
+
websitePhotos,
|
|
19581
|
+
companyInformation,
|
|
19582
|
+
cycleSeed: `pkg-${pkg.id}-${index}`
|
|
19583
|
+
},
|
|
19584
|
+
descText && /* @__PURE__ */ React63.createElement("p", { className: "font-body text-sm text-tertiary mt-1 line-clamp-2" }, descText)
|
|
19585
|
+
);
|
|
19586
|
+
},
|
|
19587
|
+
[websitePhotos, companyInformation]
|
|
19588
|
+
);
|
|
19589
|
+
const renderServiceItemCard = useCallback10(
|
|
19590
|
+
(si, index) => {
|
|
19591
|
+
var _a, _b, _c, _d;
|
|
19592
|
+
return /* @__PURE__ */ React63.createElement(
|
|
19593
|
+
GridCardWithImage,
|
|
19594
|
+
{
|
|
19595
|
+
photoAttachments: si.photo_attachments,
|
|
19596
|
+
fallbackId: `service-item-${si.id}`,
|
|
19597
|
+
fallbackAlt: ((_c = (_b = (_a = si.photo_attachments) == null ? void 0 : _a[0]) == null ? void 0 : _b.photo) == null ? void 0 : _c.title) || si.name,
|
|
19598
|
+
title: si.name,
|
|
19599
|
+
subtitle: (_d = si.service_name) != null ? _d : null,
|
|
19600
|
+
onClick: () => setDetailItem({ type: "service_item", item: si }),
|
|
19601
|
+
websitePhotos,
|
|
19602
|
+
companyInformation,
|
|
19603
|
+
cycleSeed: `service-item-${si.id}-${index}`
|
|
19604
|
+
},
|
|
19605
|
+
formatPriceCents(si.price_cents) && /* @__PURE__ */ React63.createElement("p", { className: "font-body text-sm font-medium text-fg-primary mt-1" }, formatPriceCents(si.price_cents)),
|
|
19606
|
+
(() => {
|
|
19607
|
+
const desc = si.summary || si.description_markdown || si.service_summary || si.service_description_markdown;
|
|
19608
|
+
if (!desc) return null;
|
|
19609
|
+
const plain = desc.replace(/[#*`\[\]]/g, "").replace(/\n+/g, " ").trim();
|
|
19610
|
+
const text = plain.length > 120 ? plain.slice(0, 120) + "\u2026" : plain;
|
|
19611
|
+
return /* @__PURE__ */ React63.createElement("p", { className: "font-body text-sm text-tertiary mt-1 line-clamp-2" }, text);
|
|
19612
|
+
})()
|
|
19613
|
+
);
|
|
19614
|
+
},
|
|
19615
|
+
[websitePhotos, companyInformation]
|
|
19616
|
+
);
|
|
19617
|
+
if (!hasAny) return null;
|
|
19618
|
+
const modalTitle = detailItem ? detailItem.item.name : "";
|
|
19619
|
+
return /* @__PURE__ */ React63.createElement("section", { className: variant === "page" ? "py-12 md:py-20" : "py-12 md:py-16" }, /* @__PURE__ */ React63.createElement("div", { className: "mx-auto max-w-container px-4 md:px-8" }, variant === "section" && /* @__PURE__ */ React63.createElement("div", { className: "mx-auto max-w-3xl text-center mb-12 md:mb-16" }, title && /* @__PURE__ */ React63.createElement("h2", { className: "font-display text-4xl font-normal text-fg-primary md:text-5xl" }, title), subtitle && /* @__PURE__ */ React63.createElement("p", { className: "mt-4 font-display text-lg leading-relaxed text-tertiary md:text-xl max-w-3xl mx-auto" }, subtitle)), /* @__PURE__ */ React63.createElement(
|
|
19620
|
+
MenuBlock,
|
|
19621
|
+
{
|
|
19622
|
+
rowTitle: "Offers",
|
|
19623
|
+
items: offersForMenu,
|
|
19624
|
+
layout: offersLayout,
|
|
19625
|
+
renderItem: renderOfferCard
|
|
19626
|
+
}
|
|
19627
|
+
), /* @__PURE__ */ React63.createElement(
|
|
19628
|
+
MenuBlock,
|
|
19629
|
+
{
|
|
19630
|
+
rowTitle: "Packages",
|
|
19631
|
+
items: packagesForMenu,
|
|
19632
|
+
layout: packagesLayout,
|
|
19633
|
+
renderItem: renderPackageCard
|
|
19634
|
+
}
|
|
19635
|
+
), /* @__PURE__ */ React63.createElement(
|
|
19636
|
+
MenuBlock,
|
|
19637
|
+
{
|
|
19638
|
+
rowTitle: servicesRowTitle,
|
|
19639
|
+
items: serviceItemsForMenu,
|
|
19640
|
+
layout: serviceItemsLayout,
|
|
19641
|
+
renderItem: renderServiceItemCard
|
|
19642
|
+
}
|
|
19643
|
+
), variant === "section" && viewAllHref && viewAllText && /* @__PURE__ */ React63.createElement("div", { className: "mt-12 text-center" }, /* @__PURE__ */ React63.createElement(Button2, { href: viewAllHref, color: "primary", size: "md" }, viewAllText))), portalTarget && detailItem && createPortal(
|
|
19644
|
+
/* @__PURE__ */ React63.createElement(
|
|
19645
|
+
Modal,
|
|
19646
|
+
{
|
|
19647
|
+
isOpen: true,
|
|
19648
|
+
onClose: closeModal,
|
|
19649
|
+
title: modalTitle,
|
|
19650
|
+
maxWidth: "2xl"
|
|
19651
|
+
},
|
|
19652
|
+
/* @__PURE__ */ React63.createElement(
|
|
19653
|
+
DetailModalContent,
|
|
19654
|
+
{
|
|
19655
|
+
detail: detailItem,
|
|
19656
|
+
services: serviceList,
|
|
19657
|
+
packages: packagesForMenu,
|
|
19658
|
+
serviceItems: serviceItemsForMenu
|
|
19659
|
+
}
|
|
19660
|
+
)
|
|
19661
|
+
),
|
|
19662
|
+
portalTarget
|
|
19663
|
+
));
|
|
19664
|
+
}
|
|
19665
|
+
|
|
18827
19666
|
// src/design_system/sections/index.tsx
|
|
18828
19667
|
function createThemedExport2(componentName, BaseComponent) {
|
|
18829
19668
|
return function ThemedComponent(props) {
|
|
18830
19669
|
const { theme } = useTheme();
|
|
18831
19670
|
try {
|
|
18832
19671
|
const Component2 = getThemedComponent(componentName, theme);
|
|
18833
|
-
return
|
|
19672
|
+
return React64.createElement(Component2, props);
|
|
18834
19673
|
} catch (e) {
|
|
18835
|
-
return
|
|
19674
|
+
return React64.createElement(BaseComponent, props);
|
|
18836
19675
|
}
|
|
18837
19676
|
};
|
|
18838
19677
|
}
|
|
@@ -18871,6 +19710,9 @@ var PolicyDocumentSection2 = PolicyDocumentSection;
|
|
|
18871
19710
|
var SocialMediaHero3 = createThemedExport2("hero-social-media", SocialMediaHero);
|
|
18872
19711
|
var TestimonialsHero3 = createThemedExport2("hero-testimonials", TestimonialsHero);
|
|
18873
19712
|
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);
|
|
18874
19716
|
export {
|
|
18875
19717
|
AboutHome5 as AboutHome,
|
|
18876
19718
|
BlogCardFullWidthHorizontal,
|
|
@@ -18931,9 +19773,14 @@ export {
|
|
|
18931
19773
|
LocationDetailHero3 as LocationDetailHero,
|
|
18932
19774
|
LocationDetailsSection3 as LocationDetailsSection,
|
|
18933
19775
|
LocationGrid3 as LocationGrid,
|
|
19776
|
+
OfferDetailSection2 as OfferDetailSection,
|
|
19777
|
+
OffersGallery2 as OffersGallery,
|
|
19778
|
+
OffersGrid,
|
|
19779
|
+
OffersSection2 as OffersSection,
|
|
18934
19780
|
PolicyDocumentSection2 as PolicyDocumentSection,
|
|
18935
19781
|
ServiceDetailContent2 as ServiceDetailContent,
|
|
18936
19782
|
ServiceDetailHero3 as ServiceDetailHero,
|
|
19783
|
+
ServiceMenuSection,
|
|
18937
19784
|
ServicesGrid4 as ServicesGrid,
|
|
18938
19785
|
ServicesHome5 as ServicesHome,
|
|
18939
19786
|
SocialMediaGrid4 as SocialMediaGrid,
|