@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
|
@@ -950,8 +950,8 @@ function CarouselProductFeatureShowcase({
|
|
|
950
950
|
actionsClassName,
|
|
951
951
|
indicatorsClassName,
|
|
952
952
|
optixFlowConfig,
|
|
953
|
-
background
|
|
954
|
-
spacing
|
|
953
|
+
background,
|
|
954
|
+
spacing,
|
|
955
955
|
pattern,
|
|
956
956
|
patternOpacity
|
|
957
957
|
}) {
|
|
@@ -995,7 +995,14 @@ function CarouselProductFeatureShowcase({
|
|
|
995
995
|
if (actionsSlot) return actionsSlot;
|
|
996
996
|
if (!actions || actions.length === 0) return null;
|
|
997
997
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
|
|
998
|
-
const {
|
|
998
|
+
const {
|
|
999
|
+
label,
|
|
1000
|
+
icon,
|
|
1001
|
+
iconAfter,
|
|
1002
|
+
children,
|
|
1003
|
+
className: actionClassName,
|
|
1004
|
+
...pressableProps
|
|
1005
|
+
} = action;
|
|
999
1006
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1000
1007
|
Pressable,
|
|
1001
1008
|
{
|
|
@@ -1020,105 +1027,151 @@ function CarouselProductFeatureShowcase({
|
|
|
1020
1027
|
className: cn(className),
|
|
1021
1028
|
pattern,
|
|
1022
1029
|
patternOpacity,
|
|
1023
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
1030
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", containerClassName), children: [
|
|
1024
1031
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
1025
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
framerMotion.motion.div,
|
|
1032
|
-
{
|
|
1033
|
-
custom: direction,
|
|
1034
|
-
variants: slideVariants,
|
|
1035
|
-
initial: "enter",
|
|
1036
|
-
animate: "center",
|
|
1037
|
-
exit: "exit",
|
|
1038
|
-
transition: { duration: 0.3, ease: "easeInOut" },
|
|
1039
|
-
className: cn("absolute inset-0", activeFeature?.imageClassName),
|
|
1040
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1041
|
-
img.Img,
|
|
1042
|
-
{
|
|
1043
|
-
src: currentImage,
|
|
1044
|
-
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
1045
|
-
className: "h-full w-full object-cover",
|
|
1046
|
-
optixFlowConfig
|
|
1047
|
-
}
|
|
1048
|
-
)
|
|
1049
|
-
},
|
|
1050
|
-
`${activeIndex}-${activeColorIndex}`
|
|
1051
|
-
) }),
|
|
1052
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute bottom-4 right-4 flex gap-2", navigationClassName), children: [
|
|
1053
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1054
|
-
Pressable,
|
|
1055
|
-
{
|
|
1056
|
-
onClick: goToPrev,
|
|
1057
|
-
asButton: true,
|
|
1058
|
-
variant: "outline",
|
|
1059
|
-
size: "icon",
|
|
1060
|
-
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",
|
|
1061
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
1062
|
-
}
|
|
1032
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1033
|
+
"h2",
|
|
1034
|
+
{
|
|
1035
|
+
className: cn(
|
|
1036
|
+
"text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
|
|
1037
|
+
headingClassName
|
|
1063
1038
|
),
|
|
1064
|
-
|
|
1065
|
-
|
|
1039
|
+
children: heading
|
|
1040
|
+
}
|
|
1041
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
1042
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1043
|
+
"p",
|
|
1044
|
+
{
|
|
1045
|
+
className: cn(
|
|
1046
|
+
"mt-4 text-lg text-muted-foreground",
|
|
1047
|
+
subheadingClassName
|
|
1048
|
+
),
|
|
1049
|
+
children: subheading
|
|
1050
|
+
}
|
|
1051
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: subheadingClassName, children: subheading }))
|
|
1052
|
+
] }),
|
|
1053
|
+
featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1054
|
+
"div",
|
|
1055
|
+
{
|
|
1056
|
+
className: cn(
|
|
1057
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
1058
|
+
contentClassName
|
|
1059
|
+
),
|
|
1060
|
+
children: [
|
|
1061
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1062
|
+
"div",
|
|
1066
1063
|
{
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
)
|
|
1075
|
-
] })
|
|
1076
|
-
] }),
|
|
1077
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
1078
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1079
|
-
framerMotion.motion.div,
|
|
1080
|
-
{
|
|
1081
|
-
initial: { opacity: 0, y: 20 },
|
|
1082
|
-
animate: { opacity: 1, y: 0 },
|
|
1083
|
-
exit: { opacity: 0, y: -20 },
|
|
1084
|
-
transition: { duration: 0.3 },
|
|
1085
|
-
children: [
|
|
1086
|
-
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: activeFeature.title })),
|
|
1087
|
-
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
1088
|
-
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
1089
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
1090
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1091
|
-
"button",
|
|
1064
|
+
className: cn(
|
|
1065
|
+
"relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
|
|
1066
|
+
imageClassName
|
|
1067
|
+
),
|
|
1068
|
+
children: [
|
|
1069
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1070
|
+
framerMotion.motion.div,
|
|
1092
1071
|
{
|
|
1093
|
-
|
|
1072
|
+
custom: direction,
|
|
1073
|
+
variants: slideVariants,
|
|
1074
|
+
initial: "enter",
|
|
1075
|
+
animate: "center",
|
|
1076
|
+
exit: "exit",
|
|
1077
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
1094
1078
|
className: cn(
|
|
1095
|
-
"
|
|
1096
|
-
|
|
1079
|
+
"absolute inset-0",
|
|
1080
|
+
activeFeature?.imageClassName
|
|
1097
1081
|
),
|
|
1098
|
-
|
|
1099
|
-
|
|
1082
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1083
|
+
img.Img,
|
|
1084
|
+
{
|
|
1085
|
+
src: currentImage,
|
|
1086
|
+
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
1087
|
+
className: "h-full w-full object-cover",
|
|
1088
|
+
optixFlowConfig
|
|
1089
|
+
}
|
|
1090
|
+
)
|
|
1100
1091
|
},
|
|
1101
|
-
|
|
1102
|
-
)
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1092
|
+
`${activeIndex}-${activeColorIndex}`
|
|
1093
|
+
) }),
|
|
1094
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1095
|
+
"div",
|
|
1096
|
+
{
|
|
1097
|
+
className: cn(
|
|
1098
|
+
"absolute bottom-4 right-4 flex gap-2",
|
|
1099
|
+
navigationClassName
|
|
1100
|
+
),
|
|
1101
|
+
children: [
|
|
1102
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1103
|
+
Pressable,
|
|
1104
|
+
{
|
|
1105
|
+
onClick: goToPrev,
|
|
1106
|
+
asButton: true,
|
|
1107
|
+
variant: "outline",
|
|
1108
|
+
size: "icon",
|
|
1109
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
1110
|
+
}
|
|
1111
|
+
),
|
|
1112
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1113
|
+
Pressable,
|
|
1114
|
+
{
|
|
1115
|
+
onClick: goToNext,
|
|
1116
|
+
asButton: true,
|
|
1117
|
+
variant: "outline",
|
|
1118
|
+
size: "icon",
|
|
1119
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
1120
|
+
}
|
|
1121
|
+
)
|
|
1122
|
+
]
|
|
1123
|
+
}
|
|
1124
|
+
)
|
|
1125
|
+
]
|
|
1126
|
+
}
|
|
1127
|
+
),
|
|
1128
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
1129
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1130
|
+
framerMotion.motion.div,
|
|
1131
|
+
{
|
|
1132
|
+
initial: { opacity: 0, y: 20 },
|
|
1133
|
+
animate: { opacity: 1, y: 0 },
|
|
1134
|
+
exit: { opacity: 0, y: -20 },
|
|
1135
|
+
transition: { duration: 0.3 },
|
|
1136
|
+
children: [
|
|
1137
|
+
activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: activeFeature.title })),
|
|
1138
|
+
activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: activeFeature.description })),
|
|
1139
|
+
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
1140
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
1141
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1142
|
+
"button",
|
|
1143
|
+
{
|
|
1144
|
+
onClick: () => setActiveColorIndex(index),
|
|
1145
|
+
className: cn(
|
|
1146
|
+
"h-8 w-8 rounded-full border-2 transition-all",
|
|
1147
|
+
activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
|
|
1148
|
+
),
|
|
1149
|
+
style: { backgroundColor: color.value },
|
|
1150
|
+
title: color.name
|
|
1151
|
+
},
|
|
1152
|
+
color.name
|
|
1153
|
+
)) })
|
|
1154
|
+
] }),
|
|
1155
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: renderActions() })
|
|
1156
|
+
]
|
|
1157
|
+
},
|
|
1158
|
+
activeIndex
|
|
1159
|
+
) }),
|
|
1160
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1161
|
+
"button",
|
|
1162
|
+
{
|
|
1163
|
+
onClick: () => goToSlide(index),
|
|
1164
|
+
className: cn(
|
|
1165
|
+
"h-2 rounded-full transition-all",
|
|
1166
|
+
activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
|
1167
|
+
)
|
|
1168
|
+
},
|
|
1169
|
+
index
|
|
1170
|
+
)) })
|
|
1171
|
+
] })
|
|
1172
|
+
]
|
|
1173
|
+
}
|
|
1174
|
+
)
|
|
1122
1175
|
] })
|
|
1123
1176
|
}
|
|
1124
1177
|
);
|
|
@@ -929,8 +929,8 @@ function CarouselProductFeatureShowcase({
|
|
|
929
929
|
actionsClassName,
|
|
930
930
|
indicatorsClassName,
|
|
931
931
|
optixFlowConfig,
|
|
932
|
-
background
|
|
933
|
-
spacing
|
|
932
|
+
background,
|
|
933
|
+
spacing,
|
|
934
934
|
pattern,
|
|
935
935
|
patternOpacity
|
|
936
936
|
}) {
|
|
@@ -974,7 +974,14 @@ function CarouselProductFeatureShowcase({
|
|
|
974
974
|
if (actionsSlot) return actionsSlot;
|
|
975
975
|
if (!actions || actions.length === 0) return null;
|
|
976
976
|
return /* @__PURE__ */ jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
|
|
977
|
-
const {
|
|
977
|
+
const {
|
|
978
|
+
label,
|
|
979
|
+
icon,
|
|
980
|
+
iconAfter,
|
|
981
|
+
children,
|
|
982
|
+
className: actionClassName,
|
|
983
|
+
...pressableProps
|
|
984
|
+
} = action;
|
|
978
985
|
return /* @__PURE__ */ jsx(
|
|
979
986
|
Pressable,
|
|
980
987
|
{
|
|
@@ -999,105 +1006,151 @@ function CarouselProductFeatureShowcase({
|
|
|
999
1006
|
className: cn(className),
|
|
1000
1007
|
pattern,
|
|
1001
1008
|
patternOpacity,
|
|
1002
|
-
children: /* @__PURE__ */ jsxs("div", { className: cn("
|
|
1009
|
+
children: /* @__PURE__ */ jsxs("div", { className: cn("relative", containerClassName), children: [
|
|
1003
1010
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
1004
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
motion.div,
|
|
1011
|
-
{
|
|
1012
|
-
custom: direction,
|
|
1013
|
-
variants: slideVariants,
|
|
1014
|
-
initial: "enter",
|
|
1015
|
-
animate: "center",
|
|
1016
|
-
exit: "exit",
|
|
1017
|
-
transition: { duration: 0.3, ease: "easeInOut" },
|
|
1018
|
-
className: cn("absolute inset-0", activeFeature?.imageClassName),
|
|
1019
|
-
children: /* @__PURE__ */ jsx(
|
|
1020
|
-
Img,
|
|
1021
|
-
{
|
|
1022
|
-
src: currentImage,
|
|
1023
|
-
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
1024
|
-
className: "h-full w-full object-cover",
|
|
1025
|
-
optixFlowConfig
|
|
1026
|
-
}
|
|
1027
|
-
)
|
|
1028
|
-
},
|
|
1029
|
-
`${activeIndex}-${activeColorIndex}`
|
|
1030
|
-
) }),
|
|
1031
|
-
/* @__PURE__ */ jsxs("div", { className: cn("absolute bottom-4 right-4 flex gap-2", navigationClassName), children: [
|
|
1032
|
-
/* @__PURE__ */ jsx(
|
|
1033
|
-
Pressable,
|
|
1034
|
-
{
|
|
1035
|
-
onClick: goToPrev,
|
|
1036
|
-
asButton: true,
|
|
1037
|
-
variant: "outline",
|
|
1038
|
-
size: "icon",
|
|
1039
|
-
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",
|
|
1040
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
1041
|
-
}
|
|
1011
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
1012
|
+
"h2",
|
|
1013
|
+
{
|
|
1014
|
+
className: cn(
|
|
1015
|
+
"text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
|
|
1016
|
+
headingClassName
|
|
1042
1017
|
),
|
|
1043
|
-
|
|
1044
|
-
|
|
1018
|
+
children: heading
|
|
1019
|
+
}
|
|
1020
|
+
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
1021
|
+
subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
|
|
1022
|
+
"p",
|
|
1023
|
+
{
|
|
1024
|
+
className: cn(
|
|
1025
|
+
"mt-4 text-lg text-muted-foreground",
|
|
1026
|
+
subheadingClassName
|
|
1027
|
+
),
|
|
1028
|
+
children: subheading
|
|
1029
|
+
}
|
|
1030
|
+
) : /* @__PURE__ */ jsx("div", { className: subheadingClassName, children: subheading }))
|
|
1031
|
+
] }),
|
|
1032
|
+
featuresSlot ? /* @__PURE__ */ jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxs(
|
|
1033
|
+
"div",
|
|
1034
|
+
{
|
|
1035
|
+
className: cn(
|
|
1036
|
+
"grid gap-8 lg:grid-cols-2 lg:gap-12",
|
|
1037
|
+
contentClassName
|
|
1038
|
+
),
|
|
1039
|
+
children: [
|
|
1040
|
+
/* @__PURE__ */ jsxs(
|
|
1041
|
+
"div",
|
|
1045
1042
|
{
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
)
|
|
1054
|
-
] })
|
|
1055
|
-
] }),
|
|
1056
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
1057
|
-
/* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
|
|
1058
|
-
motion.div,
|
|
1059
|
-
{
|
|
1060
|
-
initial: { opacity: 0, y: 20 },
|
|
1061
|
-
animate: { opacity: 1, y: 0 },
|
|
1062
|
-
exit: { opacity: 0, y: -20 },
|
|
1063
|
-
transition: { duration: 0.3 },
|
|
1064
|
-
children: [
|
|
1065
|
-
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 })),
|
|
1066
|
-
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 })),
|
|
1067
|
-
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
1068
|
-
/* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
1069
|
-
/* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
|
|
1070
|
-
"button",
|
|
1043
|
+
className: cn(
|
|
1044
|
+
"relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
|
|
1045
|
+
imageClassName
|
|
1046
|
+
),
|
|
1047
|
+
children: [
|
|
1048
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsx(
|
|
1049
|
+
motion.div,
|
|
1071
1050
|
{
|
|
1072
|
-
|
|
1051
|
+
custom: direction,
|
|
1052
|
+
variants: slideVariants,
|
|
1053
|
+
initial: "enter",
|
|
1054
|
+
animate: "center",
|
|
1055
|
+
exit: "exit",
|
|
1056
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
1073
1057
|
className: cn(
|
|
1074
|
-
"
|
|
1075
|
-
|
|
1058
|
+
"absolute inset-0",
|
|
1059
|
+
activeFeature?.imageClassName
|
|
1076
1060
|
),
|
|
1077
|
-
|
|
1078
|
-
|
|
1061
|
+
children: /* @__PURE__ */ jsx(
|
|
1062
|
+
Img,
|
|
1063
|
+
{
|
|
1064
|
+
src: currentImage,
|
|
1065
|
+
alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
|
|
1066
|
+
className: "h-full w-full object-cover",
|
|
1067
|
+
optixFlowConfig
|
|
1068
|
+
}
|
|
1069
|
+
)
|
|
1079
1070
|
},
|
|
1080
|
-
|
|
1081
|
-
)
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1071
|
+
`${activeIndex}-${activeColorIndex}`
|
|
1072
|
+
) }),
|
|
1073
|
+
/* @__PURE__ */ jsxs(
|
|
1074
|
+
"div",
|
|
1075
|
+
{
|
|
1076
|
+
className: cn(
|
|
1077
|
+
"absolute bottom-4 right-4 flex gap-2",
|
|
1078
|
+
navigationClassName
|
|
1079
|
+
),
|
|
1080
|
+
children: [
|
|
1081
|
+
/* @__PURE__ */ jsx(
|
|
1082
|
+
Pressable,
|
|
1083
|
+
{
|
|
1084
|
+
onClick: goToPrev,
|
|
1085
|
+
asButton: true,
|
|
1086
|
+
variant: "outline",
|
|
1087
|
+
size: "icon",
|
|
1088
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
1089
|
+
}
|
|
1090
|
+
),
|
|
1091
|
+
/* @__PURE__ */ jsx(
|
|
1092
|
+
Pressable,
|
|
1093
|
+
{
|
|
1094
|
+
onClick: goToNext,
|
|
1095
|
+
asButton: true,
|
|
1096
|
+
variant: "outline",
|
|
1097
|
+
size: "icon",
|
|
1098
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
1099
|
+
}
|
|
1100
|
+
)
|
|
1101
|
+
]
|
|
1102
|
+
}
|
|
1103
|
+
)
|
|
1104
|
+
]
|
|
1105
|
+
}
|
|
1106
|
+
),
|
|
1107
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
|
|
1108
|
+
/* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
|
|
1109
|
+
motion.div,
|
|
1110
|
+
{
|
|
1111
|
+
initial: { opacity: 0, y: 20 },
|
|
1112
|
+
animate: { opacity: 1, y: 0 },
|
|
1113
|
+
exit: { opacity: 0, y: -20 },
|
|
1114
|
+
transition: { duration: 0.3 },
|
|
1115
|
+
children: [
|
|
1116
|
+
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 })),
|
|
1117
|
+
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 })),
|
|
1118
|
+
activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
|
|
1119
|
+
/* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
|
|
1120
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
|
|
1121
|
+
"button",
|
|
1122
|
+
{
|
|
1123
|
+
onClick: () => setActiveColorIndex(index),
|
|
1124
|
+
className: cn(
|
|
1125
|
+
"h-8 w-8 rounded-full border-2 transition-all",
|
|
1126
|
+
activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
|
|
1127
|
+
),
|
|
1128
|
+
style: { backgroundColor: color.value },
|
|
1129
|
+
title: color.name
|
|
1130
|
+
},
|
|
1131
|
+
color.name
|
|
1132
|
+
)) })
|
|
1133
|
+
] }),
|
|
1134
|
+
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
|
|
1135
|
+
]
|
|
1136
|
+
},
|
|
1137
|
+
activeIndex
|
|
1138
|
+
) }),
|
|
1139
|
+
/* @__PURE__ */ jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsx(
|
|
1140
|
+
"button",
|
|
1141
|
+
{
|
|
1142
|
+
onClick: () => goToSlide(index),
|
|
1143
|
+
className: cn(
|
|
1144
|
+
"h-2 rounded-full transition-all",
|
|
1145
|
+
activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
|
1146
|
+
)
|
|
1147
|
+
},
|
|
1148
|
+
index
|
|
1149
|
+
)) })
|
|
1150
|
+
] })
|
|
1151
|
+
]
|
|
1152
|
+
}
|
|
1153
|
+
)
|
|
1101
1154
|
] })
|
|
1102
1155
|
}
|
|
1103
1156
|
);
|
|
@@ -982,12 +982,16 @@ function SliderBtn({
|
|
|
982
982
|
}
|
|
983
983
|
function SliderWrapper({ children, value, className }) {
|
|
984
984
|
const { active } = useProgressSliderContext();
|
|
985
|
-
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "
|
|
985
|
+
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsxRuntime.jsx(
|
|
986
986
|
framerMotion.motion.div,
|
|
987
987
|
{
|
|
988
|
-
initial: { opacity: 0 },
|
|
989
|
-
animate: { opacity: 1 },
|
|
990
|
-
exit: { opacity: 0 },
|
|
988
|
+
initial: { opacity: 0, scale: 0.98 },
|
|
989
|
+
animate: { opacity: 1, scale: 1 },
|
|
990
|
+
exit: { opacity: 0, scale: 0.98 },
|
|
991
|
+
transition: {
|
|
992
|
+
duration: 0.4,
|
|
993
|
+
ease: [0.4, 0, 0.2, 1]
|
|
994
|
+
},
|
|
991
995
|
className: cn("", className),
|
|
992
996
|
children
|
|
993
997
|
},
|
|
@@ -1098,12 +1102,12 @@ function CarouselProgressSlider({
|
|
|
1098
1102
|
pattern,
|
|
1099
1103
|
patternOpacity,
|
|
1100
1104
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2", contentClassName), children: [
|
|
1101
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", imageClassName), children: [
|
|
1102
|
-
slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1105
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
|
|
1106
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1103
1107
|
SliderWrapper,
|
|
1104
1108
|
{
|
|
1105
1109
|
value: slide.id,
|
|
1106
|
-
className: cn("", slide.className),
|
|
1110
|
+
className: cn("absolute inset-0", slide.className),
|
|
1107
1111
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1108
1112
|
img.Img,
|
|
1109
1113
|
{
|
|
@@ -1118,8 +1122,8 @@ function CarouselProgressSlider({
|
|
|
1118
1122
|
) })
|
|
1119
1123
|
},
|
|
1120
1124
|
slide.id
|
|
1121
|
-
)),
|
|
1122
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1125
|
+
)) }),
|
|
1126
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1123
1127
|
Pressable,
|
|
1124
1128
|
{
|
|
1125
1129
|
onClick: togglePause,
|
|
@@ -961,12 +961,16 @@ function SliderBtn({
|
|
|
961
961
|
}
|
|
962
962
|
function SliderWrapper({ children, value, className }) {
|
|
963
963
|
const { active } = useProgressSliderContext();
|
|
964
|
-
return /* @__PURE__ */ jsx(AnimatePresence, { mode: "
|
|
964
|
+
return /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsx(
|
|
965
965
|
motion.div,
|
|
966
966
|
{
|
|
967
|
-
initial: { opacity: 0 },
|
|
968
|
-
animate: { opacity: 1 },
|
|
969
|
-
exit: { opacity: 0 },
|
|
967
|
+
initial: { opacity: 0, scale: 0.98 },
|
|
968
|
+
animate: { opacity: 1, scale: 1 },
|
|
969
|
+
exit: { opacity: 0, scale: 0.98 },
|
|
970
|
+
transition: {
|
|
971
|
+
duration: 0.4,
|
|
972
|
+
ease: [0.4, 0, 0.2, 1]
|
|
973
|
+
},
|
|
970
974
|
className: cn("", className),
|
|
971
975
|
children
|
|
972
976
|
},
|
|
@@ -1077,12 +1081,12 @@ function CarouselProgressSlider({
|
|
|
1077
1081
|
pattern,
|
|
1078
1082
|
patternOpacity,
|
|
1079
1083
|
children: /* @__PURE__ */ jsx("div", { className: cn("relative", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2", contentClassName), children: [
|
|
1080
|
-
/* @__PURE__ */ jsxs("div", { className: cn("relative", imageClassName), children: [
|
|
1081
|
-
slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
|
|
1084
|
+
/* @__PURE__ */ jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
|
|
1085
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
|
|
1082
1086
|
SliderWrapper,
|
|
1083
1087
|
{
|
|
1084
1088
|
value: slide.id,
|
|
1085
|
-
className: cn("", slide.className),
|
|
1089
|
+
className: cn("absolute inset-0", slide.className),
|
|
1086
1090
|
children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
|
|
1087
1091
|
Img,
|
|
1088
1092
|
{
|
|
@@ -1097,8 +1101,8 @@ function CarouselProgressSlider({
|
|
|
1097
1101
|
) })
|
|
1098
1102
|
},
|
|
1099
1103
|
slide.id
|
|
1100
|
-
)),
|
|
1101
|
-
/* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
|
|
1104
|
+
)) }),
|
|
1105
|
+
/* @__PURE__ */ jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
|
|
1102
1106
|
Pressable,
|
|
1103
1107
|
{
|
|
1104
1108
|
onClick: togglePause,
|