@opensite/ui 0.8.1 → 0.8.2
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/carousel-horizontal-cards.cjs +8 -6
- package/dist/carousel-horizontal-cards.js +8 -6
- package/dist/carousel-image-hero.cjs +85 -160
- package/dist/carousel-image-hero.d.cts +1 -5
- package/dist/carousel-image-hero.d.ts +1 -5
- package/dist/carousel-image-hero.js +85 -160
- package/dist/carousel-portfolio-hero.cjs +138 -59
- package/dist/carousel-portfolio-hero.js +138 -59
- package/dist/carousel-product-feature-showcase.cjs +148 -95
- package/dist/carousel-product-feature-showcase.js +148 -95
- package/dist/carousel-progress-slider.cjs +13 -9
- package/dist/carousel-progress-slider.js +13 -9
- package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
- package/dist/carousel-scrolling-feature-showcase.js +105 -54
- package/dist/feature-accordion-image.cjs +9 -8
- package/dist/feature-accordion-image.js +9 -8
- package/dist/feature-animated-carousel.cjs +65 -49
- package/dist/feature-animated-carousel.js +65 -49
- package/dist/feature-badge-grid-six.cjs +20 -17
- package/dist/feature-badge-grid-six.js +21 -18
- package/dist/feature-bento-image-grid.cjs +12 -8
- package/dist/feature-bento-image-grid.js +12 -8
- package/dist/feature-bento-utilities.cjs +9 -5
- package/dist/feature-bento-utilities.js +9 -5
- package/dist/feature-capabilities-grid.cjs +41 -38
- package/dist/feature-capabilities-grid.js +41 -38
- package/dist/feature-card-grid-linked.cjs +18 -18
- package/dist/feature-card-grid-linked.js +19 -19
- package/dist/feature-carousel-progress.cjs +3 -3
- package/dist/feature-carousel-progress.js +4 -4
- package/dist/feature-category-image-cards.cjs +3 -3
- package/dist/feature-category-image-cards.js +4 -4
- package/dist/feature-checklist-image.cjs +2 -2
- package/dist/feature-checklist-image.js +2 -2
- package/dist/feature-checklist-three-column.cjs +6 -6
- package/dist/feature-checklist-three-column.js +7 -7
- package/dist/feature-icon-grid-accent.cjs +2 -2
- package/dist/feature-icon-grid-accent.js +2 -2
- package/dist/feature-icon-grid-bordered.cjs +29 -31
- package/dist/feature-icon-grid-bordered.d.cts +9 -9
- package/dist/feature-icon-grid-bordered.d.ts +9 -9
- package/dist/feature-icon-grid-bordered.js +30 -32
- package/dist/feature-icon-grid-muted.cjs +6 -6
- package/dist/feature-icon-grid-muted.d.cts +9 -9
- package/dist/feature-icon-grid-muted.d.ts +9 -9
- package/dist/feature-icon-grid-muted.js +7 -7
- package/dist/feature-icon-tabs-content.cjs +8 -8
- package/dist/feature-icon-tabs-content.d.cts +13 -13
- package/dist/feature-icon-tabs-content.d.ts +13 -13
- package/dist/feature-icon-tabs-content.js +9 -9
- package/dist/feature-image-cards-three-column.cjs +26 -27
- package/dist/feature-image-cards-three-column.js +27 -28
- package/dist/feature-image-overlay-badge.cjs +23 -21
- package/dist/feature-image-overlay-badge.js +24 -22
- package/dist/feature-integration-cards.cjs +19 -18
- package/dist/feature-integration-cards.js +20 -19
- package/dist/feature-numbered-cards.cjs +2 -2
- package/dist/feature-numbered-cards.js +3 -3
- package/dist/feature-pattern-grid-links.cjs +26 -29
- package/dist/feature-pattern-grid-links.d.cts +1 -5
- package/dist/feature-pattern-grid-links.d.ts +1 -5
- package/dist/feature-pattern-grid-links.js +27 -30
- package/dist/feature-showcase.cjs +441 -40
- package/dist/feature-showcase.d.cts +62 -5
- package/dist/feature-showcase.d.ts +62 -5
- package/dist/feature-showcase.js +438 -37
- package/dist/feature-split-image-reverse.cjs +15 -36
- package/dist/feature-split-image-reverse.js +16 -37
- package/dist/feature-split-image.cjs +15 -36
- package/dist/feature-split-image.js +16 -37
- package/dist/feature-stats-highlight.cjs +20 -32
- package/dist/feature-stats-highlight.js +21 -33
- package/dist/feature-tabbed-content-image.cjs +11 -6
- package/dist/feature-tabbed-content-image.js +11 -6
- package/dist/feature-three-column-values.cjs +6 -6
- package/dist/feature-three-column-values.js +6 -6
- package/dist/feature-utility-cards-grid.cjs +17 -15
- package/dist/feature-utility-cards-grid.js +18 -16
- package/dist/navbar-tabbed-sections.cjs +23 -16
- package/dist/navbar-tabbed-sections.js +23 -16
- package/dist/registry.cjs +941 -708
- package/dist/registry.js +943 -710
- package/package.json +1 -1
package/dist/registry.cjs
CHANGED
|
@@ -18685,19 +18685,21 @@ function CarouselHorizontalCards({
|
|
|
18685
18685
|
"div",
|
|
18686
18686
|
{
|
|
18687
18687
|
className: cn(
|
|
18688
|
-
"flex flex-row justify-start gap-
|
|
18688
|
+
"flex flex-row justify-start gap-2",
|
|
18689
18689
|
carouselClassName
|
|
18690
18690
|
),
|
|
18691
18691
|
children: [
|
|
18692
18692
|
items?.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
18693
18693
|
framerMotion.motion.div,
|
|
18694
18694
|
{
|
|
18695
|
-
className: cn(
|
|
18696
|
-
"rounded-lg last:pr-[5%] md:last:pr-[33%]"
|
|
18697
|
-
),
|
|
18695
|
+
className: cn("rounded-lg last:pr-[5%] md:last:pr-[33%]"),
|
|
18698
18696
|
initial: { opacity: 0, y: 20 },
|
|
18699
18697
|
animate: { opacity: 1, y: 0 },
|
|
18700
|
-
transition: {
|
|
18698
|
+
transition: {
|
|
18699
|
+
duration: 0.5,
|
|
18700
|
+
delay: 0.2 * index,
|
|
18701
|
+
ease: "easeOut"
|
|
18702
|
+
},
|
|
18701
18703
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
18702
18704
|
"div",
|
|
18703
18705
|
{
|
|
@@ -18769,7 +18771,7 @@ function CarouselHorizontalCards({
|
|
|
18769
18771
|
onNext: scrollRight,
|
|
18770
18772
|
canScrollPrevious: !isAtStart,
|
|
18771
18773
|
canScrollNext: !isAtEnd,
|
|
18772
|
-
className: cn("mr-0
|
|
18774
|
+
className: cn("mr-0", navigationClassName)
|
|
18773
18775
|
}
|
|
18774
18776
|
)
|
|
18775
18777
|
] })
|
|
@@ -18784,43 +18786,43 @@ function CarouselImageHero({
|
|
|
18784
18786
|
actions,
|
|
18785
18787
|
actionsSlot,
|
|
18786
18788
|
images,
|
|
18787
|
-
autoPlayInterval =
|
|
18789
|
+
autoPlayInterval = 7500,
|
|
18788
18790
|
className,
|
|
18789
|
-
containerClassName,
|
|
18791
|
+
containerClassName = "mx-auto w-full max-w-7xl relative z-10 rounded-2xl overflow-hidden shadow-xl",
|
|
18790
18792
|
contentClassName,
|
|
18791
18793
|
badgeClassName,
|
|
18792
18794
|
headingClassName,
|
|
18793
18795
|
descriptionClassName,
|
|
18794
18796
|
actionsClassName,
|
|
18795
18797
|
imageClassName,
|
|
18796
|
-
navigationClassName,
|
|
18797
18798
|
indicatorsClassName,
|
|
18798
18799
|
optixFlowConfig,
|
|
18799
|
-
background
|
|
18800
|
-
spacing
|
|
18800
|
+
background,
|
|
18801
|
+
spacing,
|
|
18801
18802
|
pattern,
|
|
18802
18803
|
patternOpacity
|
|
18803
18804
|
}) {
|
|
18804
18805
|
const [currentImageIndex, setCurrentImageIndex] = React52__namespace.useState(0);
|
|
18805
18806
|
React52__namespace.useEffect(() => {
|
|
18806
18807
|
const interval = setInterval(() => {
|
|
18807
|
-
setCurrentImageIndex(
|
|
18808
|
+
setCurrentImageIndex(
|
|
18809
|
+
(prevIndex) => (prevIndex + 1) % (images?.length ?? 1)
|
|
18810
|
+
);
|
|
18808
18811
|
}, autoPlayInterval);
|
|
18809
18812
|
return () => clearInterval(interval);
|
|
18810
18813
|
}, [images?.length, autoPlayInterval]);
|
|
18811
|
-
const goToNextImage = () => {
|
|
18812
|
-
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
18813
|
-
};
|
|
18814
|
-
const goToPreviousImage = () => {
|
|
18815
|
-
setCurrentImageIndex(
|
|
18816
|
-
(prevIndex) => (prevIndex - 1 + (images?.length ?? 1)) % (images?.length ?? 1)
|
|
18817
|
-
);
|
|
18818
|
-
};
|
|
18819
18814
|
const renderActions = () => {
|
|
18820
18815
|
if (actionsSlot) return actionsSlot;
|
|
18821
18816
|
if (!actions || actions.length === 0) return null;
|
|
18822
18817
|
return actions.map((action, index) => {
|
|
18823
|
-
const {
|
|
18818
|
+
const {
|
|
18819
|
+
label,
|
|
18820
|
+
icon,
|
|
18821
|
+
iconAfter,
|
|
18822
|
+
children,
|
|
18823
|
+
className: actionClassName,
|
|
18824
|
+
...pressableProps
|
|
18825
|
+
} = action;
|
|
18824
18826
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18825
18827
|
Pressable,
|
|
18826
18828
|
{
|
|
@@ -18845,6 +18847,7 @@ function CarouselImageHero({
|
|
|
18845
18847
|
className: cn("relative min-h-[600px] overflow-hidden", className),
|
|
18846
18848
|
pattern,
|
|
18847
18849
|
patternOpacity,
|
|
18850
|
+
containerClassName,
|
|
18848
18851
|
children: [
|
|
18849
18852
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute inset-0", imageClassName), children: [
|
|
18850
18853
|
images?.map((image, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -18870,50 +18873,79 @@ function CarouselImageHero({
|
|
|
18870
18873
|
index
|
|
18871
18874
|
)),
|
|
18872
18875
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18873
|
-
|
|
18874
|
-
{
|
|
18875
|
-
onClick: goToPreviousImage,
|
|
18876
|
-
asButton: true,
|
|
18877
|
-
variant: "ghost",
|
|
18878
|
-
size: "icon",
|
|
18879
|
-
className: cn("absolute left-4 top-1/2 z-20 hidden -translate-y-1/2 rounded-full bg-background/30 p-2 backdrop-blur-sm transition-colors hover:bg-background/50 md:block", navigationClassName),
|
|
18880
|
-
"aria-label": "Previous image",
|
|
18881
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24, className: "text-white" })
|
|
18882
|
-
}
|
|
18883
|
-
),
|
|
18884
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18885
|
-
Pressable,
|
|
18886
|
-
{
|
|
18887
|
-
onClick: goToNextImage,
|
|
18888
|
-
asButton: true,
|
|
18889
|
-
variant: "ghost",
|
|
18890
|
-
size: "icon",
|
|
18891
|
-
className: cn("absolute right-4 top-1/2 z-20 hidden -translate-y-1/2 rounded-full bg-background/30 p-2 backdrop-blur-sm transition-colors hover:bg-background/50 md:block", navigationClassName),
|
|
18892
|
-
"aria-label": "Next image",
|
|
18893
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24, className: "text-white" })
|
|
18894
|
-
}
|
|
18895
|
-
),
|
|
18896
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3", indicatorsClassName), children: images?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
18897
|
-
"button",
|
|
18876
|
+
"div",
|
|
18898
18877
|
{
|
|
18899
|
-
onClick: () => setCurrentImageIndex(index),
|
|
18900
18878
|
className: cn(
|
|
18901
|
-
"
|
|
18902
|
-
|
|
18879
|
+
"absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3",
|
|
18880
|
+
indicatorsClassName
|
|
18903
18881
|
),
|
|
18904
|
-
|
|
18905
|
-
|
|
18906
|
-
|
|
18907
|
-
|
|
18882
|
+
children: images?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
18883
|
+
"button",
|
|
18884
|
+
{
|
|
18885
|
+
onClick: () => setCurrentImageIndex(index),
|
|
18886
|
+
className: cn(
|
|
18887
|
+
"flex h-4 w-4 items-center justify-center rounded-full transition-colors",
|
|
18888
|
+
index === currentImageIndex ? "bg-white" : "bg-white/50 hover:bg-white/80"
|
|
18889
|
+
),
|
|
18890
|
+
"aria-label": `Go to image ${index + 1}`
|
|
18891
|
+
},
|
|
18892
|
+
index
|
|
18893
|
+
))
|
|
18894
|
+
}
|
|
18895
|
+
)
|
|
18908
18896
|
] }),
|
|
18909
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18910
|
-
|
|
18911
|
-
|
|
18912
|
-
|
|
18913
|
-
|
|
18914
|
-
|
|
18915
|
-
|
|
18916
|
-
|
|
18897
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18898
|
+
"div",
|
|
18899
|
+
{
|
|
18900
|
+
className: cn(
|
|
18901
|
+
"relative z-10 mx-auto flex min-h-[600px] flex-col items-center justify-center px-4 py-16 text-center md:px-16 md:py-20"
|
|
18902
|
+
),
|
|
18903
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-4xl space-y-6", contentClassName), children: [
|
|
18904
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
18905
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18906
|
+
"div",
|
|
18907
|
+
{
|
|
18908
|
+
className: cn(
|
|
18909
|
+
"inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-sm font-medium text-white backdrop-blur-sm",
|
|
18910
|
+
badgeClassName
|
|
18911
|
+
),
|
|
18912
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge })
|
|
18913
|
+
}
|
|
18914
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: badge })),
|
|
18915
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18916
|
+
"h1",
|
|
18917
|
+
{
|
|
18918
|
+
className: cn(
|
|
18919
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
18920
|
+
headingClassName
|
|
18921
|
+
),
|
|
18922
|
+
children: heading
|
|
18923
|
+
}
|
|
18924
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
18925
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18926
|
+
"p",
|
|
18927
|
+
{
|
|
18928
|
+
className: cn(
|
|
18929
|
+
"text-xl text-balance text-shadow",
|
|
18930
|
+
descriptionClassName
|
|
18931
|
+
),
|
|
18932
|
+
children: description
|
|
18933
|
+
}
|
|
18934
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
18935
|
+
] }),
|
|
18936
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
18937
|
+
"div",
|
|
18938
|
+
{
|
|
18939
|
+
className: cn(
|
|
18940
|
+
"flex flex-col justify-center gap-4 sm:flex-row",
|
|
18941
|
+
actionsClassName
|
|
18942
|
+
),
|
|
18943
|
+
children: renderActions()
|
|
18944
|
+
}
|
|
18945
|
+
)
|
|
18946
|
+
] })
|
|
18947
|
+
}
|
|
18948
|
+
)
|
|
18917
18949
|
]
|
|
18918
18950
|
}
|
|
18919
18951
|
);
|
|
@@ -19217,7 +19249,7 @@ function CarouselPortfolioHero({
|
|
|
19217
19249
|
actionsSlot,
|
|
19218
19250
|
autoPlayInterval = 5e3,
|
|
19219
19251
|
className,
|
|
19220
|
-
containerClassName,
|
|
19252
|
+
containerClassName = "mx-auto w-full p-0 px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-full flex flex-col justify-center",
|
|
19221
19253
|
contentClassName,
|
|
19222
19254
|
tagClassName,
|
|
19223
19255
|
titleClassName,
|
|
@@ -19233,23 +19265,45 @@ function CarouselPortfolioHero({
|
|
|
19233
19265
|
slideMediaBrightness = "50"
|
|
19234
19266
|
}) {
|
|
19235
19267
|
const [currentIndex, setCurrentIndex] = React52__namespace.useState(0);
|
|
19268
|
+
const intervalRef = React52__namespace.useRef(null);
|
|
19269
|
+
const resetInterval = React52__namespace.useCallback(() => {
|
|
19270
|
+
if (intervalRef.current) {
|
|
19271
|
+
clearInterval(intervalRef.current);
|
|
19272
|
+
}
|
|
19273
|
+
intervalRef.current = setInterval(() => {
|
|
19274
|
+
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19275
|
+
}, autoPlayInterval);
|
|
19276
|
+
}, [autoPlayInterval, slides?.length]);
|
|
19236
19277
|
const goToNext = React52__namespace.useCallback(() => {
|
|
19237
19278
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19238
|
-
|
|
19279
|
+
resetInterval();
|
|
19280
|
+
}, [slides?.length, resetInterval]);
|
|
19239
19281
|
const goToPrev = React52__namespace.useCallback(() => {
|
|
19240
19282
|
setCurrentIndex(
|
|
19241
19283
|
(prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
|
|
19242
19284
|
);
|
|
19243
|
-
|
|
19285
|
+
resetInterval();
|
|
19286
|
+
}, [slides?.length, resetInterval]);
|
|
19244
19287
|
React52__namespace.useEffect(() => {
|
|
19245
|
-
|
|
19246
|
-
return () =>
|
|
19247
|
-
|
|
19288
|
+
resetInterval();
|
|
19289
|
+
return () => {
|
|
19290
|
+
if (intervalRef.current) {
|
|
19291
|
+
clearInterval(intervalRef.current);
|
|
19292
|
+
}
|
|
19293
|
+
};
|
|
19294
|
+
}, [resetInterval]);
|
|
19248
19295
|
const renderActions = () => {
|
|
19249
19296
|
if (actionsSlot) return actionsSlot;
|
|
19250
19297
|
if (!actions || actions.length === 0) return null;
|
|
19251
19298
|
return actions.map((action, index) => {
|
|
19252
|
-
const {
|
|
19299
|
+
const {
|
|
19300
|
+
label,
|
|
19301
|
+
icon,
|
|
19302
|
+
iconAfter,
|
|
19303
|
+
children,
|
|
19304
|
+
className: actionClassName,
|
|
19305
|
+
...pressableProps
|
|
19306
|
+
} = action;
|
|
19253
19307
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19254
19308
|
Pressable,
|
|
19255
19309
|
{
|
|
@@ -19275,6 +19329,7 @@ function CarouselPortfolioHero({
|
|
|
19275
19329
|
className: cn("relative h-screen w-full overflow-hidden", className),
|
|
19276
19330
|
pattern,
|
|
19277
19331
|
patternOpacity,
|
|
19332
|
+
containerClassName,
|
|
19278
19333
|
children: [
|
|
19279
19334
|
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19280
19335
|
"div",
|
|
@@ -19300,43 +19355,99 @@ function CarouselPortfolioHero({
|
|
|
19300
19355
|
},
|
|
19301
19356
|
slide.id
|
|
19302
19357
|
)),
|
|
19303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19304
|
-
|
|
19305
|
-
|
|
19306
|
-
|
|
19307
|
-
|
|
19308
|
-
|
|
19309
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
19310
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19311
|
-
|
|
19358
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19359
|
+
"div",
|
|
19360
|
+
{
|
|
19361
|
+
className: cn(
|
|
19362
|
+
"relative z-10 flex h-full w-full flex-col justify-end px-6 pb-16 text-white md:px-8 lg:px-12"
|
|
19363
|
+
),
|
|
19364
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-4xl", contentClassName), children: [
|
|
19365
|
+
currentSlide?.tag && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: typeof currentSlide.tag === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19366
|
+
"span",
|
|
19312
19367
|
{
|
|
19313
|
-
|
|
19314
|
-
|
|
19315
|
-
|
|
19316
|
-
|
|
19317
|
-
|
|
19318
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19368
|
+
className: cn(
|
|
19369
|
+
"inline-block rounded-full bg-primary px-3 py-1 text-sm font-medium",
|
|
19370
|
+
tagClassName
|
|
19371
|
+
),
|
|
19372
|
+
children: currentSlide.tag
|
|
19319
19373
|
}
|
|
19320
|
-
),
|
|
19321
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19322
|
-
|
|
19374
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: tagClassName, children: currentSlide.tag }) }),
|
|
19375
|
+
currentSlide?.title && (typeof currentSlide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19376
|
+
"h1",
|
|
19323
19377
|
{
|
|
19324
|
-
|
|
19325
|
-
|
|
19326
|
-
|
|
19327
|
-
|
|
19328
|
-
|
|
19329
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19378
|
+
className: cn(
|
|
19379
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
19380
|
+
titleClassName
|
|
19381
|
+
),
|
|
19382
|
+
children: currentSlide.title
|
|
19330
19383
|
}
|
|
19331
|
-
),
|
|
19332
|
-
|
|
19333
|
-
|
|
19334
|
-
|
|
19335
|
-
|
|
19336
|
-
|
|
19337
|
-
|
|
19338
|
-
|
|
19339
|
-
|
|
19384
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: currentSlide.title })),
|
|
19385
|
+
currentSlide?.description && (typeof currentSlide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19386
|
+
"p",
|
|
19387
|
+
{
|
|
19388
|
+
className: cn(
|
|
19389
|
+
"mt-4 text-lg text-white/80 sm:text-xl md:max-w-2xl text-balance text-shadow",
|
|
19390
|
+
descriptionClassName
|
|
19391
|
+
),
|
|
19392
|
+
children: currentSlide.description
|
|
19393
|
+
}
|
|
19394
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: currentSlide.description })),
|
|
19395
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19396
|
+
"div",
|
|
19397
|
+
{
|
|
19398
|
+
className: cn("mt-8 flex items-center gap-4", actionsClassName),
|
|
19399
|
+
children: [
|
|
19400
|
+
renderActions(),
|
|
19401
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19402
|
+
"div",
|
|
19403
|
+
{
|
|
19404
|
+
className: cn(
|
|
19405
|
+
"ml-auto flex items-center gap-2",
|
|
19406
|
+
navigationClassName
|
|
19407
|
+
),
|
|
19408
|
+
children: [
|
|
19409
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19410
|
+
Pressable,
|
|
19411
|
+
{
|
|
19412
|
+
variant: "outline",
|
|
19413
|
+
size: "icon",
|
|
19414
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19415
|
+
onClick: goToPrev,
|
|
19416
|
+
asButton: true,
|
|
19417
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19418
|
+
}
|
|
19419
|
+
),
|
|
19420
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19421
|
+
Pressable,
|
|
19422
|
+
{
|
|
19423
|
+
variant: "outline",
|
|
19424
|
+
size: "icon",
|
|
19425
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19426
|
+
onClick: goToNext,
|
|
19427
|
+
asButton: true,
|
|
19428
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19429
|
+
}
|
|
19430
|
+
),
|
|
19431
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19432
|
+
"div",
|
|
19433
|
+
{
|
|
19434
|
+
className: cn("ml-3 text-sm text-white/80", counterClassName),
|
|
19435
|
+
children: [
|
|
19436
|
+
currentIndex + 1,
|
|
19437
|
+
" / ",
|
|
19438
|
+
slides?.length ?? 0
|
|
19439
|
+
]
|
|
19440
|
+
}
|
|
19441
|
+
)
|
|
19442
|
+
]
|
|
19443
|
+
}
|
|
19444
|
+
)
|
|
19445
|
+
]
|
|
19446
|
+
}
|
|
19447
|
+
)
|
|
19448
|
+
] }) })
|
|
19449
|
+
}
|
|
19450
|
+
)
|
|
19340
19451
|
]
|
|
19341
19452
|
}
|
|
19342
19453
|
);
|
|
@@ -19360,8 +19471,8 @@ function CarouselProductFeatureShowcase({
|
|
|
19360
19471
|
actionsClassName,
|
|
19361
19472
|
indicatorsClassName,
|
|
19362
19473
|
optixFlowConfig,
|
|
19363
|
-
background
|
|
19364
|
-
spacing
|
|
19474
|
+
background,
|
|
19475
|
+
spacing,
|
|
19365
19476
|
pattern,
|
|
19366
19477
|
patternOpacity
|
|
19367
19478
|
}) {
|
|
@@ -19405,7 +19516,14 @@ function CarouselProductFeatureShowcase({
|
|
|
19405
19516
|
if (actionsSlot) return actionsSlot;
|
|
19406
19517
|
if (!actions || actions.length === 0) return null;
|
|
19407
19518
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
|
|
19408
|
-
const {
|
|
19519
|
+
const {
|
|
19520
|
+
label,
|
|
19521
|
+
icon,
|
|
19522
|
+
iconAfter,
|
|
19523
|
+
children,
|
|
19524
|
+
className: actionClassName,
|
|
19525
|
+
...pressableProps
|
|
19526
|
+
} = action;
|
|
19409
19527
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19410
19528
|
Pressable,
|
|
19411
19529
|
{
|
|
@@ -19430,105 +19548,151 @@ function CarouselProductFeatureShowcase({
|
|
|
19430
19548
|
className: cn(className),
|
|
19431
19549
|
pattern,
|
|
19432
19550
|
patternOpacity,
|
|
19433
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
19551
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", containerClassName), children: [
|
|
19434
19552
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
19435
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19436
|
-
|
|
19437
|
-
|
|
19438
|
-
|
|
19439
|
-
|
|
19440
|
-
|
|
19441
|
-
framerMotion.motion.div,
|
|
19442
|
-
{
|
|
19443
|
-
custom: direction,
|
|
19444
|
-
variants: slideVariants2,
|
|
19445
|
-
initial: "enter",
|
|
19446
|
-
animate: "center",
|
|
19447
|
-
exit: "exit",
|
|
19448
|
-
transition: { duration: 0.3, ease: "easeInOut" },
|
|
19449
|
-
className: cn("absolute inset-0", activeFeature?.imageClassName),
|
|
19450
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19451
|
-
img.Img,
|
|
19452
|
-
{
|
|
19453
|
-
src: currentImage,
|
|
19454
|
-
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
19455
|
-
className: "h-full w-full object-cover",
|
|
19456
|
-
optixFlowConfig
|
|
19457
|
-
}
|
|
19458
|
-
)
|
|
19459
|
-
},
|
|
19460
|
-
`${activeIndex}-${activeColorIndex}`
|
|
19461
|
-
) }),
|
|
19462
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute bottom-4 right-4 flex gap-2", navigationClassName), children: [
|
|
19463
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19464
|
-
Pressable,
|
|
19465
|
-
{
|
|
19466
|
-
onClick: goToPrev,
|
|
19467
|
-
asButton: true,
|
|
19468
|
-
variant: "outline",
|
|
19469
|
-
size: "icon",
|
|
19470
|
-
className: "flex h-10 w-10 items-center justify-center rounded-full border-border bg-background/90 text-foreground backdrop-blur-sm hover:bg-background",
|
|
19471
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19472
|
-
}
|
|
19553
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19554
|
+
"h2",
|
|
19555
|
+
{
|
|
19556
|
+
className: cn(
|
|
19557
|
+
"text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
|
|
19558
|
+
headingClassName
|
|
19473
19559
|
),
|
|
19474
|
-
|
|
19475
|
-
|
|
19560
|
+
children: heading
|
|
19561
|
+
}
|
|
19562
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
19563
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19564
|
+
"p",
|
|
19565
|
+
{
|
|
19566
|
+
className: cn(
|
|
19567
|
+
"mt-4 text-lg text-muted-foreground",
|
|
19568
|
+
subheadingClassName
|
|
19569
|
+
),
|
|
19570
|
+
children: subheading
|
|
19571
|
+
}
|
|
19572
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: subheadingClassName, children: subheading }))
|
|
19573
|
+
] }),
|
|
19574
|
+
featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19575
|
+
"div",
|
|
19576
|
+
{
|
|
19577
|
+
className: cn(
|
|
19578
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
19579
|
+
contentClassName
|
|
19580
|
+
),
|
|
19581
|
+
children: [
|
|
19582
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19583
|
+
"div",
|
|
19476
19584
|
{
|
|
19477
|
-
|
|
19478
|
-
|
|
19479
|
-
|
|
19480
|
-
|
|
19481
|
-
|
|
19482
|
-
|
|
19483
|
-
|
|
19484
|
-
)
|
|
19485
|
-
] })
|
|
19486
|
-
] }),
|
|
19487
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
19488
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19489
|
-
framerMotion.motion.div,
|
|
19490
|
-
{
|
|
19491
|
-
initial: { opacity: 0, y: 20 },
|
|
19492
|
-
animate: { opacity: 1, y: 0 },
|
|
19493
|
-
exit: { opacity: 0, y: -20 },
|
|
19494
|
-
transition: { duration: 0.3 },
|
|
19495
|
-
children: [
|
|
19496
|
-
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: activeFeature.title })),
|
|
19497
|
-
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
19498
|
-
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
19499
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
19500
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19501
|
-
"button",
|
|
19585
|
+
className: cn(
|
|
19586
|
+
"relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
|
|
19587
|
+
imageClassName
|
|
19588
|
+
),
|
|
19589
|
+
children: [
|
|
19590
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19591
|
+
framerMotion.motion.div,
|
|
19502
19592
|
{
|
|
19503
|
-
|
|
19593
|
+
custom: direction,
|
|
19594
|
+
variants: slideVariants2,
|
|
19595
|
+
initial: "enter",
|
|
19596
|
+
animate: "center",
|
|
19597
|
+
exit: "exit",
|
|
19598
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
19504
19599
|
className: cn(
|
|
19505
|
-
"
|
|
19506
|
-
|
|
19600
|
+
"absolute inset-0",
|
|
19601
|
+
activeFeature?.imageClassName
|
|
19507
19602
|
),
|
|
19508
|
-
|
|
19509
|
-
|
|
19603
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19604
|
+
img.Img,
|
|
19605
|
+
{
|
|
19606
|
+
src: currentImage,
|
|
19607
|
+
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
19608
|
+
className: "h-full w-full object-cover",
|
|
19609
|
+
optixFlowConfig
|
|
19610
|
+
}
|
|
19611
|
+
)
|
|
19510
19612
|
},
|
|
19511
|
-
|
|
19512
|
-
)
|
|
19513
|
-
|
|
19514
|
-
|
|
19515
|
-
|
|
19516
|
-
|
|
19517
|
-
|
|
19518
|
-
|
|
19519
|
-
|
|
19520
|
-
|
|
19521
|
-
|
|
19522
|
-
|
|
19523
|
-
|
|
19524
|
-
|
|
19525
|
-
|
|
19526
|
-
|
|
19527
|
-
|
|
19528
|
-
|
|
19529
|
-
|
|
19530
|
-
|
|
19531
|
-
|
|
19613
|
+
`${activeIndex}-${activeColorIndex}`
|
|
19614
|
+
) }),
|
|
19615
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19616
|
+
"div",
|
|
19617
|
+
{
|
|
19618
|
+
className: cn(
|
|
19619
|
+
"absolute bottom-4 right-4 flex gap-2",
|
|
19620
|
+
navigationClassName
|
|
19621
|
+
),
|
|
19622
|
+
children: [
|
|
19623
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19624
|
+
Pressable,
|
|
19625
|
+
{
|
|
19626
|
+
onClick: goToPrev,
|
|
19627
|
+
asButton: true,
|
|
19628
|
+
variant: "outline",
|
|
19629
|
+
size: "icon",
|
|
19630
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19631
|
+
}
|
|
19632
|
+
),
|
|
19633
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19634
|
+
Pressable,
|
|
19635
|
+
{
|
|
19636
|
+
onClick: goToNext,
|
|
19637
|
+
asButton: true,
|
|
19638
|
+
variant: "outline",
|
|
19639
|
+
size: "icon",
|
|
19640
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19641
|
+
}
|
|
19642
|
+
)
|
|
19643
|
+
]
|
|
19644
|
+
}
|
|
19645
|
+
)
|
|
19646
|
+
]
|
|
19647
|
+
}
|
|
19648
|
+
),
|
|
19649
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
19650
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19651
|
+
framerMotion.motion.div,
|
|
19652
|
+
{
|
|
19653
|
+
initial: { opacity: 0, y: 20 },
|
|
19654
|
+
animate: { opacity: 1, y: 0 },
|
|
19655
|
+
exit: { opacity: 0, y: -20 },
|
|
19656
|
+
transition: { duration: 0.3 },
|
|
19657
|
+
children: [
|
|
19658
|
+
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: activeFeature.title })),
|
|
19659
|
+
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
19660
|
+
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
19661
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
19662
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19663
|
+
"button",
|
|
19664
|
+
{
|
|
19665
|
+
onClick: () => setActiveColorIndex(index),
|
|
19666
|
+
className: cn(
|
|
19667
|
+
"h-8 w-8 rounded-full border-2 transition-all",
|
|
19668
|
+
activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
|
|
19669
|
+
),
|
|
19670
|
+
style: { backgroundColor: color.value },
|
|
19671
|
+
title: color.name
|
|
19672
|
+
},
|
|
19673
|
+
color.name
|
|
19674
|
+
)) })
|
|
19675
|
+
] }),
|
|
19676
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: renderActions() })
|
|
19677
|
+
]
|
|
19678
|
+
},
|
|
19679
|
+
activeIndex
|
|
19680
|
+
) }),
|
|
19681
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19682
|
+
"button",
|
|
19683
|
+
{
|
|
19684
|
+
onClick: () => goToSlide(index),
|
|
19685
|
+
className: cn(
|
|
19686
|
+
"h-2 rounded-full transition-all",
|
|
19687
|
+
activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
|
19688
|
+
)
|
|
19689
|
+
},
|
|
19690
|
+
index
|
|
19691
|
+
)) })
|
|
19692
|
+
] })
|
|
19693
|
+
]
|
|
19694
|
+
}
|
|
19695
|
+
)
|
|
19532
19696
|
] })
|
|
19533
19697
|
}
|
|
19534
19698
|
);
|
|
@@ -19584,12 +19748,16 @@ function SliderBtn({
|
|
|
19584
19748
|
}
|
|
19585
19749
|
function SliderWrapper({ children, value, className }) {
|
|
19586
19750
|
const { active } = useProgressSliderContext();
|
|
19587
|
-
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "
|
|
19751
|
+
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19588
19752
|
framerMotion.motion.div,
|
|
19589
19753
|
{
|
|
19590
|
-
initial: { opacity: 0 },
|
|
19591
|
-
animate: { opacity: 1 },
|
|
19592
|
-
exit: { opacity: 0 },
|
|
19754
|
+
initial: { opacity: 0, scale: 0.98 },
|
|
19755
|
+
animate: { opacity: 1, scale: 1 },
|
|
19756
|
+
exit: { opacity: 0, scale: 0.98 },
|
|
19757
|
+
transition: {
|
|
19758
|
+
duration: 0.4,
|
|
19759
|
+
ease: [0.4, 0, 0.2, 1]
|
|
19760
|
+
},
|
|
19593
19761
|
className: cn("", className),
|
|
19594
19762
|
children
|
|
19595
19763
|
},
|
|
@@ -19700,12 +19868,12 @@ function CarouselProgressSlider({
|
|
|
19700
19868
|
pattern,
|
|
19701
19869
|
patternOpacity,
|
|
19702
19870
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2", contentClassName), children: [
|
|
19703
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", imageClassName), children: [
|
|
19704
|
-
slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19871
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
|
|
19872
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19705
19873
|
SliderWrapper,
|
|
19706
19874
|
{
|
|
19707
19875
|
value: slide.id,
|
|
19708
|
-
className: cn("", slide.className),
|
|
19876
|
+
className: cn("absolute inset-0", slide.className),
|
|
19709
19877
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19710
19878
|
img.Img,
|
|
19711
19879
|
{
|
|
@@ -19720,8 +19888,8 @@ function CarouselProgressSlider({
|
|
|
19720
19888
|
) })
|
|
19721
19889
|
},
|
|
19722
19890
|
slide.id
|
|
19723
|
-
)),
|
|
19724
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19891
|
+
)) }),
|
|
19892
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19725
19893
|
Pressable,
|
|
19726
19894
|
{
|
|
19727
19895
|
onClick: togglePause,
|
|
@@ -19783,8 +19951,8 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19783
19951
|
featuresClassName,
|
|
19784
19952
|
numberBadgeClassName,
|
|
19785
19953
|
optixFlowConfig,
|
|
19786
|
-
background
|
|
19787
|
-
spacing = "
|
|
19954
|
+
background,
|
|
19955
|
+
spacing = "md",
|
|
19788
19956
|
pattern,
|
|
19789
19957
|
patternOpacity
|
|
19790
19958
|
}) {
|
|
@@ -19834,62 +20002,113 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19834
20002
|
patternOpacity,
|
|
19835
20003
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
|
|
19836
20004
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
19837
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19838
|
-
|
|
19839
|
-
] }),
|
|
19840
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
|
|
19841
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("aspect-video overflow-hidden rounded-xl bg-muted", imageClassName), children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19842
|
-
framerMotion.motion.div,
|
|
20005
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20006
|
+
"h2",
|
|
19843
20007
|
{
|
|
19844
|
-
|
|
19845
|
-
|
|
19846
|
-
|
|
19847
|
-
|
|
19848
|
-
|
|
19849
|
-
|
|
19850
|
-
|
|
19851
|
-
|
|
19852
|
-
|
|
19853
|
-
alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
|
|
19854
|
-
className: cn("h-full w-full object-cover", activeFeatureData.imageClassName),
|
|
19855
|
-
optixFlowConfig
|
|
19856
|
-
}
|
|
19857
|
-
)
|
|
19858
|
-
},
|
|
19859
|
-
activeFeatureData.id
|
|
19860
|
-
) }) }) }) }),
|
|
19861
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19862
|
-
"div",
|
|
20008
|
+
className: cn(
|
|
20009
|
+
"text-3xl font-bold tracking-tight md:text-4xl",
|
|
20010
|
+
headingClassName
|
|
20011
|
+
),
|
|
20012
|
+
children: heading
|
|
20013
|
+
}
|
|
20014
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
20015
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20016
|
+
"p",
|
|
19863
20017
|
{
|
|
19864
|
-
ref: setFeatureRef(feature.id),
|
|
19865
|
-
"data-feature-id": feature.id,
|
|
19866
20018
|
className: cn(
|
|
19867
|
-
"
|
|
19868
|
-
|
|
19869
|
-
feature.className
|
|
20019
|
+
"mt-4 text-lg text-muted-foreground",
|
|
20020
|
+
subheadingClassName
|
|
19870
20021
|
),
|
|
19871
|
-
children:
|
|
19872
|
-
|
|
19873
|
-
|
|
19874
|
-
|
|
19875
|
-
|
|
19876
|
-
|
|
19877
|
-
|
|
19878
|
-
|
|
19879
|
-
|
|
19880
|
-
|
|
19881
|
-
|
|
19882
|
-
|
|
19883
|
-
|
|
19884
|
-
|
|
19885
|
-
|
|
19886
|
-
|
|
19887
|
-
|
|
19888
|
-
|
|
19889
|
-
|
|
19890
|
-
|
|
19891
|
-
|
|
19892
|
-
|
|
20022
|
+
children: subheading
|
|
20023
|
+
}
|
|
20024
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
|
|
20025
|
+
] }),
|
|
20026
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20027
|
+
"div",
|
|
20028
|
+
{
|
|
20029
|
+
className: cn(
|
|
20030
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
20031
|
+
contentClassName
|
|
20032
|
+
),
|
|
20033
|
+
children: [
|
|
20034
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20035
|
+
"div",
|
|
20036
|
+
{
|
|
20037
|
+
className: cn(
|
|
20038
|
+
"aspect-video overflow-hidden rounded-xl bg-muted",
|
|
20039
|
+
imageClassName
|
|
20040
|
+
),
|
|
20041
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20042
|
+
framerMotion.motion.div,
|
|
20043
|
+
{
|
|
20044
|
+
initial: { opacity: 0 },
|
|
20045
|
+
animate: { opacity: 1 },
|
|
20046
|
+
exit: { opacity: 0 },
|
|
20047
|
+
transition: { duration: 0.3 },
|
|
20048
|
+
className: "h-full w-full",
|
|
20049
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20050
|
+
img.Img,
|
|
20051
|
+
{
|
|
20052
|
+
src: activeFeatureData.image,
|
|
20053
|
+
alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
|
|
20054
|
+
className: cn(
|
|
20055
|
+
"h-full w-full object-cover",
|
|
20056
|
+
activeFeatureData.imageClassName
|
|
20057
|
+
),
|
|
20058
|
+
optixFlowConfig
|
|
20059
|
+
}
|
|
20060
|
+
)
|
|
20061
|
+
},
|
|
20062
|
+
activeFeatureData.id
|
|
20063
|
+
) })
|
|
20064
|
+
}
|
|
20065
|
+
) }) }),
|
|
20066
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20067
|
+
"div",
|
|
20068
|
+
{
|
|
20069
|
+
ref: setFeatureRef(feature.id),
|
|
20070
|
+
"data-feature-id": feature.id,
|
|
20071
|
+
className: cn(
|
|
20072
|
+
"scroll-mt-24 transition-opacity duration-300",
|
|
20073
|
+
activeFeature === feature.id ? "opacity-100" : "opacity-50",
|
|
20074
|
+
feature.className
|
|
20075
|
+
),
|
|
20076
|
+
children: [
|
|
20077
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20078
|
+
img.Img,
|
|
20079
|
+
{
|
|
20080
|
+
src: feature.image,
|
|
20081
|
+
alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
|
|
20082
|
+
className: cn(
|
|
20083
|
+
"h-full w-full object-cover",
|
|
20084
|
+
feature.imageClassName
|
|
20085
|
+
),
|
|
20086
|
+
optixFlowConfig
|
|
20087
|
+
}
|
|
20088
|
+
) }) }),
|
|
20089
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
|
|
20090
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20091
|
+
"div",
|
|
20092
|
+
{
|
|
20093
|
+
className: cn(
|
|
20094
|
+
"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
|
|
20095
|
+
numberBadgeClassName
|
|
20096
|
+
),
|
|
20097
|
+
children: index + 1
|
|
20098
|
+
}
|
|
20099
|
+
),
|
|
20100
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20101
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: feature.title })),
|
|
20102
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: feature.description }))
|
|
20103
|
+
] })
|
|
20104
|
+
] })
|
|
20105
|
+
]
|
|
20106
|
+
},
|
|
20107
|
+
feature.id
|
|
20108
|
+
)) })
|
|
20109
|
+
]
|
|
20110
|
+
}
|
|
20111
|
+
)
|
|
19893
20112
|
] })
|
|
19894
20113
|
}
|
|
19895
20114
|
);
|
|
@@ -20090,17 +20309,28 @@ function FeatureShowcase({
|
|
|
20090
20309
|
contentClassName,
|
|
20091
20310
|
mediaClassName,
|
|
20092
20311
|
arrowClassName,
|
|
20093
|
-
equalizeOnMobile
|
|
20094
|
-
stretchMediaOnMobile
|
|
20312
|
+
equalizeOnMobile,
|
|
20313
|
+
stretchMediaOnMobile,
|
|
20314
|
+
background,
|
|
20315
|
+
spacing,
|
|
20316
|
+
pattern,
|
|
20317
|
+
patternOpacity,
|
|
20318
|
+
patternClassName
|
|
20095
20319
|
}) {
|
|
20096
|
-
const baseArrowClassName =
|
|
20320
|
+
const baseArrowClassName = React52.useMemo(
|
|
20321
|
+
() => "bottom-4 top-auto size-12 translate-y-0 rounded-full border border-current bg-transparent text-current shadow-sm focus:ring-current focus:ring-offset-2 focus:ring-offset-transparent hover:bg-current/10 md:bottom-6",
|
|
20322
|
+
[]
|
|
20323
|
+
);
|
|
20097
20324
|
const [mobileSlideHeight, setMobileSlideHeight] = React52.useState(
|
|
20098
20325
|
null
|
|
20099
20326
|
);
|
|
20100
20327
|
const slideRefs = React52.useRef([]);
|
|
20101
|
-
const mediaWrapperClassName =
|
|
20328
|
+
const mediaWrapperClassName = React52.useMemo(
|
|
20329
|
+
() => equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "",
|
|
20330
|
+
[equalizeOnMobile, stretchMediaOnMobile]
|
|
20331
|
+
);
|
|
20102
20332
|
React52.useEffect(() => {
|
|
20103
|
-
if (!equalizeOnMobile) {
|
|
20333
|
+
if (!equalizeOnMobile || !items || items.length === 0) {
|
|
20104
20334
|
setMobileSlideHeight(null);
|
|
20105
20335
|
return;
|
|
20106
20336
|
}
|
|
@@ -20132,10 +20362,10 @@ function FeatureShowcase({
|
|
|
20132
20362
|
window.removeEventListener("resize", updateHeights);
|
|
20133
20363
|
resizeObserver?.disconnect();
|
|
20134
20364
|
};
|
|
20135
|
-
}, [equalizeOnMobile, items
|
|
20136
|
-
|
|
20137
|
-
|
|
20138
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
20365
|
+
}, [equalizeOnMobile, items]);
|
|
20366
|
+
const carouselContent = React52.useMemo(() => {
|
|
20367
|
+
if (!items || items.length === 0) return null;
|
|
20368
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
20139
20369
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20140
20370
|
"div",
|
|
20141
20371
|
{
|
|
@@ -20148,8 +20378,8 @@ function FeatureShowcase({
|
|
|
20148
20378
|
slideClassName
|
|
20149
20379
|
),
|
|
20150
20380
|
children: [
|
|
20151
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20152
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20381
|
+
item.content && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20382
|
+
item.mediaComponent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20153
20383
|
"div",
|
|
20154
20384
|
{
|
|
20155
20385
|
className: cn(
|
|
@@ -20175,8 +20405,23 @@ function FeatureShowcase({
|
|
|
20175
20405
|
className: cn(baseArrowClassName, "right-4 md:right-6", arrowClassName)
|
|
20176
20406
|
}
|
|
20177
20407
|
)
|
|
20178
|
-
] })
|
|
20179
|
-
]
|
|
20408
|
+
] });
|
|
20409
|
+
}, [items, carouselClassName, equalizeOnMobile, mobileSlideHeight, slideClassName, contentClassName, mediaWrapperClassName, mediaClassName, baseArrowClassName, arrowClassName]);
|
|
20410
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20411
|
+
Section,
|
|
20412
|
+
{
|
|
20413
|
+
background,
|
|
20414
|
+
spacing,
|
|
20415
|
+
pattern,
|
|
20416
|
+
patternOpacity,
|
|
20417
|
+
patternClassName,
|
|
20418
|
+
className,
|
|
20419
|
+
children: [
|
|
20420
|
+
children,
|
|
20421
|
+
carouselContent
|
|
20422
|
+
]
|
|
20423
|
+
}
|
|
20424
|
+
);
|
|
20180
20425
|
}
|
|
20181
20426
|
function FeatureSplitImage({
|
|
20182
20427
|
title,
|
|
@@ -20205,40 +20450,19 @@ function FeatureSplitImage({
|
|
|
20205
20450
|
if (actionsSlot) return actionsSlot;
|
|
20206
20451
|
if (!actions || actions.length === 0) return null;
|
|
20207
20452
|
return actions.map((action, index) => {
|
|
20208
|
-
|
|
20209
|
-
|
|
20210
|
-
|
|
20211
|
-
|
|
20212
|
-
|
|
20213
|
-
|
|
20214
|
-
|
|
20215
|
-
|
|
20216
|
-
|
|
20217
|
-
|
|
20218
|
-
|
|
20219
|
-
|
|
20220
|
-
|
|
20221
|
-
index
|
|
20222
|
-
);
|
|
20223
|
-
}
|
|
20224
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20225
|
-
Pressable,
|
|
20226
|
-
{
|
|
20227
|
-
href: action.href,
|
|
20228
|
-
onClick: action.onClick,
|
|
20229
|
-
variant: action.variant,
|
|
20230
|
-
size: action.size,
|
|
20231
|
-
className: action.className,
|
|
20232
|
-
"aria-label": action["aria-label"],
|
|
20233
|
-
asButton: true,
|
|
20234
|
-
children: [
|
|
20235
|
-
action.icon,
|
|
20236
|
-
action.label,
|
|
20237
|
-
action.iconAfter
|
|
20238
|
-
]
|
|
20239
|
-
},
|
|
20240
|
-
index
|
|
20241
|
-
);
|
|
20453
|
+
const {
|
|
20454
|
+
label,
|
|
20455
|
+
icon,
|
|
20456
|
+
iconAfter,
|
|
20457
|
+
children,
|
|
20458
|
+
className: actionClassName,
|
|
20459
|
+
...pressableProps
|
|
20460
|
+
} = action;
|
|
20461
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20462
|
+
icon,
|
|
20463
|
+
label,
|
|
20464
|
+
iconAfter
|
|
20465
|
+
] }) }, index);
|
|
20242
20466
|
});
|
|
20243
20467
|
}, [actionsSlot, actions]);
|
|
20244
20468
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20248,7 +20472,7 @@ function FeatureSplitImage({
|
|
|
20248
20472
|
img.Img,
|
|
20249
20473
|
{
|
|
20250
20474
|
src: imageSrc,
|
|
20251
|
-
alt: imageAlt || "
|
|
20475
|
+
alt: imageAlt || "",
|
|
20252
20476
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20253
20477
|
loading: "lazy",
|
|
20254
20478
|
optixFlowConfig
|
|
@@ -20269,7 +20493,7 @@ function FeatureSplitImage({
|
|
|
20269
20493
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20270
20494
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
|
|
20271
20495
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
20272
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20496
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20273
20497
|
] }),
|
|
20274
20498
|
imageContent
|
|
20275
20499
|
] })
|
|
@@ -20303,40 +20527,19 @@ function FeatureSplitImageReverse({
|
|
|
20303
20527
|
if (actionsSlot) return actionsSlot;
|
|
20304
20528
|
if (!actions || actions.length === 0) return null;
|
|
20305
20529
|
return actions.map((action, index) => {
|
|
20306
|
-
|
|
20307
|
-
|
|
20308
|
-
|
|
20309
|
-
|
|
20310
|
-
|
|
20311
|
-
|
|
20312
|
-
|
|
20313
|
-
|
|
20314
|
-
|
|
20315
|
-
|
|
20316
|
-
|
|
20317
|
-
|
|
20318
|
-
|
|
20319
|
-
index
|
|
20320
|
-
);
|
|
20321
|
-
}
|
|
20322
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20323
|
-
Pressable,
|
|
20324
|
-
{
|
|
20325
|
-
href: action.href,
|
|
20326
|
-
onClick: action.onClick,
|
|
20327
|
-
variant: action.variant,
|
|
20328
|
-
size: action.size,
|
|
20329
|
-
className: action.className,
|
|
20330
|
-
"aria-label": action["aria-label"],
|
|
20331
|
-
asButton: true,
|
|
20332
|
-
children: [
|
|
20333
|
-
action.icon,
|
|
20334
|
-
action.label,
|
|
20335
|
-
action.iconAfter
|
|
20336
|
-
]
|
|
20337
|
-
},
|
|
20338
|
-
index
|
|
20339
|
-
);
|
|
20530
|
+
const {
|
|
20531
|
+
label,
|
|
20532
|
+
icon,
|
|
20533
|
+
iconAfter,
|
|
20534
|
+
children,
|
|
20535
|
+
className: actionClassName,
|
|
20536
|
+
...pressableProps
|
|
20537
|
+
} = action;
|
|
20538
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20539
|
+
icon,
|
|
20540
|
+
label,
|
|
20541
|
+
iconAfter
|
|
20542
|
+
] }) }, index);
|
|
20340
20543
|
});
|
|
20341
20544
|
}, [actionsSlot, actions]);
|
|
20342
20545
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20346,7 +20549,7 @@ function FeatureSplitImageReverse({
|
|
|
20346
20549
|
img.Img,
|
|
20347
20550
|
{
|
|
20348
20551
|
src: imageSrc,
|
|
20349
|
-
alt: imageAlt || "
|
|
20552
|
+
alt: imageAlt || "",
|
|
20350
20553
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20351
20554
|
loading: "lazy",
|
|
20352
20555
|
optixFlowConfig
|
|
@@ -20368,7 +20571,7 @@ function FeatureSplitImageReverse({
|
|
|
20368
20571
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20369
20572
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
|
|
20370
20573
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
20371
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20574
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20372
20575
|
] })
|
|
20373
20576
|
] })
|
|
20374
20577
|
}
|
|
@@ -20391,39 +20594,37 @@ function FeatureIconGridBordered({
|
|
|
20391
20594
|
patternOpacity,
|
|
20392
20595
|
patternClassName
|
|
20393
20596
|
}) {
|
|
20597
|
+
const renderIcon = React52.useCallback((feature) => {
|
|
20598
|
+
if (feature.icon) return feature.icon;
|
|
20599
|
+
if (feature.iconName) {
|
|
20600
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 20, className: "md:size-6" });
|
|
20601
|
+
}
|
|
20602
|
+
return null;
|
|
20603
|
+
}, []);
|
|
20394
20604
|
const featuresContent = React52.useMemo(() => {
|
|
20395
20605
|
if (featuresSlot) return featuresSlot;
|
|
20396
20606
|
if (!features || features.length === 0) return null;
|
|
20397
|
-
return features.map((feature, index) =>
|
|
20398
|
-
|
|
20399
|
-
|
|
20400
|
-
|
|
20401
|
-
|
|
20402
|
-
|
|
20403
|
-
|
|
20404
|
-
|
|
20405
|
-
|
|
20406
|
-
|
|
20407
|
-
|
|
20408
|
-
|
|
20409
|
-
|
|
20410
|
-
|
|
20411
|
-
/* @__PURE__ */ jsxRuntime.
|
|
20412
|
-
|
|
20413
|
-
|
|
20414
|
-
|
|
20415
|
-
|
|
20416
|
-
|
|
20417
|
-
|
|
20418
|
-
] })),
|
|
20419
|
-
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
20420
|
-
] })
|
|
20421
|
-
]
|
|
20422
|
-
},
|
|
20423
|
-
index
|
|
20424
|
-
);
|
|
20425
|
-
});
|
|
20426
|
-
}, [featuresSlot, features, cardClassName]);
|
|
20607
|
+
return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20608
|
+
"div",
|
|
20609
|
+
{
|
|
20610
|
+
className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
|
|
20611
|
+
children: [
|
|
20612
|
+
(feature.icon || feature.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", feature.iconClassName), children: renderIcon(feature) }),
|
|
20613
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20614
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20615
|
+
feature.title,
|
|
20616
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20617
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20618
|
+
feature.title,
|
|
20619
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20620
|
+
] })),
|
|
20621
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
20622
|
+
] })
|
|
20623
|
+
]
|
|
20624
|
+
},
|
|
20625
|
+
index
|
|
20626
|
+
));
|
|
20627
|
+
}, [featuresSlot, features, cardClassName, renderIcon]);
|
|
20427
20628
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20428
20629
|
Section,
|
|
20429
20630
|
{
|
|
@@ -20437,7 +20638,7 @@ function FeatureIconGridBordered({
|
|
|
20437
20638
|
children: [
|
|
20438
20639
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label })),
|
|
20439
20640
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
|
|
20440
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
|
|
20641
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
|
|
20441
20642
|
]
|
|
20442
20643
|
}
|
|
20443
20644
|
);
|
|
@@ -20551,8 +20752,8 @@ function FeatureChecklistImage({
|
|
|
20551
20752
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
20552
20753
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
|
|
20553
20754
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
|
|
20554
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
20555
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
20755
|
+
actionsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
20756
|
+
checklistContent && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
20556
20757
|
] })
|
|
20557
20758
|
] })
|
|
20558
20759
|
}
|
|
@@ -20617,10 +20818,10 @@ function FeatureCarouselProgress({
|
|
|
20617
20818
|
);
|
|
20618
20819
|
});
|
|
20619
20820
|
}, [api, slidesLength]);
|
|
20620
|
-
const renderSlideIcon = React52.
|
|
20821
|
+
const renderSlideIcon = React52.useCallback((slide) => {
|
|
20621
20822
|
if (slide.icon) return slide.icon;
|
|
20622
20823
|
if (slide.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: slide.iconName, size: 16 });
|
|
20623
|
-
return
|
|
20824
|
+
return null;
|
|
20624
20825
|
}, []);
|
|
20625
20826
|
const slidesContent = React52.useMemo(() => {
|
|
20626
20827
|
if (slidesSlot) return slidesSlot;
|
|
@@ -20630,7 +20831,7 @@ function FeatureCarouselProgress({
|
|
|
20630
20831
|
{
|
|
20631
20832
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
20632
20833
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1", children: /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20633
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
20834
|
+
(slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
20634
20835
|
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
|
|
20635
20836
|
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
|
|
20636
20837
|
] }) }) }) })
|
|
@@ -20692,28 +20893,28 @@ function FeatureCardGridLinked({
|
|
|
20692
20893
|
patternOpacity,
|
|
20693
20894
|
patternClassName
|
|
20694
20895
|
}) {
|
|
20896
|
+
const renderImage = React52.useCallback((feature, imageAlt) => {
|
|
20897
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
20898
|
+
if (feature.image) {
|
|
20899
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20900
|
+
img.Img,
|
|
20901
|
+
{
|
|
20902
|
+
src: feature.image,
|
|
20903
|
+
alt: imageAlt,
|
|
20904
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
20905
|
+
loading: "lazy",
|
|
20906
|
+
optixFlowConfig
|
|
20907
|
+
}
|
|
20908
|
+
);
|
|
20909
|
+
}
|
|
20910
|
+
return null;
|
|
20911
|
+
}, [optixFlowConfig]);
|
|
20695
20912
|
const featuresContent = React52.useMemo(() => {
|
|
20696
20913
|
if (featuresSlot) return featuresSlot;
|
|
20697
20914
|
if (!features || features.length === 0) return null;
|
|
20698
20915
|
return features.map((feature, index) => {
|
|
20699
20916
|
const featureKey = feature.id || `feature-${index}`;
|
|
20700
20917
|
const imageAlt = feature.imageAlt || (typeof feature.heading === "string" ? feature.heading : "Feature image");
|
|
20701
|
-
const renderImage = () => {
|
|
20702
|
-
if (feature.imageSlot) return feature.imageSlot;
|
|
20703
|
-
if (feature.image) {
|
|
20704
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20705
|
-
img.Img,
|
|
20706
|
-
{
|
|
20707
|
-
src: feature.image,
|
|
20708
|
-
alt: imageAlt,
|
|
20709
|
-
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
20710
|
-
loading: "lazy",
|
|
20711
|
-
optixFlowConfig
|
|
20712
|
-
}
|
|
20713
|
-
);
|
|
20714
|
-
}
|
|
20715
|
-
return null;
|
|
20716
|
-
};
|
|
20717
20918
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20718
20919
|
"div",
|
|
20719
20920
|
{
|
|
@@ -20724,7 +20925,7 @@ function FeatureCardGridLinked({
|
|
|
20724
20925
|
feature.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
|
|
20725
20926
|
feature.heading && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) })
|
|
20726
20927
|
] }),
|
|
20727
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: renderImage() }) })
|
|
20928
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
|
|
20728
20929
|
] }),
|
|
20729
20930
|
feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
|
|
20730
20931
|
]
|
|
@@ -20732,7 +20933,7 @@ function FeatureCardGridLinked({
|
|
|
20732
20933
|
featureKey
|
|
20733
20934
|
);
|
|
20734
20935
|
});
|
|
20735
|
-
}, [featuresSlot, features, cardClassName,
|
|
20936
|
+
}, [featuresSlot, features, cardClassName, renderImage]);
|
|
20736
20937
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20737
20938
|
Section,
|
|
20738
20939
|
{
|
|
@@ -20768,7 +20969,7 @@ function FeatureNumberedCards({
|
|
|
20768
20969
|
patternOpacity,
|
|
20769
20970
|
patternClassName
|
|
20770
20971
|
}) {
|
|
20771
|
-
const renderChecklistItems = (feature) => {
|
|
20972
|
+
const renderChecklistItems = React52.useCallback((feature) => {
|
|
20772
20973
|
if (feature.checklistSlot) return feature.checklistSlot;
|
|
20773
20974
|
if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
|
|
20774
20975
|
return feature.checklistItems.map((item, itemIndex) => {
|
|
@@ -20788,7 +20989,7 @@ function FeatureNumberedCards({
|
|
|
20788
20989
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
|
|
20789
20990
|
] }, itemIndex);
|
|
20790
20991
|
});
|
|
20791
|
-
};
|
|
20992
|
+
}, []);
|
|
20792
20993
|
const featuresContent = React52.useMemo(() => {
|
|
20793
20994
|
if (featuresSlot) return featuresSlot;
|
|
20794
20995
|
if (!features || features.length === 0) return null;
|
|
@@ -20893,12 +21094,12 @@ function FeatureIconGridAccent({
|
|
|
20893
21094
|
className,
|
|
20894
21095
|
containerClassName,
|
|
20895
21096
|
children: [
|
|
20896
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
21097
|
+
(label || title || description) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
20897
21098
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: labelClassName, children: label })),
|
|
20898
21099
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
20899
21100
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
20900
21101
|
] }) }),
|
|
20901
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
21102
|
+
featuresContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
20902
21103
|
]
|
|
20903
21104
|
}
|
|
20904
21105
|
);
|
|
@@ -20920,20 +21121,20 @@ function FeatureThreeColumnValues({
|
|
|
20920
21121
|
patternOpacity,
|
|
20921
21122
|
patternClassName
|
|
20922
21123
|
}) {
|
|
20923
|
-
const renderValueIcon = (value) => {
|
|
21124
|
+
const renderValueIcon = React52__namespace.useCallback((value) => {
|
|
20924
21125
|
if (value.icon) return value.icon;
|
|
20925
21126
|
if (value.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
|
|
20926
|
-
return
|
|
20927
|
-
};
|
|
21127
|
+
return null;
|
|
21128
|
+
}, []);
|
|
20928
21129
|
const valuesContent = React52.useMemo(() => {
|
|
20929
21130
|
if (valuesSlot) return valuesSlot;
|
|
20930
21131
|
if (!values || values.length === 0) return null;
|
|
20931
21132
|
return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
|
|
20932
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
|
|
21133
|
+
(value.icon || value.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
|
|
20933
21134
|
value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title })),
|
|
20934
21135
|
value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }))
|
|
20935
21136
|
] }, index));
|
|
20936
|
-
}, [valuesSlot, values, cardClassName]);
|
|
21137
|
+
}, [valuesSlot, values, cardClassName, renderValueIcon]);
|
|
20937
21138
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20938
21139
|
Section,
|
|
20939
21140
|
{
|
|
@@ -20947,7 +21148,7 @@ function FeatureThreeColumnValues({
|
|
|
20947
21148
|
children: [
|
|
20948
21149
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label })),
|
|
20949
21150
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
|
|
20950
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
|
|
21151
|
+
(valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
|
|
20951
21152
|
]
|
|
20952
21153
|
}
|
|
20953
21154
|
);
|
|
@@ -20979,7 +21180,7 @@ function FeatureBadgeGridSix({
|
|
|
20979
21180
|
if (!label) return null;
|
|
20980
21181
|
return /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", className: badgeClassName, children: label });
|
|
20981
21182
|
}, [badgeSlot, label, badgeClassName]);
|
|
20982
|
-
const renderFeatureIcon = (feature) => {
|
|
21183
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
20983
21184
|
if (feature.icon) return feature.icon;
|
|
20984
21185
|
if (feature.iconName) {
|
|
20985
21186
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20992,25 +21193,28 @@ function FeatureBadgeGridSix({
|
|
|
20992
21193
|
);
|
|
20993
21194
|
}
|
|
20994
21195
|
return null;
|
|
20995
|
-
};
|
|
21196
|
+
}, []);
|
|
20996
21197
|
const featuresContent = React52.useMemo(() => {
|
|
20997
21198
|
if (featuresSlot) return featuresSlot;
|
|
20998
21199
|
if (!features || features.length === 0) return null;
|
|
20999
|
-
return features.map((feature, index) =>
|
|
21000
|
-
|
|
21001
|
-
|
|
21002
|
-
|
|
21003
|
-
|
|
21004
|
-
|
|
21005
|
-
|
|
21006
|
-
|
|
21007
|
-
|
|
21008
|
-
|
|
21009
|
-
|
|
21010
|
-
|
|
21011
|
-
|
|
21012
|
-
|
|
21013
|
-
|
|
21200
|
+
return features.map((feature, index) => {
|
|
21201
|
+
const iconContent = renderFeatureIcon(feature);
|
|
21202
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21203
|
+
"div",
|
|
21204
|
+
{
|
|
21205
|
+
className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
|
|
21206
|
+
children: [
|
|
21207
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: iconContent }),
|
|
21208
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21209
|
+
feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
|
|
21210
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
21211
|
+
] })
|
|
21212
|
+
]
|
|
21213
|
+
},
|
|
21214
|
+
index
|
|
21215
|
+
);
|
|
21216
|
+
});
|
|
21217
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
21014
21218
|
const actionContent = React52.useMemo(() => {
|
|
21015
21219
|
if (actionSlot) return actionSlot;
|
|
21016
21220
|
if (!action) return null;
|
|
@@ -21071,7 +21275,6 @@ function FeatureBadgeGridSix({
|
|
|
21071
21275
|
function FeaturePatternGridLinks({
|
|
21072
21276
|
features,
|
|
21073
21277
|
featuresSlot,
|
|
21074
|
-
patternUrl = patternSvgs.dotPattern,
|
|
21075
21278
|
className,
|
|
21076
21279
|
containerClassName,
|
|
21077
21280
|
gridClassName,
|
|
@@ -21082,26 +21285,28 @@ function FeaturePatternGridLinks({
|
|
|
21082
21285
|
patternOpacity,
|
|
21083
21286
|
patternClassName
|
|
21084
21287
|
}) {
|
|
21085
|
-
const renderFeatureIcon = (feature) => {
|
|
21288
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
21086
21289
|
if (feature.icon) return feature.icon;
|
|
21087
21290
|
if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
21088
21291
|
return null;
|
|
21089
|
-
};
|
|
21090
|
-
const renderFeatureLink = (feature) => {
|
|
21292
|
+
}, []);
|
|
21293
|
+
const renderFeatureLink = React52.useCallback((feature) => {
|
|
21091
21294
|
if (feature.linkSlot) return feature.linkSlot;
|
|
21092
|
-
if (!feature.link) return null;
|
|
21295
|
+
if (!feature.link && !feature.linkLabel) return null;
|
|
21296
|
+
const label = feature.linkLabel || (feature.link ? "Learn more" : null);
|
|
21297
|
+
if (!label) return null;
|
|
21093
21298
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21094
21299
|
Pressable,
|
|
21095
21300
|
{
|
|
21096
21301
|
href: feature.link,
|
|
21097
21302
|
className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
|
|
21098
21303
|
children: [
|
|
21099
|
-
|
|
21304
|
+
label,
|
|
21100
21305
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
21101
21306
|
]
|
|
21102
21307
|
}
|
|
21103
21308
|
);
|
|
21104
|
-
};
|
|
21309
|
+
}, []);
|
|
21105
21310
|
const featuresContent = React52.useMemo(() => {
|
|
21106
21311
|
if (featuresSlot) return featuresSlot;
|
|
21107
21312
|
if (!features || features.length === 0) return null;
|
|
@@ -21120,7 +21325,7 @@ function FeaturePatternGridLinks({
|
|
|
21120
21325
|
},
|
|
21121
21326
|
index
|
|
21122
21327
|
));
|
|
21123
|
-
}, [featuresSlot, features, cardClassName]);
|
|
21328
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
|
|
21124
21329
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21125
21330
|
Section,
|
|
21126
21331
|
{
|
|
@@ -21129,12 +21334,8 @@ function FeaturePatternGridLinks({
|
|
|
21129
21334
|
pattern,
|
|
21130
21335
|
patternOpacity,
|
|
21131
21336
|
patternClassName,
|
|
21132
|
-
className
|
|
21337
|
+
className,
|
|
21133
21338
|
containerClassName,
|
|
21134
|
-
style: {
|
|
21135
|
-
backgroundImage: `url(${patternUrl})`,
|
|
21136
|
-
backgroundRepeat: "repeat"
|
|
21137
|
-
},
|
|
21138
21339
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
|
|
21139
21340
|
}
|
|
21140
21341
|
);
|
|
@@ -21202,7 +21403,7 @@ function FeatureTabbedContentImage({
|
|
|
21202
21403
|
description,
|
|
21203
21404
|
slides,
|
|
21204
21405
|
slidesSlot,
|
|
21205
|
-
defaultTab
|
|
21406
|
+
defaultTab,
|
|
21206
21407
|
className,
|
|
21207
21408
|
containerClassName,
|
|
21208
21409
|
headerClassName,
|
|
@@ -21221,7 +21422,7 @@ function FeatureTabbedContentImage({
|
|
|
21221
21422
|
patternOpacity,
|
|
21222
21423
|
patternClassName
|
|
21223
21424
|
}) {
|
|
21224
|
-
const renderFeatures =
|
|
21425
|
+
const renderFeatures = React52__namespace.useCallback((slide) => {
|
|
21225
21426
|
if (slide.featuresSlot) return slide.featuresSlot;
|
|
21226
21427
|
if (!slide.features || slide.features.length === 0) return null;
|
|
21227
21428
|
return slide.features.map((feature, index) => {
|
|
@@ -21235,7 +21436,7 @@ function FeatureTabbedContentImage({
|
|
|
21235
21436
|
] }, index);
|
|
21236
21437
|
});
|
|
21237
21438
|
}, []);
|
|
21238
|
-
const renderActions =
|
|
21439
|
+
const renderActions = React52__namespace.useCallback((slide) => {
|
|
21239
21440
|
if (slide.actionsSlot) return slide.actionsSlot;
|
|
21240
21441
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
21241
21442
|
return slide.actions.map((action, index) => {
|
|
@@ -21275,7 +21476,7 @@ function FeatureTabbedContentImage({
|
|
|
21275
21476
|
);
|
|
21276
21477
|
});
|
|
21277
21478
|
}, []);
|
|
21278
|
-
const renderImage =
|
|
21479
|
+
const renderImage = React52__namespace.useCallback((slide) => {
|
|
21279
21480
|
if (slide.imageSlot) return slide.imageSlot;
|
|
21280
21481
|
if (!slide.image) return null;
|
|
21281
21482
|
const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
|
|
@@ -21322,6 +21523,11 @@ function FeatureTabbedContentImage({
|
|
|
21322
21523
|
))
|
|
21323
21524
|
] });
|
|
21324
21525
|
}, [slidesSlot, slides, tabsListClassName, tabTriggerClassName, tabContentClassName, contentGridClassName, renderFeatures, renderActions, renderImage]);
|
|
21526
|
+
const effectiveDefaultTab = React52.useMemo(() => {
|
|
21527
|
+
if (defaultTab) return defaultTab;
|
|
21528
|
+
if (slides && slides.length > 0) return slides[0].id.toString();
|
|
21529
|
+
return "1";
|
|
21530
|
+
}, [defaultTab, slides]);
|
|
21325
21531
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21326
21532
|
Section,
|
|
21327
21533
|
{
|
|
@@ -21337,10 +21543,10 @@ function FeatureTabbedContentImage({
|
|
|
21337
21543
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
|
|
21338
21544
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }))
|
|
21339
21545
|
] }),
|
|
21340
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21546
|
+
(slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21341
21547
|
Tabs,
|
|
21342
21548
|
{
|
|
21343
|
-
defaultValue:
|
|
21549
|
+
defaultValue: effectiveDefaultTab,
|
|
21344
21550
|
className: cn("mx-auto flex w-fit flex-col items-center gap-8 md:gap-12", tabsClassName),
|
|
21345
21551
|
children: slidesContent
|
|
21346
21552
|
}
|
|
@@ -21352,7 +21558,7 @@ function FeatureTabbedContentImage({
|
|
|
21352
21558
|
function FeatureUtilityCardsGrid({
|
|
21353
21559
|
label,
|
|
21354
21560
|
labelIcon,
|
|
21355
|
-
labelIconName
|
|
21561
|
+
labelIconName,
|
|
21356
21562
|
title,
|
|
21357
21563
|
description,
|
|
21358
21564
|
learnMoreAction,
|
|
@@ -21374,11 +21580,11 @@ function FeatureUtilityCardsGrid({
|
|
|
21374
21580
|
patternOpacity,
|
|
21375
21581
|
patternClassName
|
|
21376
21582
|
}) {
|
|
21377
|
-
const renderLabelIcon = () => {
|
|
21583
|
+
const renderLabelIcon = React52.useMemo(() => {
|
|
21378
21584
|
if (labelIcon) return labelIcon;
|
|
21379
21585
|
if (labelIconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
|
|
21380
|
-
return
|
|
21381
|
-
};
|
|
21586
|
+
return null;
|
|
21587
|
+
}, [labelIcon, labelIconName]);
|
|
21382
21588
|
const learnMoreContent = React52.useMemo(() => {
|
|
21383
21589
|
if (learnMoreSlot) return learnMoreSlot;
|
|
21384
21590
|
if (!learnMoreAction) return null;
|
|
@@ -21409,7 +21615,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21409
21615
|
}
|
|
21410
21616
|
);
|
|
21411
21617
|
}, [learnMoreSlot, learnMoreAction]);
|
|
21412
|
-
const renderUtilityImage = (utility) => {
|
|
21618
|
+
const renderUtilityImage = React52__namespace.useCallback((utility) => {
|
|
21413
21619
|
if (utility.imageSlot) return utility.imageSlot;
|
|
21414
21620
|
if (utility.image) {
|
|
21415
21621
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21424,7 +21630,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21424
21630
|
);
|
|
21425
21631
|
}
|
|
21426
21632
|
return null;
|
|
21427
|
-
};
|
|
21633
|
+
}, [optixFlowConfig]);
|
|
21428
21634
|
const utilitiesContent = React52.useMemo(() => {
|
|
21429
21635
|
if (utilitiesSlot) return utilitiesSlot;
|
|
21430
21636
|
if (!utilities || utilities.length === 0) return null;
|
|
@@ -21435,7 +21641,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21435
21641
|
utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }))
|
|
21436
21642
|
] })
|
|
21437
21643
|
] }, index));
|
|
21438
|
-
}, [utilitiesSlot, utilities, cardClassName,
|
|
21644
|
+
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
|
|
21439
21645
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21440
21646
|
Section,
|
|
21441
21647
|
{
|
|
@@ -21447,26 +21653,28 @@ function FeatureUtilityCardsGrid({
|
|
|
21447
21653
|
className,
|
|
21448
21654
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21449
21655
|
children: [
|
|
21450
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
21451
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center
|
|
21452
|
-
|
|
21453
|
-
|
|
21656
|
+
(label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21657
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
|
|
21658
|
+
(label || labelIcon || labelIconName) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
|
|
21659
|
+
renderLabelIcon,
|
|
21660
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: label }))
|
|
21661
|
+
] }),
|
|
21662
|
+
learnMoreContent
|
|
21454
21663
|
] }),
|
|
21455
|
-
|
|
21664
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mt-3 mb-8" })
|
|
21456
21665
|
] }),
|
|
21457
|
-
/* @__PURE__ */ jsxRuntime.
|
|
21458
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21666
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21459
21667
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title })),
|
|
21460
21668
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("md:w-1/2", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("md:w-1/2", descriptionClassName), children: description }))
|
|
21461
21669
|
] }),
|
|
21462
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
|
|
21670
|
+
(utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
|
|
21463
21671
|
]
|
|
21464
21672
|
}
|
|
21465
21673
|
);
|
|
21466
21674
|
}
|
|
21467
21675
|
function FeatureBentoUtilities({
|
|
21468
21676
|
label,
|
|
21469
|
-
labelIconName
|
|
21677
|
+
labelIconName,
|
|
21470
21678
|
labelIcon,
|
|
21471
21679
|
title,
|
|
21472
21680
|
description,
|
|
@@ -21489,7 +21697,7 @@ function FeatureBentoUtilities({
|
|
|
21489
21697
|
patternOpacity,
|
|
21490
21698
|
patternClassName
|
|
21491
21699
|
}) {
|
|
21492
|
-
const renderCard =
|
|
21700
|
+
const renderCard = React52__namespace.useCallback((card, index) => {
|
|
21493
21701
|
const hasImage = card.imageSrc || card.imageSlot;
|
|
21494
21702
|
const cardClasses = cn(
|
|
21495
21703
|
hasImage ? "overflow-hidden pt-0" : "p-6",
|
|
@@ -21535,12 +21743,16 @@ function FeatureBentoUtilities({
|
|
|
21535
21743
|
card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: card.description })
|
|
21536
21744
|
] }, index);
|
|
21537
21745
|
}, [optixFlowConfig]);
|
|
21538
|
-
const renderColumn =
|
|
21746
|
+
const renderColumn = React52__namespace.useCallback((cards, slot) => {
|
|
21539
21747
|
if (slot) return slot;
|
|
21540
21748
|
if (!cards || cards.length === 0) return null;
|
|
21541
21749
|
return cards.map((card, index) => renderCard(card, index));
|
|
21542
21750
|
}, [renderCard]);
|
|
21543
|
-
const labelIconElement = React52.useMemo(() =>
|
|
21751
|
+
const labelIconElement = React52.useMemo(() => {
|
|
21752
|
+
if (labelIcon) return labelIcon;
|
|
21753
|
+
if (labelIconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20 });
|
|
21754
|
+
return null;
|
|
21755
|
+
}, [labelIcon, labelIconName]);
|
|
21544
21756
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21545
21757
|
Section,
|
|
21546
21758
|
{
|
|
@@ -21552,7 +21764,7 @@ function FeatureBentoUtilities({
|
|
|
21552
21764
|
className: cn("bg-gray-50 dark:bg-background", className),
|
|
21553
21765
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21554
21766
|
children: [
|
|
21555
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21767
|
+
(labelIconElement || label) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21556
21768
|
labelIconElement,
|
|
21557
21769
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: label }))
|
|
21558
21770
|
] }),
|
|
@@ -21591,15 +21803,15 @@ function FeatureChecklistThreeColumn({
|
|
|
21591
21803
|
patternOpacity,
|
|
21592
21804
|
patternClassName
|
|
21593
21805
|
}) {
|
|
21594
|
-
const getCheckItemContent = React52.
|
|
21806
|
+
const getCheckItemContent = React52.useCallback((item) => {
|
|
21595
21807
|
if (typeof item === "string") return item;
|
|
21596
21808
|
return item.content;
|
|
21597
21809
|
}, []);
|
|
21598
|
-
const getCheckItemClassName = React52.
|
|
21810
|
+
const getCheckItemClassName = React52.useCallback((item) => {
|
|
21599
21811
|
if (typeof item === "string") return void 0;
|
|
21600
21812
|
return item.className;
|
|
21601
21813
|
}, []);
|
|
21602
|
-
const renderChecklistColumn = React52.
|
|
21814
|
+
const renderChecklistColumn = React52.useCallback((items, slot, gapClass) => {
|
|
21603
21815
|
if (slot) return slot;
|
|
21604
21816
|
if (!items || items.length === 0) return null;
|
|
21605
21817
|
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("flex flex-col text-muted-foreground", gapClass, checklistClassName), children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-center gap-2", getCheckItemClassName(item)), children: [
|
|
@@ -21607,7 +21819,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21607
21819
|
getCheckItemContent(item)
|
|
21608
21820
|
] }, index)) });
|
|
21609
21821
|
}, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
|
|
21610
|
-
const renderCardImage = React52.
|
|
21822
|
+
const renderCardImage = React52.useCallback((card) => {
|
|
21611
21823
|
if (card.imageSlot) return card.imageSlot;
|
|
21612
21824
|
if (card.image) {
|
|
21613
21825
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21623,7 +21835,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21623
21835
|
}
|
|
21624
21836
|
return null;
|
|
21625
21837
|
}, [optixFlowConfig]);
|
|
21626
|
-
const renderCardLink = React52.
|
|
21838
|
+
const renderCardLink = React52.useCallback((card) => {
|
|
21627
21839
|
if (card.linkSlot) return card.linkSlot;
|
|
21628
21840
|
if (!card.link) return null;
|
|
21629
21841
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -21686,7 +21898,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21686
21898
|
pattern,
|
|
21687
21899
|
patternOpacity,
|
|
21688
21900
|
patternClassName,
|
|
21689
|
-
className
|
|
21901
|
+
className,
|
|
21690
21902
|
containerClassName,
|
|
21691
21903
|
children: [
|
|
21692
21904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-4 sm:grid-cols-2 sm:gap-8 md:gap-12 lg:grid-cols-3 lg:gap-16", headerGridClassName), children: [
|
|
@@ -21718,26 +21930,25 @@ function FeatureIntegrationCards({
|
|
|
21718
21930
|
patternOpacity,
|
|
21719
21931
|
patternClassName
|
|
21720
21932
|
}) {
|
|
21721
|
-
const renderIntegrationIcon = React52.
|
|
21933
|
+
const renderIntegrationIcon = React52.useCallback((integration) => {
|
|
21722
21934
|
if (integration.iconSlot) return integration.iconSlot;
|
|
21723
|
-
if (integration.icon)
|
|
21724
|
-
|
|
21725
|
-
|
|
21726
|
-
|
|
21727
|
-
|
|
21728
|
-
|
|
21729
|
-
|
|
21730
|
-
|
|
21731
|
-
|
|
21732
|
-
|
|
21733
|
-
|
|
21734
|
-
}
|
|
21735
|
-
return null;
|
|
21935
|
+
if (!integration.icon) return null;
|
|
21936
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21937
|
+
img.Img,
|
|
21938
|
+
{
|
|
21939
|
+
src: integration.icon,
|
|
21940
|
+
alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
|
|
21941
|
+
className: cn("h-auto w-7", integration.iconClassName),
|
|
21942
|
+
loading: "lazy",
|
|
21943
|
+
optixFlowConfig
|
|
21944
|
+
}
|
|
21945
|
+
);
|
|
21736
21946
|
}, [optixFlowConfig]);
|
|
21737
|
-
const renderLinkLabel = React52.
|
|
21947
|
+
const renderLinkLabel = React52.useCallback((integration) => {
|
|
21738
21948
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
21949
|
+
if (!integration.linkLabel) return null;
|
|
21739
21950
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("flex items-center gap-1 rounded-full border px-3 py-2.5 text-sm", integration.linkLabelClassName), children: [
|
|
21740
|
-
integration.linkLabel
|
|
21951
|
+
integration.linkLabel,
|
|
21741
21952
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
21742
21953
|
] });
|
|
21743
21954
|
}, []);
|
|
@@ -21745,10 +21956,12 @@ function FeatureIntegrationCards({
|
|
|
21745
21956
|
if (integrationsSlot) return integrationsSlot;
|
|
21746
21957
|
if (!integrations || integrations.length === 0) return null;
|
|
21747
21958
|
return integrations.map((integration, index) => {
|
|
21959
|
+
const iconContent = renderIntegrationIcon(integration);
|
|
21960
|
+
const linkLabelContent = renderLinkLabel(integration);
|
|
21748
21961
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21749
21962
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
21750
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children:
|
|
21751
|
-
|
|
21963
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
|
|
21964
|
+
linkLabelContent
|
|
21752
21965
|
] }),
|
|
21753
21966
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21754
21967
|
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title })),
|
|
@@ -21820,12 +22033,12 @@ function FeatureIconTabsContent({
|
|
|
21820
22033
|
patternOpacity,
|
|
21821
22034
|
patternClassName
|
|
21822
22035
|
}) {
|
|
21823
|
-
const renderTabIcon = React52.
|
|
22036
|
+
const renderTabIcon = React52.useCallback((tab) => {
|
|
21824
22037
|
if (tab.icon) return tab.icon;
|
|
21825
22038
|
if (tab.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: tab.iconName, size: 16 });
|
|
21826
|
-
return
|
|
22039
|
+
return null;
|
|
21827
22040
|
}, []);
|
|
21828
|
-
const renderTabContentActions = React52.
|
|
22041
|
+
const renderTabContentActions = React52.useCallback((content) => {
|
|
21829
22042
|
if (content.actionsSlot) return content.actionsSlot;
|
|
21830
22043
|
if (!content.actions || content.actions.length === 0) return null;
|
|
21831
22044
|
return content.actions.map((action, index) => {
|
|
@@ -21865,7 +22078,7 @@ function FeatureIconTabsContent({
|
|
|
21865
22078
|
);
|
|
21866
22079
|
});
|
|
21867
22080
|
}, []);
|
|
21868
|
-
const renderTabContentImage = React52.
|
|
22081
|
+
const renderTabContentImage = React52.useCallback((content) => {
|
|
21869
22082
|
if (content.imageSlot) return content.imageSlot;
|
|
21870
22083
|
if (content.imageSrc) {
|
|
21871
22084
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21892,7 +22105,7 @@ function FeatureIconTabsContent({
|
|
|
21892
22105
|
value: tab.value,
|
|
21893
22106
|
className: cn("flex items-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold text-muted-foreground data-[state=active]:bg-muted data-[state=active]:text-primary", tabTriggerClassName, tab.className),
|
|
21894
22107
|
children: [
|
|
21895
|
-
renderTabIcon(tab),
|
|
22108
|
+
(tab.icon || tab.iconName) && renderTabIcon(tab),
|
|
21896
22109
|
tab.label
|
|
21897
22110
|
]
|
|
21898
22111
|
},
|
|
@@ -21914,9 +22127,9 @@ function FeatureIconTabsContent({
|
|
|
21914
22127
|
content.badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
|
|
21915
22128
|
content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title })),
|
|
21916
22129
|
content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description })),
|
|
21917
|
-
renderTabContentActions(content)
|
|
22130
|
+
(content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
|
|
21918
22131
|
] }),
|
|
21919
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
22132
|
+
(content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
21920
22133
|
]
|
|
21921
22134
|
},
|
|
21922
22135
|
tab.value
|
|
@@ -21935,7 +22148,7 @@ function FeatureIconTabsContent({
|
|
|
21935
22148
|
className,
|
|
21936
22149
|
containerClassName: cn("mx-auto", containerClassName),
|
|
21937
22150
|
children: [
|
|
21938
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
22151
|
+
(badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
21939
22152
|
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
|
|
21940
22153
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
|
|
21941
22154
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
|
|
@@ -22098,28 +22311,30 @@ function FeatureImageOverlayBadge({
|
|
|
22098
22311
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
22099
22312
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22100
22313
|
] }),
|
|
22101
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22314
|
+
imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22102
22315
|
imageContent,
|
|
22103
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22104
|
-
|
|
22105
|
-
/* @__PURE__ */ jsxRuntime.jsxs("
|
|
22106
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22107
|
-
|
|
22108
|
-
|
|
22109
|
-
|
|
22110
|
-
|
|
22111
|
-
|
|
22112
|
-
|
|
22113
|
-
|
|
22114
|
-
|
|
22115
|
-
|
|
22116
|
-
|
|
22117
|
-
|
|
22118
|
-
|
|
22119
|
-
|
|
22120
|
-
|
|
22121
|
-
|
|
22122
|
-
|
|
22316
|
+
(avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22317
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute top-0 right-0 bottom-0 left-0 rounded-xl bg-linear-to-t from-primary via-transparent to-transparent", overlayClassName) }),
|
|
22318
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22319
|
+
(avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm", avatarBadgeClassName), children: [
|
|
22320
|
+
avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
|
|
22321
|
+
avatarBadgeText
|
|
22322
|
+
] }),
|
|
22323
|
+
(overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
22324
|
+
overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
|
|
22325
|
+
overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22326
|
+
Pressable,
|
|
22327
|
+
{
|
|
22328
|
+
href: overlayLinkUrl,
|
|
22329
|
+
onClick: overlayLinkOnClick,
|
|
22330
|
+
className: "flex items-center gap-1 font-medium",
|
|
22331
|
+
children: [
|
|
22332
|
+
overlayLinkText,
|
|
22333
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
22334
|
+
]
|
|
22335
|
+
}
|
|
22336
|
+
)
|
|
22337
|
+
] })
|
|
22123
22338
|
] })
|
|
22124
22339
|
] })
|
|
22125
22340
|
] })
|
|
@@ -22148,7 +22363,7 @@ function FeatureCategoryImageCards({
|
|
|
22148
22363
|
patternOpacity,
|
|
22149
22364
|
patternClassName
|
|
22150
22365
|
}) {
|
|
22151
|
-
const renderFeatureImage = (feature) => {
|
|
22366
|
+
const renderFeatureImage = React52.useCallback((feature) => {
|
|
22152
22367
|
if (feature.imageSlot) return feature.imageSlot;
|
|
22153
22368
|
if (feature.imageSrc) {
|
|
22154
22369
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22163,7 +22378,7 @@ function FeatureCategoryImageCards({
|
|
|
22163
22378
|
);
|
|
22164
22379
|
}
|
|
22165
22380
|
return null;
|
|
22166
|
-
};
|
|
22381
|
+
}, [optixFlowConfig]);
|
|
22167
22382
|
const featuresContent = React52.useMemo(() => {
|
|
22168
22383
|
if (featuresSlot) return featuresSlot;
|
|
22169
22384
|
if (!features || features.length === 0) return null;
|
|
@@ -22174,7 +22389,7 @@ function FeatureCategoryImageCards({
|
|
|
22174
22389
|
] }),
|
|
22175
22390
|
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
|
|
22176
22391
|
] }, index));
|
|
22177
|
-
}, [featuresSlot, features, cardClassName,
|
|
22392
|
+
}, [featuresSlot, features, cardClassName, renderFeatureImage]);
|
|
22178
22393
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22179
22394
|
Section,
|
|
22180
22395
|
{
|
|
@@ -22215,12 +22430,12 @@ function FeatureBentoImageGrid({
|
|
|
22215
22430
|
patternOpacity,
|
|
22216
22431
|
patternClassName
|
|
22217
22432
|
}) {
|
|
22218
|
-
const renderItemIcon =
|
|
22433
|
+
const renderItemIcon = React52__namespace.useCallback((item) => {
|
|
22219
22434
|
if (item.icon) return item.icon;
|
|
22220
22435
|
if (item.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 24 });
|
|
22221
22436
|
return null;
|
|
22222
22437
|
}, []);
|
|
22223
|
-
const renderItemImage =
|
|
22438
|
+
const renderItemImage = React52__namespace.useCallback((item, imageClassName) => {
|
|
22224
22439
|
if (item.imageSlot) return item.imageSlot;
|
|
22225
22440
|
if (item.imageSrc) {
|
|
22226
22441
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22236,13 +22451,15 @@ function FeatureBentoImageGrid({
|
|
|
22236
22451
|
}
|
|
22237
22452
|
return null;
|
|
22238
22453
|
}, [optixFlowConfig]);
|
|
22239
|
-
const renderLargeCard =
|
|
22454
|
+
const renderLargeCard = React52__namespace.useCallback((item) => {
|
|
22455
|
+
const iconContent = renderItemIcon(item);
|
|
22456
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22240
22457
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22241
22458
|
renderItemImage(item, "h-full max-h-[580px] w-full rounded-xl object-cover object-center"),
|
|
22242
22459
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-primary to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
|
|
22243
22460
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22244
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
|
|
22245
|
-
|
|
22461
|
+
hasIconBadgeContent && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
|
|
22462
|
+
iconContent,
|
|
22246
22463
|
item.iconBadge
|
|
22247
22464
|
] }),
|
|
22248
22465
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22266,7 +22483,9 @@ function FeatureBentoImageGrid({
|
|
|
22266
22483
|
}
|
|
22267
22484
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("group relative col-span-2 row-span-3 overflow-hidden rounded-xl", largeCardClassName, item.className), children: cardContent });
|
|
22268
22485
|
}, [largeCardClassName, renderItemImage, renderItemIcon]);
|
|
22269
|
-
const renderSmallCard =
|
|
22486
|
+
const renderSmallCard = React52__namespace.useCallback((item, index) => {
|
|
22487
|
+
const iconContent = renderItemIcon(item);
|
|
22488
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22270
22489
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22271
22490
|
renderItemImage(item, cn(
|
|
22272
22491
|
"h-full w-full rounded-xl object-cover object-center",
|
|
@@ -22274,8 +22493,8 @@ function FeatureBentoImageGrid({
|
|
|
22274
22493
|
)),
|
|
22275
22494
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-10 rounded-xl bg-linear-to-t from-primary to-transparent opacity-80 transition-transform duration-300 group-hover:translate-y-0" }),
|
|
22276
22495
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22277
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
|
|
22278
|
-
|
|
22496
|
+
hasIconBadgeContent && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
|
|
22497
|
+
iconContent,
|
|
22279
22498
|
item.iconBadge
|
|
22280
22499
|
] }),
|
|
22281
22500
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22363,34 +22582,33 @@ function FeatureImageCardsThreeColumn({
|
|
|
22363
22582
|
patternOpacity,
|
|
22364
22583
|
patternClassName
|
|
22365
22584
|
}) {
|
|
22585
|
+
const renderImage = React52.useCallback((card, imageAlt) => {
|
|
22586
|
+
if (card.imageSlot) return card.imageSlot;
|
|
22587
|
+
if (!card.imageSrc) return null;
|
|
22588
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22589
|
+
img.Img,
|
|
22590
|
+
{
|
|
22591
|
+
src: card.imageSrc,
|
|
22592
|
+
alt: imageAlt,
|
|
22593
|
+
className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
|
|
22594
|
+
loading: "lazy",
|
|
22595
|
+
optixFlowConfig
|
|
22596
|
+
}
|
|
22597
|
+
);
|
|
22598
|
+
}, [optixFlowConfig]);
|
|
22599
|
+
const renderBadgeIcon = React52.useCallback((card) => {
|
|
22600
|
+
if (card.avatarSrc) {
|
|
22601
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
|
|
22602
|
+
}
|
|
22603
|
+
if (card.icon) return card.icon;
|
|
22604
|
+
if (!card.iconName) return null;
|
|
22605
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName, size: 24 });
|
|
22606
|
+
}, []);
|
|
22366
22607
|
const cardsContent = React52.useMemo(() => {
|
|
22367
22608
|
if (cardsSlot) return cardsSlot;
|
|
22368
22609
|
if (!cards || cards.length === 0) return null;
|
|
22369
22610
|
return cards.map((card, index) => {
|
|
22370
22611
|
const imageAlt = card.imageAlt || (typeof card.title === "string" ? card.title : "Card image");
|
|
22371
|
-
const renderImage = () => {
|
|
22372
|
-
if (card.imageSlot) return card.imageSlot;
|
|
22373
|
-
if (card.imageSrc) {
|
|
22374
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22375
|
-
img.Img,
|
|
22376
|
-
{
|
|
22377
|
-
src: card.imageSrc,
|
|
22378
|
-
alt: imageAlt,
|
|
22379
|
-
className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
|
|
22380
|
-
loading: "lazy",
|
|
22381
|
-
optixFlowConfig
|
|
22382
|
-
}
|
|
22383
|
-
);
|
|
22384
|
-
}
|
|
22385
|
-
return null;
|
|
22386
|
-
};
|
|
22387
|
-
const renderBadgeIcon = () => {
|
|
22388
|
-
if (card.avatarSrc) {
|
|
22389
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
|
|
22390
|
-
}
|
|
22391
|
-
if (card.icon) return card.icon;
|
|
22392
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName || "lucide/zap", size: 24 });
|
|
22393
|
-
};
|
|
22394
22612
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22395
22613
|
Pressable,
|
|
22396
22614
|
{
|
|
@@ -22398,10 +22616,10 @@ function FeatureImageCardsThreeColumn({
|
|
|
22398
22616
|
onClick: card.onClick,
|
|
22399
22617
|
className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
|
|
22400
22618
|
children: [
|
|
22401
|
-
renderImage(),
|
|
22619
|
+
renderImage(card, imageAlt),
|
|
22402
22620
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-primary to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
|
|
22403
22621
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22404
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22622
|
+
(card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22405
22623
|
"span",
|
|
22406
22624
|
{
|
|
22407
22625
|
className: cn(
|
|
@@ -22410,7 +22628,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22410
22628
|
card.badgeClassName
|
|
22411
22629
|
),
|
|
22412
22630
|
children: [
|
|
22413
|
-
renderBadgeIcon(),
|
|
22631
|
+
renderBadgeIcon(card),
|
|
22414
22632
|
card.badgeText
|
|
22415
22633
|
]
|
|
22416
22634
|
}
|
|
@@ -22428,7 +22646,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22428
22646
|
index
|
|
22429
22647
|
);
|
|
22430
22648
|
});
|
|
22431
|
-
}, [cardsSlot, cards, cardClassName,
|
|
22649
|
+
}, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
|
|
22432
22650
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22433
22651
|
Section,
|
|
22434
22652
|
{
|
|
@@ -22465,11 +22683,11 @@ function FeatureIconGridMuted({
|
|
|
22465
22683
|
patternOpacity,
|
|
22466
22684
|
patternClassName
|
|
22467
22685
|
}) {
|
|
22468
|
-
const renderFeatureIcon = (feature) => {
|
|
22686
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
22469
22687
|
if (feature.icon) return feature.icon;
|
|
22470
22688
|
if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
22471
22689
|
return null;
|
|
22472
|
-
};
|
|
22690
|
+
}, []);
|
|
22473
22691
|
const featuresContent = React52.useMemo(() => {
|
|
22474
22692
|
if (featuresSlot) return featuresSlot;
|
|
22475
22693
|
if (!features || features.length === 0) return null;
|
|
@@ -22478,14 +22696,14 @@ function FeatureIconGridMuted({
|
|
|
22478
22696
|
{
|
|
22479
22697
|
className: cn("flex flex-col gap-2.5 rounded-xl border bg-background p-7", cardClassName, feature.className),
|
|
22480
22698
|
children: [
|
|
22481
|
-
renderFeatureIcon(feature),
|
|
22699
|
+
(feature.icon || feature.iconName) && renderFeatureIcon(feature),
|
|
22482
22700
|
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-semibold", feature.titleClassName), children: feature.title })),
|
|
22483
22701
|
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }))
|
|
22484
22702
|
]
|
|
22485
22703
|
},
|
|
22486
22704
|
index
|
|
22487
22705
|
));
|
|
22488
|
-
}, [featuresSlot, features, cardClassName]);
|
|
22706
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
22489
22707
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22490
22708
|
Section,
|
|
22491
22709
|
{
|
|
@@ -22497,11 +22715,11 @@ function FeatureIconGridMuted({
|
|
|
22497
22715
|
className: cn("bg-muted/60", className),
|
|
22498
22716
|
containerClassName,
|
|
22499
22717
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-10", children: [
|
|
22500
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
|
|
22718
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
|
|
22501
22719
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title })),
|
|
22502
22720
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
|
|
22503
22721
|
] }),
|
|
22504
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5", gridClassName), children: featuresContent })
|
|
22722
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5", gridClassName), children: featuresContent })
|
|
22505
22723
|
] })
|
|
22506
22724
|
}
|
|
22507
22725
|
);
|
|
@@ -22534,37 +22752,25 @@ function FeatureStatsHighlight({
|
|
|
22534
22752
|
if (actionsSlot) return actionsSlot;
|
|
22535
22753
|
if (!actions || actions.length === 0) return null;
|
|
22536
22754
|
return actions.map((action, index) => {
|
|
22537
|
-
|
|
22538
|
-
|
|
22539
|
-
|
|
22540
|
-
|
|
22541
|
-
|
|
22542
|
-
|
|
22543
|
-
|
|
22544
|
-
|
|
22545
|
-
|
|
22546
|
-
"aria-label": action["aria-label"],
|
|
22547
|
-
asButton: true,
|
|
22548
|
-
children: action.children
|
|
22549
|
-
},
|
|
22550
|
-
index
|
|
22551
|
-
);
|
|
22552
|
-
}
|
|
22553
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22755
|
+
const {
|
|
22756
|
+
label,
|
|
22757
|
+
icon,
|
|
22758
|
+
iconAfter,
|
|
22759
|
+
children,
|
|
22760
|
+
className: actionClassName,
|
|
22761
|
+
...pressableProps
|
|
22762
|
+
} = action;
|
|
22763
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22554
22764
|
Pressable,
|
|
22555
22765
|
{
|
|
22556
|
-
|
|
22557
|
-
onClick: action.onClick,
|
|
22558
|
-
variant: action.variant,
|
|
22559
|
-
size: action.size,
|
|
22560
|
-
className: cn("mt-4 w-fit gap-2", action.className),
|
|
22561
|
-
"aria-label": action["aria-label"],
|
|
22766
|
+
className: cn("mt-4 w-fit gap-2", actionClassName),
|
|
22562
22767
|
asButton: true,
|
|
22563
|
-
|
|
22564
|
-
|
|
22565
|
-
|
|
22566
|
-
|
|
22567
|
-
|
|
22768
|
+
...pressableProps,
|
|
22769
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22770
|
+
icon,
|
|
22771
|
+
label,
|
|
22772
|
+
iconAfter
|
|
22773
|
+
] })
|
|
22568
22774
|
},
|
|
22569
22775
|
index
|
|
22570
22776
|
);
|
|
@@ -22578,8 +22784,8 @@ function FeatureStatsHighlight({
|
|
|
22578
22784
|
{
|
|
22579
22785
|
className: cn("flex flex-col gap-2 rounded-xl border bg-muted/30 p-6", statCardClassName, stat.className),
|
|
22580
22786
|
children: [
|
|
22581
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22582
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22787
|
+
stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22788
|
+
stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22583
22789
|
]
|
|
22584
22790
|
},
|
|
22585
22791
|
index
|
|
@@ -22600,9 +22806,9 @@ function FeatureStatsHighlight({
|
|
|
22600
22806
|
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
|
|
22601
22807
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
|
|
22602
22808
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
22603
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22809
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22604
22810
|
] }),
|
|
22605
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22811
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22606
22812
|
] })
|
|
22607
22813
|
}
|
|
22608
22814
|
);
|
|
@@ -22666,7 +22872,7 @@ function FeatureAccordionImage({
|
|
|
22666
22872
|
description,
|
|
22667
22873
|
items,
|
|
22668
22874
|
itemsSlot,
|
|
22669
|
-
defaultValue
|
|
22875
|
+
defaultValue,
|
|
22670
22876
|
className,
|
|
22671
22877
|
containerClassName,
|
|
22672
22878
|
headerClassName,
|
|
@@ -22683,24 +22889,25 @@ function FeatureAccordionImage({
|
|
|
22683
22889
|
patternOpacity,
|
|
22684
22890
|
patternClassName
|
|
22685
22891
|
}) {
|
|
22686
|
-
const [activeItem, setActiveItem] = React52__namespace.useState(defaultValue);
|
|
22892
|
+
const [activeItem, setActiveItem] = React52__namespace.useState(defaultValue || "item-0");
|
|
22687
22893
|
const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
|
|
22688
22894
|
const currentImage = items?.[activeIndex] || items?.[0];
|
|
22689
22895
|
const accordionItemsContent = React52.useMemo(() => {
|
|
22690
22896
|
if (itemsSlot) return itemsSlot;
|
|
22691
22897
|
if (!items || items.length === 0) return null;
|
|
22692
22898
|
return items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
|
|
22693
|
-
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
|
|
22694
|
-
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
|
|
22899
|
+
item.title && /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
|
|
22900
|
+
item.content && /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
|
|
22695
22901
|
] }, index));
|
|
22696
22902
|
}, [itemsSlot, items]);
|
|
22697
22903
|
const imageContent = React52.useMemo(() => {
|
|
22698
22904
|
if (currentImage?.imageSlot) return currentImage.imageSlot;
|
|
22905
|
+
if (!currentImage?.imageSrc) return null;
|
|
22699
22906
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22700
22907
|
img.Img,
|
|
22701
22908
|
{
|
|
22702
|
-
src: currentImage
|
|
22703
|
-
alt: currentImage
|
|
22909
|
+
src: currentImage.imageSrc,
|
|
22910
|
+
alt: currentImage.imageAlt || "",
|
|
22704
22911
|
className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
|
|
22705
22912
|
loading: "lazy",
|
|
22706
22913
|
optixFlowConfig
|
|
@@ -22718,11 +22925,11 @@ function FeatureAccordionImage({
|
|
|
22718
22925
|
className,
|
|
22719
22926
|
containerClassName,
|
|
22720
22927
|
children: [
|
|
22721
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22928
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22722
22929
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
|
|
22723
22930
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }))
|
|
22724
22931
|
] }),
|
|
22725
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22932
|
+
(itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22726
22933
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22727
22934
|
Accordion,
|
|
22728
22935
|
{
|
|
@@ -22757,49 +22964,52 @@ function FeatureCapabilitiesGrid({
|
|
|
22757
22964
|
patternOpacity,
|
|
22758
22965
|
patternClassName
|
|
22759
22966
|
}) {
|
|
22760
|
-
const renderItemIcon = (item) => {
|
|
22967
|
+
const renderItemIcon = React52__namespace.useCallback((item) => {
|
|
22761
22968
|
if (item.icon) return item.icon;
|
|
22762
22969
|
if (item.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
22763
|
-
return
|
|
22764
|
-
};
|
|
22970
|
+
return null;
|
|
22971
|
+
}, []);
|
|
22765
22972
|
const itemsContent = React52.useMemo(() => {
|
|
22766
22973
|
if (itemsSlot) return itemsSlot;
|
|
22767
22974
|
if (!items || items.length === 0) return null;
|
|
22768
|
-
return items.map((item, index) =>
|
|
22769
|
-
|
|
22770
|
-
|
|
22771
|
-
|
|
22772
|
-
|
|
22773
|
-
|
|
22774
|
-
|
|
22775
|
-
|
|
22776
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -
|
|
22777
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22778
|
-
|
|
22779
|
-
|
|
22780
|
-
|
|
22781
|
-
|
|
22782
|
-
|
|
22783
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22784
|
-
|
|
22785
|
-
|
|
22786
|
-
|
|
22787
|
-
|
|
22788
|
-
|
|
22789
|
-
|
|
22790
|
-
|
|
22791
|
-
|
|
22792
|
-
|
|
22793
|
-
|
|
22794
|
-
|
|
22795
|
-
|
|
22796
|
-
|
|
22797
|
-
|
|
22798
|
-
|
|
22799
|
-
|
|
22800
|
-
|
|
22801
|
-
|
|
22802
|
-
|
|
22975
|
+
return items.map((item, index) => {
|
|
22976
|
+
const iconContent = renderItemIcon(item);
|
|
22977
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22978
|
+
Card,
|
|
22979
|
+
{
|
|
22980
|
+
className: cn("group relative overflow-visible border-white/10 bg-white/5 p-0 transition-colors duration-300 hover:border-white/20", cardClassName, item.className),
|
|
22981
|
+
children: [
|
|
22982
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
|
|
22983
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl bg-linear-to-tr from-white/0 to-white/0 transition-colors group-hover:from-white/3 group-hover:to-white/6" }),
|
|
22984
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
|
|
22985
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
|
|
22986
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
|
|
22987
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
|
|
22988
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
|
|
22989
|
+
] }),
|
|
22990
|
+
/* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
|
|
22991
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-white/15 bg-white/5 text-white", item.iconClassName), children: iconContent }),
|
|
22992
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
22993
|
+
item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
|
|
22994
|
+
item.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full border border-white/20 px-2 py-0.5 text-[10px] leading-none text-white/70", item.badgeClassName), children: item.badge })
|
|
22995
|
+
] }) })
|
|
22996
|
+
] }),
|
|
22997
|
+
item.description && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
|
|
22998
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22999
|
+
framerMotion.motion.div,
|
|
23000
|
+
{
|
|
23001
|
+
className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
|
|
23002
|
+
initial: { opacity: 0 },
|
|
23003
|
+
whileHover: { opacity: 1 },
|
|
23004
|
+
transition: { duration: 0.25 }
|
|
23005
|
+
}
|
|
23006
|
+
)
|
|
23007
|
+
]
|
|
23008
|
+
},
|
|
23009
|
+
`${typeof item.title === "string" ? item.title : "item"}-${index}`
|
|
23010
|
+
);
|
|
23011
|
+
});
|
|
23012
|
+
}, [itemsSlot, items, cardClassName, renderItemIcon]);
|
|
22803
23013
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22804
23014
|
Section,
|
|
22805
23015
|
{
|
|
@@ -39411,7 +39621,7 @@ function CommunityInitiatives({
|
|
|
39411
39621
|
}
|
|
39412
39622
|
);
|
|
39413
39623
|
}
|
|
39414
|
-
var Controls = ({
|
|
39624
|
+
var Controls = React52__namespace.memo(({
|
|
39415
39625
|
handleNext,
|
|
39416
39626
|
handlePrevious,
|
|
39417
39627
|
isPreviousDisabled,
|
|
@@ -39439,9 +39649,9 @@ var Controls = ({
|
|
|
39439
39649
|
}
|
|
39440
39650
|
)
|
|
39441
39651
|
] });
|
|
39442
|
-
};
|
|
39443
|
-
var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
39444
|
-
const variants2 = {
|
|
39652
|
+
});
|
|
39653
|
+
var FeatureCard = React52__namespace.memo(({ feature, isActive, onClick }) => {
|
|
39654
|
+
const variants2 = React52.useMemo(() => ({
|
|
39445
39655
|
initial: {
|
|
39446
39656
|
opacity: 0
|
|
39447
39657
|
},
|
|
@@ -39451,7 +39661,7 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39451
39661
|
exit: {
|
|
39452
39662
|
opacity: 0
|
|
39453
39663
|
}
|
|
39454
|
-
};
|
|
39664
|
+
}), []);
|
|
39455
39665
|
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39456
39666
|
framerMotion.motion.div,
|
|
39457
39667
|
{
|
|
@@ -39481,13 +39691,13 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39481
39691
|
ease: "easeOut"
|
|
39482
39692
|
},
|
|
39483
39693
|
className: "p-6 text-sm md:p-8 md:text-base",
|
|
39484
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
39485
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39694
|
+
children: (feature.title || feature.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
39695
|
+
feature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39486
39696
|
feature.title,
|
|
39487
39697
|
"."
|
|
39488
39698
|
] }),
|
|
39489
|
-
" ",
|
|
39490
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
|
|
39699
|
+
feature.title && feature.description && " ",
|
|
39700
|
+
feature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
|
|
39491
39701
|
] })
|
|
39492
39702
|
},
|
|
39493
39703
|
`feature-description-active-${feature.title}`
|
|
@@ -39521,15 +39731,15 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39521
39731
|
className: "shrink-0"
|
|
39522
39732
|
}
|
|
39523
39733
|
),
|
|
39524
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39734
|
+
feature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39525
39735
|
]
|
|
39526
39736
|
},
|
|
39527
39737
|
`feature-description-inactive-${feature.title}`
|
|
39528
39738
|
)
|
|
39529
39739
|
}
|
|
39530
39740
|
) });
|
|
39531
|
-
};
|
|
39532
|
-
var FeaturesDesktop = ({
|
|
39741
|
+
});
|
|
39742
|
+
var FeaturesDesktop = React52__namespace.memo(({
|
|
39533
39743
|
features,
|
|
39534
39744
|
handleNext,
|
|
39535
39745
|
handlePrevious,
|
|
@@ -39560,8 +39770,8 @@ var FeaturesDesktop = ({
|
|
|
39560
39770
|
);
|
|
39561
39771
|
}) })
|
|
39562
39772
|
] });
|
|
39563
|
-
};
|
|
39564
|
-
var FeaturesMobile = ({
|
|
39773
|
+
});
|
|
39774
|
+
var FeaturesMobile = React52__namespace.memo(({
|
|
39565
39775
|
features,
|
|
39566
39776
|
handleNext,
|
|
39567
39777
|
handlePrevious,
|
|
@@ -39570,7 +39780,7 @@ var FeaturesMobile = ({
|
|
|
39570
39780
|
isPreviousDisabled,
|
|
39571
39781
|
isNextDisabled
|
|
39572
39782
|
}) => {
|
|
39573
|
-
const variants2 = {
|
|
39783
|
+
const variants2 = React52.useMemo(() => ({
|
|
39574
39784
|
enter: (direction2) => ({
|
|
39575
39785
|
x: direction2 > 0 ? 100 : -100,
|
|
39576
39786
|
opacity: 0
|
|
@@ -39583,7 +39793,8 @@ var FeaturesMobile = ({
|
|
|
39583
39793
|
x: direction2 < 0 ? 100 : -100,
|
|
39584
39794
|
opacity: 0
|
|
39585
39795
|
})
|
|
39586
|
-
};
|
|
39796
|
+
}), []);
|
|
39797
|
+
const currentFeature = features[activeIndex];
|
|
39587
39798
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 flex flex-col items-center gap-6 md:hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-4", children: [
|
|
39588
39799
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39589
39800
|
"button",
|
|
@@ -39608,13 +39819,13 @@ var FeaturesMobile = ({
|
|
|
39608
39819
|
opacity: { duration: 0.2 }
|
|
39609
39820
|
},
|
|
39610
39821
|
className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-background p-4",
|
|
39611
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-center text-sm", children: [
|
|
39612
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39613
|
-
|
|
39822
|
+
children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-center text-sm", children: [
|
|
39823
|
+
currentFeature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39824
|
+
currentFeature.title,
|
|
39614
39825
|
"."
|
|
39615
39826
|
] }),
|
|
39616
|
-
" ",
|
|
39617
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
39827
|
+
currentFeature.title && currentFeature.description && " ",
|
|
39828
|
+
currentFeature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentFeature.description })
|
|
39618
39829
|
] })
|
|
39619
39830
|
},
|
|
39620
39831
|
activeIndex
|
|
@@ -39630,9 +39841,9 @@ var FeaturesMobile = ({
|
|
|
39630
39841
|
}
|
|
39631
39842
|
)
|
|
39632
39843
|
] }) });
|
|
39633
|
-
};
|
|
39844
|
+
});
|
|
39634
39845
|
function FeatureAnimatedCarousel({
|
|
39635
|
-
features
|
|
39846
|
+
features,
|
|
39636
39847
|
className,
|
|
39637
39848
|
optixFlowConfig,
|
|
39638
39849
|
background,
|
|
@@ -39643,25 +39854,25 @@ function FeatureAnimatedCarousel({
|
|
|
39643
39854
|
}) {
|
|
39644
39855
|
const [activeIndex, setActiveIndex] = React52__namespace.useState(0);
|
|
39645
39856
|
const [direction, setDirection] = React52__namespace.useState(1);
|
|
39646
|
-
const handleNext = () => {
|
|
39647
|
-
if (activeIndex < features.length - 1) {
|
|
39857
|
+
const handleNext = React52.useCallback(() => {
|
|
39858
|
+
if (features && activeIndex < features.length - 1) {
|
|
39648
39859
|
setDirection(1);
|
|
39649
39860
|
setActiveIndex(activeIndex + 1);
|
|
39650
39861
|
}
|
|
39651
|
-
};
|
|
39652
|
-
const handlePrevious = () => {
|
|
39862
|
+
}, [activeIndex, features]);
|
|
39863
|
+
const handlePrevious = React52.useCallback(() => {
|
|
39653
39864
|
if (activeIndex > 0) {
|
|
39654
39865
|
setDirection(-1);
|
|
39655
39866
|
setActiveIndex(activeIndex - 1);
|
|
39656
39867
|
}
|
|
39657
|
-
};
|
|
39658
|
-
const handleFeatureClick = (index) => {
|
|
39868
|
+
}, [activeIndex]);
|
|
39869
|
+
const handleFeatureClick = React52.useCallback((index) => {
|
|
39659
39870
|
setDirection(index > activeIndex ? 1 : -1);
|
|
39660
39871
|
setActiveIndex(index);
|
|
39661
|
-
};
|
|
39872
|
+
}, [activeIndex]);
|
|
39662
39873
|
const isPreviousDisabled = activeIndex === 0;
|
|
39663
|
-
const isNextDisabled = activeIndex === features.length - 1;
|
|
39664
|
-
const imageVariants = {
|
|
39874
|
+
const isNextDisabled = !features || activeIndex === features.length - 1;
|
|
39875
|
+
const imageVariants = React52.useMemo(() => ({
|
|
39665
39876
|
enter: (direction2) => ({
|
|
39666
39877
|
x: direction2 > 0 ? 300 : -300,
|
|
39667
39878
|
opacity: 0
|
|
@@ -39674,7 +39885,22 @@ function FeatureAnimatedCarousel({
|
|
|
39674
39885
|
x: direction2 < 0 ? 300 : -300,
|
|
39675
39886
|
opacity: 0
|
|
39676
39887
|
})
|
|
39677
|
-
};
|
|
39888
|
+
}), []);
|
|
39889
|
+
if (!features || features.length === 0) {
|
|
39890
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39891
|
+
Section,
|
|
39892
|
+
{
|
|
39893
|
+
background,
|
|
39894
|
+
spacing,
|
|
39895
|
+
pattern,
|
|
39896
|
+
patternOpacity,
|
|
39897
|
+
patternClassName,
|
|
39898
|
+
className,
|
|
39899
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl bg-muted p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]" })
|
|
39900
|
+
}
|
|
39901
|
+
);
|
|
39902
|
+
}
|
|
39903
|
+
const currentFeature = features[activeIndex];
|
|
39678
39904
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39679
39905
|
Section,
|
|
39680
39906
|
{
|
|
@@ -39685,7 +39911,7 @@ function FeatureAnimatedCarousel({
|
|
|
39685
39911
|
patternClassName,
|
|
39686
39912
|
className,
|
|
39687
39913
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl bg-muted p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]", children: [
|
|
39688
|
-
|
|
39914
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39689
39915
|
FeaturesDesktop,
|
|
39690
39916
|
{
|
|
39691
39917
|
features,
|
|
@@ -39697,7 +39923,7 @@ function FeatureAnimatedCarousel({
|
|
|
39697
39923
|
isNextDisabled
|
|
39698
39924
|
}
|
|
39699
39925
|
),
|
|
39700
|
-
|
|
39926
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39701
39927
|
FeaturesMobile,
|
|
39702
39928
|
{
|
|
39703
39929
|
features,
|
|
@@ -39709,7 +39935,7 @@ function FeatureAnimatedCarousel({
|
|
|
39709
39935
|
isNextDisabled
|
|
39710
39936
|
}
|
|
39711
39937
|
),
|
|
39712
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex-1 overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39938
|
+
currentFeature?.image && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex-1 overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39713
39939
|
framerMotion.motion.div,
|
|
39714
39940
|
{
|
|
39715
39941
|
custom: direction,
|
|
@@ -39725,8 +39951,8 @@ function FeatureAnimatedCarousel({
|
|
|
39725
39951
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39726
39952
|
img.Img,
|
|
39727
39953
|
{
|
|
39728
|
-
src:
|
|
39729
|
-
alt:
|
|
39954
|
+
src: currentFeature.image,
|
|
39955
|
+
alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
|
|
39730
39956
|
className: "h-full w-full object-cover",
|
|
39731
39957
|
optixFlowConfig
|
|
39732
39958
|
}
|
|
@@ -62340,22 +62566,29 @@ var NavbarTabbedSections = ({
|
|
|
62340
62566
|
]
|
|
62341
62567
|
}
|
|
62342
62568
|
) }),
|
|
62343
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62344
|
-
|
|
62345
|
-
|
|
62346
|
-
|
|
62347
|
-
|
|
62348
|
-
|
|
62349
|
-
{
|
|
62350
|
-
|
|
62351
|
-
|
|
62352
|
-
|
|
62353
|
-
|
|
62354
|
-
|
|
62355
|
-
|
|
62356
|
-
|
|
62357
|
-
|
|
62358
|
-
|
|
62569
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62570
|
+
SheetContent,
|
|
62571
|
+
{
|
|
62572
|
+
side: "right",
|
|
62573
|
+
className: "w-[300px] overflow-y-auto",
|
|
62574
|
+
children: [
|
|
62575
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }),
|
|
62576
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 pt-8", children: [
|
|
62577
|
+
renderMobileMenu,
|
|
62578
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62579
|
+
"div",
|
|
62580
|
+
{
|
|
62581
|
+
className: cn(
|
|
62582
|
+
"mt-4 flex flex-col gap-2 border-t pt-4",
|
|
62583
|
+
actionsClassName
|
|
62584
|
+
),
|
|
62585
|
+
children: renderAuthActions
|
|
62586
|
+
}
|
|
62587
|
+
)
|
|
62588
|
+
] })
|
|
62589
|
+
]
|
|
62590
|
+
}
|
|
62591
|
+
)
|
|
62359
62592
|
] })
|
|
62360
62593
|
]
|
|
62361
62594
|
}
|
|
@@ -77314,7 +77547,7 @@ function ListSearchableGrid({
|
|
|
77314
77547
|
}
|
|
77315
77548
|
);
|
|
77316
77549
|
}
|
|
77317
|
-
var { useMemo:
|
|
77550
|
+
var { useMemo: useMemo443 } = React52__namespace;
|
|
77318
77551
|
function OfferModalNewsletterDiscount({
|
|
77319
77552
|
title,
|
|
77320
77553
|
emailPlaceholder,
|
|
@@ -77381,7 +77614,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77381
77614
|
});
|
|
77382
77615
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77383
77616
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77384
|
-
const renderCloseButton =
|
|
77617
|
+
const renderCloseButton = useMemo443(() => {
|
|
77385
77618
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77386
77619
|
if (!closeButtonText) return null;
|
|
77387
77620
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsxRuntime.jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -77395,12 +77628,12 @@ function OfferModalNewsletterDiscount({
|
|
|
77395
77628
|
}
|
|
77396
77629
|
) }) });
|
|
77397
77630
|
}, [closeButtonSlot, closeButtonText, closeClassName]);
|
|
77398
|
-
const renderHeader =
|
|
77631
|
+
const renderHeader = useMemo443(() => {
|
|
77399
77632
|
if (headerSlot) return headerSlot;
|
|
77400
77633
|
if (!title) return null;
|
|
77401
77634
|
return /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
|
|
77402
77635
|
}, [headerSlot, title, headerClassName, titleClassName]);
|
|
77403
|
-
const renderForm =
|
|
77636
|
+
const renderForm = useMemo443(() => {
|
|
77404
77637
|
if (formSlot) return formSlot;
|
|
77405
77638
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
77406
77639
|
forms.Form,
|
|
@@ -77462,7 +77695,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77462
77695
|
}
|
|
77463
77696
|
) });
|
|
77464
77697
|
}
|
|
77465
|
-
var { useMemo:
|
|
77698
|
+
var { useMemo: useMemo444 } = React52__namespace;
|
|
77466
77699
|
function OfferModalMembershipImage({
|
|
77467
77700
|
overline,
|
|
77468
77701
|
title,
|
|
@@ -77538,7 +77771,7 @@ function OfferModalMembershipImage({
|
|
|
77538
77771
|
});
|
|
77539
77772
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77540
77773
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77541
|
-
const renderImage =
|
|
77774
|
+
const renderImage = useMemo444(() => {
|
|
77542
77775
|
if (imageSlot) return imageSlot;
|
|
77543
77776
|
if (!image) return null;
|
|
77544
77777
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -77551,7 +77784,7 @@ function OfferModalMembershipImage({
|
|
|
77551
77784
|
}
|
|
77552
77785
|
) });
|
|
77553
77786
|
}, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
|
|
77554
|
-
const renderCloseButton =
|
|
77787
|
+
const renderCloseButton = useMemo444(() => {
|
|
77555
77788
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77556
77789
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsxRuntime.jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77557
77790
|
Pressable,
|
|
@@ -77567,7 +77800,7 @@ function OfferModalMembershipImage({
|
|
|
77567
77800
|
}
|
|
77568
77801
|
) }) });
|
|
77569
77802
|
}, [closeButtonSlot, closeClassName]);
|
|
77570
|
-
const renderForm =
|
|
77803
|
+
const renderForm = useMemo444(() => {
|
|
77571
77804
|
if (formSlot) return formSlot;
|
|
77572
77805
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
77573
77806
|
forms.Form,
|
|
@@ -77630,7 +77863,7 @@ function OfferModalMembershipImage({
|
|
|
77630
77863
|
}
|
|
77631
77864
|
);
|
|
77632
77865
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77633
|
-
const renderFooter =
|
|
77866
|
+
const renderFooter = useMemo444(() => {
|
|
77634
77867
|
if (footerSlot) return footerSlot;
|
|
77635
77868
|
if (!description) return null;
|
|
77636
77869
|
return /* @__PURE__ */ jsxRuntime.jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
|
|
@@ -77658,7 +77891,7 @@ function OfferModalMembershipImage({
|
|
|
77658
77891
|
}
|
|
77659
77892
|
) });
|
|
77660
77893
|
}
|
|
77661
|
-
var { useMemo:
|
|
77894
|
+
var { useMemo: useMemo445 } = React52__namespace;
|
|
77662
77895
|
function OfferModalSheetNewsletter({
|
|
77663
77896
|
logo,
|
|
77664
77897
|
logoSlot,
|
|
@@ -77740,7 +77973,7 @@ function OfferModalSheetNewsletter({
|
|
|
77740
77973
|
});
|
|
77741
77974
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77742
77975
|
const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77743
|
-
const renderLogo =
|
|
77976
|
+
const renderLogo = useMemo445(() => {
|
|
77744
77977
|
if (logoSlot) return logoSlot;
|
|
77745
77978
|
if (!logo) return null;
|
|
77746
77979
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
@@ -77754,7 +77987,7 @@ function OfferModalSheetNewsletter({
|
|
|
77754
77987
|
}
|
|
77755
77988
|
);
|
|
77756
77989
|
}, [logoSlot, logo, logoClassName, optixFlowConfig]);
|
|
77757
|
-
const renderHeader =
|
|
77990
|
+
const renderHeader = useMemo445(() => {
|
|
77758
77991
|
if (headerSlot) return headerSlot;
|
|
77759
77992
|
return /* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
|
|
77760
77993
|
renderLogo,
|
|
@@ -77764,7 +77997,7 @@ function OfferModalSheetNewsletter({
|
|
|
77764
77997
|
] })
|
|
77765
77998
|
] });
|
|
77766
77999
|
}, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
|
|
77767
|
-
const renderForm =
|
|
78000
|
+
const renderForm = useMemo445(() => {
|
|
77768
78001
|
if (formSlot) return formSlot;
|
|
77769
78002
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
77770
78003
|
forms.Form,
|
|
@@ -77812,7 +78045,7 @@ function OfferModalSheetNewsletter({
|
|
|
77812
78045
|
}
|
|
77813
78046
|
);
|
|
77814
78047
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77815
|
-
const renderLegal =
|
|
78048
|
+
const renderLegal = useMemo445(() => {
|
|
77816
78049
|
if (legalSlot) return legalSlot;
|
|
77817
78050
|
if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
|
|
77818
78051
|
return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
|
|
@@ -77826,7 +78059,7 @@ function OfferModalSheetNewsletter({
|
|
|
77826
78059
|
"."
|
|
77827
78060
|
] });
|
|
77828
78061
|
}, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
|
|
77829
|
-
const renderImage =
|
|
78062
|
+
const renderImage = useMemo445(() => {
|
|
77830
78063
|
if (imageSlot) return imageSlot;
|
|
77831
78064
|
if (!image) return null;
|
|
77832
78065
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|