@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.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React52 from 'react';
|
|
2
|
-
import React52__default, { Fragment, createContext,
|
|
2
|
+
import React52__default, { Fragment, createContext, useMemo as useMemo$1, forwardRef, useState, useCallback, useRef, useEffect, startTransition, useContext } from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
6
6
|
import { Img } from '@page-speed/img';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
|
-
import {
|
|
8
|
+
import { AnimatePresence, motion, useMotionValue, useMotionTemplate, useSpring, useTransform, useInView, useScroll, useMotionValueEvent } from 'framer-motion';
|
|
9
9
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
10
10
|
import { useForm, Form, Field } from '@page-speed/forms';
|
|
11
11
|
import { TextInput as TextInput$1, Select, TextArea as TextArea$1, Radio } from '@page-speed/forms/inputs';
|
|
@@ -18645,19 +18645,21 @@ function CarouselHorizontalCards({
|
|
|
18645
18645
|
"div",
|
|
18646
18646
|
{
|
|
18647
18647
|
className: cn(
|
|
18648
|
-
"flex flex-row justify-start gap-
|
|
18648
|
+
"flex flex-row justify-start gap-2",
|
|
18649
18649
|
carouselClassName
|
|
18650
18650
|
),
|
|
18651
18651
|
children: [
|
|
18652
18652
|
items?.map((item, index) => /* @__PURE__ */ jsx(
|
|
18653
18653
|
motion.div,
|
|
18654
18654
|
{
|
|
18655
|
-
className: cn(
|
|
18656
|
-
"rounded-lg last:pr-[5%] md:last:pr-[33%]"
|
|
18657
|
-
),
|
|
18655
|
+
className: cn("rounded-lg last:pr-[5%] md:last:pr-[33%]"),
|
|
18658
18656
|
initial: { opacity: 0, y: 20 },
|
|
18659
18657
|
animate: { opacity: 1, y: 0 },
|
|
18660
|
-
transition: {
|
|
18658
|
+
transition: {
|
|
18659
|
+
duration: 0.5,
|
|
18660
|
+
delay: 0.2 * index,
|
|
18661
|
+
ease: "easeOut"
|
|
18662
|
+
},
|
|
18661
18663
|
children: /* @__PURE__ */ jsx(
|
|
18662
18664
|
"div",
|
|
18663
18665
|
{
|
|
@@ -18729,7 +18731,7 @@ function CarouselHorizontalCards({
|
|
|
18729
18731
|
onNext: scrollRight,
|
|
18730
18732
|
canScrollPrevious: !isAtStart,
|
|
18731
18733
|
canScrollNext: !isAtEnd,
|
|
18732
|
-
className: cn("mr-0
|
|
18734
|
+
className: cn("mr-0", navigationClassName)
|
|
18733
18735
|
}
|
|
18734
18736
|
)
|
|
18735
18737
|
] })
|
|
@@ -18744,43 +18746,57 @@ function CarouselImageHero({
|
|
|
18744
18746
|
actions,
|
|
18745
18747
|
actionsSlot,
|
|
18746
18748
|
images,
|
|
18747
|
-
autoPlayInterval =
|
|
18749
|
+
autoPlayInterval = 7500,
|
|
18748
18750
|
className,
|
|
18749
|
-
containerClassName,
|
|
18751
|
+
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",
|
|
18750
18752
|
contentClassName,
|
|
18751
18753
|
badgeClassName,
|
|
18752
18754
|
headingClassName,
|
|
18753
18755
|
descriptionClassName,
|
|
18754
18756
|
actionsClassName,
|
|
18755
18757
|
imageClassName,
|
|
18756
|
-
navigationClassName,
|
|
18757
18758
|
indicatorsClassName,
|
|
18758
18759
|
optixFlowConfig,
|
|
18759
|
-
background
|
|
18760
|
-
spacing = "
|
|
18760
|
+
background,
|
|
18761
|
+
spacing = "py-0 md:py-32",
|
|
18761
18762
|
pattern,
|
|
18762
18763
|
patternOpacity
|
|
18763
18764
|
}) {
|
|
18764
18765
|
const [currentImageIndex, setCurrentImageIndex] = React52.useState(0);
|
|
18765
|
-
React52.
|
|
18766
|
-
|
|
18767
|
-
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
18768
|
-
}, autoPlayInterval);
|
|
18769
|
-
return () => clearInterval(interval);
|
|
18770
|
-
}, [images?.length, autoPlayInterval]);
|
|
18771
|
-
const goToNextImage = () => {
|
|
18766
|
+
const intervalRef = React52.useRef(null);
|
|
18767
|
+
const goToNext = React52.useCallback(() => {
|
|
18772
18768
|
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
18773
|
-
};
|
|
18774
|
-
const
|
|
18775
|
-
|
|
18776
|
-
(
|
|
18777
|
-
|
|
18778
|
-
|
|
18769
|
+
}, [images?.length]);
|
|
18770
|
+
const resetInterval = React52.useCallback(() => {
|
|
18771
|
+
if (intervalRef.current) {
|
|
18772
|
+
clearInterval(intervalRef.current);
|
|
18773
|
+
}
|
|
18774
|
+
intervalRef.current = setInterval(goToNext, autoPlayInterval);
|
|
18775
|
+
}, [goToNext, autoPlayInterval]);
|
|
18776
|
+
const goToSlide = React52.useCallback((index) => {
|
|
18777
|
+
setCurrentImageIndex(index);
|
|
18778
|
+
resetInterval();
|
|
18779
|
+
}, [resetInterval]);
|
|
18780
|
+
React52.useEffect(() => {
|
|
18781
|
+
resetInterval();
|
|
18782
|
+
return () => {
|
|
18783
|
+
if (intervalRef.current) {
|
|
18784
|
+
clearInterval(intervalRef.current);
|
|
18785
|
+
}
|
|
18786
|
+
};
|
|
18787
|
+
}, [resetInterval]);
|
|
18779
18788
|
const renderActions = () => {
|
|
18780
18789
|
if (actionsSlot) return actionsSlot;
|
|
18781
18790
|
if (!actions || actions.length === 0) return null;
|
|
18782
18791
|
return actions.map((action, index) => {
|
|
18783
|
-
const {
|
|
18792
|
+
const {
|
|
18793
|
+
label,
|
|
18794
|
+
icon,
|
|
18795
|
+
iconAfter,
|
|
18796
|
+
children,
|
|
18797
|
+
className: actionClassName,
|
|
18798
|
+
...pressableProps
|
|
18799
|
+
} = action;
|
|
18784
18800
|
return /* @__PURE__ */ jsx(
|
|
18785
18801
|
Pressable,
|
|
18786
18802
|
{
|
|
@@ -18802,11 +18818,15 @@ function CarouselImageHero({
|
|
|
18802
18818
|
{
|
|
18803
18819
|
background,
|
|
18804
18820
|
spacing,
|
|
18805
|
-
className: cn(
|
|
18821
|
+
className: cn(
|
|
18822
|
+
"relative min-h-screen md:min-h-[600px] overflow-hidden",
|
|
18823
|
+
className
|
|
18824
|
+
),
|
|
18806
18825
|
pattern,
|
|
18807
18826
|
patternOpacity,
|
|
18827
|
+
containerClassName,
|
|
18808
18828
|
children: [
|
|
18809
|
-
/* @__PURE__ */ jsxs("div", { className: cn("absolute inset-0", imageClassName), children: [
|
|
18829
|
+
/* @__PURE__ */ jsxs("div", { className: cn("absolute inset-0 bg-black", imageClassName), children: [
|
|
18810
18830
|
images?.map((image, index) => /* @__PURE__ */ jsxs(
|
|
18811
18831
|
"div",
|
|
18812
18832
|
{
|
|
@@ -18830,50 +18850,79 @@ function CarouselImageHero({
|
|
|
18830
18850
|
index
|
|
18831
18851
|
)),
|
|
18832
18852
|
/* @__PURE__ */ jsx(
|
|
18833
|
-
|
|
18834
|
-
{
|
|
18835
|
-
onClick: goToPreviousImage,
|
|
18836
|
-
asButton: true,
|
|
18837
|
-
variant: "ghost",
|
|
18838
|
-
size: "icon",
|
|
18839
|
-
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),
|
|
18840
|
-
"aria-label": "Previous image",
|
|
18841
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24, className: "text-white" })
|
|
18842
|
-
}
|
|
18843
|
-
),
|
|
18844
|
-
/* @__PURE__ */ jsx(
|
|
18845
|
-
Pressable,
|
|
18846
|
-
{
|
|
18847
|
-
onClick: goToNextImage,
|
|
18848
|
-
asButton: true,
|
|
18849
|
-
variant: "ghost",
|
|
18850
|
-
size: "icon",
|
|
18851
|
-
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),
|
|
18852
|
-
"aria-label": "Next image",
|
|
18853
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24, className: "text-white" })
|
|
18854
|
-
}
|
|
18855
|
-
),
|
|
18856
|
-
/* @__PURE__ */ 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__ */ jsx(
|
|
18857
|
-
"button",
|
|
18853
|
+
"div",
|
|
18858
18854
|
{
|
|
18859
|
-
onClick: () => setCurrentImageIndex(index),
|
|
18860
18855
|
className: cn(
|
|
18861
|
-
"
|
|
18862
|
-
|
|
18856
|
+
"absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3",
|
|
18857
|
+
indicatorsClassName
|
|
18863
18858
|
),
|
|
18864
|
-
|
|
18865
|
-
|
|
18866
|
-
|
|
18867
|
-
|
|
18859
|
+
children: images?.map((_, index) => /* @__PURE__ */ jsx(
|
|
18860
|
+
"button",
|
|
18861
|
+
{
|
|
18862
|
+
onClick: () => goToSlide(index),
|
|
18863
|
+
className: cn(
|
|
18864
|
+
"flex h-4 w-4 items-center justify-center rounded-full transition-colors",
|
|
18865
|
+
index === currentImageIndex ? "bg-white" : "bg-white/50 hover:bg-white/80"
|
|
18866
|
+
),
|
|
18867
|
+
"aria-label": `Go to image ${index + 1}`
|
|
18868
|
+
},
|
|
18869
|
+
index
|
|
18870
|
+
))
|
|
18871
|
+
}
|
|
18872
|
+
)
|
|
18868
18873
|
] }),
|
|
18869
|
-
/* @__PURE__ */ jsx(
|
|
18870
|
-
|
|
18871
|
-
|
|
18872
|
-
|
|
18873
|
-
|
|
18874
|
-
|
|
18875
|
-
|
|
18876
|
-
|
|
18874
|
+
/* @__PURE__ */ jsx(
|
|
18875
|
+
"div",
|
|
18876
|
+
{
|
|
18877
|
+
className: cn(
|
|
18878
|
+
"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"
|
|
18879
|
+
),
|
|
18880
|
+
children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl space-y-6", contentClassName), children: [
|
|
18881
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
18882
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(
|
|
18883
|
+
"div",
|
|
18884
|
+
{
|
|
18885
|
+
className: cn(
|
|
18886
|
+
"inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-sm font-medium text-white backdrop-blur-sm",
|
|
18887
|
+
badgeClassName
|
|
18888
|
+
),
|
|
18889
|
+
children: /* @__PURE__ */ jsx("span", { children: badge })
|
|
18890
|
+
}
|
|
18891
|
+
) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badge })),
|
|
18892
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
18893
|
+
"h1",
|
|
18894
|
+
{
|
|
18895
|
+
className: cn(
|
|
18896
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
18897
|
+
headingClassName
|
|
18898
|
+
),
|
|
18899
|
+
children: heading
|
|
18900
|
+
}
|
|
18901
|
+
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
18902
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
18903
|
+
"p",
|
|
18904
|
+
{
|
|
18905
|
+
className: cn(
|
|
18906
|
+
"text-xl text-balance text-shadow",
|
|
18907
|
+
descriptionClassName
|
|
18908
|
+
),
|
|
18909
|
+
children: description
|
|
18910
|
+
}
|
|
18911
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
18912
|
+
] }),
|
|
18913
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
|
|
18914
|
+
"div",
|
|
18915
|
+
{
|
|
18916
|
+
className: cn(
|
|
18917
|
+
"flex flex-col justify-center gap-4 sm:flex-row",
|
|
18918
|
+
actionsClassName
|
|
18919
|
+
),
|
|
18920
|
+
children: renderActions()
|
|
18921
|
+
}
|
|
18922
|
+
)
|
|
18923
|
+
] })
|
|
18924
|
+
}
|
|
18925
|
+
)
|
|
18877
18926
|
]
|
|
18878
18927
|
}
|
|
18879
18928
|
);
|
|
@@ -19177,7 +19226,7 @@ function CarouselPortfolioHero({
|
|
|
19177
19226
|
actionsSlot,
|
|
19178
19227
|
autoPlayInterval = 5e3,
|
|
19179
19228
|
className,
|
|
19180
|
-
containerClassName,
|
|
19229
|
+
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",
|
|
19181
19230
|
contentClassName,
|
|
19182
19231
|
tagClassName,
|
|
19183
19232
|
titleClassName,
|
|
@@ -19193,23 +19242,45 @@ function CarouselPortfolioHero({
|
|
|
19193
19242
|
slideMediaBrightness = "50"
|
|
19194
19243
|
}) {
|
|
19195
19244
|
const [currentIndex, setCurrentIndex] = React52.useState(0);
|
|
19245
|
+
const intervalRef = React52.useRef(null);
|
|
19246
|
+
const resetInterval = React52.useCallback(() => {
|
|
19247
|
+
if (intervalRef.current) {
|
|
19248
|
+
clearInterval(intervalRef.current);
|
|
19249
|
+
}
|
|
19250
|
+
intervalRef.current = setInterval(() => {
|
|
19251
|
+
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19252
|
+
}, autoPlayInterval);
|
|
19253
|
+
}, [autoPlayInterval, slides?.length]);
|
|
19196
19254
|
const goToNext = React52.useCallback(() => {
|
|
19197
19255
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19198
|
-
|
|
19256
|
+
resetInterval();
|
|
19257
|
+
}, [slides?.length, resetInterval]);
|
|
19199
19258
|
const goToPrev = React52.useCallback(() => {
|
|
19200
19259
|
setCurrentIndex(
|
|
19201
19260
|
(prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
|
|
19202
19261
|
);
|
|
19203
|
-
|
|
19262
|
+
resetInterval();
|
|
19263
|
+
}, [slides?.length, resetInterval]);
|
|
19204
19264
|
React52.useEffect(() => {
|
|
19205
|
-
|
|
19206
|
-
return () =>
|
|
19207
|
-
|
|
19265
|
+
resetInterval();
|
|
19266
|
+
return () => {
|
|
19267
|
+
if (intervalRef.current) {
|
|
19268
|
+
clearInterval(intervalRef.current);
|
|
19269
|
+
}
|
|
19270
|
+
};
|
|
19271
|
+
}, [resetInterval]);
|
|
19208
19272
|
const renderActions = () => {
|
|
19209
19273
|
if (actionsSlot) return actionsSlot;
|
|
19210
19274
|
if (!actions || actions.length === 0) return null;
|
|
19211
19275
|
return actions.map((action, index) => {
|
|
19212
|
-
const {
|
|
19276
|
+
const {
|
|
19277
|
+
label,
|
|
19278
|
+
icon,
|
|
19279
|
+
iconAfter,
|
|
19280
|
+
children,
|
|
19281
|
+
className: actionClassName,
|
|
19282
|
+
...pressableProps
|
|
19283
|
+
} = action;
|
|
19213
19284
|
return /* @__PURE__ */ jsx(
|
|
19214
19285
|
Pressable,
|
|
19215
19286
|
{
|
|
@@ -19235,6 +19306,7 @@ function CarouselPortfolioHero({
|
|
|
19235
19306
|
className: cn("relative h-screen w-full overflow-hidden", className),
|
|
19236
19307
|
pattern,
|
|
19237
19308
|
patternOpacity,
|
|
19309
|
+
containerClassName,
|
|
19238
19310
|
children: [
|
|
19239
19311
|
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsx(
|
|
19240
19312
|
"div",
|
|
@@ -19260,43 +19332,99 @@ function CarouselPortfolioHero({
|
|
|
19260
19332
|
},
|
|
19261
19333
|
slide.id
|
|
19262
19334
|
)),
|
|
19263
|
-
/* @__PURE__ */ jsx(
|
|
19264
|
-
|
|
19265
|
-
|
|
19266
|
-
|
|
19267
|
-
|
|
19268
|
-
|
|
19269
|
-
/* @__PURE__ */ jsxs("div", { className: cn("
|
|
19270
|
-
/* @__PURE__ */ jsx(
|
|
19271
|
-
|
|
19335
|
+
/* @__PURE__ */ jsx(
|
|
19336
|
+
"div",
|
|
19337
|
+
{
|
|
19338
|
+
className: cn(
|
|
19339
|
+
"relative z-10 flex h-full w-full flex-col justify-end px-6 pb-16 text-white md:px-8 lg:px-12"
|
|
19340
|
+
),
|
|
19341
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl", contentClassName), children: [
|
|
19342
|
+
currentSlide?.tag && /* @__PURE__ */ jsx("div", { className: "mb-4", children: typeof currentSlide.tag === "string" ? /* @__PURE__ */ jsx(
|
|
19343
|
+
"span",
|
|
19272
19344
|
{
|
|
19273
|
-
|
|
19274
|
-
|
|
19275
|
-
|
|
19276
|
-
|
|
19277
|
-
|
|
19278
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19345
|
+
className: cn(
|
|
19346
|
+
"inline-block rounded-full bg-primary px-3 py-1 text-sm font-medium",
|
|
19347
|
+
tagClassName
|
|
19348
|
+
),
|
|
19349
|
+
children: currentSlide.tag
|
|
19279
19350
|
}
|
|
19280
|
-
),
|
|
19281
|
-
/* @__PURE__ */ jsx(
|
|
19282
|
-
|
|
19351
|
+
) : /* @__PURE__ */ jsx("div", { className: tagClassName, children: currentSlide.tag }) }),
|
|
19352
|
+
currentSlide?.title && (typeof currentSlide.title === "string" ? /* @__PURE__ */ jsx(
|
|
19353
|
+
"h1",
|
|
19283
19354
|
{
|
|
19284
|
-
|
|
19285
|
-
|
|
19286
|
-
|
|
19287
|
-
|
|
19288
|
-
|
|
19289
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19355
|
+
className: cn(
|
|
19356
|
+
"text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
|
|
19357
|
+
titleClassName
|
|
19358
|
+
),
|
|
19359
|
+
children: currentSlide.title
|
|
19290
19360
|
}
|
|
19291
|
-
),
|
|
19292
|
-
|
|
19293
|
-
|
|
19294
|
-
|
|
19295
|
-
|
|
19296
|
-
|
|
19297
|
-
|
|
19298
|
-
|
|
19299
|
-
|
|
19361
|
+
) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: currentSlide.title })),
|
|
19362
|
+
currentSlide?.description && (typeof currentSlide.description === "string" ? /* @__PURE__ */ jsx(
|
|
19363
|
+
"p",
|
|
19364
|
+
{
|
|
19365
|
+
className: cn(
|
|
19366
|
+
"mt-4 text-lg text-white/80 sm:text-xl md:max-w-2xl text-balance text-shadow",
|
|
19367
|
+
descriptionClassName
|
|
19368
|
+
),
|
|
19369
|
+
children: currentSlide.description
|
|
19370
|
+
}
|
|
19371
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: currentSlide.description })),
|
|
19372
|
+
/* @__PURE__ */ jsxs(
|
|
19373
|
+
"div",
|
|
19374
|
+
{
|
|
19375
|
+
className: cn("mt-8 flex items-center gap-4", actionsClassName),
|
|
19376
|
+
children: [
|
|
19377
|
+
renderActions(),
|
|
19378
|
+
/* @__PURE__ */ jsxs(
|
|
19379
|
+
"div",
|
|
19380
|
+
{
|
|
19381
|
+
className: cn(
|
|
19382
|
+
"ml-auto flex items-center gap-2",
|
|
19383
|
+
navigationClassName
|
|
19384
|
+
),
|
|
19385
|
+
children: [
|
|
19386
|
+
/* @__PURE__ */ jsx(
|
|
19387
|
+
Pressable,
|
|
19388
|
+
{
|
|
19389
|
+
variant: "outline",
|
|
19390
|
+
size: "icon",
|
|
19391
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19392
|
+
onClick: goToPrev,
|
|
19393
|
+
asButton: true,
|
|
19394
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19395
|
+
}
|
|
19396
|
+
),
|
|
19397
|
+
/* @__PURE__ */ jsx(
|
|
19398
|
+
Pressable,
|
|
19399
|
+
{
|
|
19400
|
+
variant: "outline",
|
|
19401
|
+
size: "icon",
|
|
19402
|
+
className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
|
|
19403
|
+
onClick: goToNext,
|
|
19404
|
+
asButton: true,
|
|
19405
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19406
|
+
}
|
|
19407
|
+
),
|
|
19408
|
+
/* @__PURE__ */ jsxs(
|
|
19409
|
+
"div",
|
|
19410
|
+
{
|
|
19411
|
+
className: cn("ml-3 text-sm text-white/80", counterClassName),
|
|
19412
|
+
children: [
|
|
19413
|
+
currentIndex + 1,
|
|
19414
|
+
" / ",
|
|
19415
|
+
slides?.length ?? 0
|
|
19416
|
+
]
|
|
19417
|
+
}
|
|
19418
|
+
)
|
|
19419
|
+
]
|
|
19420
|
+
}
|
|
19421
|
+
)
|
|
19422
|
+
]
|
|
19423
|
+
}
|
|
19424
|
+
)
|
|
19425
|
+
] }) })
|
|
19426
|
+
}
|
|
19427
|
+
)
|
|
19300
19428
|
]
|
|
19301
19429
|
}
|
|
19302
19430
|
);
|
|
@@ -19320,8 +19448,8 @@ function CarouselProductFeatureShowcase({
|
|
|
19320
19448
|
actionsClassName,
|
|
19321
19449
|
indicatorsClassName,
|
|
19322
19450
|
optixFlowConfig,
|
|
19323
|
-
background
|
|
19324
|
-
spacing
|
|
19451
|
+
background,
|
|
19452
|
+
spacing,
|
|
19325
19453
|
pattern,
|
|
19326
19454
|
patternOpacity
|
|
19327
19455
|
}) {
|
|
@@ -19365,7 +19493,14 @@ function CarouselProductFeatureShowcase({
|
|
|
19365
19493
|
if (actionsSlot) return actionsSlot;
|
|
19366
19494
|
if (!actions || actions.length === 0) return null;
|
|
19367
19495
|
return /* @__PURE__ */ jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
|
|
19368
|
-
const {
|
|
19496
|
+
const {
|
|
19497
|
+
label,
|
|
19498
|
+
icon,
|
|
19499
|
+
iconAfter,
|
|
19500
|
+
children,
|
|
19501
|
+
className: actionClassName,
|
|
19502
|
+
...pressableProps
|
|
19503
|
+
} = action;
|
|
19369
19504
|
return /* @__PURE__ */ jsx(
|
|
19370
19505
|
Pressable,
|
|
19371
19506
|
{
|
|
@@ -19390,105 +19525,151 @@ function CarouselProductFeatureShowcase({
|
|
|
19390
19525
|
className: cn(className),
|
|
19391
19526
|
pattern,
|
|
19392
19527
|
patternOpacity,
|
|
19393
|
-
children: /* @__PURE__ */ jsxs("div", { className: cn("
|
|
19528
|
+
children: /* @__PURE__ */ jsxs("div", { className: cn("relative", containerClassName), children: [
|
|
19394
19529
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
19395
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
19396
|
-
|
|
19397
|
-
|
|
19398
|
-
|
|
19399
|
-
|
|
19400
|
-
|
|
19401
|
-
motion.div,
|
|
19402
|
-
{
|
|
19403
|
-
custom: direction,
|
|
19404
|
-
variants: slideVariants2,
|
|
19405
|
-
initial: "enter",
|
|
19406
|
-
animate: "center",
|
|
19407
|
-
exit: "exit",
|
|
19408
|
-
transition: { duration: 0.3, ease: "easeInOut" },
|
|
19409
|
-
className: cn("absolute inset-0", activeFeature?.imageClassName),
|
|
19410
|
-
children: /* @__PURE__ */ jsx(
|
|
19411
|
-
Img,
|
|
19412
|
-
{
|
|
19413
|
-
src: currentImage,
|
|
19414
|
-
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
19415
|
-
className: "h-full w-full object-cover",
|
|
19416
|
-
optixFlowConfig
|
|
19417
|
-
}
|
|
19418
|
-
)
|
|
19419
|
-
},
|
|
19420
|
-
`${activeIndex}-${activeColorIndex}`
|
|
19421
|
-
) }),
|
|
19422
|
-
/* @__PURE__ */ jsxs("div", { className: cn("absolute bottom-4 right-4 flex gap-2", navigationClassName), children: [
|
|
19423
|
-
/* @__PURE__ */ jsx(
|
|
19424
|
-
Pressable,
|
|
19425
|
-
{
|
|
19426
|
-
onClick: goToPrev,
|
|
19427
|
-
asButton: true,
|
|
19428
|
-
variant: "outline",
|
|
19429
|
-
size: "icon",
|
|
19430
|
-
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",
|
|
19431
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19432
|
-
}
|
|
19530
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
19531
|
+
"h2",
|
|
19532
|
+
{
|
|
19533
|
+
className: cn(
|
|
19534
|
+
"text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
|
|
19535
|
+
headingClassName
|
|
19433
19536
|
),
|
|
19434
|
-
|
|
19435
|
-
|
|
19537
|
+
children: heading
|
|
19538
|
+
}
|
|
19539
|
+
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
19540
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
|
|
19541
|
+
"p",
|
|
19542
|
+
{
|
|
19543
|
+
className: cn(
|
|
19544
|
+
"mt-4 text-lg text-muted-foreground",
|
|
19545
|
+
subheadingClassName
|
|
19546
|
+
),
|
|
19547
|
+
children: subheading
|
|
19548
|
+
}
|
|
19549
|
+
) : /* @__PURE__ */ jsx("div", { className: subheadingClassName, children: subheading }))
|
|
19550
|
+
] }),
|
|
19551
|
+
featuresSlot ? /* @__PURE__ */ jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxs(
|
|
19552
|
+
"div",
|
|
19553
|
+
{
|
|
19554
|
+
className: cn(
|
|
19555
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
19556
|
+
contentClassName
|
|
19557
|
+
),
|
|
19558
|
+
children: [
|
|
19559
|
+
/* @__PURE__ */ jsxs(
|
|
19560
|
+
"div",
|
|
19436
19561
|
{
|
|
19437
|
-
|
|
19438
|
-
|
|
19439
|
-
|
|
19440
|
-
|
|
19441
|
-
|
|
19442
|
-
|
|
19443
|
-
|
|
19444
|
-
)
|
|
19445
|
-
] })
|
|
19446
|
-
] }),
|
|
19447
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
19448
|
-
/* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
|
|
19449
|
-
motion.div,
|
|
19450
|
-
{
|
|
19451
|
-
initial: { opacity: 0, y: 20 },
|
|
19452
|
-
animate: { opacity: 1, y: 0 },
|
|
19453
|
-
exit: { opacity: 0, y: -20 },
|
|
19454
|
-
transition: { duration: 0.3 },
|
|
19455
|
-
children: [
|
|
19456
|
-
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsx("div", { children: activeFeature.title })),
|
|
19457
|
-
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
19458
|
-
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
19459
|
-
/* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
19460
|
-
/* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
|
|
19461
|
-
"button",
|
|
19562
|
+
className: cn(
|
|
19563
|
+
"relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
|
|
19564
|
+
imageClassName
|
|
19565
|
+
),
|
|
19566
|
+
children: [
|
|
19567
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsx(
|
|
19568
|
+
motion.div,
|
|
19462
19569
|
{
|
|
19463
|
-
|
|
19570
|
+
custom: direction,
|
|
19571
|
+
variants: slideVariants2,
|
|
19572
|
+
initial: "enter",
|
|
19573
|
+
animate: "center",
|
|
19574
|
+
exit: "exit",
|
|
19575
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
19464
19576
|
className: cn(
|
|
19465
|
-
"
|
|
19466
|
-
|
|
19577
|
+
"absolute inset-0",
|
|
19578
|
+
activeFeature?.imageClassName
|
|
19467
19579
|
),
|
|
19468
|
-
|
|
19469
|
-
|
|
19580
|
+
children: /* @__PURE__ */ jsx(
|
|
19581
|
+
Img,
|
|
19582
|
+
{
|
|
19583
|
+
src: currentImage,
|
|
19584
|
+
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
19585
|
+
className: "h-full w-full object-cover",
|
|
19586
|
+
optixFlowConfig
|
|
19587
|
+
}
|
|
19588
|
+
)
|
|
19470
19589
|
},
|
|
19471
|
-
|
|
19472
|
-
)
|
|
19473
|
-
|
|
19474
|
-
|
|
19475
|
-
|
|
19476
|
-
|
|
19477
|
-
|
|
19478
|
-
|
|
19479
|
-
|
|
19480
|
-
|
|
19481
|
-
|
|
19482
|
-
|
|
19483
|
-
|
|
19484
|
-
|
|
19485
|
-
|
|
19486
|
-
|
|
19487
|
-
|
|
19488
|
-
|
|
19489
|
-
|
|
19490
|
-
|
|
19491
|
-
|
|
19590
|
+
`${activeIndex}-${activeColorIndex}`
|
|
19591
|
+
) }),
|
|
19592
|
+
/* @__PURE__ */ jsxs(
|
|
19593
|
+
"div",
|
|
19594
|
+
{
|
|
19595
|
+
className: cn(
|
|
19596
|
+
"absolute bottom-4 right-4 flex gap-2",
|
|
19597
|
+
navigationClassName
|
|
19598
|
+
),
|
|
19599
|
+
children: [
|
|
19600
|
+
/* @__PURE__ */ jsx(
|
|
19601
|
+
Pressable,
|
|
19602
|
+
{
|
|
19603
|
+
onClick: goToPrev,
|
|
19604
|
+
asButton: true,
|
|
19605
|
+
variant: "outline",
|
|
19606
|
+
size: "icon",
|
|
19607
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
19608
|
+
}
|
|
19609
|
+
),
|
|
19610
|
+
/* @__PURE__ */ jsx(
|
|
19611
|
+
Pressable,
|
|
19612
|
+
{
|
|
19613
|
+
onClick: goToNext,
|
|
19614
|
+
asButton: true,
|
|
19615
|
+
variant: "outline",
|
|
19616
|
+
size: "icon",
|
|
19617
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
19618
|
+
}
|
|
19619
|
+
)
|
|
19620
|
+
]
|
|
19621
|
+
}
|
|
19622
|
+
)
|
|
19623
|
+
]
|
|
19624
|
+
}
|
|
19625
|
+
),
|
|
19626
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
19627
|
+
/* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
|
|
19628
|
+
motion.div,
|
|
19629
|
+
{
|
|
19630
|
+
initial: { opacity: 0, y: 20 },
|
|
19631
|
+
animate: { opacity: 1, y: 0 },
|
|
19632
|
+
exit: { opacity: 0, y: -20 },
|
|
19633
|
+
transition: { duration: 0.3 },
|
|
19634
|
+
children: [
|
|
19635
|
+
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsx("div", { children: activeFeature.title })),
|
|
19636
|
+
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
19637
|
+
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
19638
|
+
/* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
19639
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
|
|
19640
|
+
"button",
|
|
19641
|
+
{
|
|
19642
|
+
onClick: () => setActiveColorIndex(index),
|
|
19643
|
+
className: cn(
|
|
19644
|
+
"h-8 w-8 rounded-full border-2 transition-all",
|
|
19645
|
+
activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
|
|
19646
|
+
),
|
|
19647
|
+
style: { backgroundColor: color.value },
|
|
19648
|
+
title: color.name
|
|
19649
|
+
},
|
|
19650
|
+
color.name
|
|
19651
|
+
)) })
|
|
19652
|
+
] }),
|
|
19653
|
+
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
|
|
19654
|
+
]
|
|
19655
|
+
},
|
|
19656
|
+
activeIndex
|
|
19657
|
+
) }),
|
|
19658
|
+
/* @__PURE__ */ jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsx(
|
|
19659
|
+
"button",
|
|
19660
|
+
{
|
|
19661
|
+
onClick: () => goToSlide(index),
|
|
19662
|
+
className: cn(
|
|
19663
|
+
"h-2 rounded-full transition-all",
|
|
19664
|
+
activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
|
19665
|
+
)
|
|
19666
|
+
},
|
|
19667
|
+
index
|
|
19668
|
+
)) })
|
|
19669
|
+
] })
|
|
19670
|
+
]
|
|
19671
|
+
}
|
|
19672
|
+
)
|
|
19492
19673
|
] })
|
|
19493
19674
|
}
|
|
19494
19675
|
);
|
|
@@ -19544,12 +19725,16 @@ function SliderBtn({
|
|
|
19544
19725
|
}
|
|
19545
19726
|
function SliderWrapper({ children, value, className }) {
|
|
19546
19727
|
const { active } = useProgressSliderContext();
|
|
19547
|
-
return /* @__PURE__ */ jsx(AnimatePresence, { mode: "
|
|
19728
|
+
return /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsx(
|
|
19548
19729
|
motion.div,
|
|
19549
19730
|
{
|
|
19550
|
-
initial: { opacity: 0 },
|
|
19551
|
-
animate: { opacity: 1 },
|
|
19552
|
-
exit: { opacity: 0 },
|
|
19731
|
+
initial: { opacity: 0, scale: 0.98 },
|
|
19732
|
+
animate: { opacity: 1, scale: 1 },
|
|
19733
|
+
exit: { opacity: 0, scale: 0.98 },
|
|
19734
|
+
transition: {
|
|
19735
|
+
duration: 0.4,
|
|
19736
|
+
ease: [0.4, 0, 0.2, 1]
|
|
19737
|
+
},
|
|
19553
19738
|
className: cn("", className),
|
|
19554
19739
|
children
|
|
19555
19740
|
},
|
|
@@ -19660,12 +19845,12 @@ function CarouselProgressSlider({
|
|
|
19660
19845
|
pattern,
|
|
19661
19846
|
patternOpacity,
|
|
19662
19847
|
children: /* @__PURE__ */ jsx("div", { className: cn("relative", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2", contentClassName), children: [
|
|
19663
|
-
/* @__PURE__ */ jsxs("div", { className: cn("relative", imageClassName), children: [
|
|
19664
|
-
slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
|
|
19848
|
+
/* @__PURE__ */ jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
|
|
19849
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
|
|
19665
19850
|
SliderWrapper,
|
|
19666
19851
|
{
|
|
19667
19852
|
value: slide.id,
|
|
19668
|
-
className: cn("", slide.className),
|
|
19853
|
+
className: cn("absolute inset-0", slide.className),
|
|
19669
19854
|
children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
|
|
19670
19855
|
Img,
|
|
19671
19856
|
{
|
|
@@ -19680,8 +19865,8 @@ function CarouselProgressSlider({
|
|
|
19680
19865
|
) })
|
|
19681
19866
|
},
|
|
19682
19867
|
slide.id
|
|
19683
|
-
)),
|
|
19684
|
-
/* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
|
|
19868
|
+
)) }),
|
|
19869
|
+
/* @__PURE__ */ jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
|
|
19685
19870
|
Pressable,
|
|
19686
19871
|
{
|
|
19687
19872
|
onClick: togglePause,
|
|
@@ -19743,8 +19928,8 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19743
19928
|
featuresClassName,
|
|
19744
19929
|
numberBadgeClassName,
|
|
19745
19930
|
optixFlowConfig,
|
|
19746
|
-
background
|
|
19747
|
-
spacing = "
|
|
19931
|
+
background,
|
|
19932
|
+
spacing = "md",
|
|
19748
19933
|
pattern,
|
|
19749
19934
|
patternOpacity
|
|
19750
19935
|
}) {
|
|
@@ -19794,62 +19979,113 @@ function CarouselScrollingFeatureShowcase({
|
|
|
19794
19979
|
patternOpacity,
|
|
19795
19980
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
|
|
19796
19981
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
19797
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
19798
|
-
|
|
19799
|
-
] }),
|
|
19800
|
-
/* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
|
|
19801
|
-
/* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx("div", { className: cn("aspect-video overflow-hidden rounded-xl bg-muted", imageClassName), children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
|
|
19802
|
-
motion.div,
|
|
19982
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
19983
|
+
"h2",
|
|
19803
19984
|
{
|
|
19804
|
-
|
|
19805
|
-
|
|
19806
|
-
|
|
19807
|
-
|
|
19808
|
-
|
|
19809
|
-
|
|
19810
|
-
|
|
19811
|
-
|
|
19812
|
-
|
|
19813
|
-
alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
|
|
19814
|
-
className: cn("h-full w-full object-cover", activeFeatureData.imageClassName),
|
|
19815
|
-
optixFlowConfig
|
|
19816
|
-
}
|
|
19817
|
-
)
|
|
19818
|
-
},
|
|
19819
|
-
activeFeatureData.id
|
|
19820
|
-
) }) }) }) }),
|
|
19821
|
-
/* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
19822
|
-
"div",
|
|
19985
|
+
className: cn(
|
|
19986
|
+
"text-3xl font-bold tracking-tight md:text-4xl",
|
|
19987
|
+
headingClassName
|
|
19988
|
+
),
|
|
19989
|
+
children: heading
|
|
19990
|
+
}
|
|
19991
|
+
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
19992
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
|
|
19993
|
+
"p",
|
|
19823
19994
|
{
|
|
19824
|
-
ref: setFeatureRef(feature.id),
|
|
19825
|
-
"data-feature-id": feature.id,
|
|
19826
19995
|
className: cn(
|
|
19827
|
-
"
|
|
19828
|
-
|
|
19829
|
-
feature.className
|
|
19996
|
+
"mt-4 text-lg text-muted-foreground",
|
|
19997
|
+
subheadingClassName
|
|
19830
19998
|
),
|
|
19831
|
-
children:
|
|
19832
|
-
|
|
19833
|
-
|
|
19834
|
-
|
|
19835
|
-
|
|
19836
|
-
|
|
19837
|
-
|
|
19838
|
-
|
|
19839
|
-
|
|
19840
|
-
|
|
19841
|
-
|
|
19842
|
-
|
|
19843
|
-
|
|
19844
|
-
|
|
19845
|
-
|
|
19846
|
-
|
|
19847
|
-
|
|
19848
|
-
|
|
19849
|
-
|
|
19850
|
-
|
|
19851
|
-
|
|
19852
|
-
|
|
19999
|
+
children: subheading
|
|
20000
|
+
}
|
|
20001
|
+
) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
|
|
20002
|
+
] }),
|
|
20003
|
+
/* @__PURE__ */ jsxs(
|
|
20004
|
+
"div",
|
|
20005
|
+
{
|
|
20006
|
+
className: cn(
|
|
20007
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
20008
|
+
contentClassName
|
|
20009
|
+
),
|
|
20010
|
+
children: [
|
|
20011
|
+
/* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx(
|
|
20012
|
+
"div",
|
|
20013
|
+
{
|
|
20014
|
+
className: cn(
|
|
20015
|
+
"aspect-video overflow-hidden rounded-xl bg-muted",
|
|
20016
|
+
imageClassName
|
|
20017
|
+
),
|
|
20018
|
+
children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
|
|
20019
|
+
motion.div,
|
|
20020
|
+
{
|
|
20021
|
+
initial: { opacity: 0 },
|
|
20022
|
+
animate: { opacity: 1 },
|
|
20023
|
+
exit: { opacity: 0 },
|
|
20024
|
+
transition: { duration: 0.3 },
|
|
20025
|
+
className: "h-full w-full",
|
|
20026
|
+
children: /* @__PURE__ */ jsx(
|
|
20027
|
+
Img,
|
|
20028
|
+
{
|
|
20029
|
+
src: activeFeatureData.image,
|
|
20030
|
+
alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
|
|
20031
|
+
className: cn(
|
|
20032
|
+
"h-full w-full object-cover",
|
|
20033
|
+
activeFeatureData.imageClassName
|
|
20034
|
+
),
|
|
20035
|
+
optixFlowConfig
|
|
20036
|
+
}
|
|
20037
|
+
)
|
|
20038
|
+
},
|
|
20039
|
+
activeFeatureData.id
|
|
20040
|
+
) })
|
|
20041
|
+
}
|
|
20042
|
+
) }) }),
|
|
20043
|
+
/* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
20044
|
+
"div",
|
|
20045
|
+
{
|
|
20046
|
+
ref: setFeatureRef(feature.id),
|
|
20047
|
+
"data-feature-id": feature.id,
|
|
20048
|
+
className: cn(
|
|
20049
|
+
"scroll-mt-24 transition-opacity duration-300",
|
|
20050
|
+
activeFeature === feature.id ? "opacity-100" : "opacity-50",
|
|
20051
|
+
feature.className
|
|
20052
|
+
),
|
|
20053
|
+
children: [
|
|
20054
|
+
/* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx(
|
|
20055
|
+
Img,
|
|
20056
|
+
{
|
|
20057
|
+
src: feature.image,
|
|
20058
|
+
alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
|
|
20059
|
+
className: cn(
|
|
20060
|
+
"h-full w-full object-cover",
|
|
20061
|
+
feature.imageClassName
|
|
20062
|
+
),
|
|
20063
|
+
optixFlowConfig
|
|
20064
|
+
}
|
|
20065
|
+
) }) }),
|
|
20066
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
|
|
20067
|
+
/* @__PURE__ */ jsx(
|
|
20068
|
+
"div",
|
|
20069
|
+
{
|
|
20070
|
+
className: cn(
|
|
20071
|
+
"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
|
|
20072
|
+
numberBadgeClassName
|
|
20073
|
+
),
|
|
20074
|
+
children: index + 1
|
|
20075
|
+
}
|
|
20076
|
+
),
|
|
20077
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
20078
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsx("div", { children: feature.title })),
|
|
20079
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: feature.description }))
|
|
20080
|
+
] })
|
|
20081
|
+
] })
|
|
20082
|
+
]
|
|
20083
|
+
},
|
|
20084
|
+
feature.id
|
|
20085
|
+
)) })
|
|
20086
|
+
]
|
|
20087
|
+
}
|
|
20088
|
+
)
|
|
19853
20089
|
] })
|
|
19854
20090
|
}
|
|
19855
20091
|
);
|
|
@@ -20050,17 +20286,28 @@ function FeatureShowcase({
|
|
|
20050
20286
|
contentClassName,
|
|
20051
20287
|
mediaClassName,
|
|
20052
20288
|
arrowClassName,
|
|
20053
|
-
equalizeOnMobile
|
|
20054
|
-
stretchMediaOnMobile
|
|
20289
|
+
equalizeOnMobile,
|
|
20290
|
+
stretchMediaOnMobile,
|
|
20291
|
+
background,
|
|
20292
|
+
spacing,
|
|
20293
|
+
pattern,
|
|
20294
|
+
patternOpacity,
|
|
20295
|
+
patternClassName
|
|
20055
20296
|
}) {
|
|
20056
|
-
const baseArrowClassName =
|
|
20297
|
+
const baseArrowClassName = useMemo$1(
|
|
20298
|
+
() => "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",
|
|
20299
|
+
[]
|
|
20300
|
+
);
|
|
20057
20301
|
const [mobileSlideHeight, setMobileSlideHeight] = useState(
|
|
20058
20302
|
null
|
|
20059
20303
|
);
|
|
20060
20304
|
const slideRefs = useRef([]);
|
|
20061
|
-
const mediaWrapperClassName =
|
|
20305
|
+
const mediaWrapperClassName = useMemo$1(
|
|
20306
|
+
() => equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "",
|
|
20307
|
+
[equalizeOnMobile, stretchMediaOnMobile]
|
|
20308
|
+
);
|
|
20062
20309
|
useEffect(() => {
|
|
20063
|
-
if (!equalizeOnMobile) {
|
|
20310
|
+
if (!equalizeOnMobile || !items || items.length === 0) {
|
|
20064
20311
|
setMobileSlideHeight(null);
|
|
20065
20312
|
return;
|
|
20066
20313
|
}
|
|
@@ -20092,10 +20339,10 @@ function FeatureShowcase({
|
|
|
20092
20339
|
window.removeEventListener("resize", updateHeights);
|
|
20093
20340
|
resizeObserver?.disconnect();
|
|
20094
20341
|
};
|
|
20095
|
-
}, [equalizeOnMobile, items
|
|
20096
|
-
|
|
20097
|
-
|
|
20098
|
-
/* @__PURE__ */ jsxs(Carousel, { className: carouselClassName, children: [
|
|
20342
|
+
}, [equalizeOnMobile, items]);
|
|
20343
|
+
const carouselContent = useMemo$1(() => {
|
|
20344
|
+
if (!items || items.length === 0) return null;
|
|
20345
|
+
return /* @__PURE__ */ jsxs(Carousel, { className: carouselClassName, children: [
|
|
20099
20346
|
/* @__PURE__ */ jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsx(CarouselItem, { children: /* @__PURE__ */ jsxs(
|
|
20100
20347
|
"div",
|
|
20101
20348
|
{
|
|
@@ -20108,8 +20355,8 @@ function FeatureShowcase({
|
|
|
20108
20355
|
slideClassName
|
|
20109
20356
|
),
|
|
20110
20357
|
children: [
|
|
20111
|
-
/* @__PURE__ */ jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20112
|
-
/* @__PURE__ */ jsx(
|
|
20358
|
+
item.content && /* @__PURE__ */ jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
20359
|
+
item.mediaComponent && /* @__PURE__ */ jsx(
|
|
20113
20360
|
"div",
|
|
20114
20361
|
{
|
|
20115
20362
|
className: cn(
|
|
@@ -20135,8 +20382,23 @@ function FeatureShowcase({
|
|
|
20135
20382
|
className: cn(baseArrowClassName, "right-4 md:right-6", arrowClassName)
|
|
20136
20383
|
}
|
|
20137
20384
|
)
|
|
20138
|
-
] })
|
|
20139
|
-
]
|
|
20385
|
+
] });
|
|
20386
|
+
}, [items, carouselClassName, equalizeOnMobile, mobileSlideHeight, slideClassName, contentClassName, mediaWrapperClassName, mediaClassName, baseArrowClassName, arrowClassName]);
|
|
20387
|
+
return /* @__PURE__ */ jsxs(
|
|
20388
|
+
Section,
|
|
20389
|
+
{
|
|
20390
|
+
background,
|
|
20391
|
+
spacing,
|
|
20392
|
+
pattern,
|
|
20393
|
+
patternOpacity,
|
|
20394
|
+
patternClassName,
|
|
20395
|
+
className,
|
|
20396
|
+
children: [
|
|
20397
|
+
children,
|
|
20398
|
+
carouselContent
|
|
20399
|
+
]
|
|
20400
|
+
}
|
|
20401
|
+
);
|
|
20140
20402
|
}
|
|
20141
20403
|
function FeatureSplitImage({
|
|
20142
20404
|
title,
|
|
@@ -20165,40 +20427,19 @@ function FeatureSplitImage({
|
|
|
20165
20427
|
if (actionsSlot) return actionsSlot;
|
|
20166
20428
|
if (!actions || actions.length === 0) return null;
|
|
20167
20429
|
return actions.map((action, index) => {
|
|
20168
|
-
|
|
20169
|
-
|
|
20170
|
-
|
|
20171
|
-
|
|
20172
|
-
|
|
20173
|
-
|
|
20174
|
-
|
|
20175
|
-
|
|
20176
|
-
|
|
20177
|
-
|
|
20178
|
-
|
|
20179
|
-
|
|
20180
|
-
|
|
20181
|
-
index
|
|
20182
|
-
);
|
|
20183
|
-
}
|
|
20184
|
-
return /* @__PURE__ */ jsxs(
|
|
20185
|
-
Pressable,
|
|
20186
|
-
{
|
|
20187
|
-
href: action.href,
|
|
20188
|
-
onClick: action.onClick,
|
|
20189
|
-
variant: action.variant,
|
|
20190
|
-
size: action.size,
|
|
20191
|
-
className: action.className,
|
|
20192
|
-
"aria-label": action["aria-label"],
|
|
20193
|
-
asButton: true,
|
|
20194
|
-
children: [
|
|
20195
|
-
action.icon,
|
|
20196
|
-
action.label,
|
|
20197
|
-
action.iconAfter
|
|
20198
|
-
]
|
|
20199
|
-
},
|
|
20200
|
-
index
|
|
20201
|
-
);
|
|
20430
|
+
const {
|
|
20431
|
+
label,
|
|
20432
|
+
icon,
|
|
20433
|
+
iconAfter,
|
|
20434
|
+
children,
|
|
20435
|
+
className: actionClassName,
|
|
20436
|
+
...pressableProps
|
|
20437
|
+
} = action;
|
|
20438
|
+
return /* @__PURE__ */ jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
20439
|
+
icon,
|
|
20440
|
+
label,
|
|
20441
|
+
iconAfter
|
|
20442
|
+
] }) }, index);
|
|
20202
20443
|
});
|
|
20203
20444
|
}, [actionsSlot, actions]);
|
|
20204
20445
|
const imageContent = useMemo$1(() => {
|
|
@@ -20208,7 +20449,7 @@ function FeatureSplitImage({
|
|
|
20208
20449
|
Img,
|
|
20209
20450
|
{
|
|
20210
20451
|
src: imageSrc,
|
|
20211
|
-
alt: imageAlt || "
|
|
20452
|
+
alt: imageAlt || "",
|
|
20212
20453
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20213
20454
|
loading: "lazy",
|
|
20214
20455
|
optixFlowConfig
|
|
@@ -20229,7 +20470,7 @@ function FeatureSplitImage({
|
|
|
20229
20470
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20230
20471
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
|
|
20231
20472
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
20232
|
-
/* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20473
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20233
20474
|
] }),
|
|
20234
20475
|
imageContent
|
|
20235
20476
|
] })
|
|
@@ -20263,40 +20504,19 @@ function FeatureSplitImageReverse({
|
|
|
20263
20504
|
if (actionsSlot) return actionsSlot;
|
|
20264
20505
|
if (!actions || actions.length === 0) return null;
|
|
20265
20506
|
return actions.map((action, index) => {
|
|
20266
|
-
|
|
20267
|
-
|
|
20268
|
-
|
|
20269
|
-
|
|
20270
|
-
|
|
20271
|
-
|
|
20272
|
-
|
|
20273
|
-
|
|
20274
|
-
|
|
20275
|
-
|
|
20276
|
-
|
|
20277
|
-
|
|
20278
|
-
|
|
20279
|
-
index
|
|
20280
|
-
);
|
|
20281
|
-
}
|
|
20282
|
-
return /* @__PURE__ */ jsxs(
|
|
20283
|
-
Pressable,
|
|
20284
|
-
{
|
|
20285
|
-
href: action.href,
|
|
20286
|
-
onClick: action.onClick,
|
|
20287
|
-
variant: action.variant,
|
|
20288
|
-
size: action.size,
|
|
20289
|
-
className: action.className,
|
|
20290
|
-
"aria-label": action["aria-label"],
|
|
20291
|
-
asButton: true,
|
|
20292
|
-
children: [
|
|
20293
|
-
action.icon,
|
|
20294
|
-
action.label,
|
|
20295
|
-
action.iconAfter
|
|
20296
|
-
]
|
|
20297
|
-
},
|
|
20298
|
-
index
|
|
20299
|
-
);
|
|
20507
|
+
const {
|
|
20508
|
+
label,
|
|
20509
|
+
icon,
|
|
20510
|
+
iconAfter,
|
|
20511
|
+
children,
|
|
20512
|
+
className: actionClassName,
|
|
20513
|
+
...pressableProps
|
|
20514
|
+
} = action;
|
|
20515
|
+
return /* @__PURE__ */ jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
20516
|
+
icon,
|
|
20517
|
+
label,
|
|
20518
|
+
iconAfter
|
|
20519
|
+
] }) }, index);
|
|
20300
20520
|
});
|
|
20301
20521
|
}, [actionsSlot, actions]);
|
|
20302
20522
|
const imageContent = useMemo$1(() => {
|
|
@@ -20306,7 +20526,7 @@ function FeatureSplitImageReverse({
|
|
|
20306
20526
|
Img,
|
|
20307
20527
|
{
|
|
20308
20528
|
src: imageSrc,
|
|
20309
|
-
alt: imageAlt || "
|
|
20529
|
+
alt: imageAlt || "",
|
|
20310
20530
|
className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
|
|
20311
20531
|
loading: "lazy",
|
|
20312
20532
|
optixFlowConfig
|
|
@@ -20328,7 +20548,7 @@ function FeatureSplitImageReverse({
|
|
|
20328
20548
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
|
|
20329
20549
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
|
|
20330
20550
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
20331
|
-
/* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20551
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
|
|
20332
20552
|
] })
|
|
20333
20553
|
] })
|
|
20334
20554
|
}
|
|
@@ -20351,39 +20571,37 @@ function FeatureIconGridBordered({
|
|
|
20351
20571
|
patternOpacity,
|
|
20352
20572
|
patternClassName
|
|
20353
20573
|
}) {
|
|
20574
|
+
const renderIcon = useCallback((feature) => {
|
|
20575
|
+
if (feature.icon) return feature.icon;
|
|
20576
|
+
if (feature.iconName) {
|
|
20577
|
+
return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 20, className: "md:size-6" });
|
|
20578
|
+
}
|
|
20579
|
+
return null;
|
|
20580
|
+
}, []);
|
|
20354
20581
|
const featuresContent = useMemo$1(() => {
|
|
20355
20582
|
if (featuresSlot) return featuresSlot;
|
|
20356
20583
|
if (!features || features.length === 0) return null;
|
|
20357
|
-
return features.map((feature, index) =>
|
|
20358
|
-
|
|
20359
|
-
|
|
20360
|
-
|
|
20361
|
-
|
|
20362
|
-
|
|
20363
|
-
|
|
20364
|
-
|
|
20365
|
-
|
|
20366
|
-
|
|
20367
|
-
|
|
20368
|
-
|
|
20369
|
-
|
|
20370
|
-
|
|
20371
|
-
/* @__PURE__ */
|
|
20372
|
-
|
|
20373
|
-
|
|
20374
|
-
|
|
20375
|
-
|
|
20376
|
-
|
|
20377
|
-
|
|
20378
|
-
] })),
|
|
20379
|
-
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
20380
|
-
] })
|
|
20381
|
-
]
|
|
20382
|
-
},
|
|
20383
|
-
index
|
|
20384
|
-
);
|
|
20385
|
-
});
|
|
20386
|
-
}, [featuresSlot, features, cardClassName]);
|
|
20584
|
+
return features.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
20585
|
+
"div",
|
|
20586
|
+
{
|
|
20587
|
+
className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
|
|
20588
|
+
children: [
|
|
20589
|
+
(feature.icon || feature.iconName) && /* @__PURE__ */ 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) }),
|
|
20590
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
20591
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20592
|
+
feature.title,
|
|
20593
|
+
/* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20594
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
|
|
20595
|
+
feature.title,
|
|
20596
|
+
/* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20597
|
+
] })),
|
|
20598
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
20599
|
+
] })
|
|
20600
|
+
]
|
|
20601
|
+
},
|
|
20602
|
+
index
|
|
20603
|
+
));
|
|
20604
|
+
}, [featuresSlot, features, cardClassName, renderIcon]);
|
|
20387
20605
|
return /* @__PURE__ */ jsxs(
|
|
20388
20606
|
Section,
|
|
20389
20607
|
{
|
|
@@ -20397,7 +20615,7 @@ function FeatureIconGridBordered({
|
|
|
20397
20615
|
children: [
|
|
20398
20616
|
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label })),
|
|
20399
20617
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
|
|
20400
|
-
/* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
|
|
20618
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
|
|
20401
20619
|
]
|
|
20402
20620
|
}
|
|
20403
20621
|
);
|
|
@@ -20511,8 +20729,8 @@ function FeatureChecklistImage({
|
|
|
20511
20729
|
/* @__PURE__ */ jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
20512
20730
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
|
|
20513
20731
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
|
|
20514
|
-
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
20515
|
-
/* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
20732
|
+
actionsContent && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
20733
|
+
checklistContent && /* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
20516
20734
|
] })
|
|
20517
20735
|
] })
|
|
20518
20736
|
}
|
|
@@ -20577,10 +20795,10 @@ function FeatureCarouselProgress({
|
|
|
20577
20795
|
);
|
|
20578
20796
|
});
|
|
20579
20797
|
}, [api, slidesLength]);
|
|
20580
|
-
const renderSlideIcon =
|
|
20798
|
+
const renderSlideIcon = useCallback((slide) => {
|
|
20581
20799
|
if (slide.icon) return slide.icon;
|
|
20582
20800
|
if (slide.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: slide.iconName, size: 16 });
|
|
20583
|
-
return
|
|
20801
|
+
return null;
|
|
20584
20802
|
}, []);
|
|
20585
20803
|
const slidesContent = useMemo$1(() => {
|
|
20586
20804
|
if (slidesSlot) return slidesSlot;
|
|
@@ -20590,7 +20808,7 @@ function FeatureCarouselProgress({
|
|
|
20590
20808
|
{
|
|
20591
20809
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
20592
20810
|
children: /* @__PURE__ */ jsx("div", { className: "p-1", children: /* @__PURE__ */ jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
20593
|
-
/* @__PURE__ */ 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) }),
|
|
20811
|
+
(slide.icon || slide.iconName) && /* @__PURE__ */ 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) }),
|
|
20594
20812
|
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
|
|
20595
20813
|
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
|
|
20596
20814
|
] }) }) }) })
|
|
@@ -20652,28 +20870,28 @@ function FeatureCardGridLinked({
|
|
|
20652
20870
|
patternOpacity,
|
|
20653
20871
|
patternClassName
|
|
20654
20872
|
}) {
|
|
20873
|
+
const renderImage = useCallback((feature, imageAlt) => {
|
|
20874
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
20875
|
+
if (feature.image) {
|
|
20876
|
+
return /* @__PURE__ */ jsx(
|
|
20877
|
+
Img,
|
|
20878
|
+
{
|
|
20879
|
+
src: feature.image,
|
|
20880
|
+
alt: imageAlt,
|
|
20881
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
20882
|
+
loading: "lazy",
|
|
20883
|
+
optixFlowConfig
|
|
20884
|
+
}
|
|
20885
|
+
);
|
|
20886
|
+
}
|
|
20887
|
+
return null;
|
|
20888
|
+
}, [optixFlowConfig]);
|
|
20655
20889
|
const featuresContent = useMemo$1(() => {
|
|
20656
20890
|
if (featuresSlot) return featuresSlot;
|
|
20657
20891
|
if (!features || features.length === 0) return null;
|
|
20658
20892
|
return features.map((feature, index) => {
|
|
20659
20893
|
const featureKey = feature.id || `feature-${index}`;
|
|
20660
20894
|
const imageAlt = feature.imageAlt || (typeof feature.heading === "string" ? feature.heading : "Feature image");
|
|
20661
|
-
const renderImage = () => {
|
|
20662
|
-
if (feature.imageSlot) return feature.imageSlot;
|
|
20663
|
-
if (feature.image) {
|
|
20664
|
-
return /* @__PURE__ */ jsx(
|
|
20665
|
-
Img,
|
|
20666
|
-
{
|
|
20667
|
-
src: feature.image,
|
|
20668
|
-
alt: imageAlt,
|
|
20669
|
-
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
20670
|
-
loading: "lazy",
|
|
20671
|
-
optixFlowConfig
|
|
20672
|
-
}
|
|
20673
|
-
);
|
|
20674
|
-
}
|
|
20675
|
-
return null;
|
|
20676
|
-
};
|
|
20677
20895
|
return /* @__PURE__ */ jsxs(
|
|
20678
20896
|
"div",
|
|
20679
20897
|
{
|
|
@@ -20684,7 +20902,7 @@ function FeatureCardGridLinked({
|
|
|
20684
20902
|
feature.label && /* @__PURE__ */ jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
|
|
20685
20903
|
feature.heading && /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ 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__ */ 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 }) })
|
|
20686
20904
|
] }),
|
|
20687
|
-
/* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage() }) })
|
|
20905
|
+
/* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
|
|
20688
20906
|
] }),
|
|
20689
20907
|
feature.description && /* @__PURE__ */ jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
|
|
20690
20908
|
]
|
|
@@ -20692,7 +20910,7 @@ function FeatureCardGridLinked({
|
|
|
20692
20910
|
featureKey
|
|
20693
20911
|
);
|
|
20694
20912
|
});
|
|
20695
|
-
}, [featuresSlot, features, cardClassName,
|
|
20913
|
+
}, [featuresSlot, features, cardClassName, renderImage]);
|
|
20696
20914
|
return /* @__PURE__ */ jsxs(
|
|
20697
20915
|
Section,
|
|
20698
20916
|
{
|
|
@@ -20728,7 +20946,7 @@ function FeatureNumberedCards({
|
|
|
20728
20946
|
patternOpacity,
|
|
20729
20947
|
patternClassName
|
|
20730
20948
|
}) {
|
|
20731
|
-
const renderChecklistItems = (feature) => {
|
|
20949
|
+
const renderChecklistItems = useCallback((feature) => {
|
|
20732
20950
|
if (feature.checklistSlot) return feature.checklistSlot;
|
|
20733
20951
|
if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
|
|
20734
20952
|
return feature.checklistItems.map((item, itemIndex) => {
|
|
@@ -20748,7 +20966,7 @@ function FeatureNumberedCards({
|
|
|
20748
20966
|
/* @__PURE__ */ jsx("p", { className: "text-sm md:text-base", children: content })
|
|
20749
20967
|
] }, itemIndex);
|
|
20750
20968
|
});
|
|
20751
|
-
};
|
|
20969
|
+
}, []);
|
|
20752
20970
|
const featuresContent = useMemo$1(() => {
|
|
20753
20971
|
if (featuresSlot) return featuresSlot;
|
|
20754
20972
|
if (!features || features.length === 0) return null;
|
|
@@ -20853,12 +21071,12 @@ function FeatureIconGridAccent({
|
|
|
20853
21071
|
className,
|
|
20854
21072
|
containerClassName,
|
|
20855
21073
|
children: [
|
|
20856
|
-
/* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ 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: [
|
|
21074
|
+
(label || title || description) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ 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: [
|
|
20857
21075
|
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: labelClassName, children: label })),
|
|
20858
21076
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
|
|
20859
21077
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
20860
21078
|
] }) }),
|
|
20861
|
-
/* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
21079
|
+
featuresContent && /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
20862
21080
|
]
|
|
20863
21081
|
}
|
|
20864
21082
|
);
|
|
@@ -20880,20 +21098,20 @@ function FeatureThreeColumnValues({
|
|
|
20880
21098
|
patternOpacity,
|
|
20881
21099
|
patternClassName
|
|
20882
21100
|
}) {
|
|
20883
|
-
const renderValueIcon = (value) => {
|
|
21101
|
+
const renderValueIcon = React52.useCallback((value) => {
|
|
20884
21102
|
if (value.icon) return value.icon;
|
|
20885
21103
|
if (value.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: value.iconName, size: 24 });
|
|
20886
|
-
return
|
|
20887
|
-
};
|
|
21104
|
+
return null;
|
|
21105
|
+
}, []);
|
|
20888
21106
|
const valuesContent = useMemo$1(() => {
|
|
20889
21107
|
if (valuesSlot) return valuesSlot;
|
|
20890
21108
|
if (!values || values.length === 0) return null;
|
|
20891
21109
|
return values.map((value, index) => /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
|
|
20892
|
-
/* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
|
|
21110
|
+
(value.icon || value.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
|
|
20893
21111
|
value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title })),
|
|
20894
21112
|
value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsx("div", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }))
|
|
20895
21113
|
] }, index));
|
|
20896
|
-
}, [valuesSlot, values, cardClassName]);
|
|
21114
|
+
}, [valuesSlot, values, cardClassName, renderValueIcon]);
|
|
20897
21115
|
return /* @__PURE__ */ jsxs(
|
|
20898
21116
|
Section,
|
|
20899
21117
|
{
|
|
@@ -20907,7 +21125,7 @@ function FeatureThreeColumnValues({
|
|
|
20907
21125
|
children: [
|
|
20908
21126
|
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label })),
|
|
20909
21127
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
|
|
20910
|
-
/* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
|
|
21128
|
+
(valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
|
|
20911
21129
|
]
|
|
20912
21130
|
}
|
|
20913
21131
|
);
|
|
@@ -20939,7 +21157,7 @@ function FeatureBadgeGridSix({
|
|
|
20939
21157
|
if (!label) return null;
|
|
20940
21158
|
return /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: badgeClassName, children: label });
|
|
20941
21159
|
}, [badgeSlot, label, badgeClassName]);
|
|
20942
|
-
const renderFeatureIcon = (feature) => {
|
|
21160
|
+
const renderFeatureIcon = useCallback((feature) => {
|
|
20943
21161
|
if (feature.icon) return feature.icon;
|
|
20944
21162
|
if (feature.iconName) {
|
|
20945
21163
|
return /* @__PURE__ */ jsx(
|
|
@@ -20952,25 +21170,28 @@ function FeatureBadgeGridSix({
|
|
|
20952
21170
|
);
|
|
20953
21171
|
}
|
|
20954
21172
|
return null;
|
|
20955
|
-
};
|
|
21173
|
+
}, []);
|
|
20956
21174
|
const featuresContent = useMemo$1(() => {
|
|
20957
21175
|
if (featuresSlot) return featuresSlot;
|
|
20958
21176
|
if (!features || features.length === 0) return null;
|
|
20959
|
-
return features.map((feature, index) =>
|
|
20960
|
-
|
|
20961
|
-
|
|
20962
|
-
|
|
20963
|
-
|
|
20964
|
-
|
|
20965
|
-
|
|
20966
|
-
|
|
20967
|
-
|
|
20968
|
-
|
|
20969
|
-
|
|
20970
|
-
|
|
20971
|
-
|
|
20972
|
-
|
|
20973
|
-
|
|
21177
|
+
return features.map((feature, index) => {
|
|
21178
|
+
const iconContent = renderFeatureIcon(feature);
|
|
21179
|
+
return /* @__PURE__ */ jsxs(
|
|
21180
|
+
"div",
|
|
21181
|
+
{
|
|
21182
|
+
className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
|
|
21183
|
+
children: [
|
|
21184
|
+
iconContent && /* @__PURE__ */ jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: iconContent }),
|
|
21185
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
21186
|
+
feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
|
|
21187
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
21188
|
+
] })
|
|
21189
|
+
]
|
|
21190
|
+
},
|
|
21191
|
+
index
|
|
21192
|
+
);
|
|
21193
|
+
});
|
|
21194
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
20974
21195
|
const actionContent = useMemo$1(() => {
|
|
20975
21196
|
if (actionSlot) return actionSlot;
|
|
20976
21197
|
if (!action) return null;
|
|
@@ -21031,7 +21252,6 @@ function FeatureBadgeGridSix({
|
|
|
21031
21252
|
function FeaturePatternGridLinks({
|
|
21032
21253
|
features,
|
|
21033
21254
|
featuresSlot,
|
|
21034
|
-
patternUrl = patternSvgs.dotPattern,
|
|
21035
21255
|
className,
|
|
21036
21256
|
containerClassName,
|
|
21037
21257
|
gridClassName,
|
|
@@ -21042,26 +21262,28 @@ function FeaturePatternGridLinks({
|
|
|
21042
21262
|
patternOpacity,
|
|
21043
21263
|
patternClassName
|
|
21044
21264
|
}) {
|
|
21045
|
-
const renderFeatureIcon = (feature) => {
|
|
21265
|
+
const renderFeatureIcon = useCallback((feature) => {
|
|
21046
21266
|
if (feature.icon) return feature.icon;
|
|
21047
21267
|
if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
21048
21268
|
return null;
|
|
21049
|
-
};
|
|
21050
|
-
const renderFeatureLink = (feature) => {
|
|
21269
|
+
}, []);
|
|
21270
|
+
const renderFeatureLink = useCallback((feature) => {
|
|
21051
21271
|
if (feature.linkSlot) return feature.linkSlot;
|
|
21052
|
-
if (!feature.link) return null;
|
|
21272
|
+
if (!feature.link && !feature.linkLabel) return null;
|
|
21273
|
+
const label = feature.linkLabel || (feature.link ? "Learn more" : null);
|
|
21274
|
+
if (!label) return null;
|
|
21053
21275
|
return /* @__PURE__ */ jsxs(
|
|
21054
21276
|
Pressable,
|
|
21055
21277
|
{
|
|
21056
21278
|
href: feature.link,
|
|
21057
21279
|
className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
|
|
21058
21280
|
children: [
|
|
21059
|
-
|
|
21281
|
+
label,
|
|
21060
21282
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
21061
21283
|
]
|
|
21062
21284
|
}
|
|
21063
21285
|
);
|
|
21064
|
-
};
|
|
21286
|
+
}, []);
|
|
21065
21287
|
const featuresContent = useMemo$1(() => {
|
|
21066
21288
|
if (featuresSlot) return featuresSlot;
|
|
21067
21289
|
if (!features || features.length === 0) return null;
|
|
@@ -21080,7 +21302,7 @@ function FeaturePatternGridLinks({
|
|
|
21080
21302
|
},
|
|
21081
21303
|
index
|
|
21082
21304
|
));
|
|
21083
|
-
}, [featuresSlot, features, cardClassName]);
|
|
21305
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
|
|
21084
21306
|
return /* @__PURE__ */ jsx(
|
|
21085
21307
|
Section,
|
|
21086
21308
|
{
|
|
@@ -21089,12 +21311,8 @@ function FeaturePatternGridLinks({
|
|
|
21089
21311
|
pattern,
|
|
21090
21312
|
patternOpacity,
|
|
21091
21313
|
patternClassName,
|
|
21092
|
-
className
|
|
21314
|
+
className,
|
|
21093
21315
|
containerClassName,
|
|
21094
|
-
style: {
|
|
21095
|
-
backgroundImage: `url(${patternUrl})`,
|
|
21096
|
-
backgroundRepeat: "repeat"
|
|
21097
|
-
},
|
|
21098
21316
|
children: /* @__PURE__ */ jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
|
|
21099
21317
|
}
|
|
21100
21318
|
);
|
|
@@ -21162,7 +21380,7 @@ function FeatureTabbedContentImage({
|
|
|
21162
21380
|
description,
|
|
21163
21381
|
slides,
|
|
21164
21382
|
slidesSlot,
|
|
21165
|
-
defaultTab
|
|
21383
|
+
defaultTab,
|
|
21166
21384
|
className,
|
|
21167
21385
|
containerClassName,
|
|
21168
21386
|
headerClassName,
|
|
@@ -21181,7 +21399,7 @@ function FeatureTabbedContentImage({
|
|
|
21181
21399
|
patternOpacity,
|
|
21182
21400
|
patternClassName
|
|
21183
21401
|
}) {
|
|
21184
|
-
const renderFeatures =
|
|
21402
|
+
const renderFeatures = React52.useCallback((slide) => {
|
|
21185
21403
|
if (slide.featuresSlot) return slide.featuresSlot;
|
|
21186
21404
|
if (!slide.features || slide.features.length === 0) return null;
|
|
21187
21405
|
return slide.features.map((feature, index) => {
|
|
@@ -21195,7 +21413,7 @@ function FeatureTabbedContentImage({
|
|
|
21195
21413
|
] }, index);
|
|
21196
21414
|
});
|
|
21197
21415
|
}, []);
|
|
21198
|
-
const renderActions =
|
|
21416
|
+
const renderActions = React52.useCallback((slide) => {
|
|
21199
21417
|
if (slide.actionsSlot) return slide.actionsSlot;
|
|
21200
21418
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
21201
21419
|
return slide.actions.map((action, index) => {
|
|
@@ -21235,7 +21453,7 @@ function FeatureTabbedContentImage({
|
|
|
21235
21453
|
);
|
|
21236
21454
|
});
|
|
21237
21455
|
}, []);
|
|
21238
|
-
const renderImage =
|
|
21456
|
+
const renderImage = React52.useCallback((slide) => {
|
|
21239
21457
|
if (slide.imageSlot) return slide.imageSlot;
|
|
21240
21458
|
if (!slide.image) return null;
|
|
21241
21459
|
const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
|
|
@@ -21282,6 +21500,11 @@ function FeatureTabbedContentImage({
|
|
|
21282
21500
|
))
|
|
21283
21501
|
] });
|
|
21284
21502
|
}, [slidesSlot, slides, tabsListClassName, tabTriggerClassName, tabContentClassName, contentGridClassName, renderFeatures, renderActions, renderImage]);
|
|
21503
|
+
const effectiveDefaultTab = useMemo$1(() => {
|
|
21504
|
+
if (defaultTab) return defaultTab;
|
|
21505
|
+
if (slides && slides.length > 0) return slides[0].id.toString();
|
|
21506
|
+
return "1";
|
|
21507
|
+
}, [defaultTab, slides]);
|
|
21285
21508
|
return /* @__PURE__ */ jsxs(
|
|
21286
21509
|
Section,
|
|
21287
21510
|
{
|
|
@@ -21297,10 +21520,10 @@ function FeatureTabbedContentImage({
|
|
|
21297
21520
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
|
|
21298
21521
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }))
|
|
21299
21522
|
] }),
|
|
21300
|
-
/* @__PURE__ */ jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsx(
|
|
21523
|
+
(slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsx(
|
|
21301
21524
|
Tabs,
|
|
21302
21525
|
{
|
|
21303
|
-
defaultValue:
|
|
21526
|
+
defaultValue: effectiveDefaultTab,
|
|
21304
21527
|
className: cn("mx-auto flex w-fit flex-col items-center gap-8 md:gap-12", tabsClassName),
|
|
21305
21528
|
children: slidesContent
|
|
21306
21529
|
}
|
|
@@ -21312,7 +21535,7 @@ function FeatureTabbedContentImage({
|
|
|
21312
21535
|
function FeatureUtilityCardsGrid({
|
|
21313
21536
|
label,
|
|
21314
21537
|
labelIcon,
|
|
21315
|
-
labelIconName
|
|
21538
|
+
labelIconName,
|
|
21316
21539
|
title,
|
|
21317
21540
|
description,
|
|
21318
21541
|
learnMoreAction,
|
|
@@ -21334,11 +21557,11 @@ function FeatureUtilityCardsGrid({
|
|
|
21334
21557
|
patternOpacity,
|
|
21335
21558
|
patternClassName
|
|
21336
21559
|
}) {
|
|
21337
|
-
const renderLabelIcon = () => {
|
|
21560
|
+
const renderLabelIcon = useMemo$1(() => {
|
|
21338
21561
|
if (labelIcon) return labelIcon;
|
|
21339
21562
|
if (labelIconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
|
|
21340
|
-
return
|
|
21341
|
-
};
|
|
21563
|
+
return null;
|
|
21564
|
+
}, [labelIcon, labelIconName]);
|
|
21342
21565
|
const learnMoreContent = useMemo$1(() => {
|
|
21343
21566
|
if (learnMoreSlot) return learnMoreSlot;
|
|
21344
21567
|
if (!learnMoreAction) return null;
|
|
@@ -21369,7 +21592,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21369
21592
|
}
|
|
21370
21593
|
);
|
|
21371
21594
|
}, [learnMoreSlot, learnMoreAction]);
|
|
21372
|
-
const renderUtilityImage = (utility) => {
|
|
21595
|
+
const renderUtilityImage = React52.useCallback((utility) => {
|
|
21373
21596
|
if (utility.imageSlot) return utility.imageSlot;
|
|
21374
21597
|
if (utility.image) {
|
|
21375
21598
|
return /* @__PURE__ */ jsx(
|
|
@@ -21384,7 +21607,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21384
21607
|
);
|
|
21385
21608
|
}
|
|
21386
21609
|
return null;
|
|
21387
|
-
};
|
|
21610
|
+
}, [optixFlowConfig]);
|
|
21388
21611
|
const utilitiesContent = useMemo$1(() => {
|
|
21389
21612
|
if (utilitiesSlot) return utilitiesSlot;
|
|
21390
21613
|
if (!utilities || utilities.length === 0) return null;
|
|
@@ -21395,7 +21618,7 @@ function FeatureUtilityCardsGrid({
|
|
|
21395
21618
|
utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }))
|
|
21396
21619
|
] })
|
|
21397
21620
|
] }, index));
|
|
21398
|
-
}, [utilitiesSlot, utilities, cardClassName,
|
|
21621
|
+
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
|
|
21399
21622
|
return /* @__PURE__ */ jsxs(
|
|
21400
21623
|
Section,
|
|
21401
21624
|
{
|
|
@@ -21407,26 +21630,28 @@ function FeatureUtilityCardsGrid({
|
|
|
21407
21630
|
className,
|
|
21408
21631
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21409
21632
|
children: [
|
|
21410
|
-
/* @__PURE__ */ jsxs(
|
|
21411
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center
|
|
21412
|
-
|
|
21413
|
-
|
|
21633
|
+
(label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
21634
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
|
|
21635
|
+
(label || labelIcon || labelIconName) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
|
|
21636
|
+
renderLabelIcon,
|
|
21637
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { children: label }) : /* @__PURE__ */ jsx("div", { children: label }))
|
|
21638
|
+
] }),
|
|
21639
|
+
learnMoreContent
|
|
21414
21640
|
] }),
|
|
21415
|
-
|
|
21641
|
+
/* @__PURE__ */ jsx(Separator, { className: "mt-3 mb-8" })
|
|
21416
21642
|
] }),
|
|
21417
|
-
/* @__PURE__ */
|
|
21418
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21643
|
+
(title || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
|
|
21419
21644
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title })),
|
|
21420
21645
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("md:w-1/2", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("md:w-1/2", descriptionClassName), children: description }))
|
|
21421
21646
|
] }),
|
|
21422
|
-
/* @__PURE__ */ 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 })
|
|
21647
|
+
(utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ 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 })
|
|
21423
21648
|
]
|
|
21424
21649
|
}
|
|
21425
21650
|
);
|
|
21426
21651
|
}
|
|
21427
21652
|
function FeatureBentoUtilities({
|
|
21428
21653
|
label,
|
|
21429
|
-
labelIconName
|
|
21654
|
+
labelIconName,
|
|
21430
21655
|
labelIcon,
|
|
21431
21656
|
title,
|
|
21432
21657
|
description,
|
|
@@ -21449,7 +21674,7 @@ function FeatureBentoUtilities({
|
|
|
21449
21674
|
patternOpacity,
|
|
21450
21675
|
patternClassName
|
|
21451
21676
|
}) {
|
|
21452
|
-
const renderCard =
|
|
21677
|
+
const renderCard = React52.useCallback((card, index) => {
|
|
21453
21678
|
const hasImage = card.imageSrc || card.imageSlot;
|
|
21454
21679
|
const cardClasses = cn(
|
|
21455
21680
|
hasImage ? "overflow-hidden pt-0" : "p-6",
|
|
@@ -21495,12 +21720,16 @@ function FeatureBentoUtilities({
|
|
|
21495
21720
|
card.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: card.description })
|
|
21496
21721
|
] }, index);
|
|
21497
21722
|
}, [optixFlowConfig]);
|
|
21498
|
-
const renderColumn =
|
|
21723
|
+
const renderColumn = React52.useCallback((cards, slot) => {
|
|
21499
21724
|
if (slot) return slot;
|
|
21500
21725
|
if (!cards || cards.length === 0) return null;
|
|
21501
21726
|
return cards.map((card, index) => renderCard(card, index));
|
|
21502
21727
|
}, [renderCard]);
|
|
21503
|
-
const labelIconElement = useMemo$1(() =>
|
|
21728
|
+
const labelIconElement = useMemo$1(() => {
|
|
21729
|
+
if (labelIcon) return labelIcon;
|
|
21730
|
+
if (labelIconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20 });
|
|
21731
|
+
return null;
|
|
21732
|
+
}, [labelIcon, labelIconName]);
|
|
21504
21733
|
return /* @__PURE__ */ jsxs(
|
|
21505
21734
|
Section,
|
|
21506
21735
|
{
|
|
@@ -21512,7 +21741,7 @@ function FeatureBentoUtilities({
|
|
|
21512
21741
|
className: cn("bg-gray-50 dark:bg-background", className),
|
|
21513
21742
|
containerClassName: cn("max-w-7xl", containerClassName),
|
|
21514
21743
|
children: [
|
|
21515
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21744
|
+
(labelIconElement || label) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
|
|
21516
21745
|
labelIconElement,
|
|
21517
21746
|
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsx("div", { className: "text-sm", children: label }))
|
|
21518
21747
|
] }),
|
|
@@ -21551,15 +21780,15 @@ function FeatureChecklistThreeColumn({
|
|
|
21551
21780
|
patternOpacity,
|
|
21552
21781
|
patternClassName
|
|
21553
21782
|
}) {
|
|
21554
|
-
const getCheckItemContent =
|
|
21783
|
+
const getCheckItemContent = useCallback((item) => {
|
|
21555
21784
|
if (typeof item === "string") return item;
|
|
21556
21785
|
return item.content;
|
|
21557
21786
|
}, []);
|
|
21558
|
-
const getCheckItemClassName =
|
|
21787
|
+
const getCheckItemClassName = useCallback((item) => {
|
|
21559
21788
|
if (typeof item === "string") return void 0;
|
|
21560
21789
|
return item.className;
|
|
21561
21790
|
}, []);
|
|
21562
|
-
const renderChecklistColumn =
|
|
21791
|
+
const renderChecklistColumn = useCallback((items, slot, gapClass) => {
|
|
21563
21792
|
if (slot) return slot;
|
|
21564
21793
|
if (!items || items.length === 0) return null;
|
|
21565
21794
|
return /* @__PURE__ */ jsx("ul", { className: cn("flex flex-col text-muted-foreground", gapClass, checklistClassName), children: items.map((item, index) => /* @__PURE__ */ jsxs("li", { className: cn("flex items-center gap-2", getCheckItemClassName(item)), children: [
|
|
@@ -21567,7 +21796,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21567
21796
|
getCheckItemContent(item)
|
|
21568
21797
|
] }, index)) });
|
|
21569
21798
|
}, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
|
|
21570
|
-
const renderCardImage =
|
|
21799
|
+
const renderCardImage = useCallback((card) => {
|
|
21571
21800
|
if (card.imageSlot) return card.imageSlot;
|
|
21572
21801
|
if (card.image) {
|
|
21573
21802
|
return /* @__PURE__ */ jsx(
|
|
@@ -21583,7 +21812,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21583
21812
|
}
|
|
21584
21813
|
return null;
|
|
21585
21814
|
}, [optixFlowConfig]);
|
|
21586
|
-
const renderCardLink =
|
|
21815
|
+
const renderCardLink = useCallback((card) => {
|
|
21587
21816
|
if (card.linkSlot) return card.linkSlot;
|
|
21588
21817
|
if (!card.link) return null;
|
|
21589
21818
|
return /* @__PURE__ */ jsxs(
|
|
@@ -21646,7 +21875,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21646
21875
|
pattern,
|
|
21647
21876
|
patternOpacity,
|
|
21648
21877
|
patternClassName,
|
|
21649
|
-
className
|
|
21878
|
+
className,
|
|
21650
21879
|
containerClassName,
|
|
21651
21880
|
children: [
|
|
21652
21881
|
/* @__PURE__ */ 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: [
|
|
@@ -21678,26 +21907,25 @@ function FeatureIntegrationCards({
|
|
|
21678
21907
|
patternOpacity,
|
|
21679
21908
|
patternClassName
|
|
21680
21909
|
}) {
|
|
21681
|
-
const renderIntegrationIcon =
|
|
21910
|
+
const renderIntegrationIcon = useCallback((integration) => {
|
|
21682
21911
|
if (integration.iconSlot) return integration.iconSlot;
|
|
21683
|
-
if (integration.icon)
|
|
21684
|
-
|
|
21685
|
-
|
|
21686
|
-
|
|
21687
|
-
|
|
21688
|
-
|
|
21689
|
-
|
|
21690
|
-
|
|
21691
|
-
|
|
21692
|
-
|
|
21693
|
-
|
|
21694
|
-
}
|
|
21695
|
-
return null;
|
|
21912
|
+
if (!integration.icon) return null;
|
|
21913
|
+
return /* @__PURE__ */ jsx(
|
|
21914
|
+
Img,
|
|
21915
|
+
{
|
|
21916
|
+
src: integration.icon,
|
|
21917
|
+
alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
|
|
21918
|
+
className: cn("h-auto w-7", integration.iconClassName),
|
|
21919
|
+
loading: "lazy",
|
|
21920
|
+
optixFlowConfig
|
|
21921
|
+
}
|
|
21922
|
+
);
|
|
21696
21923
|
}, [optixFlowConfig]);
|
|
21697
|
-
const renderLinkLabel =
|
|
21924
|
+
const renderLinkLabel = useCallback((integration) => {
|
|
21698
21925
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
21926
|
+
if (!integration.linkLabel) return null;
|
|
21699
21927
|
return /* @__PURE__ */ jsxs("span", { className: cn("flex items-center gap-1 rounded-full border px-3 py-2.5 text-sm", integration.linkLabelClassName), children: [
|
|
21700
|
-
integration.linkLabel
|
|
21928
|
+
integration.linkLabel,
|
|
21701
21929
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
21702
21930
|
] });
|
|
21703
21931
|
}, []);
|
|
@@ -21705,10 +21933,12 @@ function FeatureIntegrationCards({
|
|
|
21705
21933
|
if (integrationsSlot) return integrationsSlot;
|
|
21706
21934
|
if (!integrations || integrations.length === 0) return null;
|
|
21707
21935
|
return integrations.map((integration, index) => {
|
|
21936
|
+
const iconContent = renderIntegrationIcon(integration);
|
|
21937
|
+
const linkLabelContent = renderLinkLabel(integration);
|
|
21708
21938
|
const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
21709
21939
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
21710
|
-
/* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children:
|
|
21711
|
-
|
|
21940
|
+
iconContent && /* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
|
|
21941
|
+
linkLabelContent
|
|
21712
21942
|
] }),
|
|
21713
21943
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
21714
21944
|
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title })),
|
|
@@ -21780,12 +22010,12 @@ function FeatureIconTabsContent({
|
|
|
21780
22010
|
patternOpacity,
|
|
21781
22011
|
patternClassName
|
|
21782
22012
|
}) {
|
|
21783
|
-
const renderTabIcon =
|
|
22013
|
+
const renderTabIcon = useCallback((tab) => {
|
|
21784
22014
|
if (tab.icon) return tab.icon;
|
|
21785
22015
|
if (tab.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: tab.iconName, size: 16 });
|
|
21786
|
-
return
|
|
22016
|
+
return null;
|
|
21787
22017
|
}, []);
|
|
21788
|
-
const renderTabContentActions =
|
|
22018
|
+
const renderTabContentActions = useCallback((content) => {
|
|
21789
22019
|
if (content.actionsSlot) return content.actionsSlot;
|
|
21790
22020
|
if (!content.actions || content.actions.length === 0) return null;
|
|
21791
22021
|
return content.actions.map((action, index) => {
|
|
@@ -21825,7 +22055,7 @@ function FeatureIconTabsContent({
|
|
|
21825
22055
|
);
|
|
21826
22056
|
});
|
|
21827
22057
|
}, []);
|
|
21828
|
-
const renderTabContentImage =
|
|
22058
|
+
const renderTabContentImage = useCallback((content) => {
|
|
21829
22059
|
if (content.imageSlot) return content.imageSlot;
|
|
21830
22060
|
if (content.imageSrc) {
|
|
21831
22061
|
return /* @__PURE__ */ jsx(
|
|
@@ -21852,7 +22082,7 @@ function FeatureIconTabsContent({
|
|
|
21852
22082
|
value: tab.value,
|
|
21853
22083
|
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),
|
|
21854
22084
|
children: [
|
|
21855
|
-
renderTabIcon(tab),
|
|
22085
|
+
(tab.icon || tab.iconName) && renderTabIcon(tab),
|
|
21856
22086
|
tab.label
|
|
21857
22087
|
]
|
|
21858
22088
|
},
|
|
@@ -21874,9 +22104,9 @@ function FeatureIconTabsContent({
|
|
|
21874
22104
|
content.badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
|
|
21875
22105
|
content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title })),
|
|
21876
22106
|
content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description })),
|
|
21877
|
-
renderTabContentActions(content)
|
|
22107
|
+
(content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
|
|
21878
22108
|
] }),
|
|
21879
|
-
/* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
22109
|
+
(content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
21880
22110
|
]
|
|
21881
22111
|
},
|
|
21882
22112
|
tab.value
|
|
@@ -21895,7 +22125,7 @@ function FeatureIconTabsContent({
|
|
|
21895
22125
|
className,
|
|
21896
22126
|
containerClassName: cn("mx-auto", containerClassName),
|
|
21897
22127
|
children: [
|
|
21898
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
22128
|
+
(badge || heading || description) && /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
21899
22129
|
badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
|
|
21900
22130
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
|
|
21901
22131
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
|
|
@@ -22058,28 +22288,30 @@ function FeatureImageOverlayBadge({
|
|
|
22058
22288
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
22059
22289
|
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22060
22290
|
] }),
|
|
22061
|
-
/* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22291
|
+
imageContent && /* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
22062
22292
|
imageContent,
|
|
22063
|
-
|
|
22064
|
-
|
|
22065
|
-
/* @__PURE__ */ jsxs("
|
|
22066
|
-
/* @__PURE__ */
|
|
22067
|
-
|
|
22068
|
-
|
|
22069
|
-
|
|
22070
|
-
|
|
22071
|
-
|
|
22072
|
-
|
|
22073
|
-
|
|
22074
|
-
|
|
22075
|
-
|
|
22076
|
-
|
|
22077
|
-
|
|
22078
|
-
|
|
22079
|
-
|
|
22080
|
-
|
|
22081
|
-
|
|
22082
|
-
|
|
22293
|
+
(avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
22294
|
+
/* @__PURE__ */ 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) }),
|
|
22295
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22296
|
+
(avatarSrc || avatarBadgeText) && /* @__PURE__ */ 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: [
|
|
22297
|
+
avatarSrc && /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
|
|
22298
|
+
avatarBadgeText
|
|
22299
|
+
] }),
|
|
22300
|
+
(overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
22301
|
+
overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
|
|
22302
|
+
overlayLinkText && /* @__PURE__ */ jsxs(
|
|
22303
|
+
Pressable,
|
|
22304
|
+
{
|
|
22305
|
+
href: overlayLinkUrl,
|
|
22306
|
+
onClick: overlayLinkOnClick,
|
|
22307
|
+
className: "flex items-center gap-1 font-medium",
|
|
22308
|
+
children: [
|
|
22309
|
+
overlayLinkText,
|
|
22310
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
22311
|
+
]
|
|
22312
|
+
}
|
|
22313
|
+
)
|
|
22314
|
+
] })
|
|
22083
22315
|
] })
|
|
22084
22316
|
] })
|
|
22085
22317
|
] })
|
|
@@ -22108,7 +22340,7 @@ function FeatureCategoryImageCards({
|
|
|
22108
22340
|
patternOpacity,
|
|
22109
22341
|
patternClassName
|
|
22110
22342
|
}) {
|
|
22111
|
-
const renderFeatureImage = (feature) => {
|
|
22343
|
+
const renderFeatureImage = useCallback((feature) => {
|
|
22112
22344
|
if (feature.imageSlot) return feature.imageSlot;
|
|
22113
22345
|
if (feature.imageSrc) {
|
|
22114
22346
|
return /* @__PURE__ */ jsx(
|
|
@@ -22123,7 +22355,7 @@ function FeatureCategoryImageCards({
|
|
|
22123
22355
|
);
|
|
22124
22356
|
}
|
|
22125
22357
|
return null;
|
|
22126
|
-
};
|
|
22358
|
+
}, [optixFlowConfig]);
|
|
22127
22359
|
const featuresContent = useMemo$1(() => {
|
|
22128
22360
|
if (featuresSlot) return featuresSlot;
|
|
22129
22361
|
if (!features || features.length === 0) return null;
|
|
@@ -22134,7 +22366,7 @@ function FeatureCategoryImageCards({
|
|
|
22134
22366
|
] }),
|
|
22135
22367
|
/* @__PURE__ */ jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
|
|
22136
22368
|
] }, index));
|
|
22137
|
-
}, [featuresSlot, features, cardClassName,
|
|
22369
|
+
}, [featuresSlot, features, cardClassName, renderFeatureImage]);
|
|
22138
22370
|
return /* @__PURE__ */ jsxs(
|
|
22139
22371
|
Section,
|
|
22140
22372
|
{
|
|
@@ -22175,12 +22407,12 @@ function FeatureBentoImageGrid({
|
|
|
22175
22407
|
patternOpacity,
|
|
22176
22408
|
patternClassName
|
|
22177
22409
|
}) {
|
|
22178
|
-
const renderItemIcon =
|
|
22410
|
+
const renderItemIcon = React52.useCallback((item) => {
|
|
22179
22411
|
if (item.icon) return item.icon;
|
|
22180
22412
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 24 });
|
|
22181
22413
|
return null;
|
|
22182
22414
|
}, []);
|
|
22183
|
-
const renderItemImage =
|
|
22415
|
+
const renderItemImage = React52.useCallback((item, imageClassName) => {
|
|
22184
22416
|
if (item.imageSlot) return item.imageSlot;
|
|
22185
22417
|
if (item.imageSrc) {
|
|
22186
22418
|
return /* @__PURE__ */ jsx(
|
|
@@ -22196,13 +22428,15 @@ function FeatureBentoImageGrid({
|
|
|
22196
22428
|
}
|
|
22197
22429
|
return null;
|
|
22198
22430
|
}, [optixFlowConfig]);
|
|
22199
|
-
const renderLargeCard =
|
|
22431
|
+
const renderLargeCard = React52.useCallback((item) => {
|
|
22432
|
+
const iconContent = renderItemIcon(item);
|
|
22433
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22200
22434
|
const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
22201
22435
|
renderItemImage(item, "h-full max-h-[580px] w-full rounded-xl object-cover object-center"),
|
|
22202
22436
|
/* @__PURE__ */ 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" }),
|
|
22203
22437
|
/* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22204
|
-
/* @__PURE__ */ 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: [
|
|
22205
|
-
|
|
22438
|
+
hasIconBadgeContent && /* @__PURE__ */ 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: [
|
|
22439
|
+
iconContent,
|
|
22206
22440
|
item.iconBadge
|
|
22207
22441
|
] }),
|
|
22208
22442
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22226,7 +22460,9 @@ function FeatureBentoImageGrid({
|
|
|
22226
22460
|
}
|
|
22227
22461
|
return /* @__PURE__ */ jsx("div", { className: cn("group relative col-span-2 row-span-3 overflow-hidden rounded-xl", largeCardClassName, item.className), children: cardContent });
|
|
22228
22462
|
}, [largeCardClassName, renderItemImage, renderItemIcon]);
|
|
22229
|
-
const renderSmallCard =
|
|
22463
|
+
const renderSmallCard = React52.useCallback((item, index) => {
|
|
22464
|
+
const iconContent = renderItemIcon(item);
|
|
22465
|
+
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
22230
22466
|
const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
22231
22467
|
renderItemImage(item, cn(
|
|
22232
22468
|
"h-full w-full rounded-xl object-cover object-center",
|
|
@@ -22234,8 +22470,8 @@ function FeatureBentoImageGrid({
|
|
|
22234
22470
|
)),
|
|
22235
22471
|
/* @__PURE__ */ 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" }),
|
|
22236
22472
|
/* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22237
|
-
/* @__PURE__ */ 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: [
|
|
22238
|
-
|
|
22473
|
+
hasIconBadgeContent && /* @__PURE__ */ 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: [
|
|
22474
|
+
iconContent,
|
|
22239
22475
|
item.iconBadge
|
|
22240
22476
|
] }),
|
|
22241
22477
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
@@ -22323,34 +22559,33 @@ function FeatureImageCardsThreeColumn({
|
|
|
22323
22559
|
patternOpacity,
|
|
22324
22560
|
patternClassName
|
|
22325
22561
|
}) {
|
|
22562
|
+
const renderImage = useCallback((card, imageAlt) => {
|
|
22563
|
+
if (card.imageSlot) return card.imageSlot;
|
|
22564
|
+
if (!card.imageSrc) return null;
|
|
22565
|
+
return /* @__PURE__ */ jsx(
|
|
22566
|
+
Img,
|
|
22567
|
+
{
|
|
22568
|
+
src: card.imageSrc,
|
|
22569
|
+
alt: imageAlt,
|
|
22570
|
+
className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
|
|
22571
|
+
loading: "lazy",
|
|
22572
|
+
optixFlowConfig
|
|
22573
|
+
}
|
|
22574
|
+
);
|
|
22575
|
+
}, [optixFlowConfig]);
|
|
22576
|
+
const renderBadgeIcon = useCallback((card) => {
|
|
22577
|
+
if (card.avatarSrc) {
|
|
22578
|
+
return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
|
|
22579
|
+
}
|
|
22580
|
+
if (card.icon) return card.icon;
|
|
22581
|
+
if (!card.iconName) return null;
|
|
22582
|
+
return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName, size: 24 });
|
|
22583
|
+
}, []);
|
|
22326
22584
|
const cardsContent = useMemo$1(() => {
|
|
22327
22585
|
if (cardsSlot) return cardsSlot;
|
|
22328
22586
|
if (!cards || cards.length === 0) return null;
|
|
22329
22587
|
return cards.map((card, index) => {
|
|
22330
22588
|
const imageAlt = card.imageAlt || (typeof card.title === "string" ? card.title : "Card image");
|
|
22331
|
-
const renderImage = () => {
|
|
22332
|
-
if (card.imageSlot) return card.imageSlot;
|
|
22333
|
-
if (card.imageSrc) {
|
|
22334
|
-
return /* @__PURE__ */ jsx(
|
|
22335
|
-
Img,
|
|
22336
|
-
{
|
|
22337
|
-
src: card.imageSrc,
|
|
22338
|
-
alt: imageAlt,
|
|
22339
|
-
className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
|
|
22340
|
-
loading: "lazy",
|
|
22341
|
-
optixFlowConfig
|
|
22342
|
-
}
|
|
22343
|
-
);
|
|
22344
|
-
}
|
|
22345
|
-
return null;
|
|
22346
|
-
};
|
|
22347
|
-
const renderBadgeIcon = () => {
|
|
22348
|
-
if (card.avatarSrc) {
|
|
22349
|
-
return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
|
|
22350
|
-
}
|
|
22351
|
-
if (card.icon) return card.icon;
|
|
22352
|
-
return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName || "lucide/zap", size: 24 });
|
|
22353
|
-
};
|
|
22354
22589
|
return /* @__PURE__ */ jsxs(
|
|
22355
22590
|
Pressable,
|
|
22356
22591
|
{
|
|
@@ -22358,10 +22593,10 @@ function FeatureImageCardsThreeColumn({
|
|
|
22358
22593
|
onClick: card.onClick,
|
|
22359
22594
|
className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
|
|
22360
22595
|
children: [
|
|
22361
|
-
renderImage(),
|
|
22596
|
+
renderImage(card, imageAlt),
|
|
22362
22597
|
/* @__PURE__ */ 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" }),
|
|
22363
22598
|
/* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
22364
|
-
/* @__PURE__ */ jsxs(
|
|
22599
|
+
(card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxs(
|
|
22365
22600
|
"span",
|
|
22366
22601
|
{
|
|
22367
22602
|
className: cn(
|
|
@@ -22370,7 +22605,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22370
22605
|
card.badgeClassName
|
|
22371
22606
|
),
|
|
22372
22607
|
children: [
|
|
22373
|
-
renderBadgeIcon(),
|
|
22608
|
+
renderBadgeIcon(card),
|
|
22374
22609
|
card.badgeText
|
|
22375
22610
|
]
|
|
22376
22611
|
}
|
|
@@ -22388,7 +22623,7 @@ function FeatureImageCardsThreeColumn({
|
|
|
22388
22623
|
index
|
|
22389
22624
|
);
|
|
22390
22625
|
});
|
|
22391
|
-
}, [cardsSlot, cards, cardClassName,
|
|
22626
|
+
}, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
|
|
22392
22627
|
return /* @__PURE__ */ jsxs(
|
|
22393
22628
|
Section,
|
|
22394
22629
|
{
|
|
@@ -22425,11 +22660,11 @@ function FeatureIconGridMuted({
|
|
|
22425
22660
|
patternOpacity,
|
|
22426
22661
|
patternClassName
|
|
22427
22662
|
}) {
|
|
22428
|
-
const renderFeatureIcon = (feature) => {
|
|
22663
|
+
const renderFeatureIcon = useCallback((feature) => {
|
|
22429
22664
|
if (feature.icon) return feature.icon;
|
|
22430
22665
|
if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
22431
22666
|
return null;
|
|
22432
|
-
};
|
|
22667
|
+
}, []);
|
|
22433
22668
|
const featuresContent = useMemo$1(() => {
|
|
22434
22669
|
if (featuresSlot) return featuresSlot;
|
|
22435
22670
|
if (!features || features.length === 0) return null;
|
|
@@ -22438,14 +22673,14 @@ function FeatureIconGridMuted({
|
|
|
22438
22673
|
{
|
|
22439
22674
|
className: cn("flex flex-col gap-2.5 rounded-xl border bg-background p-7", cardClassName, feature.className),
|
|
22440
22675
|
children: [
|
|
22441
|
-
renderFeatureIcon(feature),
|
|
22676
|
+
(feature.icon || feature.iconName) && renderFeatureIcon(feature),
|
|
22442
22677
|
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-semibold", feature.titleClassName), children: feature.title })),
|
|
22443
22678
|
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }))
|
|
22444
22679
|
]
|
|
22445
22680
|
},
|
|
22446
22681
|
index
|
|
22447
22682
|
));
|
|
22448
|
-
}, [featuresSlot, features, cardClassName]);
|
|
22683
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon]);
|
|
22449
22684
|
return /* @__PURE__ */ jsx(
|
|
22450
22685
|
Section,
|
|
22451
22686
|
{
|
|
@@ -22457,11 +22692,11 @@ function FeatureIconGridMuted({
|
|
|
22457
22692
|
className: cn("bg-muted/60", className),
|
|
22458
22693
|
containerClassName,
|
|
22459
22694
|
children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-10", children: [
|
|
22460
|
-
/* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
|
|
22695
|
+
(title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
|
|
22461
22696
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title })),
|
|
22462
22697
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
|
|
22463
22698
|
] }),
|
|
22464
|
-
/* @__PURE__ */ 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 })
|
|
22699
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ 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 })
|
|
22465
22700
|
] })
|
|
22466
22701
|
}
|
|
22467
22702
|
);
|
|
@@ -22494,37 +22729,25 @@ function FeatureStatsHighlight({
|
|
|
22494
22729
|
if (actionsSlot) return actionsSlot;
|
|
22495
22730
|
if (!actions || actions.length === 0) return null;
|
|
22496
22731
|
return actions.map((action, index) => {
|
|
22497
|
-
|
|
22498
|
-
|
|
22499
|
-
|
|
22500
|
-
|
|
22501
|
-
|
|
22502
|
-
|
|
22503
|
-
|
|
22504
|
-
|
|
22505
|
-
|
|
22506
|
-
"aria-label": action["aria-label"],
|
|
22507
|
-
asButton: true,
|
|
22508
|
-
children: action.children
|
|
22509
|
-
},
|
|
22510
|
-
index
|
|
22511
|
-
);
|
|
22512
|
-
}
|
|
22513
|
-
return /* @__PURE__ */ jsxs(
|
|
22732
|
+
const {
|
|
22733
|
+
label,
|
|
22734
|
+
icon,
|
|
22735
|
+
iconAfter,
|
|
22736
|
+
children,
|
|
22737
|
+
className: actionClassName,
|
|
22738
|
+
...pressableProps
|
|
22739
|
+
} = action;
|
|
22740
|
+
return /* @__PURE__ */ jsx(
|
|
22514
22741
|
Pressable,
|
|
22515
22742
|
{
|
|
22516
|
-
|
|
22517
|
-
onClick: action.onClick,
|
|
22518
|
-
variant: action.variant,
|
|
22519
|
-
size: action.size,
|
|
22520
|
-
className: cn("mt-4 w-fit gap-2", action.className),
|
|
22521
|
-
"aria-label": action["aria-label"],
|
|
22743
|
+
className: cn("mt-4 w-fit gap-2", actionClassName),
|
|
22522
22744
|
asButton: true,
|
|
22523
|
-
|
|
22524
|
-
|
|
22525
|
-
|
|
22526
|
-
|
|
22527
|
-
|
|
22745
|
+
...pressableProps,
|
|
22746
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
22747
|
+
icon,
|
|
22748
|
+
label,
|
|
22749
|
+
iconAfter
|
|
22750
|
+
] })
|
|
22528
22751
|
},
|
|
22529
22752
|
index
|
|
22530
22753
|
);
|
|
@@ -22538,8 +22761,8 @@ function FeatureStatsHighlight({
|
|
|
22538
22761
|
{
|
|
22539
22762
|
className: cn("flex flex-col gap-2 rounded-xl border bg-muted/30 p-6", statCardClassName, stat.className),
|
|
22540
22763
|
children: [
|
|
22541
|
-
/* @__PURE__ */ jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22542
|
-
/* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22764
|
+
stat.value && /* @__PURE__ */ jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22765
|
+
stat.label && /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22543
22766
|
]
|
|
22544
22767
|
},
|
|
22545
22768
|
index
|
|
@@ -22560,9 +22783,9 @@ function FeatureStatsHighlight({
|
|
|
22560
22783
|
badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
|
|
22561
22784
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
|
|
22562
22785
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
22563
|
-
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22786
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
|
|
22564
22787
|
] }),
|
|
22565
|
-
/* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22788
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
|
|
22566
22789
|
] })
|
|
22567
22790
|
}
|
|
22568
22791
|
);
|
|
@@ -22626,7 +22849,7 @@ function FeatureAccordionImage({
|
|
|
22626
22849
|
description,
|
|
22627
22850
|
items,
|
|
22628
22851
|
itemsSlot,
|
|
22629
|
-
defaultValue
|
|
22852
|
+
defaultValue,
|
|
22630
22853
|
className,
|
|
22631
22854
|
containerClassName,
|
|
22632
22855
|
headerClassName,
|
|
@@ -22643,24 +22866,25 @@ function FeatureAccordionImage({
|
|
|
22643
22866
|
patternOpacity,
|
|
22644
22867
|
patternClassName
|
|
22645
22868
|
}) {
|
|
22646
|
-
const [activeItem, setActiveItem] = React52.useState(defaultValue);
|
|
22869
|
+
const [activeItem, setActiveItem] = React52.useState(defaultValue || "item-0");
|
|
22647
22870
|
const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
|
|
22648
22871
|
const currentImage = items?.[activeIndex] || items?.[0];
|
|
22649
22872
|
const accordionItemsContent = useMemo$1(() => {
|
|
22650
22873
|
if (itemsSlot) return itemsSlot;
|
|
22651
22874
|
if (!items || items.length === 0) return null;
|
|
22652
22875
|
return items.map((item, index) => /* @__PURE__ */ jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
|
|
22653
|
-
/* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
|
|
22654
|
-
/* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
|
|
22876
|
+
item.title && /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
|
|
22877
|
+
item.content && /* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
|
|
22655
22878
|
] }, index));
|
|
22656
22879
|
}, [itemsSlot, items]);
|
|
22657
22880
|
const imageContent = useMemo$1(() => {
|
|
22658
22881
|
if (currentImage?.imageSlot) return currentImage.imageSlot;
|
|
22882
|
+
if (!currentImage?.imageSrc) return null;
|
|
22659
22883
|
return /* @__PURE__ */ jsx(
|
|
22660
22884
|
Img,
|
|
22661
22885
|
{
|
|
22662
|
-
src: currentImage
|
|
22663
|
-
alt: currentImage
|
|
22886
|
+
src: currentImage.imageSrc,
|
|
22887
|
+
alt: currentImage.imageAlt || "",
|
|
22664
22888
|
className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
|
|
22665
22889
|
loading: "lazy",
|
|
22666
22890
|
optixFlowConfig
|
|
@@ -22678,11 +22902,11 @@ function FeatureAccordionImage({
|
|
|
22678
22902
|
className,
|
|
22679
22903
|
containerClassName,
|
|
22680
22904
|
children: [
|
|
22681
|
-
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22905
|
+
(title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
22682
22906
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
|
|
22683
22907
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }))
|
|
22684
22908
|
] }),
|
|
22685
|
-
/* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22909
|
+
(itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
|
|
22686
22910
|
/* @__PURE__ */ jsx(
|
|
22687
22911
|
Accordion,
|
|
22688
22912
|
{
|
|
@@ -22717,49 +22941,52 @@ function FeatureCapabilitiesGrid({
|
|
|
22717
22941
|
patternOpacity,
|
|
22718
22942
|
patternClassName
|
|
22719
22943
|
}) {
|
|
22720
|
-
const renderItemIcon = (item) => {
|
|
22944
|
+
const renderItemIcon = React52.useCallback((item) => {
|
|
22721
22945
|
if (item.icon) return item.icon;
|
|
22722
22946
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
22723
|
-
return
|
|
22724
|
-
};
|
|
22947
|
+
return null;
|
|
22948
|
+
}, []);
|
|
22725
22949
|
const itemsContent = useMemo$1(() => {
|
|
22726
22950
|
if (itemsSlot) return itemsSlot;
|
|
22727
22951
|
if (!items || items.length === 0) return null;
|
|
22728
|
-
return items.map((item, index) =>
|
|
22729
|
-
|
|
22730
|
-
|
|
22731
|
-
|
|
22732
|
-
|
|
22733
|
-
|
|
22734
|
-
|
|
22735
|
-
|
|
22736
|
-
/* @__PURE__ */ jsx("div", { className: "absolute -
|
|
22737
|
-
/* @__PURE__ */
|
|
22738
|
-
|
|
22739
|
-
|
|
22740
|
-
|
|
22741
|
-
|
|
22742
|
-
|
|
22743
|
-
/* @__PURE__ */
|
|
22744
|
-
|
|
22745
|
-
|
|
22746
|
-
|
|
22747
|
-
|
|
22748
|
-
|
|
22749
|
-
|
|
22750
|
-
|
|
22751
|
-
|
|
22752
|
-
|
|
22753
|
-
|
|
22754
|
-
|
|
22755
|
-
|
|
22756
|
-
|
|
22757
|
-
|
|
22758
|
-
|
|
22759
|
-
|
|
22760
|
-
|
|
22761
|
-
|
|
22762
|
-
|
|
22952
|
+
return items.map((item, index) => {
|
|
22953
|
+
const iconContent = renderItemIcon(item);
|
|
22954
|
+
return /* @__PURE__ */ jsxs(
|
|
22955
|
+
Card,
|
|
22956
|
+
{
|
|
22957
|
+
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),
|
|
22958
|
+
children: [
|
|
22959
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
|
|
22960
|
+
/* @__PURE__ */ 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" }),
|
|
22961
|
+
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
|
|
22962
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
|
|
22963
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
|
|
22964
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
|
|
22965
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
|
|
22966
|
+
] }),
|
|
22967
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
|
|
22968
|
+
iconContent && /* @__PURE__ */ 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 }),
|
|
22969
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
22970
|
+
item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
|
|
22971
|
+
item.badge && /* @__PURE__ */ 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 })
|
|
22972
|
+
] }) })
|
|
22973
|
+
] }),
|
|
22974
|
+
item.description && /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
|
|
22975
|
+
/* @__PURE__ */ jsx(
|
|
22976
|
+
motion.div,
|
|
22977
|
+
{
|
|
22978
|
+
className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
|
|
22979
|
+
initial: { opacity: 0 },
|
|
22980
|
+
whileHover: { opacity: 1 },
|
|
22981
|
+
transition: { duration: 0.25 }
|
|
22982
|
+
}
|
|
22983
|
+
)
|
|
22984
|
+
]
|
|
22985
|
+
},
|
|
22986
|
+
`${typeof item.title === "string" ? item.title : "item"}-${index}`
|
|
22987
|
+
);
|
|
22988
|
+
});
|
|
22989
|
+
}, [itemsSlot, items, cardClassName, renderItemIcon]);
|
|
22763
22990
|
return /* @__PURE__ */ jsxs(
|
|
22764
22991
|
Section,
|
|
22765
22992
|
{
|
|
@@ -39371,7 +39598,7 @@ function CommunityInitiatives({
|
|
|
39371
39598
|
}
|
|
39372
39599
|
);
|
|
39373
39600
|
}
|
|
39374
|
-
var Controls = ({
|
|
39601
|
+
var Controls = React52.memo(({
|
|
39375
39602
|
handleNext,
|
|
39376
39603
|
handlePrevious,
|
|
39377
39604
|
isPreviousDisabled,
|
|
@@ -39399,9 +39626,9 @@ var Controls = ({
|
|
|
39399
39626
|
}
|
|
39400
39627
|
)
|
|
39401
39628
|
] });
|
|
39402
|
-
};
|
|
39403
|
-
var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
39404
|
-
const variants2 = {
|
|
39629
|
+
});
|
|
39630
|
+
var FeatureCard = React52.memo(({ feature, isActive, onClick }) => {
|
|
39631
|
+
const variants2 = useMemo$1(() => ({
|
|
39405
39632
|
initial: {
|
|
39406
39633
|
opacity: 0
|
|
39407
39634
|
},
|
|
@@ -39411,7 +39638,7 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39411
39638
|
exit: {
|
|
39412
39639
|
opacity: 0
|
|
39413
39640
|
}
|
|
39414
|
-
};
|
|
39641
|
+
}), []);
|
|
39415
39642
|
return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsx(
|
|
39416
39643
|
motion.div,
|
|
39417
39644
|
{
|
|
@@ -39441,13 +39668,13 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39441
39668
|
ease: "easeOut"
|
|
39442
39669
|
},
|
|
39443
39670
|
className: "p-6 text-sm md:p-8 md:text-base",
|
|
39444
|
-
children: /* @__PURE__ */ jsxs("p", { children: [
|
|
39445
|
-
/* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
|
|
39671
|
+
children: (feature.title || feature.description) && /* @__PURE__ */ jsxs("p", { children: [
|
|
39672
|
+
feature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
|
|
39446
39673
|
feature.title,
|
|
39447
39674
|
"."
|
|
39448
39675
|
] }),
|
|
39449
|
-
" ",
|
|
39450
|
-
/* @__PURE__ */ jsx("span", { children: feature.description })
|
|
39676
|
+
feature.title && feature.description && " ",
|
|
39677
|
+
feature.description && /* @__PURE__ */ jsx("span", { children: feature.description })
|
|
39451
39678
|
] })
|
|
39452
39679
|
},
|
|
39453
39680
|
`feature-description-active-${feature.title}`
|
|
@@ -39481,15 +39708,15 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
|
|
|
39481
39708
|
className: "shrink-0"
|
|
39482
39709
|
}
|
|
39483
39710
|
),
|
|
39484
|
-
/* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39711
|
+
feature.title && /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
|
|
39485
39712
|
]
|
|
39486
39713
|
},
|
|
39487
39714
|
`feature-description-inactive-${feature.title}`
|
|
39488
39715
|
)
|
|
39489
39716
|
}
|
|
39490
39717
|
) });
|
|
39491
|
-
};
|
|
39492
|
-
var FeaturesDesktop = ({
|
|
39718
|
+
});
|
|
39719
|
+
var FeaturesDesktop = React52.memo(({
|
|
39493
39720
|
features,
|
|
39494
39721
|
handleNext,
|
|
39495
39722
|
handlePrevious,
|
|
@@ -39520,8 +39747,8 @@ var FeaturesDesktop = ({
|
|
|
39520
39747
|
);
|
|
39521
39748
|
}) })
|
|
39522
39749
|
] });
|
|
39523
|
-
};
|
|
39524
|
-
var FeaturesMobile = ({
|
|
39750
|
+
});
|
|
39751
|
+
var FeaturesMobile = React52.memo(({
|
|
39525
39752
|
features,
|
|
39526
39753
|
handleNext,
|
|
39527
39754
|
handlePrevious,
|
|
@@ -39530,7 +39757,7 @@ var FeaturesMobile = ({
|
|
|
39530
39757
|
isPreviousDisabled,
|
|
39531
39758
|
isNextDisabled
|
|
39532
39759
|
}) => {
|
|
39533
|
-
const variants2 = {
|
|
39760
|
+
const variants2 = useMemo$1(() => ({
|
|
39534
39761
|
enter: (direction2) => ({
|
|
39535
39762
|
x: direction2 > 0 ? 100 : -100,
|
|
39536
39763
|
opacity: 0
|
|
@@ -39543,7 +39770,8 @@ var FeaturesMobile = ({
|
|
|
39543
39770
|
x: direction2 < 0 ? 100 : -100,
|
|
39544
39771
|
opacity: 0
|
|
39545
39772
|
})
|
|
39546
|
-
};
|
|
39773
|
+
}), []);
|
|
39774
|
+
const currentFeature = features[activeIndex];
|
|
39547
39775
|
return /* @__PURE__ */ jsx("div", { className: "relative z-10 flex flex-col items-center gap-6 md:hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-4", children: [
|
|
39548
39776
|
/* @__PURE__ */ jsx(
|
|
39549
39777
|
"button",
|
|
@@ -39568,13 +39796,13 @@ var FeaturesMobile = ({
|
|
|
39568
39796
|
opacity: { duration: 0.2 }
|
|
39569
39797
|
},
|
|
39570
39798
|
className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-background p-4",
|
|
39571
|
-
children: /* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
|
|
39572
|
-
/* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
|
|
39573
|
-
|
|
39799
|
+
children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
|
|
39800
|
+
currentFeature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
|
|
39801
|
+
currentFeature.title,
|
|
39574
39802
|
"."
|
|
39575
39803
|
] }),
|
|
39576
|
-
" ",
|
|
39577
|
-
/* @__PURE__ */ jsx("span", { children:
|
|
39804
|
+
currentFeature.title && currentFeature.description && " ",
|
|
39805
|
+
currentFeature.description && /* @__PURE__ */ jsx("span", { children: currentFeature.description })
|
|
39578
39806
|
] })
|
|
39579
39807
|
},
|
|
39580
39808
|
activeIndex
|
|
@@ -39590,9 +39818,9 @@ var FeaturesMobile = ({
|
|
|
39590
39818
|
}
|
|
39591
39819
|
)
|
|
39592
39820
|
] }) });
|
|
39593
|
-
};
|
|
39821
|
+
});
|
|
39594
39822
|
function FeatureAnimatedCarousel({
|
|
39595
|
-
features
|
|
39823
|
+
features,
|
|
39596
39824
|
className,
|
|
39597
39825
|
optixFlowConfig,
|
|
39598
39826
|
background,
|
|
@@ -39603,25 +39831,25 @@ function FeatureAnimatedCarousel({
|
|
|
39603
39831
|
}) {
|
|
39604
39832
|
const [activeIndex, setActiveIndex] = React52.useState(0);
|
|
39605
39833
|
const [direction, setDirection] = React52.useState(1);
|
|
39606
|
-
const handleNext = () => {
|
|
39607
|
-
if (activeIndex < features.length - 1) {
|
|
39834
|
+
const handleNext = useCallback(() => {
|
|
39835
|
+
if (features && activeIndex < features.length - 1) {
|
|
39608
39836
|
setDirection(1);
|
|
39609
39837
|
setActiveIndex(activeIndex + 1);
|
|
39610
39838
|
}
|
|
39611
|
-
};
|
|
39612
|
-
const handlePrevious = () => {
|
|
39839
|
+
}, [activeIndex, features]);
|
|
39840
|
+
const handlePrevious = useCallback(() => {
|
|
39613
39841
|
if (activeIndex > 0) {
|
|
39614
39842
|
setDirection(-1);
|
|
39615
39843
|
setActiveIndex(activeIndex - 1);
|
|
39616
39844
|
}
|
|
39617
|
-
};
|
|
39618
|
-
const handleFeatureClick = (index) => {
|
|
39845
|
+
}, [activeIndex]);
|
|
39846
|
+
const handleFeatureClick = useCallback((index) => {
|
|
39619
39847
|
setDirection(index > activeIndex ? 1 : -1);
|
|
39620
39848
|
setActiveIndex(index);
|
|
39621
|
-
};
|
|
39849
|
+
}, [activeIndex]);
|
|
39622
39850
|
const isPreviousDisabled = activeIndex === 0;
|
|
39623
|
-
const isNextDisabled = activeIndex === features.length - 1;
|
|
39624
|
-
const imageVariants = {
|
|
39851
|
+
const isNextDisabled = !features || activeIndex === features.length - 1;
|
|
39852
|
+
const imageVariants = useMemo$1(() => ({
|
|
39625
39853
|
enter: (direction2) => ({
|
|
39626
39854
|
x: direction2 > 0 ? 300 : -300,
|
|
39627
39855
|
opacity: 0
|
|
@@ -39634,7 +39862,22 @@ function FeatureAnimatedCarousel({
|
|
|
39634
39862
|
x: direction2 < 0 ? 300 : -300,
|
|
39635
39863
|
opacity: 0
|
|
39636
39864
|
})
|
|
39637
|
-
};
|
|
39865
|
+
}), []);
|
|
39866
|
+
if (!features || features.length === 0) {
|
|
39867
|
+
return /* @__PURE__ */ jsx(
|
|
39868
|
+
Section,
|
|
39869
|
+
{
|
|
39870
|
+
background,
|
|
39871
|
+
spacing,
|
|
39872
|
+
pattern,
|
|
39873
|
+
patternOpacity,
|
|
39874
|
+
patternClassName,
|
|
39875
|
+
className,
|
|
39876
|
+
children: /* @__PURE__ */ 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]" })
|
|
39877
|
+
}
|
|
39878
|
+
);
|
|
39879
|
+
}
|
|
39880
|
+
const currentFeature = features[activeIndex];
|
|
39638
39881
|
return /* @__PURE__ */ jsx(
|
|
39639
39882
|
Section,
|
|
39640
39883
|
{
|
|
@@ -39645,7 +39888,7 @@ function FeatureAnimatedCarousel({
|
|
|
39645
39888
|
patternClassName,
|
|
39646
39889
|
className,
|
|
39647
39890
|
children: /* @__PURE__ */ 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: [
|
|
39648
|
-
|
|
39891
|
+
/* @__PURE__ */ jsx(
|
|
39649
39892
|
FeaturesDesktop,
|
|
39650
39893
|
{
|
|
39651
39894
|
features,
|
|
@@ -39657,7 +39900,7 @@ function FeatureAnimatedCarousel({
|
|
|
39657
39900
|
isNextDisabled
|
|
39658
39901
|
}
|
|
39659
39902
|
),
|
|
39660
|
-
|
|
39903
|
+
/* @__PURE__ */ jsx(
|
|
39661
39904
|
FeaturesMobile,
|
|
39662
39905
|
{
|
|
39663
39906
|
features,
|
|
@@ -39669,7 +39912,7 @@ function FeatureAnimatedCarousel({
|
|
|
39669
39912
|
isNextDisabled
|
|
39670
39913
|
}
|
|
39671
39914
|
),
|
|
39672
|
-
/* @__PURE__ */ 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__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
|
|
39915
|
+
currentFeature?.image && /* @__PURE__ */ 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__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
|
|
39673
39916
|
motion.div,
|
|
39674
39917
|
{
|
|
39675
39918
|
custom: direction,
|
|
@@ -39685,8 +39928,8 @@ function FeatureAnimatedCarousel({
|
|
|
39685
39928
|
children: /* @__PURE__ */ jsx(
|
|
39686
39929
|
Img,
|
|
39687
39930
|
{
|
|
39688
|
-
src:
|
|
39689
|
-
alt:
|
|
39931
|
+
src: currentFeature.image,
|
|
39932
|
+
alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
|
|
39690
39933
|
className: "h-full w-full object-cover",
|
|
39691
39934
|
optixFlowConfig
|
|
39692
39935
|
}
|
|
@@ -62300,22 +62543,29 @@ var NavbarTabbedSections = ({
|
|
|
62300
62543
|
]
|
|
62301
62544
|
}
|
|
62302
62545
|
) }),
|
|
62303
|
-
/* @__PURE__ */ jsxs(
|
|
62304
|
-
|
|
62305
|
-
|
|
62306
|
-
|
|
62307
|
-
|
|
62308
|
-
|
|
62309
|
-
{
|
|
62310
|
-
|
|
62311
|
-
|
|
62312
|
-
|
|
62313
|
-
|
|
62314
|
-
|
|
62315
|
-
|
|
62316
|
-
|
|
62317
|
-
|
|
62318
|
-
|
|
62546
|
+
/* @__PURE__ */ jsxs(
|
|
62547
|
+
SheetContent,
|
|
62548
|
+
{
|
|
62549
|
+
side: "right",
|
|
62550
|
+
className: "w-[300px] overflow-y-auto",
|
|
62551
|
+
children: [
|
|
62552
|
+
/* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }),
|
|
62553
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 pt-8", children: [
|
|
62554
|
+
renderMobileMenu,
|
|
62555
|
+
/* @__PURE__ */ jsx(
|
|
62556
|
+
"div",
|
|
62557
|
+
{
|
|
62558
|
+
className: cn(
|
|
62559
|
+
"mt-4 flex flex-col gap-2 border-t pt-4",
|
|
62560
|
+
actionsClassName
|
|
62561
|
+
),
|
|
62562
|
+
children: renderAuthActions
|
|
62563
|
+
}
|
|
62564
|
+
)
|
|
62565
|
+
] })
|
|
62566
|
+
]
|
|
62567
|
+
}
|
|
62568
|
+
)
|
|
62319
62569
|
] })
|
|
62320
62570
|
]
|
|
62321
62571
|
}
|
|
@@ -77274,7 +77524,7 @@ function ListSearchableGrid({
|
|
|
77274
77524
|
}
|
|
77275
77525
|
);
|
|
77276
77526
|
}
|
|
77277
|
-
var { useMemo:
|
|
77527
|
+
var { useMemo: useMemo443 } = React52;
|
|
77278
77528
|
function OfferModalNewsletterDiscount({
|
|
77279
77529
|
title,
|
|
77280
77530
|
emailPlaceholder,
|
|
@@ -77341,7 +77591,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77341
77591
|
});
|
|
77342
77592
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77343
77593
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77344
|
-
const renderCloseButton =
|
|
77594
|
+
const renderCloseButton = useMemo443(() => {
|
|
77345
77595
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77346
77596
|
if (!closeButtonText) return null;
|
|
77347
77597
|
return /* @__PURE__ */ jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
@@ -77355,12 +77605,12 @@ function OfferModalNewsletterDiscount({
|
|
|
77355
77605
|
}
|
|
77356
77606
|
) }) });
|
|
77357
77607
|
}, [closeButtonSlot, closeButtonText, closeClassName]);
|
|
77358
|
-
const renderHeader =
|
|
77608
|
+
const renderHeader = useMemo443(() => {
|
|
77359
77609
|
if (headerSlot) return headerSlot;
|
|
77360
77610
|
if (!title) return null;
|
|
77361
77611
|
return /* @__PURE__ */ jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
|
|
77362
77612
|
}, [headerSlot, title, headerClassName, titleClassName]);
|
|
77363
|
-
const renderForm =
|
|
77613
|
+
const renderForm = useMemo443(() => {
|
|
77364
77614
|
if (formSlot) return formSlot;
|
|
77365
77615
|
return /* @__PURE__ */ jsxs(
|
|
77366
77616
|
Form,
|
|
@@ -77422,7 +77672,7 @@ function OfferModalNewsletterDiscount({
|
|
|
77422
77672
|
}
|
|
77423
77673
|
) });
|
|
77424
77674
|
}
|
|
77425
|
-
var { useMemo:
|
|
77675
|
+
var { useMemo: useMemo444 } = React52;
|
|
77426
77676
|
function OfferModalMembershipImage({
|
|
77427
77677
|
overline,
|
|
77428
77678
|
title,
|
|
@@ -77498,7 +77748,7 @@ function OfferModalMembershipImage({
|
|
|
77498
77748
|
});
|
|
77499
77749
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77500
77750
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77501
|
-
const renderImage =
|
|
77751
|
+
const renderImage = useMemo444(() => {
|
|
77502
77752
|
if (imageSlot) return imageSlot;
|
|
77503
77753
|
if (!image) return null;
|
|
77504
77754
|
return /* @__PURE__ */ jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsx(
|
|
@@ -77511,7 +77761,7 @@ function OfferModalMembershipImage({
|
|
|
77511
77761
|
}
|
|
77512
77762
|
) });
|
|
77513
77763
|
}, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
|
|
77514
|
-
const renderCloseButton =
|
|
77764
|
+
const renderCloseButton = useMemo444(() => {
|
|
77515
77765
|
if (closeButtonSlot) return closeButtonSlot;
|
|
77516
77766
|
return /* @__PURE__ */ jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
77517
77767
|
Pressable,
|
|
@@ -77527,7 +77777,7 @@ function OfferModalMembershipImage({
|
|
|
77527
77777
|
}
|
|
77528
77778
|
) }) });
|
|
77529
77779
|
}, [closeButtonSlot, closeClassName]);
|
|
77530
|
-
const renderForm =
|
|
77780
|
+
const renderForm = useMemo444(() => {
|
|
77531
77781
|
if (formSlot) return formSlot;
|
|
77532
77782
|
return /* @__PURE__ */ jsxs(
|
|
77533
77783
|
Form,
|
|
@@ -77590,7 +77840,7 @@ function OfferModalMembershipImage({
|
|
|
77590
77840
|
}
|
|
77591
77841
|
);
|
|
77592
77842
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77593
|
-
const renderFooter =
|
|
77843
|
+
const renderFooter = useMemo444(() => {
|
|
77594
77844
|
if (footerSlot) return footerSlot;
|
|
77595
77845
|
if (!description) return null;
|
|
77596
77846
|
return /* @__PURE__ */ jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
|
|
@@ -77618,7 +77868,7 @@ function OfferModalMembershipImage({
|
|
|
77618
77868
|
}
|
|
77619
77869
|
) });
|
|
77620
77870
|
}
|
|
77621
|
-
var { useMemo:
|
|
77871
|
+
var { useMemo: useMemo445 } = React52;
|
|
77622
77872
|
function OfferModalSheetNewsletter({
|
|
77623
77873
|
logo,
|
|
77624
77874
|
logoSlot,
|
|
@@ -77700,7 +77950,7 @@ function OfferModalSheetNewsletter({
|
|
|
77700
77950
|
});
|
|
77701
77951
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
77702
77952
|
const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
77703
|
-
const renderLogo =
|
|
77953
|
+
const renderLogo = useMemo445(() => {
|
|
77704
77954
|
if (logoSlot) return logoSlot;
|
|
77705
77955
|
if (!logo) return null;
|
|
77706
77956
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
@@ -77714,7 +77964,7 @@ function OfferModalSheetNewsletter({
|
|
|
77714
77964
|
}
|
|
77715
77965
|
);
|
|
77716
77966
|
}, [logoSlot, logo, logoClassName, optixFlowConfig]);
|
|
77717
|
-
const renderHeader =
|
|
77967
|
+
const renderHeader = useMemo445(() => {
|
|
77718
77968
|
if (headerSlot) return headerSlot;
|
|
77719
77969
|
return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
|
|
77720
77970
|
renderLogo,
|
|
@@ -77724,7 +77974,7 @@ function OfferModalSheetNewsletter({
|
|
|
77724
77974
|
] })
|
|
77725
77975
|
] });
|
|
77726
77976
|
}, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
|
|
77727
|
-
const renderForm =
|
|
77977
|
+
const renderForm = useMemo445(() => {
|
|
77728
77978
|
if (formSlot) return formSlot;
|
|
77729
77979
|
return /* @__PURE__ */ jsx(
|
|
77730
77980
|
Form,
|
|
@@ -77772,7 +78022,7 @@ function OfferModalSheetNewsletter({
|
|
|
77772
78022
|
}
|
|
77773
78023
|
);
|
|
77774
78024
|
}, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
|
|
77775
|
-
const renderLegal =
|
|
78025
|
+
const renderLegal = useMemo445(() => {
|
|
77776
78026
|
if (legalSlot) return legalSlot;
|
|
77777
78027
|
if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
|
|
77778
78028
|
return /* @__PURE__ */ jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
|
|
@@ -77786,7 +78036,7 @@ function OfferModalSheetNewsletter({
|
|
|
77786
78036
|
"."
|
|
77787
78037
|
] });
|
|
77788
78038
|
}, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
|
|
77789
|
-
const renderImage =
|
|
78039
|
+
const renderImage = useMemo445(() => {
|
|
77790
78040
|
if (imageSlot) return imageSlot;
|
|
77791
78041
|
if (!image) return null;
|
|
77792
78042
|
return /* @__PURE__ */ jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsx(
|