@opensite/ui 0.8.1 → 0.8.3
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 +119 -177
- package/dist/carousel-image-hero.d.cts +1 -5
- package/dist/carousel-image-hero.d.ts +1 -5
- package/dist/carousel-image-hero.js +119 -177
- 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 +964 -714
- package/dist/registry.js +966 -716
- 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,57 @@ function CarouselImageHero({
|
|
|
18784
18786
|
actions,
|
|
18785
18787
|
actionsSlot,
|
|
18786
18788
|
images,
|
|
18787
|
-
autoPlayInterval =
|
|
18789
|
+
autoPlayInterval = 7500,
|
|
18788
18790
|
className,
|
|
18789
|
-
containerClassName,
|
|
18791
|
+
containerClassName = "mx-none md:mx-auto w-screen md:w-full max-w-screen md:max-w-7xl relative z-10 rounded-none md:rounded-2xl overflow-hidden shadow-none md: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 = "py-0 md:py-32",
|
|
18801
18802
|
pattern,
|
|
18802
18803
|
patternOpacity
|
|
18803
18804
|
}) {
|
|
18804
18805
|
const [currentImageIndex, setCurrentImageIndex] = React52__namespace.useState(0);
|
|
18805
|
-
React52__namespace.
|
|
18806
|
-
|
|
18807
|
-
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
18808
|
-
}, autoPlayInterval);
|
|
18809
|
-
return () => clearInterval(interval);
|
|
18810
|
-
}, [images?.length, autoPlayInterval]);
|
|
18811
|
-
const goToNextImage = () => {
|
|
18806
|
+
const intervalRef = React52__namespace.useRef(null);
|
|
18807
|
+
const goToNext = React52__namespace.useCallback(() => {
|
|
18812
18808
|
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
18813
|
-
};
|
|
18814
|
-
const
|
|
18815
|
-
|
|
18816
|
-
(
|
|
18817
|
-
|
|
18818
|
-
|
|
18809
|
+
}, [images?.length]);
|
|
18810
|
+
const resetInterval = React52__namespace.useCallback(() => {
|
|
18811
|
+
if (intervalRef.current) {
|
|
18812
|
+
clearInterval(intervalRef.current);
|
|
18813
|
+
}
|
|
18814
|
+
intervalRef.current = setInterval(goToNext, autoPlayInterval);
|
|
18815
|
+
}, [goToNext, autoPlayInterval]);
|
|
18816
|
+
const goToSlide = React52__namespace.useCallback((index) => {
|
|
18817
|
+
setCurrentImageIndex(index);
|
|
18818
|
+
resetInterval();
|
|
18819
|
+
}, [resetInterval]);
|
|
18820
|
+
React52__namespace.useEffect(() => {
|
|
18821
|
+
resetInterval();
|
|
18822
|
+
return () => {
|
|
18823
|
+
if (intervalRef.current) {
|
|
18824
|
+
clearInterval(intervalRef.current);
|
|
18825
|
+
}
|
|
18826
|
+
};
|
|
18827
|
+
}, [resetInterval]);
|
|
18819
18828
|
const renderActions = () => {
|
|
18820
18829
|
if (actionsSlot) return actionsSlot;
|
|
18821
18830
|
if (!actions || actions.length === 0) return null;
|
|
18822
18831
|
return actions.map((action, index) => {
|
|
18823
|
-
const {
|
|
18832
|
+
const {
|
|
18833
|
+
label,
|
|
18834
|
+
icon,
|
|
18835
|
+
iconAfter,
|
|
18836
|
+
children,
|
|
18837
|
+
className: actionClassName,
|
|
18838
|
+
...pressableProps
|
|
18839
|
+
} = action;
|
|
18824
18840
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18825
18841
|
Pressable,
|
|
18826
18842
|
{
|
|
@@ -18842,11 +18858,15 @@ function CarouselImageHero({
|
|
|
18842
18858
|
{
|
|
18843
18859
|
background,
|
|
18844
18860
|
spacing,
|
|
18845
|
-
className: cn(
|
|
18861
|
+
className: cn(
|
|
18862
|
+
"relative min-h-screen md:min-h-[600px] overflow-hidden",
|
|
18863
|
+
className
|
|
18864
|
+
),
|
|
18846
18865
|
pattern,
|
|
18847
18866
|
patternOpacity,
|
|
18867
|
+
containerClassName,
|
|
18848
18868
|
children: [
|
|
18849
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute inset-0", imageClassName), children: [
|
|
18869
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute inset-0 bg-black", imageClassName), children: [
|
|
18850
18870
|
images?.map((image, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18851
18871
|
"div",
|
|
18852
18872
|
{
|
|
@@ -18870,50 +18890,79 @@ function CarouselImageHero({
|
|
|
18870
18890
|
index
|
|
18871
18891
|
)),
|
|
18872
18892
|
/* @__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",
|
|
18893
|
+
"div",
|
|
18898
18894
|
{
|
|
18899
|
-
onClick: () => setCurrentImageIndex(index),
|
|
18900
18895
|
className: cn(
|
|
18901
|
-
"
|
|
18902
|
-
|
|
18896
|
+
"absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3",
|
|
18897
|
+
indicatorsClassName
|
|
18903
18898
|
),
|
|
18904
|
-
|
|
18905
|
-
|
|
18906
|
-
|
|
18907
|
-
|
|
18899
|
+
children: images?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
18900
|
+
"button",
|
|
18901
|
+
{
|
|
18902
|
+
onClick: () => goToSlide(index),
|
|
18903
|
+
className: cn(
|
|
18904
|
+
"flex h-4 w-4 items-center justify-center rounded-full transition-colors",
|
|
18905
|
+
index === currentImageIndex ? "bg-white" : "bg-white/50 hover:bg-white/80"
|
|
18906
|
+
),
|
|
18907
|
+
"aria-label": `Go to image ${index + 1}`
|
|
18908
|
+
},
|
|
18909
|
+
index
|
|
18910
|
+
))
|
|
18911
|
+
}
|
|
18912
|
+
)
|
|
18908
18913
|
] }),
|
|
18909
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18910
|
-
|
|
18911
|
-
|
|
18912
|
-
|
|
18913
|
-
|
|
18914
|
-
|
|
18915
|
-
|
|
18916
|
-
|
|
18914
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18915
|
+
"div",
|
|
18916
|
+
{
|
|
18917
|
+
className: cn(
|
|
18918
|
+
"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"
|
|
18919
|
+
),
|
|
18920
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-4xl space-y-6", contentClassName), children: [
|
|
18921
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
18922
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18923
|
+
"div",
|
|
18924
|
+
{
|
|
18925
|
+
className: cn(
|
|
18926
|
+
"inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-sm font-medium text-white backdrop-blur-sm",
|
|
18927
|
+
badgeClassName
|
|
18928
|
+
),
|
|
18929
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge })
|
|
18930
|
+
}
|
|
18931
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: badge })),
|
|
18932
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18933
|
+
"h1",
|
|
18934
|
+
{
|
|
18935
|
+
className: cn(
|
|
18936
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
18937
|
+
headingClassName
|
|
18938
|
+
),
|
|
18939
|
+
children: heading
|
|
18940
|
+
}
|
|
18941
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
18942
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18943
|
+
"p",
|
|
18944
|
+
{
|
|
18945
|
+
className: cn(
|
|
18946
|
+
"text-xl text-balance text-shadow",
|
|
18947
|
+
descriptionClassName
|
|
18948
|
+
),
|
|
18949
|
+
children: description
|
|
18950
|
+
}
|
|
18951
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
18952
|
+
] }),
|
|
18953
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
18954
|
+
"div",
|
|
18955
|
+
{
|
|
18956
|
+
className: cn(
|
|
18957
|
+
"flex flex-col justify-center gap-4 sm:flex-row",
|
|
18958
|
+
actionsClassName
|
|
18959
|
+
),
|
|
18960
|
+
children: renderActions()
|
|
18961
|
+
}
|
|
18962
|
+
)
|
|
18963
|
+
] })
|
|
18964
|
+
}
|
|
18965
|
+
)
|
|
18917
18966
|
]
|
|
18918
18967
|
}
|
|
18919
18968
|
);
|
|
@@ -19217,7 +19266,7 @@ function CarouselPortfolioHero({
|
|
|
19217
19266
|
actionsSlot,
|
|
19218
19267
|
autoPlayInterval = 5e3,
|
|
19219
19268
|
className,
|
|
19220
|
-
containerClassName,
|
|
19269
|
+
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
19270
|
contentClassName,
|
|
19222
19271
|
tagClassName,
|
|
19223
19272
|
titleClassName,
|
|
@@ -19233,23 +19282,45 @@ function CarouselPortfolioHero({
|
|
|
19233
19282
|
slideMediaBrightness = "50"
|
|
19234
19283
|
}) {
|
|
19235
19284
|
const [currentIndex, setCurrentIndex] = React52__namespace.useState(0);
|
|
19285
|
+
const intervalRef = React52__namespace.useRef(null);
|
|
19286
|
+
const resetInterval = React52__namespace.useCallback(() => {
|
|
19287
|
+
if (intervalRef.current) {
|
|
19288
|
+
clearInterval(intervalRef.current);
|
|
19289
|
+
}
|
|
19290
|
+
intervalRef.current = setInterval(() => {
|
|
19291
|
+
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19292
|
+
}, autoPlayInterval);
|
|
19293
|
+
}, [autoPlayInterval, slides?.length]);
|
|
19236
19294
|
const goToNext = React52__namespace.useCallback(() => {
|
|
19237
19295
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19238
|
-
|
|
19296
|
+
resetInterval();
|
|
19297
|
+
}, [slides?.length, resetInterval]);
|
|
19239
19298
|
const goToPrev = React52__namespace.useCallback(() => {
|
|
19240
19299
|
setCurrentIndex(
|
|
19241
19300
|
(prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
|
|
19242
19301
|
);
|
|
19243
|
-
|
|
19302
|
+
resetInterval();
|
|
19303
|
+
}, [slides?.length, resetInterval]);
|
|
19244
19304
|
React52__namespace.useEffect(() => {
|
|
19245
|
-
|
|
19246
|
-
return () =>
|
|
19247
|
-
|
|
19305
|
+
resetInterval();
|
|
19306
|
+
return () => {
|
|
19307
|
+
if (intervalRef.current) {
|
|
19308
|
+
clearInterval(intervalRef.current);
|
|
19309
|
+
}
|
|
19310
|
+
};
|
|
19311
|
+
}, [resetInterval]);
|
|
19248
19312
|
const renderActions = () => {
|
|
19249
19313
|
if (actionsSlot) return actionsSlot;
|
|
19250
19314
|
if (!actions || actions.length === 0) return null;
|
|
19251
19315
|
return actions.map((action, index) => {
|
|
19252
|
-
const {
|
|
19316
|
+
const {
|
|
19317
|
+
label,
|
|
19318
|
+
icon,
|
|
19319
|
+
iconAfter,
|
|
19320
|
+
children,
|
|
19321
|
+
className: actionClassName,
|
|
19322
|
+
...pressableProps
|
|
19323
|
+
} = action;
|
|
19253
19324
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19254
19325
|
Pressable,
|
|
19255
19326
|
{
|
|
@@ -19275,6 +19346,7 @@ function CarouselPortfolioHero({
|
|
|
19275
19346
|
className: cn("relative h-screen w-full overflow-hidden", className),
|
|
19276
19347
|
pattern,
|
|
19277
19348
|
patternOpacity,
|
|
19349
|
+
containerClassName,
|
|
19278
19350
|
children: [
|
|
19279
19351
|
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19280
19352
|
"div",
|
|
@@ -19300,43 +19372,99 @@ function CarouselPortfolioHero({
|
|
|
19300
19372
|
},
|
|
19301
19373
|
slide.id
|
|
19302
19374
|
)),
|
|
19303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19304
|
-
|
|
19305
|
-
|
|
19306
|
-
|
|
19307
|
-
|
|
19308
|
-
|
|
19309
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
19310
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19311
|
-
|
|
19375
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19376
|
+
"div",
|
|
19377
|
+
{
|
|
19378
|
+
className: cn(
|
|
19379
|
+
"relative z-10 flex h-full w-full flex-col justify-end px-6 pb-16 text-white md:px-8 lg:px-12"
|
|
19380
|
+
),
|
|
19381
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-4xl", contentClassName), children: [
|
|
19382
|
+
currentSlide?.tag && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: typeof currentSlide.tag === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19383
|
+
"span",
|
|
19312
19384
|
{
|
|
19313
|
-
|
|
19314
|
-
|
|
19315
|
-
|
|
19316
|
-
|
|
19317
|
-
|
|
19318
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19385
|
+
className: cn(
|
|
19386
|
+
"inline-block rounded-full bg-primary px-3 py-1 text-sm font-medium",
|
|
19387
|
+
tagClassName
|
|
19388
|
+
),
|
|
19389
|
+
children: currentSlide.tag
|
|
19319
19390
|
}
|
|
19320
|
-
),
|
|
19321
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19322
|
-
|
|
19391
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: tagClassName, children: currentSlide.tag }) }),
|
|
19392
|
+
currentSlide?.title && (typeof currentSlide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19393
|
+
"h1",
|
|
19323
19394
|
{
|
|
19324
|
-
|
|
19325
|
-
|
|
19326
|
-
|
|
19327
|
-
|
|
19328
|
-
|
|
19329
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19395
|
+
className: cn(
|
|
19396
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
19397
|
+
titleClassName
|
|
19398
|
+
),
|
|
19399
|
+
children: currentSlide.title
|
|
19330
19400
|
}
|
|
19331
|
-
),
|
|
19332
|
-
|
|
19333
|
-
|
|
19334
|
-
|
|
19335
|
-
|
|
19336
|
-
|
|
19337
|
-
|
|
19338
|
-
|
|
19339
|
-
|
|
19401
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: currentSlide.title })),
|
|
19402
|
+
currentSlide?.description && (typeof currentSlide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19403
|
+
"p",
|
|
19404
|
+
{
|
|
19405
|
+
className: cn(
|
|
19406
|
+
"mt-4 text-lg text-white/80 sm:text-xl md:max-w-2xl text-balance text-shadow",
|
|
19407
|
+
descriptionClassName
|
|
19408
|
+
),
|
|
19409
|
+
children: currentSlide.description
|
|
19410
|
+
}
|
|
19411
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: currentSlide.description })),
|
|
19412
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19413
|
+
"div",
|
|
19414
|
+
{
|
|
19415
|
+
className: cn("mt-8 flex items-center gap-4", actionsClassName),
|
|
19416
|
+
children: [
|
|
19417
|
+
renderActions(),
|
|
19418
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19419
|
+
"div",
|
|
19420
|
+
{
|
|
19421
|
+
className: cn(
|
|
19422
|
+
"ml-auto flex items-center gap-2",
|
|
19423
|
+
navigationClassName
|
|
19424
|
+
),
|
|
19425
|
+
children: [
|
|
19426
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19427
|
+
Pressable,
|
|
19428
|
+
{
|
|
19429
|
+
variant: "outline",
|
|
19430
|
+
size: "icon",
|
|
19431
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19432
|
+
onClick: goToPrev,
|
|
19433
|
+
asButton: true,
|
|
19434
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19435
|
+
}
|
|
19436
|
+
),
|
|
19437
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19438
|
+
Pressable,
|
|
19439
|
+
{
|
|
19440
|
+
variant: "outline",
|
|
19441
|
+
size: "icon",
|
|
19442
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19443
|
+
onClick: goToNext,
|
|
19444
|
+
asButton: true,
|
|
19445
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19446
|
+
}
|
|
19447
|
+
),
|
|
19448
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19449
|
+
"div",
|
|
19450
|
+
{
|
|
19451
|
+
className: cn("ml-3 text-sm text-white/80", counterClassName),
|
|
19452
|
+
children: [
|
|
19453
|
+
currentIndex + 1,
|
|
19454
|
+
" / ",
|
|
19455
|
+
slides?.length ?? 0
|
|
19456
|
+
]
|
|
19457
|
+
}
|
|
19458
|
+
)
|
|
19459
|
+
]
|
|
19460
|
+
}
|
|
19461
|
+
)
|
|
19462
|
+
]
|
|
19463
|
+
}
|
|
19464
|
+
)
|
|
19465
|
+
] }) })
|
|
19466
|
+
}
|
|
19467
|
+
)
|
|
19340
19468
|
]
|
|
19341
19469
|
}
|
|
19342
19470
|
);
|
|
@@ -19360,8 +19488,8 @@ function CarouselProductFeatureShowcase({
|
|
|
19360
19488
|
actionsClassName,
|
|
19361
19489
|
indicatorsClassName,
|
|
19362
19490
|
optixFlowConfig,
|
|
19363
|
-
background
|
|
19364
|
-
spacing
|
|
19491
|
+
background,
|
|
19492
|
+
spacing,
|
|
19365
19493
|
pattern,
|
|
19366
19494
|
patternOpacity
|
|
19367
19495
|
}) {
|
|
@@ -19405,7 +19533,14 @@ function CarouselProductFeatureShowcase({
|
|
|
19405
19533
|
if (actionsSlot) return actionsSlot;
|
|
19406
19534
|
if (!actions || actions.length === 0) return null;
|
|
19407
19535
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
|
|
19408
|
-
const {
|
|
19536
|
+
const {
|
|
19537
|
+
label,
|
|
19538
|
+
icon,
|
|
19539
|
+
iconAfter,
|
|
19540
|
+
children,
|
|
19541
|
+
className: actionClassName,
|
|
19542
|
+
...pressableProps
|
|
19543
|
+
} = action;
|
|
19409
19544
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19410
19545
|
Pressable,
|
|
19411
19546
|
{
|
|
@@ -19430,105 +19565,151 @@ function CarouselProductFeatureShowcase({
|
|
|
19430
19565
|
className: cn(className),
|
|
19431
19566
|
pattern,
|
|
19432
19567
|
patternOpacity,
|
|
19433
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
19568
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", containerClassName), children: [
|
|
19434
19569
|
/* @__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
|
-
}
|
|
19570
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19571
|
+
"h2",
|
|
19572
|
+
{
|
|
19573
|
+
className: cn(
|
|
19574
|
+
"text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
|
|
19575
|
+
headingClassName
|
|
19473
19576
|
),
|
|
19474
|
-
|
|
19475
|
-
|
|
19577
|
+
children: heading
|
|
19578
|
+
}
|
|
19579
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
19580
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
19581
|
+
"p",
|
|
19582
|
+
{
|
|
19583
|
+
className: cn(
|
|
19584
|
+
"mt-4 text-lg text-muted-foreground",
|
|
19585
|
+
subheadingClassName
|
|
19586
|
+
),
|
|
19587
|
+
children: subheading
|
|
19588
|
+
}
|
|
19589
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: subheadingClassName, children: subheading }))
|
|
19590
|
+
] }),
|
|
19591
|
+
featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19592
|
+
"div",
|
|
19593
|
+
{
|
|
19594
|
+
className: cn(
|
|
19595
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
19596
|
+
contentClassName
|
|
19597
|
+
),
|
|
19598
|
+
children: [
|
|
19599
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19600
|
+
"div",
|
|
19476
19601
|
{
|
|
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",
|
|
19602
|
+
className: cn(
|
|
19603
|
+
"relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
|
|
19604
|
+
imageClassName
|
|
19605
|
+
),
|
|
19606
|
+
children: [
|
|
19607
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19608
|
+
framerMotion.motion.div,
|
|
19502
19609
|
{
|
|
19503
|
-
|
|
19610
|
+
custom: direction,
|
|
19611
|
+
variants: slideVariants2,
|
|
19612
|
+
initial: "enter",
|
|
19613
|
+
animate: "center",
|
|
19614
|
+
exit: "exit",
|
|
19615
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
19504
19616
|
className: cn(
|
|
19505
|
-
"
|
|
19506
|
-
|
|
19617
|
+
"absolute inset-0",
|
|
19618
|
+
activeFeature?.imageClassName
|
|
19507
19619
|
),
|
|
19508
|
-
|
|
19509
|
-
|
|
19620
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19621
|
+
img.Img,
|
|
19622
|
+
{
|
|
19623
|
+
src: currentImage,
|
|
19624
|
+
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
19625
|
+
className: "h-full w-full object-cover",
|
|
19626
|
+
optixFlowConfig
|
|
19627
|
+
}
|
|
19628
|
+
)
|
|
19510
19629
|
},
|
|
19511
|
-
|
|
19512
|
-
)
|
|
19513
|
-
|
|
19514
|
-
|
|
19515
|
-
|
|
19516
|
-
|
|
19517
|
-
|
|
19518
|
-
|
|
19519
|
-
|
|
19520
|
-
|
|
19521
|
-
|
|
19522
|
-
|
|
19523
|
-
|
|
19524
|
-
|
|
19525
|
-
|
|
19526
|
-
|
|
19527
|
-
|
|
19528
|
-
|
|
19529
|
-
|
|
19530
|
-
|
|
19531
|
-
|
|
19630
|
+
`${activeIndex}-${activeColorIndex}`
|
|
19631
|
+
) }),
|
|
19632
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19633
|
+
"div",
|
|
19634
|
+
{
|
|
19635
|
+
className: cn(
|
|
19636
|
+
"absolute bottom-4 right-4 flex gap-2",
|
|
19637
|
+
navigationClassName
|
|
19638
|
+
),
|
|
19639
|
+
children: [
|
|
19640
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19641
|
+
Pressable,
|
|
19642
|
+
{
|
|
19643
|
+
onClick: goToPrev,
|
|
19644
|
+
asButton: true,
|
|
19645
|
+
variant: "outline",
|
|
19646
|
+
size: "icon",
|
|
19647
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19648
|
+
}
|
|
19649
|
+
),
|
|
19650
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19651
|
+
Pressable,
|
|
19652
|
+
{
|
|
19653
|
+
onClick: goToNext,
|
|
19654
|
+
asButton: true,
|
|
19655
|
+
variant: "outline",
|
|
19656
|
+
size: "icon",
|
|
19657
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19658
|
+
}
|
|
19659
|
+
)
|
|
19660
|
+
]
|
|
19661
|
+
}
|
|
19662
|
+
)
|
|
19663
|
+
]
|
|
19664
|
+
}
|
|
19665
|
+
),
|
|
19666
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
19667
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19668
|
+
framerMotion.motion.div,
|
|
19669
|
+
{
|
|
19670
|
+
initial: { opacity: 0, y: 20 },
|
|
19671
|
+
animate: { opacity: 1, y: 0 },
|
|
19672
|
+
exit: { opacity: 0, y: -20 },
|
|
19673
|
+
transition: { duration: 0.3 },
|
|
19674
|
+
children: [
|
|
19675
|
+
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 })),
|
|
19676
|
+
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 })),
|
|
19677
|
+
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
19678
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
19679
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19680
|
+
"button",
|
|
19681
|
+
{
|
|
19682
|
+
onClick: () => setActiveColorIndex(index),
|
|
19683
|
+
className: cn(
|
|
19684
|
+
"h-8 w-8 rounded-full border-2 transition-all",
|
|
19685
|
+
activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
|
|
19686
|
+
),
|
|
19687
|
+
style: { backgroundColor: color.value },
|
|
19688
|
+
title: color.name
|
|
19689
|
+
},
|
|
19690
|
+
color.name
|
|
19691
|
+
)) })
|
|
19692
|
+
] }),
|
|
19693
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: renderActions() })
|
|
19694
|
+
]
|
|
19695
|
+
},
|
|
19696
|
+
activeIndex
|
|
19697
|
+
) }),
|
|
19698
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19699
|
+
"button",
|
|
19700
|
+
{
|
|
19701
|
+
onClick: () => goToSlide(index),
|
|
19702
|
+
className: cn(
|
|
19703
|
+
"h-2 rounded-full transition-all",
|
|
19704
|
+
activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
|
19705
|
+
)
|
|
19706
|
+
},
|
|
19707
|
+
index
|
|
19708
|
+
)) })
|
|
19709
|
+
] })
|
|
19710
|
+
]
|
|
19711
|
+
}
|
|
19712
|
+
)
|
|
19532
19713
|
] })
|
|
19533
19714
|
}
|
|
19534
19715
|
);
|
|
@@ -19584,12 +19765,16 @@ function SliderBtn({
|
|
|
19584
19765
|
}
|
|
19585
19766
|
function SliderWrapper({ children, value, className }) {
|
|
19586
19767
|
const { active } = useProgressSliderContext();
|
|
19587
|
-
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "
|
|
19768
|
+
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19588
19769
|
framerMotion.motion.div,
|
|
19589
19770
|
{
|
|
19590
|
-
initial: { opacity: 0 },
|
|
19591
|
-
animate: { opacity: 1 },
|
|
19592
|
-
exit: { opacity: 0 },
|
|
19771
|
+
initial: { opacity: 0, scale: 0.98 },
|
|
19772
|
+
animate: { opacity: 1, scale: 1 },
|
|
19773
|
+
exit: { opacity: 0, scale: 0.98 },
|
|
19774
|
+
transition: {
|
|
19775
|
+
duration: 0.4,
|
|
19776
|
+
ease: [0.4, 0, 0.2, 1]
|
|
19777
|
+
},
|
|
19593
19778
|
className: cn("", className),
|
|
19594
19779
|
children
|
|
19595
19780
|
},
|
|
@@ -19700,12 +19885,12 @@ function CarouselProgressSlider({
|
|
|
19700
19885
|
pattern,
|
|
19701
19886
|
patternOpacity,
|
|
19702
19887
|
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(
|
|
19888
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
|
|
19889
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19705
19890
|
SliderWrapper,
|
|
19706
19891
|
{
|
|
19707
19892
|
value: slide.id,
|
|
19708
|
-
className: cn("", slide.className),
|
|
19893
|
+
className: cn("absolute inset-0", slide.className),
|
|
19709
19894
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19710
19895
|
img.Img,
|
|
19711
19896
|
{
|
|
@@ -19720,8 +19905,8 @@ function CarouselProgressSlider({
|
|
|
19720
19905
|
) })
|
|
19721
19906
|
},
|
|
19722
19907
|
slide.id
|
|
19723
|
-
)),
|
|
19724
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19908
|
+
)) }),
|
|
19909
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19725
19910
|
Pressable,
|
|
19726
19911
|
{
|
|
19727
19912
|
onClick: togglePause,
|
|
@@ -19783,8 +19968,8 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19783
19968
|
featuresClassName,
|
|
19784
19969
|
numberBadgeClassName,
|
|
19785
19970
|
optixFlowConfig,
|
|
19786
|
-
background
|
|
19787
|
-
spacing = "
|
|
19971
|
+
background,
|
|
19972
|
+
spacing = "md",
|
|
19788
19973
|
pattern,
|
|
19789
19974
|
patternOpacity
|
|
19790
19975
|
}) {
|
|
@@ -19834,62 +20019,113 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19834
20019
|
patternOpacity,
|
|
19835
20020
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
|
|
19836
20021
|
/* @__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,
|
|
20022
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20023
|
+
"h2",
|
|
19843
20024
|
{
|
|
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",
|
|
20025
|
+
className: cn(
|
|
20026
|
+
"text-3xl font-bold tracking-tight md:text-4xl",
|
|
20027
|
+
headingClassName
|
|
20028
|
+
),
|
|
20029
|
+
children: heading
|
|
20030
|
+
}
|
|
20031
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
20032
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20033
|
+
"p",
|
|
19863
20034
|
{
|
|
19864
|
-
ref: setFeatureRef(feature.id),
|
|
19865
|
-
"data-feature-id": feature.id,
|
|
19866
20035
|
className: cn(
|
|
19867
|
-
"
|
|
19868
|
-
|
|
19869
|
-
feature.className
|
|
20036
|
+
"mt-4 text-lg text-muted-foreground",
|
|
20037
|
+
subheadingClassName
|
|
19870
20038
|
),
|
|
19871
|
-
children:
|
|
19872
|
-
|
|
19873
|
-
|
|
19874
|
-
|
|
19875
|
-
|
|
19876
|
-
|
|
19877
|
-
|
|
19878
|
-
|
|
19879
|
-
|
|
19880
|
-
|
|
19881
|
-
|
|
19882
|
-
|
|
19883
|
-
|
|
19884
|
-
|
|
19885
|
-
|
|
19886
|
-
|
|
19887
|
-
|
|
19888
|
-
|
|
19889
|
-
|
|
19890
|
-
|
|
19891
|
-
|
|
19892
|
-
|
|
20039
|
+
children: subheading
|
|
20040
|
+
}
|
|
20041
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
|
|
20042
|
+
] }),
|
|
20043
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20044
|
+
"div",
|
|
20045
|
+
{
|
|
20046
|
+
className: cn(
|
|
20047
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
20048
|
+
contentClassName
|
|
20049
|
+
),
|
|
20050
|
+
children: [
|
|
20051
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20052
|
+
"div",
|
|
20053
|
+
{
|
|
20054
|
+
className: cn(
|
|
20055
|
+
"aspect-video overflow-hidden rounded-xl bg-muted",
|
|
20056
|
+
imageClassName
|
|
20057
|
+
),
|
|
20058
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20059
|
+
framerMotion.motion.div,
|
|
20060
|
+
{
|
|
20061
|
+
initial: { opacity: 0 },
|
|
20062
|
+
animate: { opacity: 1 },
|
|
20063
|
+
exit: { opacity: 0 },
|
|
20064
|
+
transition: { duration: 0.3 },
|
|
20065
|
+
className: "h-full w-full",
|
|
20066
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20067
|
+
img.Img,
|
|
20068
|
+
{
|
|
20069
|
+
src: activeFeatureData.image,
|
|
20070
|
+
alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
|
|
20071
|
+
className: cn(
|
|
20072
|
+
"h-full w-full object-cover",
|
|
20073
|
+
activeFeatureData.imageClassName
|
|
20074
|
+
),
|
|
20075
|
+
optixFlowConfig
|
|
20076
|
+
}
|
|
20077
|
+
)
|
|
20078
|
+
},
|
|
20079
|
+
activeFeatureData.id
|
|
20080
|
+
) })
|
|
20081
|
+
}
|
|
20082
|
+
) }) }),
|
|
20083
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20084
|
+
"div",
|
|
20085
|
+
{
|
|
20086
|
+
ref: setFeatureRef(feature.id),
|
|
20087
|
+
"data-feature-id": feature.id,
|
|
20088
|
+
className: cn(
|
|
20089
|
+
"scroll-mt-24 transition-opacity duration-300",
|
|
20090
|
+
activeFeature === feature.id ? "opacity-100" : "opacity-50",
|
|
20091
|
+
feature.className
|
|
20092
|
+
),
|
|
20093
|
+
children: [
|
|
20094
|
+
/* @__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(
|
|
20095
|
+
img.Img,
|
|
20096
|
+
{
|
|
20097
|
+
src: feature.image,
|
|
20098
|
+
alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
|
|
20099
|
+
className: cn(
|
|
20100
|
+
"h-full w-full object-cover",
|
|
20101
|
+
feature.imageClassName
|
|
20102
|
+
),
|
|
20103
|
+
optixFlowConfig
|
|
20104
|
+
}
|
|
20105
|
+
) }) }),
|
|
20106
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
|
|
20107
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20108
|
+
"div",
|
|
20109
|
+
{
|
|
20110
|
+
className: cn(
|
|
20111
|
+
"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
|
|
20112
|
+
numberBadgeClassName
|
|
20113
|
+
),
|
|
20114
|
+
children: index + 1
|
|
20115
|
+
}
|
|
20116
|
+
),
|
|
20117
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20118
|
+
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 })),
|
|
20119
|
+
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 }))
|
|
20120
|
+
] })
|
|
20121
|
+
] })
|
|
20122
|
+
]
|
|
20123
|
+
},
|
|
20124
|
+
feature.id
|
|
20125
|
+
)) })
|
|
20126
|
+
]
|
|
20127
|
+
}
|
|
20128
|
+
)
|
|
19893
20129
|
] })
|
|
19894
20130
|
}
|
|
19895
20131
|
);
|
|
@@ -20090,17 +20326,28 @@ function FeatureShowcase({
|
|
|
20090
20326
|
contentClassName,
|
|
20091
20327
|
mediaClassName,
|
|
20092
20328
|
arrowClassName,
|
|
20093
|
-
equalizeOnMobile
|
|
20094
|
-
stretchMediaOnMobile
|
|
20329
|
+
equalizeOnMobile,
|
|
20330
|
+
stretchMediaOnMobile,
|
|
20331
|
+
background,
|
|
20332
|
+
spacing,
|
|
20333
|
+
pattern,
|
|
20334
|
+
patternOpacity,
|
|
20335
|
+
patternClassName
|
|
20095
20336
|
}) {
|
|
20096
|
-
const baseArrowClassName =
|
|
20337
|
+
const baseArrowClassName = React52.useMemo(
|
|
20338
|
+
() => "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",
|
|
20339
|
+
[]
|
|
20340
|
+
);
|
|
20097
20341
|
const [mobileSlideHeight, setMobileSlideHeight] = React52.useState(
|
|
20098
20342
|
null
|
|
20099
20343
|
);
|
|
20100
20344
|
const slideRefs = React52.useRef([]);
|
|
20101
|
-
const mediaWrapperClassName =
|
|
20345
|
+
const mediaWrapperClassName = React52.useMemo(
|
|
20346
|
+
() => equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "",
|
|
20347
|
+
[equalizeOnMobile, stretchMediaOnMobile]
|
|
20348
|
+
);
|
|
20102
20349
|
React52.useEffect(() => {
|
|
20103
|
-
if (!equalizeOnMobile) {
|
|
20350
|
+
if (!equalizeOnMobile || !items || items.length === 0) {
|
|
20104
20351
|
setMobileSlideHeight(null);
|
|
20105
20352
|
return;
|
|
20106
20353
|
}
|
|
@@ -20132,10 +20379,10 @@ function FeatureShowcase({
|
|
|
20132
20379
|
window.removeEventListener("resize", updateHeights);
|
|
20133
20380
|
resizeObserver?.disconnect();
|
|
20134
20381
|
};
|
|
20135
|
-
}, [equalizeOnMobile, items
|
|
20136
|
-
|
|
20137
|
-
|
|
20138
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
20382
|
+
}, [equalizeOnMobile, items]);
|
|
20383
|
+
const carouselContent = React52.useMemo(() => {
|
|
20384
|
+
if (!items || items.length === 0) return null;
|
|
20385
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
20139
20386
|
/* @__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
20387
|
"div",
|
|
20141
20388
|
{
|
|
@@ -20148,8 +20395,8 @@ function FeatureShowcase({
|
|
|
20148
20395
|
slideClassName
|
|
20149
20396
|
),
|
|
20150
20397
|
children: [
|
|
20151
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20152
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20398
|
+
item.content && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20399
|
+
item.mediaComponent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20153
20400
|
"div",
|
|
20154
20401
|
{
|
|
20155
20402
|
className: cn(
|
|
@@ -20175,8 +20422,23 @@ function FeatureShowcase({
|
|
|
20175
20422
|
className: cn(baseArrowClassName, "right-4 md:right-6", arrowClassName)
|
|
20176
20423
|
}
|
|
20177
20424
|
)
|
|
20178
|
-
] })
|
|
20179
|
-
]
|
|
20425
|
+
] });
|
|
20426
|
+
}, [items, carouselClassName, equalizeOnMobile, mobileSlideHeight, slideClassName, contentClassName, mediaWrapperClassName, mediaClassName, baseArrowClassName, arrowClassName]);
|
|
20427
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20428
|
+
Section,
|
|
20429
|
+
{
|
|
20430
|
+
background,
|
|
20431
|
+
spacing,
|
|
20432
|
+
pattern,
|
|
20433
|
+
patternOpacity,
|
|
20434
|
+
patternClassName,
|
|
20435
|
+
className,
|
|
20436
|
+
children: [
|
|
20437
|
+
children,
|
|
20438
|
+
carouselContent
|
|
20439
|
+
]
|
|
20440
|
+
}
|
|
20441
|
+
);
|
|
20180
20442
|
}
|
|
20181
20443
|
function FeatureSplitImage({
|
|
20182
20444
|
title,
|
|
@@ -20205,40 +20467,19 @@ function FeatureSplitImage({
|
|
|
20205
20467
|
if (actionsSlot) return actionsSlot;
|
|
20206
20468
|
if (!actions || actions.length === 0) return null;
|
|
20207
20469
|
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
|
-
);
|
|
20470
|
+
const {
|
|
20471
|
+
label,
|
|
20472
|
+
icon,
|
|
20473
|
+
iconAfter,
|
|
20474
|
+
children,
|
|
20475
|
+
className: actionClassName,
|
|
20476
|
+
...pressableProps
|
|
20477
|
+
} = action;
|
|
20478
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20479
|
+
icon,
|
|
20480
|
+
label,
|
|
20481
|
+
iconAfter
|
|
20482
|
+
] }) }, index);
|
|
20242
20483
|
});
|
|
20243
20484
|
}, [actionsSlot, actions]);
|
|
20244
20485
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20248,7 +20489,7 @@ function FeatureSplitImage({
|
|
|
20248
20489
|
img.Img,
|
|
20249
20490
|
{
|
|
20250
20491
|
src: imageSrc,
|
|
20251
|
-
alt: imageAlt || "
|
|
20492
|
+
alt: imageAlt || "",
|
|
20252
20493
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20253
20494
|
loading: "lazy",
|
|
20254
20495
|
optixFlowConfig
|
|
@@ -20269,7 +20510,7 @@ function FeatureSplitImage({
|
|
|
20269
20510
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20270
20511
|
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
20512
|
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 })
|
|
20513
|
+
(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
20514
|
] }),
|
|
20274
20515
|
imageContent
|
|
20275
20516
|
] })
|
|
@@ -20303,40 +20544,19 @@ function FeatureSplitImageReverse({
|
|
|
20303
20544
|
if (actionsSlot) return actionsSlot;
|
|
20304
20545
|
if (!actions || actions.length === 0) return null;
|
|
20305
20546
|
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
|
-
);
|
|
20547
|
+
const {
|
|
20548
|
+
label,
|
|
20549
|
+
icon,
|
|
20550
|
+
iconAfter,
|
|
20551
|
+
children,
|
|
20552
|
+
className: actionClassName,
|
|
20553
|
+
...pressableProps
|
|
20554
|
+
} = action;
|
|
20555
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20556
|
+
icon,
|
|
20557
|
+
label,
|
|
20558
|
+
iconAfter
|
|
20559
|
+
] }) }, index);
|
|
20340
20560
|
});
|
|
20341
20561
|
}, [actionsSlot, actions]);
|
|
20342
20562
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20346,7 +20566,7 @@ function FeatureSplitImageReverse({
|
|
|
20346
20566
|
img.Img,
|
|
20347
20567
|
{
|
|
20348
20568
|
src: imageSrc,
|
|
20349
|
-
alt: imageAlt || "
|
|
20569
|
+
alt: imageAlt || "",
|
|
20350
20570
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20351
20571
|
loading: "lazy",
|
|
20352
20572
|
optixFlowConfig
|
|
@@ -20368,7 +20588,7 @@ function FeatureSplitImageReverse({
|
|
|
20368
20588
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20369
20589
|
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
20590
|
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 })
|
|
20591
|
+
(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
20592
|
] })
|
|
20373
20593
|
] })
|
|
20374
20594
|
}
|
|
@@ -20391,39 +20611,37 @@ function FeatureIconGridBordered({
|
|
|
20391
20611
|
patternOpacity,
|
|
20392
20612
|
patternClassName
|
|
20393
20613
|
}) {
|
|
20614
|
+
const renderIcon = React52.useCallback((feature) => {
|
|
20615
|
+
if (feature.icon) return feature.icon;
|
|
20616
|
+
if (feature.iconName) {
|
|
20617
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 20, className: "md:size-6" });
|
|
20618
|
+
}
|
|
20619
|
+
return null;
|
|
20620
|
+
}, []);
|
|
20394
20621
|
const featuresContent = React52.useMemo(() => {
|
|
20395
20622
|
if (featuresSlot) return featuresSlot;
|
|
20396
20623
|
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]);
|
|
20624
|
+
return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20625
|
+
"div",
|
|
20626
|
+
{
|
|
20627
|
+
className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
|
|
20628
|
+
children: [
|
|
20629
|
+
(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) }),
|
|
20630
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20631
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20632
|
+
feature.title,
|
|
20633
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20634
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20635
|
+
feature.title,
|
|
20636
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20637
|
+
] })),
|
|
20638
|
+
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 }))
|
|
20639
|
+
] })
|
|
20640
|
+
]
|
|
20641
|
+
},
|
|
20642
|
+
index
|
|
20643
|
+
));
|
|
20644
|
+
}, [featuresSlot, features, cardClassName, renderIcon]);
|
|
20427
20645
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20428
20646
|
Section,
|
|
20429
20647
|
{
|
|
@@ -20437,7 +20655,7 @@ function FeatureIconGridBordered({
|
|
|
20437
20655
|
children: [
|
|
20438
20656
|
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
20657
|
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 })
|
|
20658
|
+
(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
20659
|
]
|
|
20442
20660
|
}
|
|
20443
20661
|
);
|
|
@@ -20551,8 +20769,8 @@ function FeatureChecklistImage({
|
|
|
20551
20769
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
20552
20770
|
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
20771
|
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 })
|
|
20772
|
+
actionsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
20773
|
+
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
20774
|
] })
|
|
20557
20775
|
] })
|
|
20558
20776
|
}
|
|
@@ -20617,10 +20835,10 @@ function FeatureCarouselProgress({
|
|
|
20617
20835
|
);
|
|
20618
20836
|
});
|
|
20619
20837
|
}, [api, slidesLength]);
|
|
20620
|
-
const renderSlideIcon = React52.
|
|
20838
|
+
const renderSlideIcon = React52.useCallback((slide) => {
|
|
20621
20839
|
if (slide.icon) return slide.icon;
|
|
20622
20840
|
if (slide.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: slide.iconName, size: 16 });
|
|
20623
|
-
return
|
|
20841
|
+
return null;
|
|
20624
20842
|
}, []);
|
|
20625
20843
|
const slidesContent = React52.useMemo(() => {
|
|
20626
20844
|
if (slidesSlot) return slidesSlot;
|
|
@@ -20630,7 +20848,7 @@ function FeatureCarouselProgress({
|
|
|
20630
20848
|
{
|
|
20631
20849
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
20632
20850
|
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) }),
|
|
20851
|
+
(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
20852
|
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
20853
|
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
20854
|
] }) }) }) })
|
|
@@ -20692,28 +20910,28 @@ function FeatureCardGridLinked({
|
|
|
20692
20910
|
patternOpacity,
|
|
20693
20911
|
patternClassName
|
|
20694
20912
|
}) {
|
|
20913
|
+
const renderImage = React52.useCallback((feature, imageAlt) => {
|
|
20914
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
20915
|
+
if (feature.image) {
|
|
20916
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20917
|
+
img.Img,
|
|
20918
|
+
{
|
|
20919
|
+
src: feature.image,
|
|
20920
|
+
alt: imageAlt,
|
|
20921
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
20922
|
+
loading: "lazy",
|
|
20923
|
+
optixFlowConfig
|
|
20924
|
+
}
|
|
20925
|
+
);
|
|
20926
|
+
}
|
|
20927
|
+
return null;
|
|
20928
|
+
}, [optixFlowConfig]);
|
|
20695
20929
|
const featuresContent = React52.useMemo(() => {
|
|
20696
20930
|
if (featuresSlot) return featuresSlot;
|
|
20697
20931
|
if (!features || features.length === 0) return null;
|
|
20698
20932
|
return features.map((feature, index) => {
|
|
20699
20933
|
const featureKey = feature.id || `feature-${index}`;
|
|
20700
20934
|
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
20935
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20718
20936
|
"div",
|
|
20719
20937
|
{
|
|
@@ -20724,7 +20942,7 @@ function FeatureCardGridLinked({
|
|
|
20724
20942
|
feature.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
|
|
20725
20943
|
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
20944
|
] }),
|
|
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() }) })
|
|
20945
|
+
/* @__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
20946
|
] }),
|
|
20729
20947
|
feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
|
|
20730
20948
|
]
|
|
@@ -20732,7 +20950,7 @@ function FeatureCardGridLinked({
|
|
|
20732
20950
|
featureKey
|
|
20733
20951
|
);
|
|
20734
20952
|
});
|
|
20735
|
-
}, [featuresSlot, features, cardClassName,
|
|
20953
|
+
}, [featuresSlot, features, cardClassName, renderImage]);
|
|
20736
20954
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20737
20955
|
Section,
|
|
20738
20956
|
{
|
|
@@ -20768,7 +20986,7 @@ function FeatureNumberedCards({
|
|
|
20768
20986
|
patternOpacity,
|
|
20769
20987
|
patternClassName
|
|
20770
20988
|
}) {
|
|
20771
|
-
const renderChecklistItems = (feature) => {
|
|
20989
|
+
const renderChecklistItems = React52.useCallback((feature) => {
|
|
20772
20990
|
if (feature.checklistSlot) return feature.checklistSlot;
|
|
20773
20991
|
if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
|
|
20774
20992
|
return feature.checklistItems.map((item, itemIndex) => {
|
|
@@ -20788,7 +21006,7 @@ function FeatureNumberedCards({
|
|
|
20788
21006
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
|
|
20789
21007
|
] }, itemIndex);
|
|
20790
21008
|
});
|
|
20791
|
-
};
|
|
21009
|
+
}, []);
|
|
20792
21010
|
const featuresContent = React52.useMemo(() => {
|
|
20793
21011
|
if (featuresSlot) return featuresSlot;
|
|
20794
21012
|
if (!features || features.length === 0) return null;
|
|
@@ -20893,12 +21111,12 @@ function FeatureIconGridAccent({
|
|
|
20893
21111
|
className,
|
|
20894
21112
|
containerClassName,
|
|
20895
21113
|
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: [
|
|
21114
|
+
(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
21115
|
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
21116
|
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
21117
|
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
21118
|
] }) }),
|
|
20901
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
21119
|
+
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
21120
|
]
|
|
20903
21121
|
}
|
|
20904
21122
|
);
|
|
@@ -20920,20 +21138,20 @@ function FeatureThreeColumnValues({
|
|
|
20920
21138
|
patternOpacity,
|
|
20921
21139
|
patternClassName
|
|
20922
21140
|
}) {
|
|
20923
|
-
const renderValueIcon = (value) => {
|
|
21141
|
+
const renderValueIcon = React52__namespace.useCallback((value) => {
|
|
20924
21142
|
if (value.icon) return value.icon;
|
|
20925
21143
|
if (value.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
|
|
20926
|
-
return
|
|
20927
|
-
};
|
|
21144
|
+
return null;
|
|
21145
|
+
}, []);
|
|
20928
21146
|
const valuesContent = React52.useMemo(() => {
|
|
20929
21147
|
if (valuesSlot) return valuesSlot;
|
|
20930
21148
|
if (!values || values.length === 0) return null;
|
|
20931
21149
|
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) }),
|
|
21150
|
+
(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
21151
|
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
21152
|
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
21153
|
] }, index));
|
|
20936
|
-
}, [valuesSlot, values, cardClassName]);
|
|
21154
|
+
}, [valuesSlot, values, cardClassName, renderValueIcon]);
|
|
20937
21155
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20938
21156
|
Section,
|
|
20939
21157
|
{
|
|
@@ -20947,7 +21165,7 @@ function FeatureThreeColumnValues({
|
|
|
20947
21165
|
children: [
|
|
20948
21166
|
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
21167
|
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 })
|
|
21168
|
+
(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
21169
|
]
|
|
20952
21170
|
}
|
|
20953
21171
|
);
|
|
@@ -20979,7 +21197,7 @@ function FeatureBadgeGridSix({
|
|
|
20979
21197
|
if (!label) return null;
|
|
20980
21198
|
return /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", className: badgeClassName, children: label });
|
|
20981
21199
|
}, [badgeSlot, label, badgeClassName]);
|
|
20982
|
-
const renderFeatureIcon = (feature) => {
|
|
21200
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
20983
21201
|
if (feature.icon) return feature.icon;
|
|
20984
21202
|
if (feature.iconName) {
|
|
20985
21203
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20992,25 +21210,28 @@ function FeatureBadgeGridSix({
|
|
|
20992
21210
|
);
|
|
20993
21211
|
}
|
|
20994
21212
|
return null;
|
|
20995
|
-
};
|
|
21213
|
+
}, []);
|
|
20996
21214
|
const featuresContent = React52.useMemo(() => {
|
|
20997
21215
|
if (featuresSlot) return featuresSlot;
|
|
20998
21216
|
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
|
-
|
|
21217
|
+
return features.map((feature, index) => {
|
|
21218
|
+
const iconContent = renderFeatureIcon(feature);
|
|
21219
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21220
|
+
"div",
|
|
21221
|
+
{
|
|
21222
|
+
className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
|
|
21223
|
+
children: [
|
|
21224
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: iconContent }),
|
|
21225
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21226
|
+
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 })),
|
|
21227
|
+
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 }))
|
|
21228
|
+
] })
|
|
21229
|
+
]
|
|
21230
|
+
},
|
|
21231
|
+
index
|
|
21232
|
+
);
|
|
21233
|
+
});
|
|
21234
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
21014
21235
|
const actionContent = React52.useMemo(() => {
|
|
21015
21236
|
if (actionSlot) return actionSlot;
|
|
21016
21237
|
if (!action) return null;
|
|
@@ -21071,7 +21292,6 @@ function FeatureBadgeGridSix({
|
|
|
21071
21292
|
function FeaturePatternGridLinks({
|
|
21072
21293
|
features,
|
|
21073
21294
|
featuresSlot,
|
|
21074
|
-
patternUrl = patternSvgs.dotPattern,
|
|
21075
21295
|
className,
|
|
21076
21296
|
containerClassName,
|
|
21077
21297
|
gridClassName,
|
|
@@ -21082,26 +21302,28 @@ function FeaturePatternGridLinks({
|
|
|
21082
21302
|
patternOpacity,
|
|
21083
21303
|
patternClassName
|
|
21084
21304
|
}) {
|
|
21085
|
-
const renderFeatureIcon = (feature) => {
|
|
21305
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
21086
21306
|
if (feature.icon) return feature.icon;
|
|
21087
21307
|
if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
21088
21308
|
return null;
|
|
21089
|
-
};
|
|
21090
|
-
const renderFeatureLink = (feature) => {
|
|
21309
|
+
}, []);
|
|
21310
|
+
const renderFeatureLink = React52.useCallback((feature) => {
|
|
21091
21311
|
if (feature.linkSlot) return feature.linkSlot;
|
|
21092
|
-
if (!feature.link) return null;
|
|
21312
|
+
if (!feature.link && !feature.linkLabel) return null;
|
|
21313
|
+
const label = feature.linkLabel || (feature.link ? "Learn more" : null);
|
|
21314
|
+
if (!label) return null;
|
|
21093
21315
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21094
21316
|
Pressable,
|
|
21095
21317
|
{
|
|
21096
21318
|
href: feature.link,
|
|
21097
21319
|
className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
|
|
21098
21320
|
children: [
|
|
21099
|
-
|
|
21321
|
+
label,
|
|
21100
21322
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
21101
21323
|
]
|
|
21102
21324
|
}
|
|
21103
21325
|
);
|
|
21104
|
-
};
|
|
21326
|
+
}, []);
|
|
21105
21327
|
const featuresContent = React52.useMemo(() => {
|
|
21106
21328
|
if (featuresSlot) return featuresSlot;
|
|
21107
21329
|
if (!features || features.length === 0) return null;
|
|
@@ -21120,7 +21342,7 @@ function FeaturePatternGridLinks({
|
|
|
21120
21342
|
},
|
|
21121
21343
|
index
|
|
21122
21344
|
));
|
|
21123
|
-
}, [featuresSlot, features, cardClassName]);
|
|
21345
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
|
|
21124
21346
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21125
21347
|
Section,
|
|
21126
21348
|
{
|
|
@@ -21129,12 +21351,8 @@ function FeaturePatternGridLinks({
|
|
|
21129
21351
|
pattern,
|
|
21130
21352
|
patternOpacity,
|
|
21131
21353
|
patternClassName,
|
|
21132
|
-
className
|
|
21354
|
+
className,
|
|
21133
21355
|
containerClassName,
|
|
21134
|
-
style: {
|
|
21135
|
-
backgroundImage: `url(${patternUrl})`,
|
|
21136
|
-
backgroundRepeat: "repeat"
|
|
21137
|
-
},
|
|
21138
21356
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
|
|
21139
21357
|
}
|
|
21140
21358
|
);
|
|
@@ -21202,7 +21420,7 @@ function FeatureTabbedContentImage({
|
|
|
21202
21420
|
description,
|
|
21203
21421
|
slides,
|
|
21204
21422
|
slidesSlot,
|
|
21205
|
-
defaultTab
|
|
21423
|
+
defaultTab,
|
|
21206
21424
|
className,
|
|
21207
21425
|
containerClassName,
|
|
21208
21426
|
headerClassName,
|
|
@@ -21221,7 +21439,7 @@ function FeatureTabbedContentImage({
|
|
|
21221
21439
|
patternOpacity,
|
|
21222
21440
|
patternClassName
|
|
21223
21441
|
}) {
|
|
21224
|
-
const renderFeatures =
|
|
21442
|
+
const renderFeatures = React52__namespace.useCallback((slide) => {
|
|
21225
21443
|
if (slide.featuresSlot) return slide.featuresSlot;
|
|
21226
21444
|
if (!slide.features || slide.features.length === 0) return null;
|
|
21227
21445
|
return slide.features.map((feature, index) => {
|
|
@@ -21235,7 +21453,7 @@ function FeatureTabbedContentImage({
|
|
|
21235
21453
|
] }, index);
|
|
21236
21454
|
});
|
|
21237
21455
|
}, []);
|
|
21238
|
-
const renderActions =
|
|
21456
|
+
const renderActions = React52__namespace.useCallback((slide) => {
|
|
21239
21457
|
if (slide.actionsSlot) return slide.actionsSlot;
|
|
21240
21458
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
21241
21459
|
return slide.actions.map((action, index) => {
|
|
@@ -21275,7 +21493,7 @@ function FeatureTabbedContentImage({
|
|
|
21275
21493
|
);
|
|
21276
21494
|
});
|
|
21277
21495
|
}, []);
|
|
21278
|
-
const renderImage =
|
|
21496
|
+
const renderImage = React52__namespace.useCallback((slide) => {
|
|
21279
21497
|
if (slide.imageSlot) return slide.imageSlot;
|
|
21280
21498
|
if (!slide.image) return null;
|
|
21281
21499
|
const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
|
|
@@ -21322,6 +21540,11 @@ function FeatureTabbedContentImage({
|
|
|
21322
21540
|
))
|
|
21323
21541
|
] });
|
|
21324
21542
|
}, [slidesSlot, slides, tabsListClassName, tabTriggerClassName, tabContentClassName, contentGridClassName, renderFeatures, renderActions, renderImage]);
|
|
21543
|
+
const effectiveDefaultTab = React52.useMemo(() => {
|
|
21544
|
+
if (defaultTab) return defaultTab;
|
|
21545
|
+
if (slides && slides.length > 0) return slides[0].id.toString();
|
|
21546
|
+
return "1";
|
|
21547
|
+
}, [defaultTab, slides]);
|
|
21325
21548
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21326
21549
|
Section,
|
|
21327
21550
|
{
|
|
@@ -21337,10 +21560,10 @@ function FeatureTabbedContentImage({
|
|
|
21337
21560
|
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
21561
|
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
21562
|
] }),
|
|
21340
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21563
|
+
(slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21341
21564
|
Tabs,
|
|
21342
21565
|
{
|
|
21343
|
-
defaultValue:
|
|
21566
|
+
defaultValue: effectiveDefaultTab,
|
|
21344
21567
|
className: cn("mx-auto flex w-fit flex-col items-center gap-8 md:gap-12", tabsClassName),
|
|
21345
21568
|
children: slidesContent
|
|
21346
21569
|
}
|
|
@@ -21352,7 +21575,7 @@ function FeatureTabbedContentImage({
|
|
|
21352
21575
|
function FeatureUtilityCardsGrid({
|
|
21353
21576
|
label,
|
|
21354
21577
|
labelIcon,
|
|
21355
|
-
labelIconName
|
|
21578
|
+
labelIconName,
|
|
21356
21579
|
title,
|
|
21357
21580
|
description,
|
|
21358
21581
|
learnMoreAction,
|
|
@@ -21374,11 +21597,11 @@ function FeatureUtilityCardsGrid({
|
|
|
21374
21597
|
patternOpacity,
|
|
21375
21598
|
patternClassName
|
|
21376
21599
|
}) {
|
|
21377
|
-
const renderLabelIcon = () => {
|
|
21600
|
+
const renderLabelIcon = React52.useMemo(() => {
|
|
21378
21601
|
if (labelIcon) return labelIcon;
|
|
21379
21602
|
if (labelIconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
|
|
21380
|
-
return
|
|
21381
|
-
};
|
|
21603
|
+
return null;
|
|
21604
|
+
}, [labelIcon, labelIconName]);
|
|
21382
21605
|
const learnMoreContent = React52.useMemo(() => {
|
|
21383
21606
|
if (learnMoreSlot) return learnMoreSlot;
|
|
21384
21607
|
if (!learnMoreAction) return null;
|
|
@@ -21409,7 +21632,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21409
21632
|
}
|
|
21410
21633
|
);
|
|
21411
21634
|
}, [learnMoreSlot, learnMoreAction]);
|
|
21412
|
-
const renderUtilityImage = (utility) => {
|
|
21635
|
+
const renderUtilityImage = React52__namespace.useCallback((utility) => {
|
|
21413
21636
|
if (utility.imageSlot) return utility.imageSlot;
|
|
21414
21637
|
if (utility.image) {
|
|
21415
21638
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21424,7 +21647,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21424
21647
|
);
|
|
21425
21648
|
}
|
|
21426
21649
|
return null;
|
|
21427
|
-
};
|
|
21650
|
+
}, [optixFlowConfig]);
|
|
21428
21651
|
const utilitiesContent = React52.useMemo(() => {
|
|
21429
21652
|
if (utilitiesSlot) return utilitiesSlot;
|
|
21430
21653
|
if (!utilities || utilities.length === 0) return null;
|
|
@@ -21435,7 +21658,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21435
21658
|
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
21659
|
] })
|
|
21437
21660
|
] }, index));
|
|
21438
|
-
}, [utilitiesSlot, utilities, cardClassName,
|
|
21661
|
+
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
|
|
21439
21662
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21440
21663
|
Section,
|
|
21441
21664
|
{
|
|
@@ -21447,26 +21670,28 @@ function FeatureUtilityCardsGrid({
|
|
|
21447
21670
|
className,
|
|
21448
21671
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21449
21672
|
children: [
|
|
21450
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
21451
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center
|
|
21452
|
-
|
|
21453
|
-
|
|
21673
|
+
(label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21674
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
|
|
21675
|
+
(label || labelIcon || labelIconName) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
|
|
21676
|
+
renderLabelIcon,
|
|
21677
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: label }))
|
|
21678
|
+
] }),
|
|
21679
|
+
learnMoreContent
|
|
21454
21680
|
] }),
|
|
21455
|
-
|
|
21681
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mt-3 mb-8" })
|
|
21456
21682
|
] }),
|
|
21457
|
-
/* @__PURE__ */ jsxRuntime.
|
|
21458
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21683
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21459
21684
|
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
21685
|
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
21686
|
] }),
|
|
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 })
|
|
21687
|
+
(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
21688
|
]
|
|
21464
21689
|
}
|
|
21465
21690
|
);
|
|
21466
21691
|
}
|
|
21467
21692
|
function FeatureBentoUtilities({
|
|
21468
21693
|
label,
|
|
21469
|
-
labelIconName
|
|
21694
|
+
labelIconName,
|
|
21470
21695
|
labelIcon,
|
|
21471
21696
|
title,
|
|
21472
21697
|
description,
|
|
@@ -21489,7 +21714,7 @@ function FeatureBentoUtilities({
|
|
|
21489
21714
|
patternOpacity,
|
|
21490
21715
|
patternClassName
|
|
21491
21716
|
}) {
|
|
21492
|
-
const renderCard =
|
|
21717
|
+
const renderCard = React52__namespace.useCallback((card, index) => {
|
|
21493
21718
|
const hasImage = card.imageSrc || card.imageSlot;
|
|
21494
21719
|
const cardClasses = cn(
|
|
21495
21720
|
hasImage ? "overflow-hidden pt-0" : "p-6",
|
|
@@ -21535,12 +21760,16 @@ function FeatureBentoUtilities({
|
|
|
21535
21760
|
card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: card.description })
|
|
21536
21761
|
] }, index);
|
|
21537
21762
|
}, [optixFlowConfig]);
|
|
21538
|
-
const renderColumn =
|
|
21763
|
+
const renderColumn = React52__namespace.useCallback((cards, slot) => {
|
|
21539
21764
|
if (slot) return slot;
|
|
21540
21765
|
if (!cards || cards.length === 0) return null;
|
|
21541
21766
|
return cards.map((card, index) => renderCard(card, index));
|
|
21542
21767
|
}, [renderCard]);
|
|
21543
|
-
const labelIconElement = React52.useMemo(() =>
|
|
21768
|
+
const labelIconElement = React52.useMemo(() => {
|
|
21769
|
+
if (labelIcon) return labelIcon;
|
|
21770
|
+
if (labelIconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20 });
|
|
21771
|
+
return null;
|
|
21772
|
+
}, [labelIcon, labelIconName]);
|
|
21544
21773
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21545
21774
|
Section,
|
|
21546
21775
|
{
|
|
@@ -21552,7 +21781,7 @@ function FeatureBentoUtilities({
|
|
|
21552
21781
|
className: cn("bg-gray-50 dark:bg-background", className),
|
|
21553
21782
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21554
21783
|
children: [
|
|
21555
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21784
|
+
(labelIconElement || label) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21556
21785
|
labelIconElement,
|
|
21557
21786
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: label }))
|
|
21558
21787
|
] }),
|
|
@@ -21591,15 +21820,15 @@ function FeatureChecklistThreeColumn({
|
|
|
21591
21820
|
patternOpacity,
|
|
21592
21821
|
patternClassName
|
|
21593
21822
|
}) {
|
|
21594
|
-
const getCheckItemContent = React52.
|
|
21823
|
+
const getCheckItemContent = React52.useCallback((item) => {
|
|
21595
21824
|
if (typeof item === "string") return item;
|
|
21596
21825
|
return item.content;
|
|
21597
21826
|
}, []);
|
|
21598
|
-
const getCheckItemClassName = React52.
|
|
21827
|
+
const getCheckItemClassName = React52.useCallback((item) => {
|
|
21599
21828
|
if (typeof item === "string") return void 0;
|
|
21600
21829
|
return item.className;
|
|
21601
21830
|
}, []);
|
|
21602
|
-
const renderChecklistColumn = React52.
|
|
21831
|
+
const renderChecklistColumn = React52.useCallback((items, slot, gapClass) => {
|
|
21603
21832
|
if (slot) return slot;
|
|
21604
21833
|
if (!items || items.length === 0) return null;
|
|
21605
21834
|
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 +21836,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21607
21836
|
getCheckItemContent(item)
|
|
21608
21837
|
] }, index)) });
|
|
21609
21838
|
}, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
|
|
21610
|
-
const renderCardImage = React52.
|
|
21839
|
+
const renderCardImage = React52.useCallback((card) => {
|
|
21611
21840
|
if (card.imageSlot) return card.imageSlot;
|
|
21612
21841
|
if (card.image) {
|
|
21613
21842
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21623,7 +21852,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21623
21852
|
}
|
|
21624
21853
|
return null;
|
|
21625
21854
|
}, [optixFlowConfig]);
|
|
21626
|
-
const renderCardLink = React52.
|
|
21855
|
+
const renderCardLink = React52.useCallback((card) => {
|
|
21627
21856
|
if (card.linkSlot) return card.linkSlot;
|
|
21628
21857
|
if (!card.link) return null;
|
|
21629
21858
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -21686,7 +21915,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21686
21915
|
pattern,
|
|
21687
21916
|
patternOpacity,
|
|
21688
21917
|
patternClassName,
|
|
21689
|
-
className
|
|
21918
|
+
className,
|
|
21690
21919
|
containerClassName,
|
|
21691
21920
|
children: [
|
|
21692
21921
|
/* @__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 +21947,25 @@ function FeatureIntegrationCards({
|
|
|
21718
21947
|
patternOpacity,
|
|
21719
21948
|
patternClassName
|
|
21720
21949
|
}) {
|
|
21721
|
-
const renderIntegrationIcon = React52.
|
|
21950
|
+
const renderIntegrationIcon = React52.useCallback((integration) => {
|
|
21722
21951
|
if (integration.iconSlot) return integration.iconSlot;
|
|
21723
|
-
if (integration.icon)
|
|
21724
|
-
|
|
21725
|
-
|
|
21726
|
-
|
|
21727
|
-
|
|
21728
|
-
|
|
21729
|
-
|
|
21730
|
-
|
|
21731
|
-
|
|
21732
|
-
|
|
21733
|
-
|
|
21734
|
-
}
|
|
21735
|
-
return null;
|
|
21952
|
+
if (!integration.icon) return null;
|
|
21953
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21954
|
+
img.Img,
|
|
21955
|
+
{
|
|
21956
|
+
src: integration.icon,
|
|
21957
|
+
alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
|
|
21958
|
+
className: cn("h-auto w-7", integration.iconClassName),
|
|
21959
|
+
loading: "lazy",
|
|
21960
|
+
optixFlowConfig
|
|
21961
|
+
}
|
|
21962
|
+
);
|
|
21736
21963
|
}, [optixFlowConfig]);
|
|
21737
|
-
const renderLinkLabel = React52.
|
|
21964
|
+
const renderLinkLabel = React52.useCallback((integration) => {
|
|
21738
21965
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
21966
|
+
if (!integration.linkLabel) return null;
|
|
21739
21967
|
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
|
|
21968
|
+
integration.linkLabel,
|
|
21741
21969
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
21742
21970
|
] });
|
|
21743
21971
|
}, []);
|
|
@@ -21745,10 +21973,12 @@ function FeatureIntegrationCards({
|
|
|
21745
21973
|
if (integrationsSlot) return integrationsSlot;
|
|
21746
21974
|
if (!integrations || integrations.length === 0) return null;
|
|
21747
21975
|
return integrations.map((integration, index) => {
|
|
21976
|
+
const iconContent = renderIntegrationIcon(integration);
|
|
21977
|
+
const linkLabelContent = renderLinkLabel(integration);
|
|
21748
21978
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21749
21979
|
/* @__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
|
-
|
|
21980
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
|
|
21981
|
+
linkLabelContent
|
|
21752
21982
|
] }),
|
|
21753
21983
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21754
21984
|
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 +22050,12 @@ function FeatureIconTabsContent({
|
|
|
21820
22050
|
patternOpacity,
|
|
21821
22051
|
patternClassName
|
|
21822
22052
|
}) {
|
|
21823
|
-
const renderTabIcon = React52.
|
|
22053
|
+
const renderTabIcon = React52.useCallback((tab) => {
|
|
21824
22054
|
if (tab.icon) return tab.icon;
|
|
21825
22055
|
if (tab.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: tab.iconName, size: 16 });
|
|
21826
|
-
return
|
|
22056
|
+
return null;
|
|
21827
22057
|
}, []);
|
|
21828
|
-
const renderTabContentActions = React52.
|
|
22058
|
+
const renderTabContentActions = React52.useCallback((content) => {
|
|
21829
22059
|
if (content.actionsSlot) return content.actionsSlot;
|
|
21830
22060
|
if (!content.actions || content.actions.length === 0) return null;
|
|
21831
22061
|
return content.actions.map((action, index) => {
|
|
@@ -21865,7 +22095,7 @@ function FeatureIconTabsContent({
|
|
|
21865
22095
|
);
|
|
21866
22096
|
});
|
|
21867
22097
|
}, []);
|
|
21868
|
-
const renderTabContentImage = React52.
|
|
22098
|
+
const renderTabContentImage = React52.useCallback((content) => {
|
|
21869
22099
|
if (content.imageSlot) return content.imageSlot;
|
|
21870
22100
|
if (content.imageSrc) {
|
|
21871
22101
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21892,7 +22122,7 @@ function FeatureIconTabsContent({
|
|
|
21892
22122
|
value: tab.value,
|
|
21893
22123
|
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
22124
|
children: [
|
|
21895
|
-
renderTabIcon(tab),
|
|
22125
|
+
(tab.icon || tab.iconName) && renderTabIcon(tab),
|
|
21896
22126
|
tab.label
|
|
21897
22127
|
]
|
|
21898
22128
|
},
|
|
@@ -21914,9 +22144,9 @@ function FeatureIconTabsContent({
|
|
|
21914
22144
|
content.badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
|
|
21915
22145
|
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
22146
|
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)
|
|
22147
|
+
(content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
|
|
21918
22148
|
] }),
|
|
21919
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
22149
|
+
(content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
21920
22150
|
]
|
|
21921
22151
|
},
|
|
21922
22152
|
tab.value
|
|
@@ -21935,7 +22165,7 @@ function FeatureIconTabsContent({
|
|
|
21935
22165
|
className,
|
|
21936
22166
|
containerClassName: cn("mx-auto", containerClassName),
|
|
21937
22167
|
children: [
|
|
21938
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
22168
|
+
(badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
21939
22169
|
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
|
|
21940
22170
|
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
22171
|
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 +22328,30 @@ function FeatureImageOverlayBadge({
|
|
|
22098
22328
|
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
22329
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22100
22330
|
] }),
|
|
22101
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22331
|
+
imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22102
22332
|
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
|
-
|
|
22333
|
+
(avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22334
|
+
/* @__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) }),
|
|
22335
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22336
|
+
(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: [
|
|
22337
|
+
avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
|
|
22338
|
+
avatarBadgeText
|
|
22339
|
+
] }),
|
|
22340
|
+
(overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
22341
|
+
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 })),
|
|
22342
|
+
overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22343
|
+
Pressable,
|
|
22344
|
+
{
|
|
22345
|
+
href: overlayLinkUrl,
|
|
22346
|
+
onClick: overlayLinkOnClick,
|
|
22347
|
+
className: "flex items-center gap-1 font-medium",
|
|
22348
|
+
children: [
|
|
22349
|
+
overlayLinkText,
|
|
22350
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
22351
|
+
]
|
|
22352
|
+
}
|
|
22353
|
+
)
|
|
22354
|
+
] })
|
|
22123
22355
|
] })
|
|
22124
22356
|
] })
|
|
22125
22357
|
] })
|
|
@@ -22148,7 +22380,7 @@ function FeatureCategoryImageCards({
|
|
|
22148
22380
|
patternOpacity,
|
|
22149
22381
|
patternClassName
|
|
22150
22382
|
}) {
|
|
22151
|
-
const renderFeatureImage = (feature) => {
|
|
22383
|
+
const renderFeatureImage = React52.useCallback((feature) => {
|
|
22152
22384
|
if (feature.imageSlot) return feature.imageSlot;
|
|
22153
22385
|
if (feature.imageSrc) {
|
|
22154
22386
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22163,7 +22395,7 @@ function FeatureCategoryImageCards({
|
|
|
22163
22395
|
);
|
|
22164
22396
|
}
|
|
22165
22397
|
return null;
|
|
22166
|
-
};
|
|
22398
|
+
}, [optixFlowConfig]);
|
|
22167
22399
|
const featuresContent = React52.useMemo(() => {
|
|
22168
22400
|
if (featuresSlot) return featuresSlot;
|
|
22169
22401
|
if (!features || features.length === 0) return null;
|
|
@@ -22174,7 +22406,7 @@ function FeatureCategoryImageCards({
|
|
|
22174
22406
|
] }),
|
|
22175
22407
|
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
|
|
22176
22408
|
] }, index));
|
|
22177
|
-
}, [featuresSlot, features, cardClassName,
|
|
22409
|
+
}, [featuresSlot, features, cardClassName, renderFeatureImage]);
|
|
22178
22410
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22179
22411
|
Section,
|
|
22180
22412
|
{
|
|
@@ -22215,12 +22447,12 @@ function FeatureBentoImageGrid({
|
|
|
22215
22447
|
patternOpacity,
|
|
22216
22448
|
patternClassName
|
|
22217
22449
|
}) {
|
|
22218
|
-
const renderItemIcon =
|
|
22450
|
+
const renderItemIcon = React52__namespace.useCallback((item) => {
|
|
22219
22451
|
if (item.icon) return item.icon;
|
|
22220
22452
|
if (item.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 24 });
|
|
22221
22453
|
return null;
|
|
22222
22454
|
}, []);
|
|
22223
|
-
const renderItemImage =
|
|
22455
|
+
const renderItemImage = React52__namespace.useCallback((item, imageClassName) => {
|
|
22224
22456
|
if (item.imageSlot) return item.imageSlot;
|
|
22225
22457
|
if (item.imageSrc) {
|
|
22226
22458
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22236,13 +22468,15 @@ function FeatureBentoImageGrid({
|
|
|
22236
22468
|
}
|
|
22237
22469
|
return null;
|
|
22238
22470
|
}, [optixFlowConfig]);
|
|
22239
|
-
const renderLargeCard =
|
|
22471
|
+
const renderLargeCard = React52__namespace.useCallback((item) => {
|
|
22472
|
+
const iconContent = renderItemIcon(item);
|
|
22473
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22240
22474
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22241
22475
|
renderItemImage(item, "h-full max-h-[580px] w-full rounded-xl object-cover object-center"),
|
|
22242
22476
|
/* @__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
22477
|
/* @__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
|
-
|
|
22478
|
+
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: [
|
|
22479
|
+
iconContent,
|
|
22246
22480
|
item.iconBadge
|
|
22247
22481
|
] }),
|
|
22248
22482
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22266,7 +22500,9 @@ function FeatureBentoImageGrid({
|
|
|
22266
22500
|
}
|
|
22267
22501
|
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
22502
|
}, [largeCardClassName, renderItemImage, renderItemIcon]);
|
|
22269
|
-
const renderSmallCard =
|
|
22503
|
+
const renderSmallCard = React52__namespace.useCallback((item, index) => {
|
|
22504
|
+
const iconContent = renderItemIcon(item);
|
|
22505
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22270
22506
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22271
22507
|
renderItemImage(item, cn(
|
|
22272
22508
|
"h-full w-full rounded-xl object-cover object-center",
|
|
@@ -22274,8 +22510,8 @@ function FeatureBentoImageGrid({
|
|
|
22274
22510
|
)),
|
|
22275
22511
|
/* @__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
22512
|
/* @__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
|
-
|
|
22513
|
+
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: [
|
|
22514
|
+
iconContent,
|
|
22279
22515
|
item.iconBadge
|
|
22280
22516
|
] }),
|
|
22281
22517
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22363,34 +22599,33 @@ function FeatureImageCardsThreeColumn({
|
|
|
22363
22599
|
patternOpacity,
|
|
22364
22600
|
patternClassName
|
|
22365
22601
|
}) {
|
|
22602
|
+
const renderImage = React52.useCallback((card, imageAlt) => {
|
|
22603
|
+
if (card.imageSlot) return card.imageSlot;
|
|
22604
|
+
if (!card.imageSrc) return null;
|
|
22605
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22606
|
+
img.Img,
|
|
22607
|
+
{
|
|
22608
|
+
src: card.imageSrc,
|
|
22609
|
+
alt: imageAlt,
|
|
22610
|
+
className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
|
|
22611
|
+
loading: "lazy",
|
|
22612
|
+
optixFlowConfig
|
|
22613
|
+
}
|
|
22614
|
+
);
|
|
22615
|
+
}, [optixFlowConfig]);
|
|
22616
|
+
const renderBadgeIcon = React52.useCallback((card) => {
|
|
22617
|
+
if (card.avatarSrc) {
|
|
22618
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
|
|
22619
|
+
}
|
|
22620
|
+
if (card.icon) return card.icon;
|
|
22621
|
+
if (!card.iconName) return null;
|
|
22622
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.iconName, size: 24 });
|
|
22623
|
+
}, []);
|
|
22366
22624
|
const cardsContent = React52.useMemo(() => {
|
|
22367
22625
|
if (cardsSlot) return cardsSlot;
|
|
22368
22626
|
if (!cards || cards.length === 0) return null;
|
|
22369
22627
|
return cards.map((card, index) => {
|
|
22370
22628
|
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
22629
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22395
22630
|
Pressable,
|
|
22396
22631
|
{
|
|
@@ -22398,10 +22633,10 @@ function FeatureImageCardsThreeColumn({
|
|
|
22398
22633
|
onClick: card.onClick,
|
|
22399
22634
|
className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
|
|
22400
22635
|
children: [
|
|
22401
|
-
renderImage(),
|
|
22636
|
+
renderImage(card, imageAlt),
|
|
22402
22637
|
/* @__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
22638
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22404
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22639
|
+
(card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22405
22640
|
"span",
|
|
22406
22641
|
{
|
|
22407
22642
|
className: cn(
|
|
@@ -22410,7 +22645,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22410
22645
|
card.badgeClassName
|
|
22411
22646
|
),
|
|
22412
22647
|
children: [
|
|
22413
|
-
renderBadgeIcon(),
|
|
22648
|
+
renderBadgeIcon(card),
|
|
22414
22649
|
card.badgeText
|
|
22415
22650
|
]
|
|
22416
22651
|
}
|
|
@@ -22428,7 +22663,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22428
22663
|
index
|
|
22429
22664
|
);
|
|
22430
22665
|
});
|
|
22431
|
-
}, [cardsSlot, cards, cardClassName,
|
|
22666
|
+
}, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
|
|
22432
22667
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22433
22668
|
Section,
|
|
22434
22669
|
{
|
|
@@ -22465,11 +22700,11 @@ function FeatureIconGridMuted({
|
|
|
22465
22700
|
patternOpacity,
|
|
22466
22701
|
patternClassName
|
|
22467
22702
|
}) {
|
|
22468
|
-
const renderFeatureIcon = (feature) => {
|
|
22703
|
+
const renderFeatureIcon = React52.useCallback((feature) => {
|
|
22469
22704
|
if (feature.icon) return feature.icon;
|
|
22470
22705
|
if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
22471
22706
|
return null;
|
|
22472
|
-
};
|
|
22707
|
+
}, []);
|
|
22473
22708
|
const featuresContent = React52.useMemo(() => {
|
|
22474
22709
|
if (featuresSlot) return featuresSlot;
|
|
22475
22710
|
if (!features || features.length === 0) return null;
|
|
@@ -22478,14 +22713,14 @@ function FeatureIconGridMuted({
|
|
|
22478
22713
|
{
|
|
22479
22714
|
className: cn("flex flex-col gap-2.5 rounded-xl border bg-background p-7", cardClassName, feature.className),
|
|
22480
22715
|
children: [
|
|
22481
|
-
renderFeatureIcon(feature),
|
|
22716
|
+
(feature.icon || feature.iconName) && renderFeatureIcon(feature),
|
|
22482
22717
|
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
22718
|
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
22719
|
]
|
|
22485
22720
|
},
|
|
22486
22721
|
index
|
|
22487
22722
|
));
|
|
22488
|
-
}, [featuresSlot, features, cardClassName]);
|
|
22723
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
22489
22724
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22490
22725
|
Section,
|
|
22491
22726
|
{
|
|
@@ -22497,11 +22732,11 @@ function FeatureIconGridMuted({
|
|
|
22497
22732
|
className: cn("bg-muted/60", className),
|
|
22498
22733
|
containerClassName,
|
|
22499
22734
|
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: [
|
|
22735
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
|
|
22501
22736
|
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
22737
|
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
22738
|
] }),
|
|
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 })
|
|
22739
|
+
(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
22740
|
] })
|
|
22506
22741
|
}
|
|
22507
22742
|
);
|
|
@@ -22534,37 +22769,25 @@ function FeatureStatsHighlight({
|
|
|
22534
22769
|
if (actionsSlot) return actionsSlot;
|
|
22535
22770
|
if (!actions || actions.length === 0) return null;
|
|
22536
22771
|
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(
|
|
22772
|
+
const {
|
|
22773
|
+
label,
|
|
22774
|
+
icon,
|
|
22775
|
+
iconAfter,
|
|
22776
|
+
children,
|
|
22777
|
+
className: actionClassName,
|
|
22778
|
+
...pressableProps
|
|
22779
|
+
} = action;
|
|
22780
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22554
22781
|
Pressable,
|
|
22555
22782
|
{
|
|
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"],
|
|
22783
|
+
className: cn("mt-4 w-fit gap-2", actionClassName),
|
|
22562
22784
|
asButton: true,
|
|
22563
|
-
|
|
22564
|
-
|
|
22565
|
-
|
|
22566
|
-
|
|
22567
|
-
|
|
22785
|
+
...pressableProps,
|
|
22786
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22787
|
+
icon,
|
|
22788
|
+
label,
|
|
22789
|
+
iconAfter
|
|
22790
|
+
] })
|
|
22568
22791
|
},
|
|
22569
22792
|
index
|
|
22570
22793
|
);
|
|
@@ -22578,8 +22801,8 @@ function FeatureStatsHighlight({
|
|
|
22578
22801
|
{
|
|
22579
22802
|
className: cn("flex flex-col gap-2 rounded-xl border bg-muted/30 p-6", statCardClassName, stat.className),
|
|
22580
22803
|
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 })
|
|
22804
|
+
stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22805
|
+
stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22583
22806
|
]
|
|
22584
22807
|
},
|
|
22585
22808
|
index
|
|
@@ -22600,9 +22823,9 @@ function FeatureStatsHighlight({
|
|
|
22600
22823
|
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
|
|
22601
22824
|
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
22825
|
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 })
|
|
22826
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22604
22827
|
] }),
|
|
22605
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22828
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22606
22829
|
] })
|
|
22607
22830
|
}
|
|
22608
22831
|
);
|
|
@@ -22666,7 +22889,7 @@ function FeatureAccordionImage({
|
|
|
22666
22889
|
description,
|
|
22667
22890
|
items,
|
|
22668
22891
|
itemsSlot,
|
|
22669
|
-
defaultValue
|
|
22892
|
+
defaultValue,
|
|
22670
22893
|
className,
|
|
22671
22894
|
containerClassName,
|
|
22672
22895
|
headerClassName,
|
|
@@ -22683,24 +22906,25 @@ function FeatureAccordionImage({
|
|
|
22683
22906
|
patternOpacity,
|
|
22684
22907
|
patternClassName
|
|
22685
22908
|
}) {
|
|
22686
|
-
const [activeItem, setActiveItem] = React52__namespace.useState(defaultValue);
|
|
22909
|
+
const [activeItem, setActiveItem] = React52__namespace.useState(defaultValue || "item-0");
|
|
22687
22910
|
const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
|
|
22688
22911
|
const currentImage = items?.[activeIndex] || items?.[0];
|
|
22689
22912
|
const accordionItemsContent = React52.useMemo(() => {
|
|
22690
22913
|
if (itemsSlot) return itemsSlot;
|
|
22691
22914
|
if (!items || items.length === 0) return null;
|
|
22692
22915
|
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 })
|
|
22916
|
+
item.title && /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
|
|
22917
|
+
item.content && /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
|
|
22695
22918
|
] }, index));
|
|
22696
22919
|
}, [itemsSlot, items]);
|
|
22697
22920
|
const imageContent = React52.useMemo(() => {
|
|
22698
22921
|
if (currentImage?.imageSlot) return currentImage.imageSlot;
|
|
22922
|
+
if (!currentImage?.imageSrc) return null;
|
|
22699
22923
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22700
22924
|
img.Img,
|
|
22701
22925
|
{
|
|
22702
|
-
src: currentImage
|
|
22703
|
-
alt: currentImage
|
|
22926
|
+
src: currentImage.imageSrc,
|
|
22927
|
+
alt: currentImage.imageAlt || "",
|
|
22704
22928
|
className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
|
|
22705
22929
|
loading: "lazy",
|
|
22706
22930
|
optixFlowConfig
|
|
@@ -22718,11 +22942,11 @@ function FeatureAccordionImage({
|
|
|
22718
22942
|
className,
|
|
22719
22943
|
containerClassName,
|
|
22720
22944
|
children: [
|
|
22721
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22945
|
+
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22722
22946
|
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
22947
|
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
22948
|
] }),
|
|
22725
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22949
|
+
(itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22726
22950
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22727
22951
|
Accordion,
|
|
22728
22952
|
{
|
|
@@ -22757,49 +22981,52 @@ function FeatureCapabilitiesGrid({
|
|
|
22757
22981
|
patternOpacity,
|
|
22758
22982
|
patternClassName
|
|
22759
22983
|
}) {
|
|
22760
|
-
const renderItemIcon = (item) => {
|
|
22984
|
+
const renderItemIcon = React52__namespace.useCallback((item) => {
|
|
22761
22985
|
if (item.icon) return item.icon;
|
|
22762
22986
|
if (item.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
22763
|
-
return
|
|
22764
|
-
};
|
|
22987
|
+
return null;
|
|
22988
|
+
}, []);
|
|
22765
22989
|
const itemsContent = React52.useMemo(() => {
|
|
22766
22990
|
if (itemsSlot) return itemsSlot;
|
|
22767
22991
|
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
|
-
|
|
22992
|
+
return items.map((item, index) => {
|
|
22993
|
+
const iconContent = renderItemIcon(item);
|
|
22994
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22995
|
+
Card,
|
|
22996
|
+
{
|
|
22997
|
+
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),
|
|
22998
|
+
children: [
|
|
22999
|
+
/* @__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" }) }),
|
|
23000
|
+
/* @__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" }),
|
|
23001
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
|
|
23002
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
|
|
23003
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
|
|
23004
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
|
|
23005
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
|
|
23006
|
+
] }),
|
|
23007
|
+
/* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
|
|
23008
|
+
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 }),
|
|
23009
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
23010
|
+
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 })),
|
|
23011
|
+
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 })
|
|
23012
|
+
] }) })
|
|
23013
|
+
] }),
|
|
23014
|
+
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 }),
|
|
23015
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23016
|
+
framerMotion.motion.div,
|
|
23017
|
+
{
|
|
23018
|
+
className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
|
|
23019
|
+
initial: { opacity: 0 },
|
|
23020
|
+
whileHover: { opacity: 1 },
|
|
23021
|
+
transition: { duration: 0.25 }
|
|
23022
|
+
}
|
|
23023
|
+
)
|
|
23024
|
+
]
|
|
23025
|
+
},
|
|
23026
|
+
`${typeof item.title === "string" ? item.title : "item"}-${index}`
|
|
23027
|
+
);
|
|
23028
|
+
});
|
|
23029
|
+
}, [itemsSlot, items, cardClassName, renderItemIcon]);
|
|
22803
23030
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22804
23031
|
Section,
|
|
22805
23032
|
{
|
|
@@ -39411,7 +39638,7 @@ function CommunityInitiatives({
|
|
|
39411
39638
|
}
|
|
39412
39639
|
);
|
|
39413
39640
|
}
|
|
39414
|
-
var Controls = ({
|
|
39641
|
+
var Controls = React52__namespace.memo(({
|
|
39415
39642
|
handleNext,
|
|
39416
39643
|
handlePrevious,
|
|
39417
39644
|
isPreviousDisabled,
|
|
@@ -39439,9 +39666,9 @@ var Controls = ({
|
|
|
39439
39666
|
}
|
|
39440
39667
|
)
|
|
39441
39668
|
] });
|
|
39442
|
-
};
|
|
39443
|
-
var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
39444
|
-
const variants2 = {
|
|
39669
|
+
});
|
|
39670
|
+
var FeatureCard = React52__namespace.memo(({ feature, isActive, onClick }) => {
|
|
39671
|
+
const variants2 = React52.useMemo(() => ({
|
|
39445
39672
|
initial: {
|
|
39446
39673
|
opacity: 0
|
|
39447
39674
|
},
|
|
@@ -39451,7 +39678,7 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39451
39678
|
exit: {
|
|
39452
39679
|
opacity: 0
|
|
39453
39680
|
}
|
|
39454
|
-
};
|
|
39681
|
+
}), []);
|
|
39455
39682
|
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39456
39683
|
framerMotion.motion.div,
|
|
39457
39684
|
{
|
|
@@ -39481,13 +39708,13 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39481
39708
|
ease: "easeOut"
|
|
39482
39709
|
},
|
|
39483
39710
|
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: [
|
|
39711
|
+
children: (feature.title || feature.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
39712
|
+
feature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39486
39713
|
feature.title,
|
|
39487
39714
|
"."
|
|
39488
39715
|
] }),
|
|
39489
|
-
" ",
|
|
39490
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
|
|
39716
|
+
feature.title && feature.description && " ",
|
|
39717
|
+
feature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.description })
|
|
39491
39718
|
] })
|
|
39492
39719
|
},
|
|
39493
39720
|
`feature-description-active-${feature.title}`
|
|
@@ -39521,15 +39748,15 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39521
39748
|
className: "shrink-0"
|
|
39522
39749
|
}
|
|
39523
39750
|
),
|
|
39524
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39751
|
+
feature.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39525
39752
|
]
|
|
39526
39753
|
},
|
|
39527
39754
|
`feature-description-inactive-${feature.title}`
|
|
39528
39755
|
)
|
|
39529
39756
|
}
|
|
39530
39757
|
) });
|
|
39531
|
-
};
|
|
39532
|
-
var FeaturesDesktop = ({
|
|
39758
|
+
});
|
|
39759
|
+
var FeaturesDesktop = React52__namespace.memo(({
|
|
39533
39760
|
features,
|
|
39534
39761
|
handleNext,
|
|
39535
39762
|
handlePrevious,
|
|
@@ -39560,8 +39787,8 @@ var FeaturesDesktop = ({
|
|
|
39560
39787
|
);
|
|
39561
39788
|
}) })
|
|
39562
39789
|
] });
|
|
39563
|
-
};
|
|
39564
|
-
var FeaturesMobile = ({
|
|
39790
|
+
});
|
|
39791
|
+
var FeaturesMobile = React52__namespace.memo(({
|
|
39565
39792
|
features,
|
|
39566
39793
|
handleNext,
|
|
39567
39794
|
handlePrevious,
|
|
@@ -39570,7 +39797,7 @@ var FeaturesMobile = ({
|
|
|
39570
39797
|
isPreviousDisabled,
|
|
39571
39798
|
isNextDisabled
|
|
39572
39799
|
}) => {
|
|
39573
|
-
const variants2 = {
|
|
39800
|
+
const variants2 = React52.useMemo(() => ({
|
|
39574
39801
|
enter: (direction2) => ({
|
|
39575
39802
|
x: direction2 > 0 ? 100 : -100,
|
|
39576
39803
|
opacity: 0
|
|
@@ -39583,7 +39810,8 @@ var FeaturesMobile = ({
|
|
|
39583
39810
|
x: direction2 < 0 ? 100 : -100,
|
|
39584
39811
|
opacity: 0
|
|
39585
39812
|
})
|
|
39586
|
-
};
|
|
39813
|
+
}), []);
|
|
39814
|
+
const currentFeature = features[activeIndex];
|
|
39587
39815
|
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
39816
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39589
39817
|
"button",
|
|
@@ -39608,13 +39836,13 @@ var FeaturesMobile = ({
|
|
|
39608
39836
|
opacity: { duration: 0.2 }
|
|
39609
39837
|
},
|
|
39610
39838
|
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
|
-
|
|
39839
|
+
children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-center text-sm", children: [
|
|
39840
|
+
currentFeature.title && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
|
|
39841
|
+
currentFeature.title,
|
|
39614
39842
|
"."
|
|
39615
39843
|
] }),
|
|
39616
|
-
" ",
|
|
39617
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
39844
|
+
currentFeature.title && currentFeature.description && " ",
|
|
39845
|
+
currentFeature.description && /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentFeature.description })
|
|
39618
39846
|
] })
|
|
39619
39847
|
},
|
|
39620
39848
|
activeIndex
|
|
@@ -39630,9 +39858,9 @@ var FeaturesMobile = ({
|
|
|
39630
39858
|
}
|
|
39631
39859
|
)
|
|
39632
39860
|
] }) });
|
|
39633
|
-
};
|
|
39861
|
+
});
|
|
39634
39862
|
function FeatureAnimatedCarousel({
|
|
39635
|
-
features
|
|
39863
|
+
features,
|
|
39636
39864
|
className,
|
|
39637
39865
|
optixFlowConfig,
|
|
39638
39866
|
background,
|
|
@@ -39643,25 +39871,25 @@ function FeatureAnimatedCarousel({
|
|
|
39643
39871
|
}) {
|
|
39644
39872
|
const [activeIndex, setActiveIndex] = React52__namespace.useState(0);
|
|
39645
39873
|
const [direction, setDirection] = React52__namespace.useState(1);
|
|
39646
|
-
const handleNext = () => {
|
|
39647
|
-
if (activeIndex < features.length - 1) {
|
|
39874
|
+
const handleNext = React52.useCallback(() => {
|
|
39875
|
+
if (features && activeIndex < features.length - 1) {
|
|
39648
39876
|
setDirection(1);
|
|
39649
39877
|
setActiveIndex(activeIndex + 1);
|
|
39650
39878
|
}
|
|
39651
|
-
};
|
|
39652
|
-
const handlePrevious = () => {
|
|
39879
|
+
}, [activeIndex, features]);
|
|
39880
|
+
const handlePrevious = React52.useCallback(() => {
|
|
39653
39881
|
if (activeIndex > 0) {
|
|
39654
39882
|
setDirection(-1);
|
|
39655
39883
|
setActiveIndex(activeIndex - 1);
|
|
39656
39884
|
}
|
|
39657
|
-
};
|
|
39658
|
-
const handleFeatureClick = (index) => {
|
|
39885
|
+
}, [activeIndex]);
|
|
39886
|
+
const handleFeatureClick = React52.useCallback((index) => {
|
|
39659
39887
|
setDirection(index > activeIndex ? 1 : -1);
|
|
39660
39888
|
setActiveIndex(index);
|
|
39661
|
-
};
|
|
39889
|
+
}, [activeIndex]);
|
|
39662
39890
|
const isPreviousDisabled = activeIndex === 0;
|
|
39663
|
-
const isNextDisabled = activeIndex === features.length - 1;
|
|
39664
|
-
const imageVariants = {
|
|
39891
|
+
const isNextDisabled = !features || activeIndex === features.length - 1;
|
|
39892
|
+
const imageVariants = React52.useMemo(() => ({
|
|
39665
39893
|
enter: (direction2) => ({
|
|
39666
39894
|
x: direction2 > 0 ? 300 : -300,
|
|
39667
39895
|
opacity: 0
|
|
@@ -39674,7 +39902,22 @@ function FeatureAnimatedCarousel({
|
|
|
39674
39902
|
x: direction2 < 0 ? 300 : -300,
|
|
39675
39903
|
opacity: 0
|
|
39676
39904
|
})
|
|
39677
|
-
};
|
|
39905
|
+
}), []);
|
|
39906
|
+
if (!features || features.length === 0) {
|
|
39907
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39908
|
+
Section,
|
|
39909
|
+
{
|
|
39910
|
+
background,
|
|
39911
|
+
spacing,
|
|
39912
|
+
pattern,
|
|
39913
|
+
patternOpacity,
|
|
39914
|
+
patternClassName,
|
|
39915
|
+
className,
|
|
39916
|
+
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]" })
|
|
39917
|
+
}
|
|
39918
|
+
);
|
|
39919
|
+
}
|
|
39920
|
+
const currentFeature = features[activeIndex];
|
|
39678
39921
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39679
39922
|
Section,
|
|
39680
39923
|
{
|
|
@@ -39685,7 +39928,7 @@ function FeatureAnimatedCarousel({
|
|
|
39685
39928
|
patternClassName,
|
|
39686
39929
|
className,
|
|
39687
39930
|
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
|
-
|
|
39931
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39689
39932
|
FeaturesDesktop,
|
|
39690
39933
|
{
|
|
39691
39934
|
features,
|
|
@@ -39697,7 +39940,7 @@ function FeatureAnimatedCarousel({
|
|
|
39697
39940
|
isNextDisabled
|
|
39698
39941
|
}
|
|
39699
39942
|
),
|
|
39700
|
-
|
|
39943
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39701
39944
|
FeaturesMobile,
|
|
39702
39945
|
{
|
|
39703
39946
|
features,
|
|
@@ -39709,7 +39952,7 @@ function FeatureAnimatedCarousel({
|
|
|
39709
39952
|
isNextDisabled
|
|
39710
39953
|
}
|
|
39711
39954
|
),
|
|
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(
|
|
39955
|
+
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
39956
|
framerMotion.motion.div,
|
|
39714
39957
|
{
|
|
39715
39958
|
custom: direction,
|
|
@@ -39725,8 +39968,8 @@ function FeatureAnimatedCarousel({
|
|
|
39725
39968
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39726
39969
|
img.Img,
|
|
39727
39970
|
{
|
|
39728
|
-
src:
|
|
39729
|
-
alt:
|
|
39971
|
+
src: currentFeature.image,
|
|
39972
|
+
alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
|
|
39730
39973
|
className: "h-full w-full object-cover",
|
|
39731
39974
|
optixFlowConfig
|
|
39732
39975
|
}
|
|
@@ -62340,22 +62583,29 @@ var NavbarTabbedSections = ({
|
|
|
62340
62583
|
]
|
|
62341
62584
|
}
|
|
62342
62585
|
) }),
|
|
62343
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62344
|
-
|
|
62345
|
-
|
|
62346
|
-
|
|
62347
|
-
|
|
62348
|
-
|
|
62349
|
-
{
|
|
62350
|
-
|
|
62351
|
-
|
|
62352
|
-
|
|
62353
|
-
|
|
62354
|
-
|
|
62355
|
-
|
|
62356
|
-
|
|
62357
|
-
|
|
62358
|
-
|
|
62586
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62587
|
+
SheetContent,
|
|
62588
|
+
{
|
|
62589
|
+
side: "right",
|
|
62590
|
+
className: "w-[300px] overflow-y-auto",
|
|
62591
|
+
children: [
|
|
62592
|
+
/* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }),
|
|
62593
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 pt-8", children: [
|
|
62594
|
+
renderMobileMenu,
|
|
62595
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62596
|
+
"div",
|
|
62597
|
+
{
|
|
62598
|
+
className: cn(
|
|
62599
|
+
"mt-4 flex flex-col gap-2 border-t pt-4",
|
|
62600
|
+
actionsClassName
|
|
62601
|
+
),
|
|
62602
|
+
children: renderAuthActions
|
|
62603
|
+
}
|
|
62604
|
+
)
|
|
62605
|
+
] })
|
|
62606
|
+
]
|
|
62607
|
+
}
|
|
62608
|
+
)
|
|
62359
62609
|
] })
|
|
62360
62610
|
]
|
|
62361
62611
|
}
|
|
@@ -77314,7 +77564,7 @@ function ListSearchableGrid({
|
|
|
77314
77564
|
}
|
|
77315
77565
|
);
|
|
77316
77566
|
}
|
|
77317
|
-
var { useMemo:
|
|
77567
|
+
var { useMemo: useMemo443 } = React52__namespace;
|
|
77318
77568
|
function OfferModalNewsletterDiscount({
|
|
77319
77569
|
title,
|
|
77320
77570
|
emailPlaceholder,
|
|
@@ -77381,7 +77631,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77381
77631
|
});
|
|
77382
77632
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77383
77633
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77384
|
-
const renderCloseButton =
|
|
77634
|
+
const renderCloseButton = useMemo443(() => {
|
|
77385
77635
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77386
77636
|
if (!closeButtonText) return null;
|
|
77387
77637
|
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 +77645,12 @@ function OfferModalNewsletterDiscount({
|
|
|
77395
77645
|
}
|
|
77396
77646
|
) }) });
|
|
77397
77647
|
}, [closeButtonSlot, closeButtonText, closeClassName]);
|
|
77398
|
-
const renderHeader =
|
|
77648
|
+
const renderHeader = useMemo443(() => {
|
|
77399
77649
|
if (headerSlot) return headerSlot;
|
|
77400
77650
|
if (!title) return null;
|
|
77401
77651
|
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
77652
|
}, [headerSlot, title, headerClassName, titleClassName]);
|
|
77403
|
-
const renderForm =
|
|
77653
|
+
const renderForm = useMemo443(() => {
|
|
77404
77654
|
if (formSlot) return formSlot;
|
|
77405
77655
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
77406
77656
|
forms.Form,
|
|
@@ -77462,7 +77712,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77462
77712
|
}
|
|
77463
77713
|
) });
|
|
77464
77714
|
}
|
|
77465
|
-
var { useMemo:
|
|
77715
|
+
var { useMemo: useMemo444 } = React52__namespace;
|
|
77466
77716
|
function OfferModalMembershipImage({
|
|
77467
77717
|
overline,
|
|
77468
77718
|
title,
|
|
@@ -77538,7 +77788,7 @@ function OfferModalMembershipImage({
|
|
|
77538
77788
|
});
|
|
77539
77789
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77540
77790
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77541
|
-
const renderImage =
|
|
77791
|
+
const renderImage = useMemo444(() => {
|
|
77542
77792
|
if (imageSlot) return imageSlot;
|
|
77543
77793
|
if (!image) return null;
|
|
77544
77794
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -77551,7 +77801,7 @@ function OfferModalMembershipImage({
|
|
|
77551
77801
|
}
|
|
77552
77802
|
) });
|
|
77553
77803
|
}, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
|
|
77554
|
-
const renderCloseButton =
|
|
77804
|
+
const renderCloseButton = useMemo444(() => {
|
|
77555
77805
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77556
77806
|
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
77807
|
Pressable,
|
|
@@ -77567,7 +77817,7 @@ function OfferModalMembershipImage({
|
|
|
77567
77817
|
}
|
|
77568
77818
|
) }) });
|
|
77569
77819
|
}, [closeButtonSlot, closeClassName]);
|
|
77570
|
-
const renderForm =
|
|
77820
|
+
const renderForm = useMemo444(() => {
|
|
77571
77821
|
if (formSlot) return formSlot;
|
|
77572
77822
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
77573
77823
|
forms.Form,
|
|
@@ -77630,7 +77880,7 @@ function OfferModalMembershipImage({
|
|
|
77630
77880
|
}
|
|
77631
77881
|
);
|
|
77632
77882
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77633
|
-
const renderFooter =
|
|
77883
|
+
const renderFooter = useMemo444(() => {
|
|
77634
77884
|
if (footerSlot) return footerSlot;
|
|
77635
77885
|
if (!description) return null;
|
|
77636
77886
|
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 +77908,7 @@ function OfferModalMembershipImage({
|
|
|
77658
77908
|
}
|
|
77659
77909
|
) });
|
|
77660
77910
|
}
|
|
77661
|
-
var { useMemo:
|
|
77911
|
+
var { useMemo: useMemo445 } = React52__namespace;
|
|
77662
77912
|
function OfferModalSheetNewsletter({
|
|
77663
77913
|
logo,
|
|
77664
77914
|
logoSlot,
|
|
@@ -77740,7 +77990,7 @@ function OfferModalSheetNewsletter({
|
|
|
77740
77990
|
});
|
|
77741
77991
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77742
77992
|
const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77743
|
-
const renderLogo =
|
|
77993
|
+
const renderLogo = useMemo445(() => {
|
|
77744
77994
|
if (logoSlot) return logoSlot;
|
|
77745
77995
|
if (!logo) return null;
|
|
77746
77996
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
@@ -77754,7 +78004,7 @@ function OfferModalSheetNewsletter({
|
|
|
77754
78004
|
}
|
|
77755
78005
|
);
|
|
77756
78006
|
}, [logoSlot, logo, logoClassName, optixFlowConfig]);
|
|
77757
|
-
const renderHeader =
|
|
78007
|
+
const renderHeader = useMemo445(() => {
|
|
77758
78008
|
if (headerSlot) return headerSlot;
|
|
77759
78009
|
return /* @__PURE__ */ jsxRuntime.jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
|
|
77760
78010
|
renderLogo,
|
|
@@ -77764,7 +78014,7 @@ function OfferModalSheetNewsletter({
|
|
|
77764
78014
|
] })
|
|
77765
78015
|
] });
|
|
77766
78016
|
}, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
|
|
77767
|
-
const renderForm =
|
|
78017
|
+
const renderForm = useMemo445(() => {
|
|
77768
78018
|
if (formSlot) return formSlot;
|
|
77769
78019
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
77770
78020
|
forms.Form,
|
|
@@ -77812,7 +78062,7 @@ function OfferModalSheetNewsletter({
|
|
|
77812
78062
|
}
|
|
77813
78063
|
);
|
|
77814
78064
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77815
|
-
const renderLegal =
|
|
78065
|
+
const renderLegal = useMemo445(() => {
|
|
77816
78066
|
if (legalSlot) return legalSlot;
|
|
77817
78067
|
if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
|
|
77818
78068
|
return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
|
|
@@ -77826,7 +78076,7 @@ function OfferModalSheetNewsletter({
|
|
|
77826
78076
|
"."
|
|
77827
78077
|
] });
|
|
77828
78078
|
}, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
|
|
77829
|
-
const renderImage =
|
|
78079
|
+
const renderImage = useMemo445(() => {
|
|
77830
78080
|
if (imageSlot) return imageSlot;
|
|
77831
78081
|
if (!image) return null;
|
|
77832
78082
|
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(
|