@opensite/ui 2.8.5 → 2.8.7
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/about-developer-profile.cjs +17 -10
- package/dist/about-developer-profile.js +17 -10
- package/dist/article-chapters-author.cjs +17 -10
- package/dist/article-chapters-author.js +17 -10
- package/dist/carousel-animated-sections.cjs +79 -25
- package/dist/carousel-animated-sections.d.cts +7 -2
- package/dist/carousel-animated-sections.d.ts +7 -2
- package/dist/carousel-animated-sections.js +79 -25
- package/dist/carousel-gallery-thumbnails.cjs +79 -25
- package/dist/carousel-gallery-thumbnails.d.cts +7 -2
- package/dist/carousel-gallery-thumbnails.d.ts +7 -2
- package/dist/carousel-gallery-thumbnails.js +79 -25
- package/dist/carousel-portfolio-hero.cjs +79 -25
- package/dist/carousel-portfolio-hero.d.cts +7 -2
- package/dist/carousel-portfolio-hero.d.ts +7 -2
- package/dist/carousel-portfolio-hero.js +79 -25
- package/dist/components.cjs +35 -10
- package/dist/components.d.cts +29 -2
- package/dist/components.d.ts +29 -2
- package/dist/components.js +35 -11
- package/dist/footer-accordion-social.cjs +17 -10
- package/dist/footer-accordion-social.js +17 -10
- package/dist/footer-animated-social.cjs +17 -10
- package/dist/footer-animated-social.js +17 -10
- package/dist/footer-brand-description.cjs +17 -10
- package/dist/footer-brand-description.js +17 -10
- package/dist/footer-brand-links-contact.cjs +17 -10
- package/dist/footer-brand-links-contact.js +17 -10
- package/dist/footer-comprehensive-links.cjs +17 -10
- package/dist/footer-comprehensive-links.js +17 -10
- package/dist/footer-contact-card.cjs +17 -10
- package/dist/footer-contact-card.js +17 -10
- package/dist/footer-cta-banner.cjs +17 -10
- package/dist/footer-cta-banner.js +17 -10
- package/dist/footer-cta-social.cjs +17 -10
- package/dist/footer-cta-social.js +17 -10
- package/dist/footer-info-cards-accordion.cjs +17 -10
- package/dist/footer-info-cards-accordion.js +17 -10
- package/dist/footer-nav-social.cjs +17 -10
- package/dist/footer-nav-social.js +17 -10
- package/dist/footer-newsletter-contact.cjs +17 -10
- package/dist/footer-newsletter-contact.js +17 -10
- package/dist/footer-newsletter-grid.cjs +17 -10
- package/dist/footer-newsletter-grid.js +17 -10
- package/dist/footer-newsletter-minimal.cjs +17 -10
- package/dist/footer-newsletter-minimal.js +17 -10
- package/dist/footer-social-apps.cjs +17 -10
- package/dist/footer-social-apps.js +17 -10
- package/dist/footer-social-newsletter.cjs +17 -10
- package/dist/footer-social-newsletter.js +17 -10
- package/dist/footer-split-image-accordion.cjs +17 -10
- package/dist/footer-split-image-accordion.js +17 -10
- package/dist/hero-badge-shadow-overlay.cjs +1 -1
- package/dist/hero-badge-shadow-overlay.js +1 -1
- package/dist/hero-coming-soon-countdown.cjs +17 -10
- package/dist/hero-coming-soon-countdown.js +17 -10
- package/dist/hero-video-background-dark.cjs +78 -16
- package/dist/hero-video-background-dark.d.cts +7 -2
- package/dist/hero-video-background-dark.d.ts +7 -2
- package/dist/hero-video-background-dark.js +78 -16
- package/dist/index.cjs +35 -10
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +35 -11
- package/dist/link-page-bento-layout.cjs +17 -10
- package/dist/link-page-bento-layout.js +17 -10
- package/dist/link-page-grid-cards.cjs +17 -10
- package/dist/link-page-grid-cards.js +17 -10
- package/dist/link-page-minimal-profile.cjs +17 -10
- package/dist/link-page-minimal-profile.js +17 -10
- package/dist/link-page-newsletter-social.cjs +17 -10
- package/dist/link-page-newsletter-social.js +17 -10
- package/dist/link-tree-block.cjs +17 -10
- package/dist/link-tree-block.js +17 -10
- package/dist/navbar-fullscreen-menu.cjs +17 -10
- package/dist/navbar-fullscreen-menu.js +17 -10
- package/dist/navbar-transparent-overlay.cjs +17 -10
- package/dist/navbar-transparent-overlay.js +17 -10
- package/dist/registry.cjs +1398 -851
- package/dist/registry.js +1398 -851
- package/dist/social-link-icon.cjs +17 -10
- package/dist/social-link-icon.d.cts +5 -0
- package/dist/social-link-icon.d.ts +5 -0
- package/dist/social-link-icon.js +17 -10
- package/dist/testimonials-animated-split.cjs +5 -5
- package/dist/testimonials-animated-split.js +5 -5
- package/dist/testimonials-bento-grid.cjs +48 -56
- package/dist/testimonials-bento-grid.js +48 -56
- package/dist/testimonials-carousel-image.cjs +608 -96
- package/dist/testimonials-carousel-image.d.cts +26 -2
- package/dist/testimonials-carousel-image.d.ts +26 -2
- package/dist/testimonials-carousel-image.js +609 -97
- package/dist/testimonials-centered-avatars.cjs +89 -62
- package/dist/testimonials-centered-avatars.d.cts +5 -1
- package/dist/testimonials-centered-avatars.d.ts +5 -1
- package/dist/testimonials-centered-avatars.js +89 -62
- package/dist/testimonials-company-logo.cjs +6 -6
- package/dist/testimonials-company-logo.js +6 -6
- package/dist/testimonials-grid-add-review.cjs +51 -29
- package/dist/testimonials-grid-add-review.js +51 -29
- package/dist/testimonials-images-helpful.cjs +181 -160
- package/dist/testimonials-images-helpful.d.cts +9 -1
- package/dist/testimonials-images-helpful.d.ts +9 -1
- package/dist/testimonials-images-helpful.js +181 -159
- package/dist/testimonials-list-verified.cjs +63 -44
- package/dist/testimonials-list-verified.d.cts +5 -1
- package/dist/testimonials-list-verified.d.ts +5 -1
- package/dist/testimonials-list-verified.js +64 -45
- package/dist/testimonials-logo-cards.cjs +53 -29
- package/dist/testimonials-logo-cards.d.cts +5 -1
- package/dist/testimonials-logo-cards.d.ts +5 -1
- package/dist/testimonials-logo-cards.js +53 -29
- package/dist/testimonials-marquee.cjs +524 -102
- package/dist/testimonials-marquee.d.cts +5 -1
- package/dist/testimonials-marquee.d.ts +5 -1
- package/dist/testimonials-marquee.js +525 -100
- package/dist/testimonials-mini-dividers.cjs +120 -83
- package/dist/testimonials-mini-dividers.d.cts +10 -6
- package/dist/testimonials-mini-dividers.d.ts +10 -6
- package/dist/testimonials-mini-dividers.js +120 -83
- package/dist/testimonials-minimal-numbered.cjs +7 -6
- package/dist/testimonials-minimal-numbered.d.cts +5 -1
- package/dist/testimonials-minimal-numbered.d.ts +5 -1
- package/dist/testimonials-minimal-numbered.js +7 -6
- package/dist/testimonials-parallax-number.cjs +14 -8
- package/dist/testimonials-parallax-number.js +14 -8
- package/dist/testimonials-scrolling-columns.cjs +97 -13
- package/dist/testimonials-scrolling-columns.js +97 -13
- package/dist/testimonials-simple-grid.cjs +513 -68
- package/dist/testimonials-simple-grid.d.cts +9 -5
- package/dist/testimonials-simple-grid.d.ts +9 -5
- package/dist/testimonials-simple-grid.js +510 -62
- package/dist/testimonials-slider-minimal.cjs +604 -90
- package/dist/testimonials-slider-minimal.d.cts +17 -1
- package/dist/testimonials-slider-minimal.d.ts +17 -1
- package/dist/testimonials-slider-minimal.js +598 -81
- package/dist/testimonials-split-image.cjs +452 -17
- package/dist/testimonials-split-image.js +448 -13
- package/dist/testimonials-twitter-cards.cjs +26 -14
- package/dist/testimonials-twitter-cards.js +26 -14
- package/package.json +11 -1
package/dist/registry.cjs
CHANGED
|
@@ -80,16 +80,6 @@ var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMe
|
|
|
80
80
|
function cn(...inputs) {
|
|
81
81
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
82
82
|
}
|
|
83
|
-
var BRIGHTNESS_CLASS_MAP = {
|
|
84
|
-
"10": "brightness-[.1]",
|
|
85
|
-
"20": "brightness-[.2]",
|
|
86
|
-
"25": "brightness-[.25]",
|
|
87
|
-
"30": "brightness-[.3]",
|
|
88
|
-
"40": "brightness-[.4]",
|
|
89
|
-
"50": "brightness-50",
|
|
90
|
-
"75": "brightness-75",
|
|
91
|
-
"100": "brightness-100"
|
|
92
|
-
};
|
|
93
83
|
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
94
84
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
95
85
|
if (isDark) {
|
|
@@ -2070,6 +2060,23 @@ function PopoverContent({
|
|
|
2070
2060
|
}
|
|
2071
2061
|
) });
|
|
2072
2062
|
}
|
|
2063
|
+
function StarRating({
|
|
2064
|
+
rating,
|
|
2065
|
+
size = 18,
|
|
2066
|
+
className
|
|
2067
|
+
}) {
|
|
2068
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2069
|
+
DynamicIcon,
|
|
2070
|
+
{
|
|
2071
|
+
name: "icon-park-solid/star",
|
|
2072
|
+
size,
|
|
2073
|
+
className: cn(
|
|
2074
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
2075
|
+
)
|
|
2076
|
+
},
|
|
2077
|
+
star
|
|
2078
|
+
)) });
|
|
2079
|
+
}
|
|
2073
2080
|
var BUTTON_SIZES = {
|
|
2074
2081
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
2075
2082
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -2171,6 +2178,7 @@ var SocialLinkIcon = React8__namespace.forwardRef(
|
|
|
2171
2178
|
iconClassName,
|
|
2172
2179
|
className,
|
|
2173
2180
|
iconNameOverride,
|
|
2181
|
+
iconOnly = false,
|
|
2174
2182
|
...pressableProps
|
|
2175
2183
|
}, ref) => {
|
|
2176
2184
|
const platform = usePlatformFromUrl.usePlatformFromUrl(href);
|
|
@@ -2183,6 +2191,21 @@ var SocialLinkIcon = React8__namespace.forwardRef(
|
|
|
2183
2191
|
const accessibleLabel = React8__namespace.useMemo(() => {
|
|
2184
2192
|
return label || platformName;
|
|
2185
2193
|
}, [label, platformName]);
|
|
2194
|
+
const icon = React8__namespace.useMemo(() => {
|
|
2195
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2196
|
+
DynamicIcon,
|
|
2197
|
+
{
|
|
2198
|
+
name: iconName,
|
|
2199
|
+
size: iconSize,
|
|
2200
|
+
color: iconColor,
|
|
2201
|
+
className: iconClassName,
|
|
2202
|
+
alt: accessibleLabel
|
|
2203
|
+
}
|
|
2204
|
+
);
|
|
2205
|
+
}, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
|
|
2206
|
+
if (iconOnly) {
|
|
2207
|
+
return icon;
|
|
2208
|
+
}
|
|
2186
2209
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2187
2210
|
Pressable,
|
|
2188
2211
|
{
|
|
@@ -2194,16 +2217,7 @@ var SocialLinkIcon = React8__namespace.forwardRef(
|
|
|
2194
2217
|
className
|
|
2195
2218
|
),
|
|
2196
2219
|
...pressableProps,
|
|
2197
|
-
children:
|
|
2198
|
-
DynamicIcon,
|
|
2199
|
-
{
|
|
2200
|
-
name: iconName,
|
|
2201
|
-
size: iconSize,
|
|
2202
|
-
color: iconColor,
|
|
2203
|
-
className: iconClassName,
|
|
2204
|
-
alt: accessibleLabel
|
|
2205
|
-
}
|
|
2206
|
-
)
|
|
2220
|
+
children: icon
|
|
2207
2221
|
}
|
|
2208
2222
|
);
|
|
2209
2223
|
}
|
|
@@ -19761,6 +19775,67 @@ function ContactHelpCenter({
|
|
|
19761
19775
|
}
|
|
19762
19776
|
);
|
|
19763
19777
|
}
|
|
19778
|
+
var DIRECTION_STYLES = {
|
|
19779
|
+
"bottom-to-top": "bg-linear-to-t",
|
|
19780
|
+
"top-to-bottom": "bg-linear-to-b",
|
|
19781
|
+
"left-to-right": "bg-linear-to-r",
|
|
19782
|
+
"right-to-left": "bg-linear-to-l",
|
|
19783
|
+
"bottom-left-to-top-right": "bg-linear-to-tr",
|
|
19784
|
+
"bottom-right-to-top-left": "bg-linear-to-tl",
|
|
19785
|
+
"top-left-to-bottom-right": "bg-linear-to-br",
|
|
19786
|
+
"top-right-to-bottom-left": "bg-linear-to-bl"
|
|
19787
|
+
};
|
|
19788
|
+
var INTENSITY_STOPS = {
|
|
19789
|
+
low: "from-black/40 via-black/20 to-transparent",
|
|
19790
|
+
default: "from-black/70 via-black/35 to-transparent",
|
|
19791
|
+
high: "from-black/85 via-black/50 to-transparent",
|
|
19792
|
+
"very-high": "from-black/95 via-black/60 to-black/20"
|
|
19793
|
+
};
|
|
19794
|
+
var RADIAL_INTENSITY = {
|
|
19795
|
+
low: {
|
|
19796
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
|
|
19797
|
+
},
|
|
19798
|
+
default: {
|
|
19799
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
|
|
19800
|
+
},
|
|
19801
|
+
high: {
|
|
19802
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
|
|
19803
|
+
},
|
|
19804
|
+
"very-high": {
|
|
19805
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.60) 50%, rgba(0,0,0,0.20) 100%)"
|
|
19806
|
+
}
|
|
19807
|
+
};
|
|
19808
|
+
function GradientOverlay({
|
|
19809
|
+
direction = "bottom-to-top",
|
|
19810
|
+
intensity = "default",
|
|
19811
|
+
className,
|
|
19812
|
+
style,
|
|
19813
|
+
...props
|
|
19814
|
+
}) {
|
|
19815
|
+
if (direction === "radial-center") {
|
|
19816
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19817
|
+
"div",
|
|
19818
|
+
{
|
|
19819
|
+
className: cn("absolute inset-0", className),
|
|
19820
|
+
style: { ...RADIAL_INTENSITY[intensity], ...style },
|
|
19821
|
+
...props
|
|
19822
|
+
}
|
|
19823
|
+
);
|
|
19824
|
+
}
|
|
19825
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19826
|
+
"div",
|
|
19827
|
+
{
|
|
19828
|
+
className: cn(
|
|
19829
|
+
"absolute inset-0",
|
|
19830
|
+
DIRECTION_STYLES[direction],
|
|
19831
|
+
INTENSITY_STOPS[intensity],
|
|
19832
|
+
className
|
|
19833
|
+
),
|
|
19834
|
+
style,
|
|
19835
|
+
...props
|
|
19836
|
+
}
|
|
19837
|
+
);
|
|
19838
|
+
}
|
|
19764
19839
|
function CarouselAnimatedSections({
|
|
19765
19840
|
sections,
|
|
19766
19841
|
sectionsSlot,
|
|
@@ -19776,7 +19851,8 @@ function CarouselAnimatedSections({
|
|
|
19776
19851
|
navigationClassName,
|
|
19777
19852
|
arrowsClassName,
|
|
19778
19853
|
counterClassName,
|
|
19779
|
-
slideMediaBrightness
|
|
19854
|
+
slideMediaBrightness,
|
|
19855
|
+
slideMediaOverlayIntensity = "high",
|
|
19780
19856
|
optixFlowConfig,
|
|
19781
19857
|
background = "dark",
|
|
19782
19858
|
spacing = "py-0",
|
|
@@ -19865,7 +19941,7 @@ function CarouselAnimatedSections({
|
|
|
19865
19941
|
containerMaxWidth,
|
|
19866
19942
|
containerClassName,
|
|
19867
19943
|
children: [
|
|
19868
|
-
sectionsSlot ? sectionsSlot : currentSection ? /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxRuntime.
|
|
19944
|
+
sectionsSlot ? sectionsSlot : currentSection ? /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19869
19945
|
framerMotion.motion.div,
|
|
19870
19946
|
{
|
|
19871
19947
|
custom: direction,
|
|
@@ -19876,19 +19952,21 @@ function CarouselAnimatedSections({
|
|
|
19876
19952
|
transition: { duration: 0.6, ease: [0.4, 0, 0.2, 1] },
|
|
19877
19953
|
onAnimationComplete: () => setIsAnimating(false),
|
|
19878
19954
|
className: cn("absolute inset-0", currentSection?.className),
|
|
19879
|
-
children:
|
|
19880
|
-
|
|
19881
|
-
|
|
19882
|
-
|
|
19883
|
-
|
|
19884
|
-
|
|
19885
|
-
|
|
19886
|
-
|
|
19887
|
-
|
|
19888
|
-
|
|
19889
|
-
|
|
19890
|
-
|
|
19891
|
-
|
|
19955
|
+
children: [
|
|
19956
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19957
|
+
img.Img,
|
|
19958
|
+
{
|
|
19959
|
+
src: currentSection?.image,
|
|
19960
|
+
alt: typeof currentSection?.title === "string" ? currentSection?.title : `Section ${currentSection?.id}`,
|
|
19961
|
+
className: cn(
|
|
19962
|
+
"h-full w-full object-cover",
|
|
19963
|
+
currentSection?.imageClassName
|
|
19964
|
+
),
|
|
19965
|
+
optixFlowConfig
|
|
19966
|
+
}
|
|
19967
|
+
),
|
|
19968
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
19969
|
+
]
|
|
19892
19970
|
},
|
|
19893
19971
|
currentIndex
|
|
19894
19972
|
) }) : null,
|
|
@@ -20853,7 +20931,8 @@ function CarouselGalleryThumbnails({
|
|
|
20853
20931
|
spacing = "sm",
|
|
20854
20932
|
pattern,
|
|
20855
20933
|
patternOpacity,
|
|
20856
|
-
slideMediaBrightness
|
|
20934
|
+
slideMediaBrightness,
|
|
20935
|
+
slideMediaOverlayIntensity = "default"
|
|
20857
20936
|
}) {
|
|
20858
20937
|
const [currentIndex, setCurrentIndex] = React8__namespace.useState(0);
|
|
20859
20938
|
const prevSlide = React8__namespace.useCallback(() => {
|
|
@@ -20902,7 +20981,7 @@ function CarouselGalleryThumbnails({
|
|
|
20902
20981
|
"relative aspect-video w-full overflow-hidden",
|
|
20903
20982
|
slideClassName
|
|
20904
20983
|
),
|
|
20905
|
-
children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */ jsxRuntime.
|
|
20984
|
+
children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20906
20985
|
"div",
|
|
20907
20986
|
{
|
|
20908
20987
|
className: cn(
|
|
@@ -20910,19 +20989,21 @@ function CarouselGalleryThumbnails({
|
|
|
20910
20989
|
index === currentIndex ? "translate-x-0 opacity-100" : index < currentIndex ? "-translate-x-full opacity-0" : "translate-x-full opacity-0",
|
|
20911
20990
|
image.className
|
|
20912
20991
|
),
|
|
20913
|
-
children:
|
|
20914
|
-
|
|
20915
|
-
|
|
20916
|
-
|
|
20917
|
-
|
|
20918
|
-
|
|
20919
|
-
|
|
20920
|
-
|
|
20921
|
-
|
|
20922
|
-
|
|
20923
|
-
|
|
20924
|
-
|
|
20925
|
-
|
|
20992
|
+
children: [
|
|
20993
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20994
|
+
img.Img,
|
|
20995
|
+
{
|
|
20996
|
+
src: image.src,
|
|
20997
|
+
alt: typeof image.alt === "string" ? image.alt : `Image ${index + 1}`,
|
|
20998
|
+
className: cn(
|
|
20999
|
+
"h-full w-full object-cover",
|
|
21000
|
+
image.imageClassName
|
|
21001
|
+
),
|
|
21002
|
+
optixFlowConfig
|
|
21003
|
+
}
|
|
21004
|
+
),
|
|
21005
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
21006
|
+
]
|
|
20926
21007
|
},
|
|
20927
21008
|
`slide-${index}`
|
|
20928
21009
|
))
|
|
@@ -21739,7 +21820,8 @@ function CarouselPortfolioHero({
|
|
|
21739
21820
|
spacing = "none",
|
|
21740
21821
|
pattern,
|
|
21741
21822
|
patternOpacity,
|
|
21742
|
-
slideMediaBrightness
|
|
21823
|
+
slideMediaBrightness,
|
|
21824
|
+
slideMediaOverlayIntensity = "high"
|
|
21743
21825
|
}) {
|
|
21744
21826
|
const [currentIndex, setCurrentIndex] = React8__namespace.useState(0);
|
|
21745
21827
|
const intervalRef = React8__namespace.useRef(null);
|
|
@@ -21780,7 +21862,7 @@ function CarouselPortfolioHero({
|
|
|
21780
21862
|
patternOpacity,
|
|
21781
21863
|
containerClassName,
|
|
21782
21864
|
children: [
|
|
21783
|
-
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.
|
|
21865
|
+
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21784
21866
|
"div",
|
|
21785
21867
|
{
|
|
21786
21868
|
className: cn(
|
|
@@ -21788,19 +21870,21 @@ function CarouselPortfolioHero({
|
|
|
21788
21870
|
index === currentIndex ? "opacity-100" : "opacity-0",
|
|
21789
21871
|
slide.className
|
|
21790
21872
|
),
|
|
21791
|
-
children:
|
|
21792
|
-
|
|
21793
|
-
|
|
21794
|
-
|
|
21795
|
-
|
|
21796
|
-
|
|
21797
|
-
|
|
21798
|
-
|
|
21799
|
-
|
|
21800
|
-
|
|
21801
|
-
|
|
21802
|
-
|
|
21803
|
-
|
|
21873
|
+
children: [
|
|
21874
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21875
|
+
img.Img,
|
|
21876
|
+
{
|
|
21877
|
+
src: slide.image,
|
|
21878
|
+
alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
|
|
21879
|
+
className: cn(
|
|
21880
|
+
"h-full w-full object-cover",
|
|
21881
|
+
slide.imageClassName
|
|
21882
|
+
),
|
|
21883
|
+
optixFlowConfig
|
|
21884
|
+
}
|
|
21885
|
+
),
|
|
21886
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
21887
|
+
]
|
|
21804
21888
|
},
|
|
21805
21889
|
slide.id
|
|
21806
21890
|
)),
|
|
@@ -43849,19 +43933,6 @@ function CaseStudiesTestimonialStats({
|
|
|
43849
43933
|
}
|
|
43850
43934
|
);
|
|
43851
43935
|
}
|
|
43852
|
-
function StarRating({ rating, size = 16 }) {
|
|
43853
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
43854
|
-
DynamicIcon,
|
|
43855
|
-
{
|
|
43856
|
-
name: "lucide/star",
|
|
43857
|
-
size,
|
|
43858
|
-
className: cn(
|
|
43859
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
43860
|
-
)
|
|
43861
|
-
},
|
|
43862
|
-
star
|
|
43863
|
-
)) });
|
|
43864
|
-
}
|
|
43865
43936
|
function TestimonialsListVerified({
|
|
43866
43937
|
reviews,
|
|
43867
43938
|
reviewsSlot,
|
|
@@ -43874,7 +43945,8 @@ function TestimonialsListVerified({
|
|
|
43874
43945
|
contentClassName,
|
|
43875
43946
|
authorClassName,
|
|
43876
43947
|
background,
|
|
43877
|
-
spacing,
|
|
43948
|
+
spacing = "lg",
|
|
43949
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
43878
43950
|
pattern,
|
|
43879
43951
|
patternOpacity
|
|
43880
43952
|
}) {
|
|
@@ -43893,35 +43965,49 @@ function TestimonialsListVerified({
|
|
|
43893
43965
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
|
|
43894
43966
|
const authorName = getAuthorName(review);
|
|
43895
43967
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reviewClassName, children: [
|
|
43896
|
-
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-
|
|
43897
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-
|
|
43898
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
43899
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size:
|
|
43900
|
-
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "
|
|
43968
|
+
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "bg-border/50 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-12 md:my-16" }),
|
|
43969
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
|
|
43970
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
43971
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size: 22 }),
|
|
43972
|
+
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
43901
43973
|
] }),
|
|
43902
|
-
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
43903
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center
|
|
43904
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
43905
|
-
|
|
43906
|
-
|
|
43907
|
-
|
|
43908
|
-
|
|
43909
|
-
|
|
43910
|
-
|
|
43911
|
-
|
|
43912
|
-
|
|
43913
|
-
|
|
43914
|
-
|
|
43915
|
-
|
|
43916
|
-
|
|
43917
|
-
|
|
43918
|
-
|
|
43919
|
-
|
|
43974
|
+
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
|
|
43975
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
|
|
43976
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
43977
|
+
"div",
|
|
43978
|
+
{
|
|
43979
|
+
className: cn("flex items-center gap-5", authorClassName),
|
|
43980
|
+
children: [
|
|
43981
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
43982
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
43983
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
43984
|
+
] }),
|
|
43985
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-base flex-col items-start", children: [
|
|
43986
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
43987
|
+
review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
|
|
43988
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
43989
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
43990
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
43991
|
+
] })
|
|
43992
|
+
] })
|
|
43993
|
+
]
|
|
43994
|
+
}
|
|
43995
|
+
),
|
|
43996
|
+
review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative", children: review.date })
|
|
43920
43997
|
] })
|
|
43921
43998
|
] })
|
|
43922
43999
|
] }, index);
|
|
43923
44000
|
}) });
|
|
43924
|
-
}, [
|
|
44001
|
+
}, [
|
|
44002
|
+
reviewsSlot,
|
|
44003
|
+
reviews,
|
|
44004
|
+
reviewClassName,
|
|
44005
|
+
contentClassName,
|
|
44006
|
+
authorClassName,
|
|
44007
|
+
verifiedPurchaseLabel,
|
|
44008
|
+
getAuthorName,
|
|
44009
|
+
getInitials
|
|
44010
|
+
]);
|
|
43925
44011
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43926
44012
|
Section,
|
|
43927
44013
|
{
|
|
@@ -43930,21 +44016,21 @@ function TestimonialsListVerified({
|
|
|
43930
44016
|
pattern,
|
|
43931
44017
|
patternOpacity,
|
|
43932
44018
|
className,
|
|
43933
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-3xl", children: [
|
|
43934
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-
|
|
44019
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
44020
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
43935
44021
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
43936
44022
|
"h2",
|
|
43937
44023
|
{
|
|
43938
44024
|
className: cn(
|
|
43939
|
-
"text-2xl font-semibold tracking-tight md:text-3xl",
|
|
44025
|
+
"text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
|
|
43940
44026
|
headingClassName
|
|
43941
44027
|
),
|
|
43942
44028
|
children: heading
|
|
43943
44029
|
}
|
|
43944
|
-
) :
|
|
44030
|
+
) : heading),
|
|
43945
44031
|
totalReviews > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
|
|
43946
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: Math.round(averageRating), size:
|
|
43947
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm
|
|
44032
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
|
|
44033
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm", children: [
|
|
43948
44034
|
averageRating.toFixed(1),
|
|
43949
44035
|
" out of 5 \xB7 ",
|
|
43950
44036
|
totalReviews,
|
|
@@ -43957,23 +44043,11 @@ function TestimonialsListVerified({
|
|
|
43957
44043
|
}
|
|
43958
44044
|
);
|
|
43959
44045
|
}
|
|
43960
|
-
function StarRating2({ rating, size = 16 }) {
|
|
43961
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
43962
|
-
DynamicIcon,
|
|
43963
|
-
{
|
|
43964
|
-
name: "lucide/star",
|
|
43965
|
-
size,
|
|
43966
|
-
className: cn(
|
|
43967
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
43968
|
-
)
|
|
43969
|
-
},
|
|
43970
|
-
star
|
|
43971
|
-
)) });
|
|
43972
|
-
}
|
|
43973
44046
|
function TestimonialsImagesHelpful({
|
|
43974
44047
|
reviews,
|
|
43975
44048
|
reviewsSlot,
|
|
43976
44049
|
heading,
|
|
44050
|
+
verifiedPurchaseLabel,
|
|
43977
44051
|
writeReviewLabel,
|
|
43978
44052
|
reportButtonLabel,
|
|
43979
44053
|
className,
|
|
@@ -43985,12 +44059,16 @@ function TestimonialsImagesHelpful({
|
|
|
43985
44059
|
imagesClassName,
|
|
43986
44060
|
onWriteReview,
|
|
43987
44061
|
background,
|
|
43988
|
-
spacing = "
|
|
44062
|
+
spacing = "lg",
|
|
44063
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
43989
44064
|
pattern,
|
|
43990
44065
|
patternOpacity,
|
|
43991
44066
|
optixFlowConfig
|
|
43992
44067
|
}) {
|
|
43993
44068
|
const [helpfulClicked, setHelpfulClicked] = React8.useState(/* @__PURE__ */ new Set());
|
|
44069
|
+
const [lightboxOpen, setLightboxOpen] = React8.useState(false);
|
|
44070
|
+
const [lightboxItems, setLightboxItems] = React8.useState([]);
|
|
44071
|
+
const [lightboxIndex, setLightboxIndex] = React8.useState(0);
|
|
43994
44072
|
const totalReviews = reviews?.length ?? 0;
|
|
43995
44073
|
const averageRating = totalReviews > 0 ? (reviews?.reduce((sum, review) => sum + review.rating, 0) ?? 0) / totalReviews : 0;
|
|
43996
44074
|
const handleHelpful = React8.useCallback((reviewIndex) => {
|
|
@@ -44004,6 +44082,25 @@ function TestimonialsImagesHelpful({
|
|
|
44004
44082
|
return newSet;
|
|
44005
44083
|
});
|
|
44006
44084
|
}, []);
|
|
44085
|
+
const handleImageClick = React8.useCallback(
|
|
44086
|
+
(reviewImages, imageIndex) => {
|
|
44087
|
+
const items = reviewImages.map((src, i) => ({
|
|
44088
|
+
id: `review-image-${i}`,
|
|
44089
|
+
type: "image",
|
|
44090
|
+
src,
|
|
44091
|
+
alt: `Review image ${i + 1}`,
|
|
44092
|
+
download: true,
|
|
44093
|
+
share: true
|
|
44094
|
+
}));
|
|
44095
|
+
setLightboxItems(items);
|
|
44096
|
+
setLightboxIndex(imageIndex);
|
|
44097
|
+
setLightboxOpen(true);
|
|
44098
|
+
},
|
|
44099
|
+
[]
|
|
44100
|
+
);
|
|
44101
|
+
const handleLightboxClose = React8.useCallback(() => {
|
|
44102
|
+
setLightboxOpen(false);
|
|
44103
|
+
}, []);
|
|
44007
44104
|
const getAuthorName = React8.useCallback((review) => {
|
|
44008
44105
|
if (typeof review.author === "string") return review.author;
|
|
44009
44106
|
return "";
|
|
@@ -44017,54 +44114,28 @@ function TestimonialsImagesHelpful({
|
|
|
44017
44114
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
|
|
44018
44115
|
const authorName = getAuthorName(review);
|
|
44019
44116
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reviewClassName, children: [
|
|
44020
|
-
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-
|
|
44021
|
-
/* @__PURE__ */ jsxRuntime.
|
|
44022
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44023
|
-
|
|
44024
|
-
{
|
|
44025
|
-
className: cn(
|
|
44026
|
-
"flex items-start justify-between gap-4",
|
|
44027
|
-
authorClassName
|
|
44028
|
-
),
|
|
44029
|
-
children: [
|
|
44030
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
44031
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-10", children: [
|
|
44032
|
-
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
44033
|
-
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
44034
|
-
] }),
|
|
44035
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
44036
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
44037
|
-
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
44038
|
-
review.verified && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-1 text-emerald-600", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44039
|
-
DynamicIcon,
|
|
44040
|
-
{
|
|
44041
|
-
name: "lucide/badge-check",
|
|
44042
|
-
size: 16
|
|
44043
|
-
}
|
|
44044
|
-
) })
|
|
44045
|
-
] }),
|
|
44046
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
|
44047
|
-
review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.date }),
|
|
44048
|
-
review.variant && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
44049
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
|
|
44050
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: review.variant })
|
|
44051
|
-
] })
|
|
44052
|
-
] })
|
|
44053
|
-
] })
|
|
44054
|
-
] }),
|
|
44055
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating2, { rating: review.rating, size: 16 })
|
|
44056
|
-
]
|
|
44057
|
-
}
|
|
44058
|
-
),
|
|
44059
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
44060
|
-
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title),
|
|
44061
|
-
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed text-muted-foreground", children: review.content }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: review.content }))
|
|
44117
|
+
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "bg-border/50 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-12 md:my-16" }),
|
|
44118
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
|
|
44119
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
44120
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size: 22 }),
|
|
44121
|
+
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
44062
44122
|
] }),
|
|
44063
|
-
review.
|
|
44123
|
+
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
|
|
44124
|
+
review.images && review.images.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-3", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
44064
44125
|
"div",
|
|
44065
44126
|
{
|
|
44066
|
-
className: "size-20 overflow-hidden rounded-lg sm:size-24",
|
|
44067
|
-
|
|
44127
|
+
className: "size-20 cursor-pointer overflow-hidden rounded-lg sm:size-24 transition-transform duration-300 hover:scale-[1.03] shadow-sm hover:shadow-lg",
|
|
44128
|
+
onClick: () => handleImageClick(review.images, imgIndex),
|
|
44129
|
+
role: "button",
|
|
44130
|
+
tabIndex: 0,
|
|
44131
|
+
onKeyDown: (e) => {
|
|
44132
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
44133
|
+
e.preventDefault();
|
|
44134
|
+
handleImageClick(review.images, imgIndex);
|
|
44135
|
+
}
|
|
44136
|
+
},
|
|
44137
|
+
"aria-label": `View review image ${imgIndex + 1} in lightbox`,
|
|
44138
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44068
44139
|
img.Img,
|
|
44069
44140
|
{
|
|
44070
44141
|
src: image,
|
|
@@ -44072,54 +44143,85 @@ function TestimonialsImagesHelpful({
|
|
|
44072
44143
|
className: "size-full object-cover",
|
|
44073
44144
|
optixFlowConfig
|
|
44074
44145
|
}
|
|
44075
|
-
)
|
|
44146
|
+
)
|
|
44076
44147
|
},
|
|
44077
44148
|
imgIndex
|
|
44078
44149
|
)) }),
|
|
44079
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center
|
|
44150
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
|
|
44080
44151
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44081
|
-
|
|
44152
|
+
"div",
|
|
44082
44153
|
{
|
|
44083
|
-
|
|
44084
|
-
variant: "ghost",
|
|
44085
|
-
size: "sm",
|
|
44086
|
-
className: cn(
|
|
44087
|
-
"h-8 gap-1.5 text-muted-foreground",
|
|
44088
|
-
helpfulClicked.has(index) && "text-foreground"
|
|
44089
|
-
),
|
|
44090
|
-
onClick: () => handleHelpful(index),
|
|
44154
|
+
className: cn("flex items-center gap-5", authorClassName),
|
|
44091
44155
|
children: [
|
|
44092
|
-
/* @__PURE__ */ jsxRuntime.
|
|
44093
|
-
|
|
44094
|
-
{
|
|
44095
|
-
|
|
44096
|
-
|
|
44097
|
-
|
|
44098
|
-
|
|
44099
|
-
|
|
44100
|
-
|
|
44101
|
-
|
|
44102
|
-
|
|
44103
|
-
|
|
44104
|
-
|
|
44105
|
-
|
|
44106
|
-
|
|
44156
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
44157
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
44158
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
44159
|
+
] }),
|
|
44160
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-0", children: [
|
|
44161
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
44162
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
44163
|
+
review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
|
|
44164
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
44165
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
44166
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
44167
|
+
] })
|
|
44168
|
+
] }),
|
|
44169
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
44170
|
+
review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.date }),
|
|
44171
|
+
review.variant && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
44172
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
|
|
44173
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: review.variant })
|
|
44174
|
+
] })
|
|
44175
|
+
] })
|
|
44107
44176
|
] })
|
|
44108
44177
|
]
|
|
44109
44178
|
}
|
|
44110
44179
|
),
|
|
44111
|
-
/* @__PURE__ */ jsxRuntime.
|
|
44112
|
-
|
|
44113
|
-
|
|
44114
|
-
|
|
44115
|
-
|
|
44116
|
-
|
|
44117
|
-
|
|
44118
|
-
|
|
44119
|
-
|
|
44120
|
-
|
|
44180
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
44181
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44182
|
+
Pressable,
|
|
44183
|
+
{
|
|
44184
|
+
asButton: true,
|
|
44185
|
+
variant: "ghost",
|
|
44186
|
+
size: "sm",
|
|
44187
|
+
className: cn(
|
|
44188
|
+
"h-8 gap-1.5",
|
|
44189
|
+
helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
|
|
44190
|
+
),
|
|
44191
|
+
onClick: () => handleHelpful(index),
|
|
44192
|
+
children: [
|
|
44193
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44194
|
+
DynamicIcon,
|
|
44195
|
+
{
|
|
44196
|
+
name: "lucide/thumbs-up",
|
|
44197
|
+
size: 16,
|
|
44198
|
+
className: cn(
|
|
44199
|
+
helpfulClicked.has(index) && "fill-current"
|
|
44200
|
+
)
|
|
44201
|
+
}
|
|
44202
|
+
),
|
|
44203
|
+
"Helpful",
|
|
44204
|
+
review.helpful !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
44205
|
+
"(",
|
|
44206
|
+
review.helpful + (helpfulClicked.has(index) ? 1 : 0),
|
|
44207
|
+
")"
|
|
44208
|
+
] })
|
|
44209
|
+
]
|
|
44210
|
+
}
|
|
44211
|
+
),
|
|
44212
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44213
|
+
Pressable,
|
|
44214
|
+
{
|
|
44215
|
+
asButton: true,
|
|
44216
|
+
variant: "ghost",
|
|
44217
|
+
size: "sm",
|
|
44218
|
+
className: "h-8 text-muted-foreground",
|
|
44219
|
+
children: reportButtonLabel ?? "Report"
|
|
44220
|
+
}
|
|
44221
|
+
)
|
|
44222
|
+
] })
|
|
44121
44223
|
] })
|
|
44122
|
-
] })
|
|
44224
|
+
] })
|
|
44123
44225
|
] }, index);
|
|
44124
44226
|
}) });
|
|
44125
44227
|
}, [
|
|
@@ -44132,11 +44234,13 @@ function TestimonialsImagesHelpful({
|
|
|
44132
44234
|
helpfulClicked,
|
|
44133
44235
|
optixFlowConfig,
|
|
44134
44236
|
reportButtonLabel,
|
|
44237
|
+
verifiedPurchaseLabel,
|
|
44135
44238
|
getAuthorName,
|
|
44136
44239
|
getInitials,
|
|
44137
|
-
handleHelpful
|
|
44240
|
+
handleHelpful,
|
|
44241
|
+
handleImageClick
|
|
44138
44242
|
]);
|
|
44139
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
44243
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44140
44244
|
Section,
|
|
44141
44245
|
{
|
|
44142
44246
|
background,
|
|
@@ -44144,42 +44248,57 @@ function TestimonialsImagesHelpful({
|
|
|
44144
44248
|
pattern,
|
|
44145
44249
|
patternOpacity,
|
|
44146
44250
|
className,
|
|
44147
|
-
|
|
44148
|
-
|
|
44149
|
-
|
|
44150
|
-
{
|
|
44151
|
-
className:
|
|
44152
|
-
"
|
|
44153
|
-
|
|
44154
|
-
|
|
44155
|
-
|
|
44156
|
-
|
|
44157
|
-
|
|
44158
|
-
|
|
44159
|
-
|
|
44160
|
-
|
|
44161
|
-
|
|
44162
|
-
headingClassName
|
|
44163
|
-
),
|
|
44164
|
-
children: heading
|
|
44165
|
-
}
|
|
44166
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
44167
|
-
totalReviews > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
|
|
44168
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating2, { rating: Math.round(averageRating), size: 20 }),
|
|
44169
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold", children: averageRating.toFixed(1) }),
|
|
44170
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
44171
|
-
"(",
|
|
44172
|
-
totalReviews,
|
|
44173
|
-
" reviews)"
|
|
44174
|
-
] })
|
|
44175
|
-
] })
|
|
44176
|
-
] }),
|
|
44251
|
+
containerClassName,
|
|
44252
|
+
children: [
|
|
44253
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
44254
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
44255
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between", children: [
|
|
44256
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
44257
|
+
"h2",
|
|
44258
|
+
{
|
|
44259
|
+
className: cn(
|
|
44260
|
+
"text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
|
|
44261
|
+
headingClassName
|
|
44262
|
+
),
|
|
44263
|
+
children: heading
|
|
44264
|
+
}
|
|
44265
|
+
) : heading),
|
|
44177
44266
|
(writeReviewLabel || onWriteReview) && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, variant: "outline", onClick: onWriteReview, children: writeReviewLabel })
|
|
44178
|
-
]
|
|
44267
|
+
] }),
|
|
44268
|
+
totalReviews > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
|
|
44269
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
|
|
44270
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm", children: [
|
|
44271
|
+
averageRating.toFixed(1),
|
|
44272
|
+
" out of 5 \xB7 ",
|
|
44273
|
+
totalReviews,
|
|
44274
|
+
" reviews"
|
|
44275
|
+
] })
|
|
44276
|
+
] })
|
|
44277
|
+
] }),
|
|
44278
|
+
renderedReviews
|
|
44279
|
+
] }),
|
|
44280
|
+
lightboxOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44281
|
+
lightbox.Lightbox,
|
|
44282
|
+
{
|
|
44283
|
+
items: lightboxItems,
|
|
44284
|
+
initialIndex: lightboxIndex,
|
|
44285
|
+
layout: "horizontal",
|
|
44286
|
+
controls: {
|
|
44287
|
+
navigation: true,
|
|
44288
|
+
thumbnails: true,
|
|
44289
|
+
download: true,
|
|
44290
|
+
share: true,
|
|
44291
|
+
fullscreen: true,
|
|
44292
|
+
captions: true,
|
|
44293
|
+
counter: true
|
|
44294
|
+
},
|
|
44295
|
+
onClose: handleLightboxClose,
|
|
44296
|
+
enableKeyboardShortcuts: true,
|
|
44297
|
+
closeOnEscape: true,
|
|
44298
|
+
closeOnBackdropClick: true
|
|
44179
44299
|
}
|
|
44180
|
-
)
|
|
44181
|
-
|
|
44182
|
-
] })
|
|
44300
|
+
)
|
|
44301
|
+
]
|
|
44183
44302
|
}
|
|
44184
44303
|
);
|
|
44185
44304
|
}
|
|
@@ -44235,10 +44354,13 @@ function TestimonialsBentoGrid({
|
|
|
44235
44354
|
),
|
|
44236
44355
|
children: [
|
|
44237
44356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44238
|
-
|
|
44357
|
+
"div",
|
|
44239
44358
|
{
|
|
44240
|
-
className: cn(
|
|
44241
|
-
|
|
44359
|
+
className: cn(
|
|
44360
|
+
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm md:col-span-2 lg:row-span-2",
|
|
44361
|
+
featuredCardClassName
|
|
44362
|
+
),
|
|
44363
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 md:p-8 gap-8 md:gap-12", children: [
|
|
44242
44364
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
44243
44365
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44244
44366
|
DynamicIcon,
|
|
@@ -44268,11 +44390,11 @@ function TestimonialsBentoGrid({
|
|
|
44268
44390
|
{
|
|
44269
44391
|
className: cn("mt-6 flex items-center gap-4", authorClassName),
|
|
44270
44392
|
children: [
|
|
44271
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12", children: [
|
|
44393
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
|
|
44272
44394
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: featuredAvatarSrc, alt: featuredAuthorName }),
|
|
44273
44395
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(featuredAuthorName) })
|
|
44274
44396
|
] }),
|
|
44275
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
44397
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
|
|
44276
44398
|
featured.author && (typeof featured.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: featured.author }) : featured.author),
|
|
44277
44399
|
(featured.role || featured.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
44278
44400
|
featured.role && (typeof featured.role === "string" ? featured.role : featured.role),
|
|
@@ -44283,7 +44405,8 @@ function TestimonialsBentoGrid({
|
|
|
44283
44405
|
{
|
|
44284
44406
|
href: featured.linkConfig.href,
|
|
44285
44407
|
className: cn(
|
|
44286
|
-
"text-sm
|
|
44408
|
+
"text-sm transition-all duration-300",
|
|
44409
|
+
"underline underline-offset-4",
|
|
44287
44410
|
featured.linkConfig.className
|
|
44288
44411
|
),
|
|
44289
44412
|
children: featured.linkConfig.label
|
|
@@ -44299,34 +44422,45 @@ function TestimonialsBentoGrid({
|
|
|
44299
44422
|
others.slice(0, 5).map((testimonial, index) => {
|
|
44300
44423
|
const authorName = getAuthorName(testimonial);
|
|
44301
44424
|
const avatarSrc = getAvatarSrc(testimonial);
|
|
44302
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44303
|
-
|
|
44304
|
-
|
|
44305
|
-
|
|
44306
|
-
|
|
44307
|
-
|
|
44308
|
-
|
|
44309
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44310
|
-
/* @__PURE__ */ jsxRuntime.
|
|
44311
|
-
|
|
44312
|
-
|
|
44313
|
-
|
|
44314
|
-
|
|
44315
|
-
|
|
44316
|
-
|
|
44317
|
-
|
|
44318
|
-
|
|
44319
|
-
|
|
44320
|
-
|
|
44321
|
-
|
|
44322
|
-
|
|
44323
|
-
|
|
44324
|
-
|
|
44325
|
-
|
|
44326
|
-
|
|
44425
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44426
|
+
"div",
|
|
44427
|
+
{
|
|
44428
|
+
className: cn(
|
|
44429
|
+
cardClassName,
|
|
44430
|
+
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
|
|
44431
|
+
),
|
|
44432
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
|
|
44433
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
|
|
44434
|
+
"\u201C",
|
|
44435
|
+
testimonial.quote,
|
|
44436
|
+
"\u201D"
|
|
44437
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
|
|
44438
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
|
|
44439
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
|
|
44440
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
44441
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
|
|
44442
|
+
] }),
|
|
44443
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
|
|
44444
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
|
|
44445
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
|
|
44446
|
+
testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44447
|
+
Pressable,
|
|
44448
|
+
{
|
|
44449
|
+
href: testimonial.linkConfig.href,
|
|
44450
|
+
className: cn(
|
|
44451
|
+
"text-sm transition-all duration-300",
|
|
44452
|
+
"underline underline-offset-4",
|
|
44453
|
+
testimonial.linkConfig.className
|
|
44454
|
+
),
|
|
44455
|
+
children: testimonial.linkConfig.label
|
|
44456
|
+
}
|
|
44457
|
+
)
|
|
44458
|
+
] })
|
|
44459
|
+
] })
|
|
44327
44460
|
] })
|
|
44328
|
-
|
|
44329
|
-
|
|
44461
|
+
},
|
|
44462
|
+
index
|
|
44463
|
+
);
|
|
44330
44464
|
})
|
|
44331
44465
|
]
|
|
44332
44466
|
}
|
|
@@ -44423,7 +44557,7 @@ function TestimonialsTwitterCards({
|
|
|
44423
44557
|
"div",
|
|
44424
44558
|
{
|
|
44425
44559
|
className: cn(
|
|
44426
|
-
"grid gap-
|
|
44560
|
+
"grid gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
|
|
44427
44561
|
gridClassName
|
|
44428
44562
|
),
|
|
44429
44563
|
children: testimonials.map((testimonial, index) => {
|
|
@@ -44433,14 +44567,18 @@ function TestimonialsTwitterCards({
|
|
|
44433
44567
|
{
|
|
44434
44568
|
href: testimonial.linkConfig?.href,
|
|
44435
44569
|
className: cn(
|
|
44436
|
-
"bg-card text-card-foreground
|
|
44570
|
+
"bg-card text-card-foreground",
|
|
44571
|
+
"flex flex-col gap-6",
|
|
44572
|
+
testimonial.linkConfig?.href ? "cursor-pointer hover:bg-primary hover:text-primary-foreground transition-all duration-500" : "",
|
|
44573
|
+
"rounded-2xl py-6 shadow-xl group",
|
|
44574
|
+
"ring-4 ring-primary",
|
|
44437
44575
|
cardClassName
|
|
44438
44576
|
),
|
|
44439
44577
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44440
44578
|
CardContent,
|
|
44441
44579
|
{
|
|
44442
44580
|
className: cn(
|
|
44443
|
-
"px-6 h-full flex flex-col-reverse items-stretch justify-between",
|
|
44581
|
+
"px-6 h-full flex flex-col-reverse items-stretch justify-between gap-12",
|
|
44444
44582
|
cardContentClassName
|
|
44445
44583
|
),
|
|
44446
44584
|
children: [
|
|
@@ -44472,7 +44610,8 @@ function TestimonialsTwitterCards({
|
|
|
44472
44610
|
SocialLinkIcon,
|
|
44473
44611
|
{
|
|
44474
44612
|
href: testimonial.linkConfig.href,
|
|
44475
|
-
iconSize:
|
|
44613
|
+
iconSize: 24,
|
|
44614
|
+
iconOnly: true
|
|
44476
44615
|
}
|
|
44477
44616
|
)
|
|
44478
44617
|
]
|
|
@@ -44545,122 +44684,257 @@ function TestimonialsTwitterCards({
|
|
|
44545
44684
|
function TestimonialsCarouselImage({
|
|
44546
44685
|
testimonials,
|
|
44547
44686
|
testimonialsSlot,
|
|
44548
|
-
|
|
44549
|
-
|
|
44687
|
+
autoPlayInterval,
|
|
44688
|
+
height = "h-70dvh lg:h-60dvh",
|
|
44689
|
+
overlayOpacity = 0.6,
|
|
44550
44690
|
previousButtonAriaLabel,
|
|
44551
44691
|
nextButtonAriaLabel,
|
|
44552
44692
|
className,
|
|
44553
44693
|
contentClassName,
|
|
44554
44694
|
quoteIconClassName,
|
|
44695
|
+
logoClassName,
|
|
44555
44696
|
quoteClassName,
|
|
44556
44697
|
authorClassName,
|
|
44557
44698
|
navigationClassName,
|
|
44558
44699
|
navButtonClassName,
|
|
44559
44700
|
dotsClassName,
|
|
44560
|
-
optixFlowConfig
|
|
44701
|
+
optixFlowConfig,
|
|
44702
|
+
background,
|
|
44703
|
+
containerClassName = "mx-0 w-screen px-0 sm:px-0 lg:px-0 max-w-screen relative z-10 h-full",
|
|
44704
|
+
spacing = "none",
|
|
44705
|
+
pattern,
|
|
44706
|
+
patternOpacity
|
|
44561
44707
|
}) {
|
|
44562
44708
|
const [currentIndex, setCurrentIndex] = React8.useState(0);
|
|
44563
44709
|
const totalTestimonials = testimonials?.length ?? 0;
|
|
44564
|
-
const
|
|
44565
|
-
|
|
44566
|
-
|
|
44567
|
-
|
|
44568
|
-
)
|
|
44569
|
-
|
|
44710
|
+
const autoPlayTimerRef = React8__namespace.useRef(
|
|
44711
|
+
null
|
|
44712
|
+
);
|
|
44713
|
+
const resetAutoPlay = React8.useCallback(() => {
|
|
44714
|
+
if (autoPlayTimerRef.current) {
|
|
44715
|
+
clearInterval(autoPlayTimerRef.current);
|
|
44716
|
+
autoPlayTimerRef.current = null;
|
|
44717
|
+
}
|
|
44718
|
+
if (!autoPlayInterval || autoPlayInterval <= 0 || totalTestimonials === 0)
|
|
44719
|
+
return;
|
|
44720
|
+
autoPlayTimerRef.current = setInterval(() => {
|
|
44721
|
+
setCurrentIndex((prev) => (prev + 1) % totalTestimonials);
|
|
44722
|
+
}, autoPlayInterval);
|
|
44723
|
+
}, [autoPlayInterval, totalTestimonials]);
|
|
44570
44724
|
const goToNext = React8.useCallback(() => {
|
|
44571
44725
|
if (totalTestimonials === 0) return;
|
|
44572
|
-
setCurrentIndex(
|
|
44573
|
-
|
|
44574
|
-
|
|
44575
|
-
|
|
44726
|
+
setCurrentIndex((prev) => prev === totalTestimonials - 1 ? 0 : prev + 1);
|
|
44727
|
+
resetAutoPlay();
|
|
44728
|
+
}, [totalTestimonials, resetAutoPlay]);
|
|
44729
|
+
const goToPrevious = React8.useCallback(() => {
|
|
44730
|
+
if (totalTestimonials === 0) return;
|
|
44731
|
+
setCurrentIndex((prev) => prev === 0 ? totalTestimonials - 1 : prev - 1);
|
|
44732
|
+
resetAutoPlay();
|
|
44733
|
+
}, [totalTestimonials, resetAutoPlay]);
|
|
44734
|
+
const goToIndex = React8.useCallback(
|
|
44735
|
+
(index) => {
|
|
44736
|
+
setCurrentIndex(index);
|
|
44737
|
+
resetAutoPlay();
|
|
44738
|
+
},
|
|
44739
|
+
[resetAutoPlay]
|
|
44740
|
+
);
|
|
44741
|
+
React8.useEffect(() => {
|
|
44742
|
+
resetAutoPlay();
|
|
44743
|
+
return () => {
|
|
44744
|
+
if (autoPlayTimerRef.current) {
|
|
44745
|
+
clearInterval(autoPlayTimerRef.current);
|
|
44746
|
+
}
|
|
44747
|
+
};
|
|
44748
|
+
}, [resetAutoPlay]);
|
|
44576
44749
|
const current = testimonials?.[currentIndex];
|
|
44577
44750
|
const renderedTestimonialContent = React8.useMemo(() => {
|
|
44578
44751
|
if (testimonialsSlot) return testimonialsSlot;
|
|
44579
44752
|
if (!current) return null;
|
|
44580
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44581
|
-
|
|
44582
|
-
|
|
44583
|
-
|
|
44584
|
-
|
|
44585
|
-
|
|
44586
|
-
className: cn("mx-auto mb-6 opacity-50", quoteIconClassName)
|
|
44587
|
-
}
|
|
44588
|
-
),
|
|
44589
|
-
current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: cn("text-2xl font-light leading-relaxed md:text-4xl", quoteClassName), children: [
|
|
44590
|
-
"\u201C",
|
|
44591
|
-
current.quote,
|
|
44592
|
-
"\u201D"
|
|
44593
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: current.quote })),
|
|
44594
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-8", authorClassName), children: [
|
|
44595
|
-
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg font-semibold", children: current.author }) : current.author),
|
|
44596
|
-
(current.role || current.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-80", children: [
|
|
44597
|
-
current.role && (typeof current.role === "string" ? current.role : current.role),
|
|
44598
|
-
current.company && (typeof current.company === "string" ? `, ${current.company}` : current.company)
|
|
44599
|
-
] })
|
|
44600
|
-
] })
|
|
44601
|
-
] });
|
|
44602
|
-
}, [testimonialsSlot, contentClassName, quoteIconClassName, current, quoteClassName, authorClassName]);
|
|
44603
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cn("relative", height, className), children: [
|
|
44604
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0", children: [
|
|
44605
|
-
current?.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44606
|
-
img.Img,
|
|
44607
|
-
{
|
|
44608
|
-
src: current.backgroundImage,
|
|
44609
|
-
alt: "",
|
|
44610
|
-
className: "size-full object-cover",
|
|
44611
|
-
optixFlowConfig
|
|
44612
|
-
}
|
|
44613
|
-
),
|
|
44614
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44615
|
-
"div",
|
|
44616
|
-
{
|
|
44617
|
-
className: "absolute inset-0 bg-foreground",
|
|
44618
|
-
style: { opacity: overlayOpacity }
|
|
44619
|
-
}
|
|
44620
|
-
)
|
|
44621
|
-
] }),
|
|
44622
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex h-full flex-col items-center justify-center px-4", children: [
|
|
44623
|
-
renderedTestimonialContent,
|
|
44624
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("absolute bottom-8 left-0 right-0 flex items-center justify-center gap-4", navigationClassName), children: [
|
|
44625
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44626
|
-
Pressable,
|
|
44627
|
-
{
|
|
44628
|
-
asButton: true,
|
|
44629
|
-
variant: "ghost",
|
|
44630
|
-
size: "icon",
|
|
44631
|
-
className: cn("size-10 rounded-full bg-white/10 text-white backdrop-blur-sm hover:bg-white/20", navButtonClassName),
|
|
44632
|
-
onClick: goToPrevious,
|
|
44633
|
-
"aria-label": previousButtonAriaLabel ?? "Previous testimonial",
|
|
44634
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
|
|
44635
|
-
}
|
|
44753
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44754
|
+
"div",
|
|
44755
|
+
{
|
|
44756
|
+
className: cn(
|
|
44757
|
+
"mx-auto max-w-full md:max-w-md text-center text-shadow-lg text-white pb-32 pt-20",
|
|
44758
|
+
contentClassName
|
|
44636
44759
|
),
|
|
44637
|
-
|
|
44638
|
-
|
|
44639
|
-
|
|
44640
|
-
|
|
44641
|
-
|
|
44642
|
-
"
|
|
44643
|
-
|
|
44644
|
-
|
|
44645
|
-
|
|
44646
|
-
|
|
44647
|
-
|
|
44648
|
-
|
|
44649
|
-
|
|
44650
|
-
|
|
44651
|
-
|
|
44652
|
-
|
|
44653
|
-
|
|
44654
|
-
|
|
44655
|
-
|
|
44656
|
-
|
|
44657
|
-
|
|
44658
|
-
|
|
44659
|
-
|
|
44660
|
-
|
|
44661
|
-
|
|
44662
|
-
|
|
44663
|
-
|
|
44760
|
+
children: [
|
|
44761
|
+
current?.logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
44762
|
+
img.Img,
|
|
44763
|
+
{
|
|
44764
|
+
src: current.logoSrc,
|
|
44765
|
+
alt: typeof current.company === "string" ? `${current.company} logo` : typeof current.author === "string" ? `${current.author} company logo` : "Company logo",
|
|
44766
|
+
className: cn(
|
|
44767
|
+
"mx-auto mb-6 max-h-12 max-w-32 object-contain md:max-h-16 md:max-w-48",
|
|
44768
|
+
logoClassName
|
|
44769
|
+
),
|
|
44770
|
+
optixFlowConfig
|
|
44771
|
+
}
|
|
44772
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
44773
|
+
DynamicIcon,
|
|
44774
|
+
{
|
|
44775
|
+
name: "mdi/comment-quote-outline",
|
|
44776
|
+
size: 48,
|
|
44777
|
+
className: cn("mx-auto mb-6 opacity-50", quoteIconClassName)
|
|
44778
|
+
}
|
|
44779
|
+
),
|
|
44780
|
+
current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44781
|
+
"blockquote",
|
|
44782
|
+
{
|
|
44783
|
+
className: cn(
|
|
44784
|
+
"text-xl font-light leading-relaxed md:text-2xl text-balance",
|
|
44785
|
+
quoteClassName
|
|
44786
|
+
),
|
|
44787
|
+
children: [
|
|
44788
|
+
"\u201C",
|
|
44789
|
+
current.quote,
|
|
44790
|
+
"\u201D"
|
|
44791
|
+
]
|
|
44792
|
+
}
|
|
44793
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: current.quote })),
|
|
44794
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44795
|
+
"div",
|
|
44796
|
+
{
|
|
44797
|
+
className: cn(
|
|
44798
|
+
"mt-8 text-balance flex flex-col items-center",
|
|
44799
|
+
authorClassName
|
|
44800
|
+
),
|
|
44801
|
+
children: [
|
|
44802
|
+
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg font-semibold", children: current.author }) : current.author),
|
|
44803
|
+
(current.role || current.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-80", children: [
|
|
44804
|
+
current.role && (typeof current.role === "string" ? current.role : current.role),
|
|
44805
|
+
current.company && (typeof current.company === "string" ? `, ${current.company}` : current.company)
|
|
44806
|
+
] }),
|
|
44807
|
+
current.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44808
|
+
Pressable,
|
|
44809
|
+
{
|
|
44810
|
+
href: current.linkConfig.href,
|
|
44811
|
+
className: cn(
|
|
44812
|
+
"transition-all duration-500",
|
|
44813
|
+
"hover:underline hover:underline-offset-4",
|
|
44814
|
+
"text-sm",
|
|
44815
|
+
current.linkConfig.className
|
|
44816
|
+
),
|
|
44817
|
+
children: current.linkConfig.label
|
|
44818
|
+
}
|
|
44819
|
+
)
|
|
44820
|
+
]
|
|
44821
|
+
}
|
|
44822
|
+
)
|
|
44823
|
+
]
|
|
44824
|
+
}
|
|
44825
|
+
);
|
|
44826
|
+
}, [
|
|
44827
|
+
testimonialsSlot,
|
|
44828
|
+
contentClassName,
|
|
44829
|
+
quoteIconClassName,
|
|
44830
|
+
logoClassName,
|
|
44831
|
+
optixFlowConfig,
|
|
44832
|
+
current,
|
|
44833
|
+
quoteClassName,
|
|
44834
|
+
authorClassName
|
|
44835
|
+
]);
|
|
44836
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44837
|
+
Section,
|
|
44838
|
+
{
|
|
44839
|
+
background,
|
|
44840
|
+
spacing,
|
|
44841
|
+
pattern,
|
|
44842
|
+
patternOpacity,
|
|
44843
|
+
className: cn("relative", height, className),
|
|
44844
|
+
containerClassName,
|
|
44845
|
+
children: [
|
|
44846
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0", children: [
|
|
44847
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: current?.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44848
|
+
framerMotion.motion.div,
|
|
44849
|
+
{
|
|
44850
|
+
initial: { opacity: 0 },
|
|
44851
|
+
animate: { opacity: 1 },
|
|
44852
|
+
exit: { opacity: 0 },
|
|
44853
|
+
transition: { duration: 0.6, ease: "easeInOut" },
|
|
44854
|
+
className: "absolute inset-0",
|
|
44855
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44856
|
+
img.Img,
|
|
44857
|
+
{
|
|
44858
|
+
src: current.backgroundImage,
|
|
44859
|
+
alt: "Testimonial background image",
|
|
44860
|
+
className: "size-full object-cover",
|
|
44861
|
+
optixFlowConfig
|
|
44862
|
+
}
|
|
44863
|
+
)
|
|
44864
|
+
},
|
|
44865
|
+
currentIndex
|
|
44866
|
+
) }),
|
|
44867
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44868
|
+
"div",
|
|
44869
|
+
{
|
|
44870
|
+
className: "absolute inset-0 bg-black",
|
|
44871
|
+
style: { opacity: overlayOpacity }
|
|
44872
|
+
}
|
|
44873
|
+
)
|
|
44874
|
+
] }),
|
|
44875
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex h-full flex-col items-center justify-center px-4", children: [
|
|
44876
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44877
|
+
framerMotion.motion.div,
|
|
44878
|
+
{
|
|
44879
|
+
initial: { opacity: 0, y: 10 },
|
|
44880
|
+
animate: { opacity: 1, y: 0 },
|
|
44881
|
+
exit: { opacity: 0, y: -10 },
|
|
44882
|
+
transition: { duration: 0.4, ease: "easeInOut" },
|
|
44883
|
+
children: renderedTestimonialContent
|
|
44884
|
+
},
|
|
44885
|
+
currentIndex
|
|
44886
|
+
) }),
|
|
44887
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
44888
|
+
"div",
|
|
44889
|
+
{
|
|
44890
|
+
className: cn(
|
|
44891
|
+
"absolute bottom-8 left-0 right-0 flex items-center justify-center gap-4",
|
|
44892
|
+
navigationClassName
|
|
44893
|
+
),
|
|
44894
|
+
children: [
|
|
44895
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44896
|
+
Pressable,
|
|
44897
|
+
{
|
|
44898
|
+
asButton: true,
|
|
44899
|
+
variant: "default",
|
|
44900
|
+
size: "icon",
|
|
44901
|
+
className: cn("size-10 rounded-full", navButtonClassName),
|
|
44902
|
+
onClick: goToPrevious,
|
|
44903
|
+
"aria-label": previousButtonAriaLabel ?? "Previous testimonial",
|
|
44904
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
|
|
44905
|
+
}
|
|
44906
|
+
),
|
|
44907
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-2", dotsClassName), children: testimonials?.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
44908
|
+
"button",
|
|
44909
|
+
{
|
|
44910
|
+
onClick: () => goToIndex(index),
|
|
44911
|
+
className: cn(
|
|
44912
|
+
"size-2 rounded-full transition-all",
|
|
44913
|
+
index === currentIndex ? "w-6 bg-primary" : "bg-white/40 hover:bg-white/60"
|
|
44914
|
+
),
|
|
44915
|
+
"aria-label": `Go to testimonial ${index + 1}`
|
|
44916
|
+
},
|
|
44917
|
+
index
|
|
44918
|
+
)) }),
|
|
44919
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44920
|
+
Pressable,
|
|
44921
|
+
{
|
|
44922
|
+
asButton: true,
|
|
44923
|
+
variant: "default",
|
|
44924
|
+
size: "icon",
|
|
44925
|
+
className: cn("size-10 rounded-full", navButtonClassName),
|
|
44926
|
+
onClick: goToNext,
|
|
44927
|
+
"aria-label": nextButtonAriaLabel ?? "Next testimonial",
|
|
44928
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
|
|
44929
|
+
}
|
|
44930
|
+
)
|
|
44931
|
+
]
|
|
44932
|
+
}
|
|
44933
|
+
)
|
|
44934
|
+
] })
|
|
44935
|
+
]
|
|
44936
|
+
}
|
|
44937
|
+
);
|
|
44664
44938
|
}
|
|
44665
44939
|
function TestimonialsCenteredAvatars({
|
|
44666
44940
|
testimonials,
|
|
@@ -44677,7 +44951,8 @@ function TestimonialsCenteredAvatars({
|
|
|
44677
44951
|
quoteClassName,
|
|
44678
44952
|
authorClassName,
|
|
44679
44953
|
background,
|
|
44680
|
-
|
|
44954
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
44955
|
+
spacing = "xl",
|
|
44681
44956
|
pattern,
|
|
44682
44957
|
patternOpacity
|
|
44683
44958
|
}) {
|
|
@@ -44685,46 +44960,62 @@ function TestimonialsCenteredAvatars({
|
|
|
44685
44960
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
44686
44961
|
return "";
|
|
44687
44962
|
}, []);
|
|
44688
|
-
const getAvatarSrc = React8.useCallback(
|
|
44689
|
-
|
|
44690
|
-
|
|
44963
|
+
const getAvatarSrc = React8.useCallback(
|
|
44964
|
+
(testimonial) => {
|
|
44965
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
44966
|
+
},
|
|
44967
|
+
[]
|
|
44968
|
+
);
|
|
44691
44969
|
const getInitials = React8.useCallback((name) => {
|
|
44692
44970
|
return name.split(" ").map((n) => n[0]).join("");
|
|
44693
44971
|
}, []);
|
|
44694
44972
|
const renderedTestimonials = React8.useMemo(() => {
|
|
44695
44973
|
if (testimonialsSlot) return testimonialsSlot;
|
|
44696
44974
|
if (!testimonials || testimonials.length === 0) return null;
|
|
44697
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44975
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44698
44976
|
"div",
|
|
44699
44977
|
{
|
|
44700
|
-
className: cn("space-y-
|
|
44701
|
-
children:
|
|
44702
|
-
|
|
44703
|
-
|
|
44704
|
-
|
|
44705
|
-
|
|
44706
|
-
|
|
44707
|
-
|
|
44708
|
-
|
|
44709
|
-
|
|
44710
|
-
|
|
44711
|
-
|
|
44712
|
-
|
|
44713
|
-
|
|
44714
|
-
|
|
44715
|
-
|
|
44716
|
-
|
|
44717
|
-
|
|
44718
|
-
|
|
44719
|
-
|
|
44720
|
-
|
|
44721
|
-
|
|
44722
|
-
|
|
44723
|
-
|
|
44724
|
-
|
|
44725
|
-
|
|
44726
|
-
|
|
44727
|
-
|
|
44978
|
+
className: cn("mt-12 space-y-8 md:space-y-12", testimonialsClassName),
|
|
44979
|
+
children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44980
|
+
"div",
|
|
44981
|
+
{
|
|
44982
|
+
className: cn("space-y-4", testimonialItemClassName),
|
|
44983
|
+
children: [
|
|
44984
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44985
|
+
"blockquote",
|
|
44986
|
+
{
|
|
44987
|
+
className: cn(
|
|
44988
|
+
"text-lg leading-relaxed md:text-xl text-balance",
|
|
44989
|
+
quoteClassName
|
|
44990
|
+
),
|
|
44991
|
+
children: [
|
|
44992
|
+
"\u201C",
|
|
44993
|
+
testimonial.quote,
|
|
44994
|
+
"\u201D"
|
|
44995
|
+
]
|
|
44996
|
+
}
|
|
44997
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
44998
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: authorClassName, children: [
|
|
44999
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
45000
|
+
(testimonial.role || testimonial.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-75", children: [
|
|
45001
|
+
testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
|
|
45002
|
+
testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
|
|
45003
|
+
] })
|
|
45004
|
+
] })
|
|
45005
|
+
]
|
|
45006
|
+
},
|
|
45007
|
+
index
|
|
45008
|
+
))
|
|
45009
|
+
}
|
|
45010
|
+
);
|
|
45011
|
+
}, [
|
|
45012
|
+
testimonialsSlot,
|
|
45013
|
+
testimonialsClassName,
|
|
45014
|
+
testimonials,
|
|
45015
|
+
testimonialItemClassName,
|
|
45016
|
+
quoteClassName,
|
|
45017
|
+
authorClassName
|
|
45018
|
+
]);
|
|
44728
45019
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44729
45020
|
Section,
|
|
44730
45021
|
{
|
|
@@ -44733,35 +45024,45 @@ function TestimonialsCenteredAvatars({
|
|
|
44733
45024
|
pattern,
|
|
44734
45025
|
patternOpacity,
|
|
44735
45026
|
className,
|
|
44736
|
-
|
|
44737
|
-
|
|
44738
|
-
|
|
44739
|
-
|
|
44740
|
-
|
|
44741
|
-
|
|
44742
|
-
|
|
44743
|
-
|
|
44744
|
-
|
|
44745
|
-
children:
|
|
44746
|
-
|
|
44747
|
-
|
|
44748
|
-
|
|
44749
|
-
|
|
44750
|
-
|
|
44751
|
-
|
|
44752
|
-
|
|
44753
|
-
|
|
44754
|
-
|
|
44755
|
-
|
|
44756
|
-
|
|
44757
|
-
|
|
44758
|
-
|
|
44759
|
-
|
|
44760
|
-
|
|
44761
|
-
|
|
44762
|
-
|
|
44763
|
-
|
|
44764
|
-
|
|
45027
|
+
containerClassName,
|
|
45028
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45029
|
+
"div",
|
|
45030
|
+
{
|
|
45031
|
+
className: cn(
|
|
45032
|
+
"mx-auto max-w-full md:max-w-md text-center flex flex-col items-center gap-6 bg-card/50 px-10 py-20 shadow-xl border border-border/50 rounded-3xl backdrop-blur-md",
|
|
45033
|
+
contentClassName
|
|
45034
|
+
),
|
|
45035
|
+
children: [
|
|
45036
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: badgeClassName, children: badge }) : badge),
|
|
45037
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45038
|
+
"h2",
|
|
45039
|
+
{
|
|
45040
|
+
className: cn(
|
|
45041
|
+
"text-2xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
|
|
45042
|
+
headingClassName
|
|
45043
|
+
),
|
|
45044
|
+
children: heading
|
|
45045
|
+
}
|
|
45046
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
45047
|
+
testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
|
|
45048
|
+
const authorName = getAuthorName(testimonial);
|
|
45049
|
+
const avatarSrc = getAvatarSrc(testimonial);
|
|
45050
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45051
|
+
Avatar,
|
|
45052
|
+
{
|
|
45053
|
+
className: "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary md:size-20 shadow-xl",
|
|
45054
|
+
children: [
|
|
45055
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
45056
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
|
|
45057
|
+
]
|
|
45058
|
+
},
|
|
45059
|
+
index
|
|
45060
|
+
);
|
|
45061
|
+
}) }) }),
|
|
45062
|
+
renderedTestimonials
|
|
45063
|
+
]
|
|
45064
|
+
}
|
|
45065
|
+
)
|
|
44765
45066
|
}
|
|
44766
45067
|
);
|
|
44767
45068
|
}
|
|
@@ -44789,14 +45090,14 @@ function TestimonialsCompanyLogo({
|
|
|
44789
45090
|
const renderedTestimonial = React8.useMemo(() => {
|
|
44790
45091
|
if (testimonialSlot) return testimonialSlot;
|
|
44791
45092
|
if (!testimonial) return null;
|
|
44792
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-
|
|
45093
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-12 md:space-y-16", contentClassName), children: [
|
|
44793
45094
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
44794
45095
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
|
|
44795
45096
|
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
44796
45097
|
"blockquote",
|
|
44797
45098
|
{
|
|
44798
45099
|
className: cn(
|
|
44799
|
-
"relative text-
|
|
45100
|
+
"relative text-lg font-light leading-relaxed md:text-2xl",
|
|
44800
45101
|
quoteClassName
|
|
44801
45102
|
),
|
|
44802
45103
|
children: testimonial.quote
|
|
@@ -44814,15 +45115,15 @@ function TestimonialsCompanyLogo({
|
|
|
44814
45115
|
}
|
|
44815
45116
|
),
|
|
44816
45117
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-1 text-right", authorClassName), children: [
|
|
44817
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
45118
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-end", children: [
|
|
44818
45119
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
44819
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: testimonial.role }) : testimonial.role)
|
|
45120
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
|
|
44820
45121
|
] }),
|
|
44821
45122
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44822
45123
|
Pressable,
|
|
44823
45124
|
{
|
|
44824
45125
|
href: testimonial.linkConfig?.href,
|
|
44825
|
-
className: "text-sm font-bold uppercase transition-all duration-
|
|
45126
|
+
className: "cursor-pointer text-sm font-bold uppercase transition-all duration-500 hover:underline hover:underline-offset-4",
|
|
44826
45127
|
children: testimonial.linkConfig?.label || "Learn more"
|
|
44827
45128
|
}
|
|
44828
45129
|
)
|
|
@@ -44853,7 +45154,7 @@ function TestimonialsCompanyLogo({
|
|
|
44853
45154
|
"div",
|
|
44854
45155
|
{
|
|
44855
45156
|
className: cn(
|
|
44856
|
-
"grid items-center gap-
|
|
45157
|
+
"grid items-center gap-16 lg:gap-24 grid-cols-1 lg:grid-cols-2",
|
|
44857
45158
|
gridClassName
|
|
44858
45159
|
),
|
|
44859
45160
|
children: [
|
|
@@ -44884,19 +45185,6 @@ function TestimonialsCompanyLogo({
|
|
|
44884
45185
|
}
|
|
44885
45186
|
);
|
|
44886
45187
|
}
|
|
44887
|
-
function StarRating3({ rating, size = 16 }) {
|
|
44888
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
44889
|
-
DynamicIcon,
|
|
44890
|
-
{
|
|
44891
|
-
name: "lucide/star",
|
|
44892
|
-
size,
|
|
44893
|
-
className: cn(
|
|
44894
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
44895
|
-
)
|
|
44896
|
-
},
|
|
44897
|
-
star
|
|
44898
|
-
)) });
|
|
44899
|
-
}
|
|
44900
45188
|
function TestimonialsGridAddReview({
|
|
44901
45189
|
reviews,
|
|
44902
45190
|
reviewsSlot,
|
|
@@ -44943,27 +45231,33 @@ function TestimonialsGridAddReview({
|
|
|
44943
45231
|
addReviewCardClassName
|
|
44944
45232
|
),
|
|
44945
45233
|
onClick: onAddReview,
|
|
44946
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44947
|
-
|
|
44948
|
-
|
|
44949
|
-
|
|
44950
|
-
|
|
44951
|
-
|
|
44952
|
-
|
|
44953
|
-
|
|
44954
|
-
size:
|
|
44955
|
-
|
|
44956
|
-
|
|
44957
|
-
|
|
44958
|
-
|
|
44959
|
-
|
|
44960
|
-
|
|
45234
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45235
|
+
CardContent,
|
|
45236
|
+
{
|
|
45237
|
+
className: cn(
|
|
45238
|
+
"flex flex-col items-center gap-3 py-12 text-center",
|
|
45239
|
+
getNestedCardTextColor(background)
|
|
45240
|
+
),
|
|
45241
|
+
children: [
|
|
45242
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
45243
|
+
DynamicIcon,
|
|
45244
|
+
{
|
|
45245
|
+
name: "lucide/plus",
|
|
45246
|
+
size: 24,
|
|
45247
|
+
className: "text-primary"
|
|
45248
|
+
}
|
|
45249
|
+
) }),
|
|
45250
|
+
addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
|
|
45251
|
+
addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
|
|
45252
|
+
]
|
|
45253
|
+
}
|
|
45254
|
+
)
|
|
44961
45255
|
}
|
|
44962
45256
|
),
|
|
44963
45257
|
reviews?.map((review, index) => {
|
|
44964
45258
|
const authorName = getAuthorName(review);
|
|
44965
45259
|
return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "space-y-4 p-6", children: [
|
|
44966
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45260
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating }),
|
|
44967
45261
|
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-relaxed", children: review.content }) : review.content),
|
|
44968
45262
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
|
|
44969
45263
|
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-8", children: [
|
|
@@ -44977,7 +45271,19 @@ function TestimonialsGridAddReview({
|
|
|
44977
45271
|
]
|
|
44978
45272
|
}
|
|
44979
45273
|
);
|
|
44980
|
-
}, [
|
|
45274
|
+
}, [
|
|
45275
|
+
reviewsSlot,
|
|
45276
|
+
gridClassName,
|
|
45277
|
+
addReviewCardClassName,
|
|
45278
|
+
onAddReview,
|
|
45279
|
+
addReviewText,
|
|
45280
|
+
addReviewSubtext,
|
|
45281
|
+
reviews,
|
|
45282
|
+
cardClassName,
|
|
45283
|
+
authorClassName,
|
|
45284
|
+
getAuthorName,
|
|
45285
|
+
getInitials
|
|
45286
|
+
]);
|
|
44981
45287
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44982
45288
|
Section,
|
|
44983
45289
|
{
|
|
@@ -45041,7 +45347,8 @@ function TestimonialsMarquee({
|
|
|
45041
45347
|
quoteClassName,
|
|
45042
45348
|
authorClassName,
|
|
45043
45349
|
background,
|
|
45044
|
-
|
|
45350
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
45351
|
+
spacing = "xl",
|
|
45045
45352
|
pattern,
|
|
45046
45353
|
patternOpacity
|
|
45047
45354
|
}) {
|
|
@@ -45051,81 +45358,102 @@ function TestimonialsMarquee({
|
|
|
45051
45358
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
45052
45359
|
return "";
|
|
45053
45360
|
}, []);
|
|
45054
|
-
const getAvatarSrc = React8.useCallback(
|
|
45055
|
-
|
|
45056
|
-
|
|
45361
|
+
const getAvatarSrc = React8.useCallback(
|
|
45362
|
+
(testimonial) => {
|
|
45363
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
45364
|
+
},
|
|
45365
|
+
[]
|
|
45366
|
+
);
|
|
45057
45367
|
const getInitials = React8.useCallback((name) => {
|
|
45058
45368
|
return name.split(" ").map((n) => n[0]).join("");
|
|
45059
45369
|
}, []);
|
|
45060
45370
|
const renderedTestimonials = React8.useMemo(() => {
|
|
45061
45371
|
if (testimonialsSlot) return testimonialsSlot;
|
|
45062
45372
|
if (!testimonials || testimonials.length === 0) return null;
|
|
45063
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
45064
|
-
|
|
45065
|
-
|
|
45066
|
-
|
|
45067
|
-
|
|
45068
|
-
|
|
45069
|
-
|
|
45070
|
-
|
|
45071
|
-
|
|
45072
|
-
|
|
45073
|
-
|
|
45074
|
-
"
|
|
45075
|
-
{
|
|
45076
|
-
|
|
45077
|
-
|
|
45078
|
-
|
|
45079
|
-
|
|
45080
|
-
|
|
45081
|
-
|
|
45082
|
-
|
|
45083
|
-
|
|
45084
|
-
|
|
45085
|
-
|
|
45086
|
-
|
|
45087
|
-
|
|
45088
|
-
|
|
45089
|
-
|
|
45090
|
-
|
|
45091
|
-
|
|
45092
|
-
|
|
45093
|
-
|
|
45094
|
-
|
|
45095
|
-
|
|
45096
|
-
|
|
45097
|
-
|
|
45098
|
-
|
|
45099
|
-
|
|
45100
|
-
|
|
45101
|
-
|
|
45102
|
-
|
|
45103
|
-
|
|
45104
|
-
|
|
45105
|
-
|
|
45106
|
-
|
|
45107
|
-
|
|
45108
|
-
|
|
45109
|
-
|
|
45110
|
-
|
|
45111
|
-
|
|
45112
|
-
|
|
45113
|
-
|
|
45114
|
-
|
|
45115
|
-
|
|
45116
|
-
|
|
45117
|
-
|
|
45118
|
-
|
|
45119
|
-
|
|
45120
|
-
|
|
45121
|
-
|
|
45122
|
-
|
|
45123
|
-
|
|
45124
|
-
|
|
45125
|
-
|
|
45126
|
-
|
|
45127
|
-
|
|
45128
|
-
|
|
45373
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45374
|
+
"div",
|
|
45375
|
+
{
|
|
45376
|
+
className: cn(
|
|
45377
|
+
"relative marquee-fade",
|
|
45378
|
+
pauseOnHover && "marquee-pause-on-hover",
|
|
45379
|
+
marqueeClassName
|
|
45380
|
+
),
|
|
45381
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
45382
|
+
"div",
|
|
45383
|
+
{
|
|
45384
|
+
className: "marquee-content flex shrink-0 animate-marquee gap-4",
|
|
45385
|
+
style: {
|
|
45386
|
+
animationDuration: speedMap[effectiveSpeed]
|
|
45387
|
+
},
|
|
45388
|
+
children: duplicatedTestimonials.map((testimonial, index) => {
|
|
45389
|
+
const authorName = getAuthorName(testimonial);
|
|
45390
|
+
const avatarSrc = getAvatarSrc(testimonial);
|
|
45391
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45392
|
+
Pressable,
|
|
45393
|
+
{
|
|
45394
|
+
href: testimonial?.linkConfig?.href,
|
|
45395
|
+
className: cn(
|
|
45396
|
+
"bg-card text-card-foreground",
|
|
45397
|
+
"rounded-2xl border shadow-xl",
|
|
45398
|
+
"cursor-pointer transition-all duration-500",
|
|
45399
|
+
"hover:bg-primary hover:text-primary-foreground",
|
|
45400
|
+
"flex flex-col gap-6 w-80 shrink-0",
|
|
45401
|
+
cardClassName
|
|
45402
|
+
),
|
|
45403
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "p-6 h-full flex flex-col justify-between gap-12", children: [
|
|
45404
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45405
|
+
"p",
|
|
45406
|
+
{
|
|
45407
|
+
className: cn(
|
|
45408
|
+
"mb-4 text-sm leading-relaxed",
|
|
45409
|
+
quoteClassName
|
|
45410
|
+
),
|
|
45411
|
+
children: [
|
|
45412
|
+
"\u201C",
|
|
45413
|
+
testimonial.quote,
|
|
45414
|
+
"\u201D"
|
|
45415
|
+
]
|
|
45416
|
+
}
|
|
45417
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", quoteClassName), children: testimonial.quote })),
|
|
45418
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
45419
|
+
"div",
|
|
45420
|
+
{
|
|
45421
|
+
className: cn("flex items-center gap-4", authorClassName),
|
|
45422
|
+
children: [
|
|
45423
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-10 ring-4 ring-primary shadow-lg", children: [
|
|
45424
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
45425
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
|
|
45426
|
+
] }),
|
|
45427
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45428
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
|
|
45429
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: testimonial.role }) : testimonial.role)
|
|
45430
|
+
] })
|
|
45431
|
+
]
|
|
45432
|
+
}
|
|
45433
|
+
)
|
|
45434
|
+
] })
|
|
45435
|
+
},
|
|
45436
|
+
index
|
|
45437
|
+
);
|
|
45438
|
+
})
|
|
45439
|
+
}
|
|
45440
|
+
) })
|
|
45441
|
+
}
|
|
45442
|
+
);
|
|
45443
|
+
}, [
|
|
45444
|
+
testimonialsSlot,
|
|
45445
|
+
marqueeClassName,
|
|
45446
|
+
pauseOnHover,
|
|
45447
|
+
effectiveSpeed,
|
|
45448
|
+
duplicatedTestimonials,
|
|
45449
|
+
cardClassName,
|
|
45450
|
+
quoteClassName,
|
|
45451
|
+
authorClassName,
|
|
45452
|
+
testimonials,
|
|
45453
|
+
getAuthorName,
|
|
45454
|
+
getAvatarSrc,
|
|
45455
|
+
getInitials
|
|
45456
|
+
]);
|
|
45129
45457
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45130
45458
|
Section,
|
|
45131
45459
|
{
|
|
@@ -45134,28 +45462,20 @@ function TestimonialsMarquee({
|
|
|
45134
45462
|
pattern,
|
|
45135
45463
|
patternOpacity,
|
|
45136
45464
|
className: cn("overflow-hidden", className),
|
|
45465
|
+
containerClassName,
|
|
45137
45466
|
children: [
|
|
45138
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-12", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-2xl text-center", children: [
|
|
45467
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-12", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-2xl text-center space-y-2", children: [
|
|
45139
45468
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45140
45469
|
"h2",
|
|
45141
45470
|
{
|
|
45142
45471
|
className: cn(
|
|
45143
|
-
"text-3xl font-semibold tracking-tight md:text-4xl",
|
|
45472
|
+
"text-3xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-pretty",
|
|
45144
45473
|
headingClassName
|
|
45145
45474
|
),
|
|
45146
45475
|
children: heading
|
|
45147
45476
|
}
|
|
45148
|
-
) :
|
|
45149
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45150
|
-
"p",
|
|
45151
|
-
{
|
|
45152
|
-
className: cn(
|
|
45153
|
-
"mt-4 text-lg text-muted-foreground",
|
|
45154
|
-
descriptionClassName
|
|
45155
|
-
),
|
|
45156
|
-
children: description
|
|
45157
|
-
}
|
|
45158
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
|
|
45477
|
+
) : heading),
|
|
45478
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description)
|
|
45159
45479
|
] }) }),
|
|
45160
45480
|
renderedTestimonials,
|
|
45161
45481
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `
|
|
@@ -45170,9 +45490,13 @@ function TestimonialsMarquee({
|
|
|
45170
45490
|
.animate-marquee {
|
|
45171
45491
|
animation: marquee linear infinite;
|
|
45172
45492
|
}
|
|
45173
|
-
.pause {
|
|
45493
|
+
.marquee-pause-on-hover:hover .marquee-content {
|
|
45174
45494
|
animation-play-state: paused;
|
|
45175
45495
|
}
|
|
45496
|
+
.marquee-fade {
|
|
45497
|
+
-webkit-mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent);
|
|
45498
|
+
mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent);
|
|
45499
|
+
}
|
|
45176
45500
|
` })
|
|
45177
45501
|
]
|
|
45178
45502
|
}
|
|
@@ -45188,6 +45512,7 @@ function TestimonialsSimpleGrid({
|
|
|
45188
45512
|
headerClassName,
|
|
45189
45513
|
headingClassName,
|
|
45190
45514
|
descriptionClassName,
|
|
45515
|
+
cardContentClassName,
|
|
45191
45516
|
gridClassName,
|
|
45192
45517
|
cardClassName,
|
|
45193
45518
|
quoteClassName,
|
|
@@ -45198,17 +45523,11 @@ function TestimonialsSimpleGrid({
|
|
|
45198
45523
|
pattern,
|
|
45199
45524
|
patternOpacity
|
|
45200
45525
|
}) {
|
|
45201
|
-
const gridCols = {
|
|
45202
|
-
2: "sm:grid-cols-2",
|
|
45203
|
-
3: "sm:grid-cols-2 lg:grid-cols-3",
|
|
45204
|
-
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
45205
|
-
};
|
|
45206
|
-
const effectiveColumns = columns || 3;
|
|
45207
45526
|
const getAuthorName = React8.useCallback((testimonial) => {
|
|
45208
45527
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
45209
45528
|
return "";
|
|
45210
45529
|
}, []);
|
|
45211
|
-
|
|
45530
|
+
React8.useCallback(
|
|
45212
45531
|
(testimonial) => {
|
|
45213
45532
|
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
45214
45533
|
},
|
|
@@ -45223,53 +45542,89 @@ function TestimonialsSimpleGrid({
|
|
|
45223
45542
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45224
45543
|
"div",
|
|
45225
45544
|
{
|
|
45226
|
-
className: cn(
|
|
45545
|
+
className: cn(
|
|
45546
|
+
"grid gap-4 md:gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
|
|
45547
|
+
gridClassName
|
|
45548
|
+
),
|
|
45227
45549
|
children: testimonials.map((testimonial, index) => {
|
|
45228
45550
|
const authorName = getAuthorName(testimonial);
|
|
45229
|
-
|
|
45230
|
-
|
|
45231
|
-
|
|
45232
|
-
|
|
45233
|
-
|
|
45234
|
-
|
|
45235
|
-
|
|
45236
|
-
|
|
45237
|
-
|
|
45238
|
-
|
|
45239
|
-
|
|
45240
|
-
|
|
45241
|
-
|
|
45242
|
-
|
|
45243
|
-
|
|
45244
|
-
|
|
45245
|
-
|
|
45246
|
-
|
|
45247
|
-
|
|
45248
|
-
|
|
45249
|
-
|
|
45250
|
-
|
|
45251
|
-
|
|
45252
|
-
|
|
45253
|
-
|
|
45254
|
-
|
|
45255
|
-
|
|
45256
|
-
|
|
45257
|
-
|
|
45258
|
-
|
|
45551
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45552
|
+
Pressable,
|
|
45553
|
+
{
|
|
45554
|
+
href: testimonial.linkConfig?.href,
|
|
45555
|
+
className: cn(
|
|
45556
|
+
"bg-card text-card-foreground",
|
|
45557
|
+
"flex flex-col gap-6",
|
|
45558
|
+
testimonial.linkConfig?.href ? "cursor-pointer hover:bg-black hover:text-white transition-all duration-500" : "",
|
|
45559
|
+
"rounded-2xl py-0 shadow-xl group",
|
|
45560
|
+
"ring-4 ring-ring",
|
|
45561
|
+
cardClassName
|
|
45562
|
+
),
|
|
45563
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45564
|
+
CardContent,
|
|
45565
|
+
{
|
|
45566
|
+
className: cn(
|
|
45567
|
+
"px-0 h-full flex flex-col-reverse items-stretch justify-between gap-12",
|
|
45568
|
+
cardContentClassName
|
|
45569
|
+
),
|
|
45570
|
+
children: [
|
|
45571
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45572
|
+
"div",
|
|
45573
|
+
{
|
|
45574
|
+
className: cn(
|
|
45575
|
+
"flex items-center justify-between",
|
|
45576
|
+
authorClassName
|
|
45577
|
+
),
|
|
45578
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
45579
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 size-24 border-t-4 border-r-4 border-primary rounded-tr-xl rounded-tl-none rounded-br-none rounded-bl-none shadow-xl", children: [
|
|
45580
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45581
|
+
AvatarImage,
|
|
45582
|
+
{
|
|
45583
|
+
src: testimonial.avatarSrc,
|
|
45584
|
+
alt: authorName
|
|
45585
|
+
}
|
|
45586
|
+
),
|
|
45587
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
45588
|
+
] }),
|
|
45589
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 pt-2 pr-6 pb-2", children: [
|
|
45590
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0", children: [
|
|
45591
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg font-semibold leading-relaxed", children: testimonial.author }) : testimonial.author),
|
|
45592
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base", children: testimonial.role }) : testimonial.role)
|
|
45593
|
+
] }),
|
|
45594
|
+
testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
45595
|
+
Pressable,
|
|
45596
|
+
{
|
|
45597
|
+
href: testimonial.linkConfig.href,
|
|
45598
|
+
className: cn(
|
|
45599
|
+
"text-base transition-all duration-300",
|
|
45600
|
+
"underline underline-offset-4",
|
|
45601
|
+
testimonial.linkConfig.className
|
|
45602
|
+
),
|
|
45603
|
+
children: testimonial.linkConfig.label
|
|
45604
|
+
}
|
|
45605
|
+
)
|
|
45606
|
+
] })
|
|
45607
|
+
] })
|
|
45608
|
+
}
|
|
45609
|
+
),
|
|
45610
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-6 md: pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
|
|
45611
|
+
]
|
|
45612
|
+
}
|
|
45613
|
+
)
|
|
45614
|
+
},
|
|
45615
|
+
index
|
|
45616
|
+
);
|
|
45259
45617
|
})
|
|
45260
45618
|
}
|
|
45261
45619
|
);
|
|
45262
45620
|
}, [
|
|
45263
45621
|
testimonialsSlot,
|
|
45264
|
-
gridCols,
|
|
45265
|
-
effectiveColumns,
|
|
45266
45622
|
gridClassName,
|
|
45267
45623
|
testimonials,
|
|
45268
45624
|
cardClassName,
|
|
45269
|
-
|
|
45625
|
+
cardContentClassName,
|
|
45270
45626
|
authorClassName,
|
|
45271
45627
|
getAuthorName,
|
|
45272
|
-
getAvatarSrc,
|
|
45273
45628
|
getInitials
|
|
45274
45629
|
]);
|
|
45275
45630
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -45285,19 +45640,29 @@ function TestimonialsSimpleGrid({
|
|
|
45285
45640
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
45286
45641
|
"div",
|
|
45287
45642
|
{
|
|
45288
|
-
className: cn(
|
|
45643
|
+
className: cn(
|
|
45644
|
+
"mx-auto mb-12 max-w-full md:max-w-2xl text-center",
|
|
45645
|
+
headerClassName
|
|
45646
|
+
),
|
|
45289
45647
|
children: [
|
|
45290
45648
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45291
45649
|
"h2",
|
|
45292
45650
|
{
|
|
45293
45651
|
className: cn(
|
|
45294
|
-
"text-
|
|
45652
|
+
"text-pretty text-3xl md:text-4xl lg:text-6xl",
|
|
45653
|
+
"font-semibold tracking-tight",
|
|
45295
45654
|
headingClassName
|
|
45296
45655
|
),
|
|
45297
45656
|
children: heading
|
|
45298
45657
|
}
|
|
45299
|
-
) :
|
|
45300
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45658
|
+
) : heading),
|
|
45659
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45660
|
+
"p",
|
|
45661
|
+
{
|
|
45662
|
+
className: cn("mt-4 text-lg text-balance", descriptionClassName),
|
|
45663
|
+
children: description
|
|
45664
|
+
}
|
|
45665
|
+
) : description)
|
|
45301
45666
|
]
|
|
45302
45667
|
}
|
|
45303
45668
|
),
|
|
@@ -45315,36 +45680,58 @@ function TestimonialsSliderMinimal({
|
|
|
45315
45680
|
quoteClassName,
|
|
45316
45681
|
authorClassName,
|
|
45317
45682
|
avatarClassName,
|
|
45683
|
+
navButtonClassName,
|
|
45318
45684
|
dotsClassName,
|
|
45319
45685
|
background,
|
|
45320
45686
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
45321
|
-
spacing = "
|
|
45687
|
+
spacing = "none",
|
|
45322
45688
|
pattern,
|
|
45323
|
-
patternOpacity
|
|
45689
|
+
patternOpacity,
|
|
45690
|
+
previousButtonAriaLabel,
|
|
45691
|
+
nextButtonAriaLabel,
|
|
45692
|
+
navigationClassName
|
|
45324
45693
|
}) {
|
|
45325
45694
|
const [currentIndex, setCurrentIndex] = React8.useState(0);
|
|
45326
|
-
const [isTransitioning, setIsTransitioning] = React8.useState(false);
|
|
45327
45695
|
const totalTestimonials = testimonials?.length ?? 0;
|
|
45328
|
-
const
|
|
45329
|
-
|
|
45696
|
+
const autoPlayTimerRef = React8__namespace.useRef(
|
|
45697
|
+
null
|
|
45698
|
+
);
|
|
45699
|
+
const resetAutoPlay = React8.useCallback(() => {
|
|
45700
|
+
if (autoPlayTimerRef.current) {
|
|
45701
|
+
clearInterval(autoPlayTimerRef.current);
|
|
45702
|
+
autoPlayTimerRef.current = null;
|
|
45703
|
+
}
|
|
45704
|
+
if (!autoPlayInterval || autoPlayInterval <= 0 || totalTestimonials === 0)
|
|
45705
|
+
return;
|
|
45706
|
+
autoPlayTimerRef.current = setInterval(() => {
|
|
45707
|
+
setCurrentIndex((prev) => (prev + 1) % totalTestimonials);
|
|
45708
|
+
}, autoPlayInterval);
|
|
45709
|
+
}, [autoPlayInterval, totalTestimonials]);
|
|
45710
|
+
const goToNext = React8.useCallback(() => {
|
|
45711
|
+
if (totalTestimonials === 0) return;
|
|
45712
|
+
setCurrentIndex((prev) => prev === totalTestimonials - 1 ? 0 : prev + 1);
|
|
45713
|
+
resetAutoPlay();
|
|
45714
|
+
}, [totalTestimonials, resetAutoPlay]);
|
|
45715
|
+
const goToPrevious = React8.useCallback(() => {
|
|
45716
|
+
if (totalTestimonials === 0) return;
|
|
45717
|
+
setCurrentIndex((prev) => prev === 0 ? totalTestimonials - 1 : prev - 1);
|
|
45718
|
+
resetAutoPlay();
|
|
45719
|
+
}, [totalTestimonials, resetAutoPlay]);
|
|
45720
|
+
const goToIndex = React8.useCallback(
|
|
45330
45721
|
(index) => {
|
|
45331
|
-
|
|
45332
|
-
|
|
45333
|
-
setTimeout(() => {
|
|
45334
|
-
setCurrentIndex(index);
|
|
45335
|
-
setIsTransitioning(false);
|
|
45336
|
-
}, 300);
|
|
45722
|
+
setCurrentIndex(index);
|
|
45723
|
+
resetAutoPlay();
|
|
45337
45724
|
},
|
|
45338
|
-
[
|
|
45725
|
+
[resetAutoPlay]
|
|
45339
45726
|
);
|
|
45340
45727
|
React8.useEffect(() => {
|
|
45341
|
-
|
|
45342
|
-
|
|
45343
|
-
|
|
45344
|
-
|
|
45345
|
-
|
|
45346
|
-
|
|
45347
|
-
}, [
|
|
45728
|
+
resetAutoPlay();
|
|
45729
|
+
return () => {
|
|
45730
|
+
if (autoPlayTimerRef.current) {
|
|
45731
|
+
clearInterval(autoPlayTimerRef.current);
|
|
45732
|
+
}
|
|
45733
|
+
};
|
|
45734
|
+
}, [resetAutoPlay]);
|
|
45348
45735
|
const current = testimonials?.[currentIndex];
|
|
45349
45736
|
const getAuthorName = React8.useCallback((testimonial) => {
|
|
45350
45737
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
@@ -45364,53 +45751,64 @@ function TestimonialsSliderMinimal({
|
|
|
45364
45751
|
if (!current) return null;
|
|
45365
45752
|
const authorName = getAuthorName(current);
|
|
45366
45753
|
const avatarSrc = getAvatarSrc(current);
|
|
45367
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45368
|
-
"
|
|
45369
|
-
|
|
45370
|
-
|
|
45371
|
-
|
|
45372
|
-
|
|
45373
|
-
|
|
45374
|
-
|
|
45375
|
-
|
|
45376
|
-
"
|
|
45377
|
-
|
|
45378
|
-
|
|
45379
|
-
|
|
45380
|
-
|
|
45381
|
-
|
|
45382
|
-
|
|
45383
|
-
|
|
45384
|
-
|
|
45385
|
-
|
|
45386
|
-
|
|
45387
|
-
|
|
45388
|
-
)
|
|
45389
|
-
|
|
45390
|
-
|
|
45391
|
-
|
|
45392
|
-
|
|
45393
|
-
|
|
45394
|
-
|
|
45395
|
-
|
|
45396
|
-
|
|
45397
|
-
|
|
45754
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-12 md:space-y-24", children: [
|
|
45755
|
+
current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45756
|
+
"blockquote",
|
|
45757
|
+
{
|
|
45758
|
+
className: cn(
|
|
45759
|
+
"text-xl font-thin leading-relaxed md:text-2xl text-balance line-clamp-6",
|
|
45760
|
+
quoteClassName
|
|
45761
|
+
),
|
|
45762
|
+
children: [
|
|
45763
|
+
"\u201C",
|
|
45764
|
+
current.quote,
|
|
45765
|
+
"\u201D"
|
|
45766
|
+
]
|
|
45767
|
+
}
|
|
45768
|
+
) : current.quote),
|
|
45769
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
45770
|
+
"div",
|
|
45771
|
+
{
|
|
45772
|
+
className: cn(
|
|
45773
|
+
"mt-8 flex flex-col items-center gap-6 md:gap-12",
|
|
45774
|
+
authorClassName
|
|
45775
|
+
),
|
|
45776
|
+
children: [
|
|
45777
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
45778
|
+
Avatar,
|
|
45779
|
+
{
|
|
45780
|
+
className: cn(
|
|
45781
|
+
"relative flex shrink-0 overflow-hidden rounded-full ring-4 ring-primary shadow-xl size-12",
|
|
45782
|
+
avatarClassName
|
|
45783
|
+
),
|
|
45784
|
+
children: [
|
|
45398
45785
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
45399
45786
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
45400
|
-
]
|
|
45401
|
-
|
|
45402
|
-
|
|
45403
|
-
|
|
45404
|
-
|
|
45405
|
-
|
|
45406
|
-
}
|
|
45407
|
-
|
|
45408
|
-
|
|
45409
|
-
|
|
45410
|
-
|
|
45787
|
+
]
|
|
45788
|
+
}
|
|
45789
|
+
),
|
|
45790
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0", children: [
|
|
45791
|
+
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: current.author }) : current.author),
|
|
45792
|
+
current.role && (typeof current.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm ", children: current.role }) : current.role)
|
|
45793
|
+
] }),
|
|
45794
|
+
current.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
45795
|
+
Pressable,
|
|
45796
|
+
{
|
|
45797
|
+
href: current.linkConfig.href,
|
|
45798
|
+
className: cn(
|
|
45799
|
+
current.linkConfig.className,
|
|
45800
|
+
"text-sm font-bold tracking-wide uppercase",
|
|
45801
|
+
"hover:underline hover:underline-offset-2"
|
|
45802
|
+
),
|
|
45803
|
+
children: current.linkConfig.label
|
|
45804
|
+
}
|
|
45805
|
+
)
|
|
45806
|
+
]
|
|
45807
|
+
}
|
|
45808
|
+
)
|
|
45809
|
+
] });
|
|
45411
45810
|
}, [
|
|
45412
45811
|
testimonialsSlot,
|
|
45413
|
-
isTransitioning,
|
|
45414
45812
|
current,
|
|
45415
45813
|
quoteClassName,
|
|
45416
45814
|
authorClassName,
|
|
@@ -45428,21 +45826,75 @@ function TestimonialsSliderMinimal({
|
|
|
45428
45826
|
patternOpacity,
|
|
45429
45827
|
className,
|
|
45430
45828
|
containerClassName,
|
|
45431
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45432
|
-
|
|
45433
|
-
|
|
45434
|
-
|
|
45435
|
-
|
|
45436
|
-
|
|
45437
|
-
|
|
45438
|
-
|
|
45439
|
-
|
|
45440
|
-
|
|
45441
|
-
|
|
45442
|
-
|
|
45443
|
-
|
|
45444
|
-
|
|
45445
|
-
|
|
45829
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45830
|
+
"div",
|
|
45831
|
+
{
|
|
45832
|
+
className: cn(
|
|
45833
|
+
"mx-auto max-w-3xl text-center min-h-[700px] flex flex-col items-center justify-center",
|
|
45834
|
+
contentClassName
|
|
45835
|
+
),
|
|
45836
|
+
children: [
|
|
45837
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
45838
|
+
framerMotion.motion.div,
|
|
45839
|
+
{
|
|
45840
|
+
initial: { opacity: 0, y: 10 },
|
|
45841
|
+
animate: { opacity: 1, y: 0 },
|
|
45842
|
+
exit: { opacity: 0, y: -10 },
|
|
45843
|
+
transition: { duration: 0.4, ease: "easeInOut" },
|
|
45844
|
+
children: renderedTestimonial
|
|
45845
|
+
},
|
|
45846
|
+
currentIndex
|
|
45847
|
+
) }),
|
|
45848
|
+
testimonials && testimonials.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45849
|
+
"div",
|
|
45850
|
+
{
|
|
45851
|
+
className: cn(
|
|
45852
|
+
"mt-8 flex items-center justify-center gap-4",
|
|
45853
|
+
navigationClassName
|
|
45854
|
+
),
|
|
45855
|
+
children: [
|
|
45856
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45857
|
+
Pressable,
|
|
45858
|
+
{
|
|
45859
|
+
asButton: true,
|
|
45860
|
+
variant: "default",
|
|
45861
|
+
size: "icon",
|
|
45862
|
+
className: cn("size-10 rounded-full", navButtonClassName),
|
|
45863
|
+
onClick: goToPrevious,
|
|
45864
|
+
"aria-label": previousButtonAriaLabel ?? "Previous testimonial",
|
|
45865
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
|
|
45866
|
+
}
|
|
45867
|
+
),
|
|
45868
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-2", dotsClassName), children: testimonials.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45869
|
+
"button",
|
|
45870
|
+
{
|
|
45871
|
+
onClick: () => goToIndex(index),
|
|
45872
|
+
className: cn(
|
|
45873
|
+
"size-2 rounded-full transition-all",
|
|
45874
|
+
index === currentIndex ? "w-6 bg-primary text-primary-foreground" : "bg-card text-card-foreground"
|
|
45875
|
+
),
|
|
45876
|
+
"aria-label": `Go to testimonial ${index + 1}`
|
|
45877
|
+
},
|
|
45878
|
+
index
|
|
45879
|
+
)) }),
|
|
45880
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45881
|
+
Pressable,
|
|
45882
|
+
{
|
|
45883
|
+
asButton: true,
|
|
45884
|
+
variant: "default",
|
|
45885
|
+
size: "icon",
|
|
45886
|
+
className: cn("size-10 rounded-full", navButtonClassName),
|
|
45887
|
+
onClick: goToNext,
|
|
45888
|
+
"aria-label": nextButtonAriaLabel ?? "Next testimonial",
|
|
45889
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
|
|
45890
|
+
}
|
|
45891
|
+
)
|
|
45892
|
+
]
|
|
45893
|
+
}
|
|
45894
|
+
)
|
|
45895
|
+
]
|
|
45896
|
+
}
|
|
45897
|
+
)
|
|
45446
45898
|
}
|
|
45447
45899
|
);
|
|
45448
45900
|
}
|
|
@@ -45494,32 +45946,44 @@ function TestimonialsSplitImage({
|
|
|
45494
45946
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45495
45947
|
DynamicIcon,
|
|
45496
45948
|
{
|
|
45497
|
-
name: "
|
|
45949
|
+
name: "mdi/comment-quote-outline",
|
|
45498
45950
|
size: 48,
|
|
45499
|
-
className:
|
|
45951
|
+
className: quoteIconClassName
|
|
45500
45952
|
}
|
|
45501
45953
|
),
|
|
45502
45954
|
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45503
45955
|
"blockquote",
|
|
45504
45956
|
{
|
|
45505
45957
|
className: cn(
|
|
45506
|
-
"text-
|
|
45958
|
+
"text-lg font-light leading-relaxed md:text-2xl lg:text-3xl",
|
|
45507
45959
|
quoteClassName
|
|
45508
45960
|
),
|
|
45509
45961
|
children: testimonial.quote
|
|
45510
45962
|
}
|
|
45511
45963
|
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
45512
45964
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-4 pt-4", authorClassName), children: [
|
|
45513
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-
|
|
45965
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden shadow-xl rounded-2xl size-18", children: [
|
|
45514
45966
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
45515
45967
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
45516
45968
|
] }),
|
|
45517
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
45969
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0", children: [
|
|
45518
45970
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
45519
45971
|
(testimonial.role || testimonial.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm ", children: [
|
|
45520
45972
|
testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
|
|
45521
45973
|
testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
|
|
45522
|
-
] })
|
|
45974
|
+
] }),
|
|
45975
|
+
testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
45976
|
+
Pressable,
|
|
45977
|
+
{
|
|
45978
|
+
href: testimonial.linkConfig.href,
|
|
45979
|
+
className: cn(
|
|
45980
|
+
testimonial.linkConfig.className,
|
|
45981
|
+
"text-sm font-bold tracking-wide uppercase",
|
|
45982
|
+
"hover:underline hover:underline-offset-2"
|
|
45983
|
+
),
|
|
45984
|
+
children: testimonial.linkConfig.label
|
|
45985
|
+
}
|
|
45986
|
+
)
|
|
45523
45987
|
] })
|
|
45524
45988
|
] })
|
|
45525
45989
|
]
|
|
@@ -45549,13 +46013,17 @@ function TestimonialsSplitImage({
|
|
|
45549
46013
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45550
46014
|
"div",
|
|
45551
46015
|
{
|
|
45552
|
-
className: cn(
|
|
46016
|
+
className: cn(
|
|
46017
|
+
"grid items-center gap-10 md:gap-12 grid-cols-1 lg:grid-cols-2",
|
|
46018
|
+
gridClassName
|
|
46019
|
+
),
|
|
45553
46020
|
children: [
|
|
45554
46021
|
imageSrc && /* @__PURE__ */ jsxRuntime.jsx(
|
|
45555
46022
|
"div",
|
|
45556
46023
|
{
|
|
45557
46024
|
className: cn(
|
|
45558
|
-
"
|
|
46025
|
+
"shadow-xl rounded-2xl",
|
|
46026
|
+
"relative aspect-4/3 overflow-hidden lg:aspect-square",
|
|
45559
46027
|
effectiveImagePosition === "right" && "lg:order-2",
|
|
45560
46028
|
imageClassName
|
|
45561
46029
|
),
|
|
@@ -45878,19 +46346,6 @@ function TestimonialsWallCompact({
|
|
|
45878
46346
|
}
|
|
45879
46347
|
);
|
|
45880
46348
|
}
|
|
45881
|
-
function StarRating4({ rating, size = 14 }) {
|
|
45882
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
45883
|
-
DynamicIcon,
|
|
45884
|
-
{
|
|
45885
|
-
name: "lucide/star",
|
|
45886
|
-
size,
|
|
45887
|
-
className: cn(
|
|
45888
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
45889
|
-
)
|
|
45890
|
-
},
|
|
45891
|
-
star
|
|
45892
|
-
)) });
|
|
45893
|
-
}
|
|
45894
46349
|
function TestimonialsMiniDividers({
|
|
45895
46350
|
testimonials,
|
|
45896
46351
|
testimonialsSlot,
|
|
@@ -45905,101 +46360,134 @@ function TestimonialsMiniDividers({
|
|
|
45905
46360
|
quoteClassName,
|
|
45906
46361
|
authorClassName,
|
|
45907
46362
|
background,
|
|
45908
|
-
spacing,
|
|
46363
|
+
spacing = "lg",
|
|
46364
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
45909
46365
|
pattern,
|
|
45910
46366
|
patternOpacity
|
|
45911
46367
|
}) {
|
|
45912
|
-
const getAuthorName = React8.useCallback(
|
|
45913
|
-
|
|
45914
|
-
|
|
45915
|
-
|
|
45916
|
-
|
|
45917
|
-
|
|
45918
|
-
|
|
46368
|
+
const getAuthorName = React8.useCallback(
|
|
46369
|
+
(testimonial) => {
|
|
46370
|
+
if (typeof testimonial.author === "string") return testimonial.author;
|
|
46371
|
+
return "";
|
|
46372
|
+
},
|
|
46373
|
+
[]
|
|
46374
|
+
);
|
|
46375
|
+
const getAvatarSrc = React8.useCallback(
|
|
46376
|
+
(testimonial) => {
|
|
46377
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
46378
|
+
},
|
|
46379
|
+
[]
|
|
46380
|
+
);
|
|
45919
46381
|
const getInitials = React8.useCallback((name) => {
|
|
45920
46382
|
return name.split(" ").map((n) => n[0]).join("");
|
|
45921
46383
|
}, []);
|
|
45922
46384
|
const renderedTestimonials = React8.useMemo(() => {
|
|
45923
46385
|
if (testimonialsSlot) return testimonialsSlot;
|
|
45924
46386
|
if (!testimonials || testimonials.length === 0) return null;
|
|
45925
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
46387
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45926
46388
|
"div",
|
|
45927
46389
|
{
|
|
45928
46390
|
className: cn(
|
|
45929
|
-
"
|
|
46391
|
+
"relative grid border-x border-dashed md:grid-cols-3",
|
|
45930
46392
|
gridClassName
|
|
45931
46393
|
),
|
|
45932
|
-
children:
|
|
45933
|
-
|
|
45934
|
-
|
|
45935
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45936
|
-
"div",
|
|
46394
|
+
children: [
|
|
46395
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46396
|
+
DynamicIcon,
|
|
45937
46397
|
{
|
|
45938
|
-
|
|
45939
|
-
|
|
45940
|
-
|
|
45941
|
-
|
|
45942
|
-
|
|
45943
|
-
|
|
45944
|
-
|
|
45945
|
-
|
|
45946
|
-
|
|
45947
|
-
|
|
45948
|
-
|
|
45949
|
-
|
|
45950
|
-
|
|
45951
|
-
|
|
45952
|
-
|
|
45953
|
-
|
|
45954
|
-
|
|
45955
|
-
|
|
45956
|
-
|
|
45957
|
-
|
|
45958
|
-
|
|
45959
|
-
|
|
45960
|
-
|
|
45961
|
-
|
|
45962
|
-
|
|
45963
|
-
|
|
45964
|
-
|
|
45965
|
-
|
|
45966
|
-
|
|
45967
|
-
|
|
45968
|
-
|
|
45969
|
-
|
|
45970
|
-
|
|
45971
|
-
|
|
45972
|
-
|
|
45973
|
-
|
|
45974
|
-
}
|
|
45975
|
-
|
|
45976
|
-
|
|
45977
|
-
|
|
45978
|
-
|
|
45979
|
-
|
|
45980
|
-
|
|
46398
|
+
name: "lucide/sparkle",
|
|
46399
|
+
size: 20,
|
|
46400
|
+
className: "absolute top-0 right-0 translate-x-2.5 -translate-y-2.5 fill-primary"
|
|
46401
|
+
}
|
|
46402
|
+
),
|
|
46403
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46404
|
+
DynamicIcon,
|
|
46405
|
+
{
|
|
46406
|
+
name: "lucide/sparkle",
|
|
46407
|
+
size: 20,
|
|
46408
|
+
className: "absolute top-0 left-0 -translate-x-2.5 -translate-y-2.5 fill-primary"
|
|
46409
|
+
}
|
|
46410
|
+
),
|
|
46411
|
+
testimonials.map((testimonial, index) => {
|
|
46412
|
+
const authorName = getAuthorName(testimonial);
|
|
46413
|
+
const avatarSrc = getAvatarSrc(testimonial);
|
|
46414
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46415
|
+
"div",
|
|
46416
|
+
{
|
|
46417
|
+
className: cn(
|
|
46418
|
+
"group flex flex-col gap-4 border-t border-dashed p-4 transition-colors duration-300 hover:bg-muted/50 lg:p-8",
|
|
46419
|
+
index === 1 && "md:border-x md:border-dashed",
|
|
46420
|
+
index === 2 ? "border-b" : "md:border-b",
|
|
46421
|
+
itemClassName
|
|
46422
|
+
),
|
|
46423
|
+
children: [
|
|
46424
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
46425
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-10 shrink-0 rounded-md bg-card shadow-sm lg:size-12", children: [
|
|
46426
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
46427
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "rounded-md bg-card text-card-foreground text-sm", children: getInitials(authorName) })
|
|
46428
|
+
] }),
|
|
46429
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("min-w-0", authorClassName), children: [
|
|
46430
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate font-medium", children: testimonial.author }) : testimonial.author),
|
|
46431
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm text-muted-foreground", children: testimonial.role }) : testimonial.role)
|
|
46432
|
+
] })
|
|
46433
|
+
] }),
|
|
46434
|
+
testimonial.rating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: testimonial.rating }),
|
|
46435
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46436
|
+
"p",
|
|
46437
|
+
{
|
|
46438
|
+
className: cn(
|
|
46439
|
+
"text-sm leading-relaxed text-muted-foreground",
|
|
46440
|
+
quoteClassName
|
|
46441
|
+
),
|
|
46442
|
+
children: [
|
|
46443
|
+
"\u201C",
|
|
46444
|
+
testimonial.quote,
|
|
46445
|
+
"\u201D"
|
|
46446
|
+
]
|
|
46447
|
+
}
|
|
46448
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", quoteClassName), children: testimonial.quote }))
|
|
46449
|
+
]
|
|
46450
|
+
},
|
|
46451
|
+
index
|
|
46452
|
+
);
|
|
46453
|
+
})
|
|
46454
|
+
]
|
|
45981
46455
|
}
|
|
45982
46456
|
);
|
|
45983
|
-
}, [
|
|
45984
|
-
|
|
46457
|
+
}, [
|
|
46458
|
+
testimonialsSlot,
|
|
46459
|
+
gridClassName,
|
|
46460
|
+
testimonials,
|
|
46461
|
+
itemClassName,
|
|
46462
|
+
quoteClassName,
|
|
46463
|
+
authorClassName,
|
|
46464
|
+
getAuthorName,
|
|
46465
|
+
getAvatarSrc,
|
|
46466
|
+
getInitials
|
|
46467
|
+
]);
|
|
46468
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45985
46469
|
Section,
|
|
45986
46470
|
{
|
|
45987
46471
|
background,
|
|
45988
46472
|
spacing,
|
|
45989
46473
|
pattern,
|
|
45990
46474
|
patternOpacity,
|
|
45991
|
-
className,
|
|
45992
|
-
|
|
45993
|
-
|
|
46475
|
+
className: cn("relative flex items-center justify-center", className),
|
|
46476
|
+
containerClassName,
|
|
46477
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
46478
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45994
46479
|
"div",
|
|
45995
46480
|
{
|
|
45996
|
-
className: cn(
|
|
45997
|
-
|
|
46481
|
+
className: cn(
|
|
46482
|
+
"border-x border-t border-dashed px-4 py-6 md:py-16 md:px-16",
|
|
46483
|
+
headerClassName
|
|
46484
|
+
),
|
|
46485
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-3xl", children: [
|
|
45998
46486
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45999
46487
|
"h2",
|
|
46000
46488
|
{
|
|
46001
46489
|
className: cn(
|
|
46002
|
-
"text-3xl font-semibold tracking-tight md:text-4xl",
|
|
46490
|
+
"text-center text-3xl font-semibold tracking-tight md:text-4xl",
|
|
46003
46491
|
headingClassName
|
|
46004
46492
|
),
|
|
46005
46493
|
children: heading
|
|
@@ -46009,17 +46497,17 @@ function TestimonialsMiniDividers({
|
|
|
46009
46497
|
"p",
|
|
46010
46498
|
{
|
|
46011
46499
|
className: cn(
|
|
46012
|
-
"mt-4 text-lg text-
|
|
46500
|
+
"mx-auto mt-4 max-w-2xl text-center text-lg text-balance",
|
|
46013
46501
|
descriptionClassName
|
|
46014
46502
|
),
|
|
46015
46503
|
children: description
|
|
46016
46504
|
}
|
|
46017
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
46018
|
-
]
|
|
46505
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
46506
|
+
] })
|
|
46019
46507
|
}
|
|
46020
46508
|
),
|
|
46021
46509
|
renderedTestimonials
|
|
46022
|
-
]
|
|
46510
|
+
] })
|
|
46023
46511
|
}
|
|
46024
46512
|
);
|
|
46025
46513
|
}
|
|
@@ -46039,18 +46527,25 @@ function TestimonialsLogoCards({
|
|
|
46039
46527
|
quoteClassName,
|
|
46040
46528
|
authorClassName,
|
|
46041
46529
|
background,
|
|
46042
|
-
spacing,
|
|
46530
|
+
spacing = "lg",
|
|
46531
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
46043
46532
|
pattern,
|
|
46044
46533
|
patternOpacity,
|
|
46045
46534
|
optixFlowConfig
|
|
46046
46535
|
}) {
|
|
46047
|
-
const getAuthorName = React8.useCallback(
|
|
46048
|
-
|
|
46049
|
-
|
|
46050
|
-
|
|
46051
|
-
|
|
46052
|
-
|
|
46053
|
-
|
|
46536
|
+
const getAuthorName = React8.useCallback(
|
|
46537
|
+
(testimonial) => {
|
|
46538
|
+
if (typeof testimonial.author === "string") return testimonial.author;
|
|
46539
|
+
return "";
|
|
46540
|
+
},
|
|
46541
|
+
[]
|
|
46542
|
+
);
|
|
46543
|
+
const getAvatarSrc = React8.useCallback(
|
|
46544
|
+
(testimonial) => {
|
|
46545
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
46546
|
+
},
|
|
46547
|
+
[]
|
|
46548
|
+
);
|
|
46054
46549
|
const getInitials = React8.useCallback((name) => {
|
|
46055
46550
|
return name.split(" ").map((n) => n[0]).join("");
|
|
46056
46551
|
}, []);
|
|
@@ -46081,7 +46576,10 @@ function TestimonialsLogoCards({
|
|
|
46081
46576
|
{
|
|
46082
46577
|
src: testimonial.companyLogo,
|
|
46083
46578
|
alt: testimonial.companyLogoAlt || "Company logo",
|
|
46084
|
-
className:
|
|
46579
|
+
className: cn(
|
|
46580
|
+
index === 0 ? "h-10" : "h-5",
|
|
46581
|
+
"w-auto object-contain"
|
|
46582
|
+
),
|
|
46085
46583
|
optixFlowConfig
|
|
46086
46584
|
}
|
|
46087
46585
|
) }),
|
|
@@ -46098,20 +46596,29 @@ function TestimonialsLogoCards({
|
|
|
46098
46596
|
{
|
|
46099
46597
|
className: cn(
|
|
46100
46598
|
"leading-relaxed",
|
|
46101
|
-
index === 0 ? "text-xl font-
|
|
46599
|
+
index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
|
|
46102
46600
|
quoteClassName
|
|
46103
46601
|
),
|
|
46104
46602
|
children: testimonial.quote
|
|
46105
46603
|
}
|
|
46106
|
-
) :
|
|
46604
|
+
) : testimonial.quote),
|
|
46107
46605
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
|
|
46108
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
46109
|
-
|
|
46110
|
-
|
|
46111
|
-
|
|
46606
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
46607
|
+
Avatar,
|
|
46608
|
+
{
|
|
46609
|
+
className: cn(
|
|
46610
|
+
index === 0 ? "size-12" : "size-10",
|
|
46611
|
+
"ring-4 ring-primary"
|
|
46612
|
+
),
|
|
46613
|
+
children: [
|
|
46614
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
46615
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
46616
|
+
]
|
|
46617
|
+
}
|
|
46618
|
+
),
|
|
46112
46619
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
46113
|
-
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm font-medium
|
|
46114
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-
|
|
46620
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
|
|
46621
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
|
|
46115
46622
|
] })
|
|
46116
46623
|
] })
|
|
46117
46624
|
]
|
|
@@ -46124,7 +46631,20 @@ function TestimonialsLogoCards({
|
|
|
46124
46631
|
})
|
|
46125
46632
|
}
|
|
46126
46633
|
);
|
|
46127
|
-
}, [
|
|
46634
|
+
}, [
|
|
46635
|
+
testimonialsSlot,
|
|
46636
|
+
gridClassName,
|
|
46637
|
+
testimonials,
|
|
46638
|
+
cardClassName,
|
|
46639
|
+
cardHeaderClassName,
|
|
46640
|
+
optixFlowConfig,
|
|
46641
|
+
cardContentClassName,
|
|
46642
|
+
quoteClassName,
|
|
46643
|
+
authorClassName,
|
|
46644
|
+
getAuthorName,
|
|
46645
|
+
getAvatarSrc,
|
|
46646
|
+
getInitials
|
|
46647
|
+
]);
|
|
46128
46648
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46129
46649
|
Section,
|
|
46130
46650
|
{
|
|
@@ -46133,6 +46653,7 @@ function TestimonialsLogoCards({
|
|
|
46133
46653
|
pattern,
|
|
46134
46654
|
patternOpacity,
|
|
46135
46655
|
className,
|
|
46656
|
+
containerClassName,
|
|
46136
46657
|
children: [
|
|
46137
46658
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
46138
46659
|
"div",
|
|
@@ -46148,17 +46669,8 @@ function TestimonialsLogoCards({
|
|
|
46148
46669
|
),
|
|
46149
46670
|
children: heading
|
|
46150
46671
|
}
|
|
46151
|
-
) :
|
|
46152
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
46153
|
-
"p",
|
|
46154
|
-
{
|
|
46155
|
-
className: cn(
|
|
46156
|
-
"mt-4 text-lg text-muted-foreground",
|
|
46157
|
-
descriptionClassName
|
|
46158
|
-
),
|
|
46159
|
-
children: description
|
|
46160
|
-
}
|
|
46161
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
|
|
46672
|
+
) : heading),
|
|
46673
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : description)
|
|
46162
46674
|
]
|
|
46163
46675
|
}
|
|
46164
46676
|
),
|
|
@@ -46453,14 +46965,14 @@ function TestimonialsAnimatedSplit({
|
|
|
46453
46965
|
animate: { opacity: 1, y: 0 },
|
|
46454
46966
|
exit: { opacity: 0, y: -20 },
|
|
46455
46967
|
transition: { duration: 0.4 },
|
|
46456
|
-
className: "space-y-6",
|
|
46968
|
+
className: "space-y-4 md:space-y-6",
|
|
46457
46969
|
children: [
|
|
46458
46970
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
|
|
46459
46971
|
current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
46460
46972
|
"blockquote",
|
|
46461
46973
|
{
|
|
46462
46974
|
className: cn(
|
|
46463
|
-
"text-lg font-
|
|
46975
|
+
"text-base md:text-lg font-thin leading-normal md:leading-relaxed md:text-2xl line-clamp-4",
|
|
46464
46976
|
quoteClassName
|
|
46465
46977
|
),
|
|
46466
46978
|
children: current.quote
|
|
@@ -46472,9 +46984,9 @@ function TestimonialsAnimatedSplit({
|
|
|
46472
46984
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
46473
46985
|
] }),
|
|
46474
46986
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
46475
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
|
|
46476
|
-
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: current.author }) : current.author),
|
|
46477
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
46987
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row items-start md:items-center gap-0 md:gap-1", children: [
|
|
46988
|
+
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm md:text-base font-semibold", children: current.author }) : current.author),
|
|
46989
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm md:text-base font-normal tracking-normal md:tracking-wide", children: [
|
|
46478
46990
|
current.role && (typeof current.role === "string" ? current.role : null),
|
|
46479
46991
|
current.company && (typeof current.company === "string" ? ` at ${current.company}` : null)
|
|
46480
46992
|
] })
|
|
@@ -46628,7 +47140,7 @@ function TestimonialsScrollingColumns({
|
|
|
46628
47140
|
framerMotion.motion.div,
|
|
46629
47141
|
{
|
|
46630
47142
|
className: cn(
|
|
46631
|
-
"relative overflow-hidden rounded-
|
|
47143
|
+
"relative overflow-hidden rounded-2xl bg-card text-card-foreground shadow-sm",
|
|
46632
47144
|
cardClassName
|
|
46633
47145
|
),
|
|
46634
47146
|
variants: itemVariants2,
|
|
@@ -46643,15 +47155,25 @@ function TestimonialsScrollingColumns({
|
|
|
46643
47155
|
optixFlowConfig
|
|
46644
47156
|
}
|
|
46645
47157
|
),
|
|
46646
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47158
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, {})
|
|
46647
47159
|
] }),
|
|
46648
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left
|
|
46649
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47160
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left", children: [
|
|
47161
|
+
testimonial?.logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
47162
|
+
img.Img,
|
|
47163
|
+
{
|
|
47164
|
+
src: testimonial.logoSrc,
|
|
47165
|
+
alt: typeof testimonial.company === "string" ? `${testimonial.company} logo` : typeof testimonial.author === "string" ? `${testimonial.author} company logo` : "Company logo",
|
|
47166
|
+
className: cn(
|
|
47167
|
+
"mx-auto mb-6 max-h-12 max-w-32 object-contain md:max-h-16 md:max-w-48"
|
|
47168
|
+
),
|
|
47169
|
+
optixFlowConfig
|
|
47170
|
+
}
|
|
47171
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
46650
47172
|
DynamicIcon,
|
|
46651
47173
|
{
|
|
46652
|
-
name: "
|
|
46653
|
-
size:
|
|
46654
|
-
className: "
|
|
47174
|
+
name: "mdi/comment-quote-outline",
|
|
47175
|
+
size: 42,
|
|
47176
|
+
className: cn("opacity-50")
|
|
46655
47177
|
}
|
|
46656
47178
|
),
|
|
46657
47179
|
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -46663,12 +47185,12 @@ function TestimonialsScrollingColumns({
|
|
|
46663
47185
|
),
|
|
46664
47186
|
children: testimonial.quote
|
|
46665
47187
|
}
|
|
46666
|
-
) :
|
|
47188
|
+
) : testimonial.quote),
|
|
46667
47189
|
/* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-semibold", children: [
|
|
46668
47190
|
"\u2014",
|
|
46669
47191
|
" ",
|
|
46670
47192
|
testimonial.author && (typeof testimonial.author === "string" ? testimonial.author : null),
|
|
46671
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1
|
|
47193
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1", children: [
|
|
46672
47194
|
", ",
|
|
46673
47195
|
testimonial.role
|
|
46674
47196
|
] }) : null)
|
|
@@ -46704,19 +47226,32 @@ function TestimonialsScrollingColumns({
|
|
|
46704
47226
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
46705
47227
|
"div",
|
|
46706
47228
|
{
|
|
46707
|
-
className: cn(
|
|
47229
|
+
className: cn(
|
|
47230
|
+
"mx-auto mb-12 max-w-full md:max-w-2xl space-y-4 text-center",
|
|
47231
|
+
headerClassName
|
|
47232
|
+
),
|
|
46708
47233
|
children: [
|
|
46709
47234
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
46710
47235
|
"h2",
|
|
46711
47236
|
{
|
|
46712
47237
|
className: cn(
|
|
46713
|
-
"text-
|
|
47238
|
+
"text-pretty text-3xl md:text-4xl lg:text-6xl",
|
|
47239
|
+
"font-semibold tracking-tight",
|
|
46714
47240
|
headingClassName
|
|
46715
47241
|
),
|
|
46716
47242
|
children: heading
|
|
46717
47243
|
}
|
|
46718
|
-
) :
|
|
46719
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
47244
|
+
) : heading),
|
|
47245
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
47246
|
+
"p",
|
|
47247
|
+
{
|
|
47248
|
+
className: cn(
|
|
47249
|
+
"text-base text-base md:text-lg text-balance",
|
|
47250
|
+
descriptionClassName
|
|
47251
|
+
),
|
|
47252
|
+
children: description
|
|
47253
|
+
}
|
|
47254
|
+
) : description)
|
|
46720
47255
|
]
|
|
46721
47256
|
}
|
|
46722
47257
|
),
|
|
@@ -46736,7 +47271,8 @@ function TestimonialsMinimalNumbered({
|
|
|
46736
47271
|
authorClassName,
|
|
46737
47272
|
navigationClassName,
|
|
46738
47273
|
background,
|
|
46739
|
-
spacing,
|
|
47274
|
+
spacing = "lg",
|
|
47275
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
46740
47276
|
pattern,
|
|
46741
47277
|
patternOpacity
|
|
46742
47278
|
}) {
|
|
@@ -46794,14 +47330,14 @@ function TestimonialsMinimalNumbered({
|
|
|
46794
47330
|
"span",
|
|
46795
47331
|
{
|
|
46796
47332
|
className: cn(
|
|
46797
|
-
"text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
|
|
47333
|
+
"text-4xl md:text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
|
|
46798
47334
|
numberClassName
|
|
46799
47335
|
),
|
|
46800
47336
|
style: { fontFeatureSettings: '"tnum"' },
|
|
46801
47337
|
children: String(active + 1).padStart(2, "0")
|
|
46802
47338
|
}
|
|
46803
47339
|
),
|
|
46804
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 pt-6", children: [
|
|
47340
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 pt-0 md:pt-6", children: [
|
|
46805
47341
|
current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
46806
47342
|
"blockquote",
|
|
46807
47343
|
{
|
|
@@ -46907,13 +47443,13 @@ function TestimonialsMinimalNumbered({
|
|
|
46907
47443
|
String(testimonials.length).padStart(2, "0")
|
|
46908
47444
|
] })
|
|
46909
47445
|
] }) }),
|
|
46910
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-
|
|
47446
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
46911
47447
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46912
47448
|
"button",
|
|
46913
47449
|
{
|
|
46914
47450
|
onClick: handlePrev,
|
|
46915
47451
|
className: "rounded-full p-2 transition-all duration-300 ",
|
|
46916
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size:
|
|
47452
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
|
|
46917
47453
|
}
|
|
46918
47454
|
),
|
|
46919
47455
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -46921,7 +47457,7 @@ function TestimonialsMinimalNumbered({
|
|
|
46921
47457
|
{
|
|
46922
47458
|
onClick: handleNext,
|
|
46923
47459
|
className: "rounded-full p-2 transition-all duration-300 ",
|
|
46924
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size:
|
|
47460
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
|
|
46925
47461
|
}
|
|
46926
47462
|
)
|
|
46927
47463
|
] })
|
|
@@ -47042,10 +47578,11 @@ function TestimonialsParallaxNumber({
|
|
|
47042
47578
|
framerMotion.motion.div,
|
|
47043
47579
|
{
|
|
47044
47580
|
className: cn(
|
|
47581
|
+
"opacity-15",
|
|
47045
47582
|
"pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter ",
|
|
47046
47583
|
numberClassName
|
|
47047
47584
|
),
|
|
47048
|
-
style: { x: numberX, y: numberY },
|
|
47585
|
+
style: { x: numberX, y: numberY, opacity: 0.1 },
|
|
47049
47586
|
children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
47050
47587
|
framerMotion.motion.span,
|
|
47051
47588
|
{
|
|
@@ -47054,14 +47591,14 @@ function TestimonialsParallaxNumber({
|
|
|
47054
47591
|
exit: { opacity: 0, scale: 1.1, filter: "blur(10px)" },
|
|
47055
47592
|
transition: { duration: 0.6, ease: [0.22, 1, 0.36, 1] },
|
|
47056
47593
|
className: "block",
|
|
47057
|
-
children: current.backgroundIcon ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: current.backgroundIcon }) : current.backgroundLabel != null ? current.backgroundLabel : null
|
|
47594
|
+
children: current.backgroundIcon ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: current.backgroundIcon, size: 320 }) : current.backgroundLabel != null ? current.backgroundLabel : null
|
|
47058
47595
|
},
|
|
47059
47596
|
activeIndex
|
|
47060
47597
|
) })
|
|
47061
47598
|
}
|
|
47062
47599
|
),
|
|
47063
47600
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex", children: [
|
|
47064
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center border-r border-border/50 pr-16", children: [
|
|
47601
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center border-r-0 md:border-r border-border/50 pr-4 md:pr-16", children: [
|
|
47065
47602
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
47066
47603
|
framerMotion.motion.span,
|
|
47067
47604
|
{
|
|
@@ -47087,7 +47624,7 @@ function TestimonialsParallaxNumber({
|
|
|
47087
47624
|
}
|
|
47088
47625
|
) })
|
|
47089
47626
|
] }),
|
|
47090
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 py-12 pl-16", children: [
|
|
47627
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 py-6 md:py-12 pl-4 md:pl-16", children: [
|
|
47091
47628
|
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
47092
47629
|
framerMotion.motion.div,
|
|
47093
47630
|
{
|
|
@@ -47104,7 +47641,7 @@ function TestimonialsParallaxNumber({
|
|
|
47104
47641
|
framerMotion.motion.blockquote,
|
|
47105
47642
|
{
|
|
47106
47643
|
className: cn(
|
|
47107
|
-
"text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
|
|
47644
|
+
"text-2xl md:text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
|
|
47108
47645
|
quoteClassName
|
|
47109
47646
|
),
|
|
47110
47647
|
initial: "hidden",
|
|
@@ -47139,7 +47676,7 @@ function TestimonialsParallaxNumber({
|
|
|
47139
47676
|
},
|
|
47140
47677
|
activeIndex
|
|
47141
47678
|
) }) }),
|
|
47142
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end justify-between", children: [
|
|
47679
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start md:items-end justify-between", children: [
|
|
47143
47680
|
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
47144
47681
|
framerMotion.motion.div,
|
|
47145
47682
|
{
|
|
@@ -47156,7 +47693,9 @@ function TestimonialsParallaxNumber({
|
|
|
47156
47693
|
{
|
|
47157
47694
|
href: current.linkConfig.href,
|
|
47158
47695
|
className: cn(
|
|
47159
|
-
"
|
|
47696
|
+
"transition-all duration-500",
|
|
47697
|
+
"hover:underline hover:underline-offset-4",
|
|
47698
|
+
"text-sm",
|
|
47160
47699
|
current.linkConfig.className
|
|
47161
47700
|
),
|
|
47162
47701
|
children: current.linkConfig.label
|
|
@@ -47169,7 +47708,10 @@ function TestimonialsParallaxNumber({
|
|
|
47169
47708
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
47170
47709
|
"div",
|
|
47171
47710
|
{
|
|
47172
|
-
className: cn(
|
|
47711
|
+
className: cn(
|
|
47712
|
+
"flex items-center gap-4 flex-col md:flex-row",
|
|
47713
|
+
navigationClassName
|
|
47714
|
+
),
|
|
47173
47715
|
children: [
|
|
47174
47716
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47175
47717
|
framerMotion.motion.button,
|
|
@@ -51685,7 +52227,7 @@ function HeroBadgeShadowOverlay({
|
|
|
51685
52227
|
backgroundImageUrl,
|
|
51686
52228
|
optixFlowConfig,
|
|
51687
52229
|
background,
|
|
51688
|
-
spacing = "
|
|
52230
|
+
spacing = "none",
|
|
51689
52231
|
pattern,
|
|
51690
52232
|
patternOpacity,
|
|
51691
52233
|
className,
|
|
@@ -51772,7 +52314,8 @@ function HeroVideoBackgroundDark({
|
|
|
51772
52314
|
videoSrc,
|
|
51773
52315
|
videoSlot,
|
|
51774
52316
|
background,
|
|
51775
|
-
videoBrightness
|
|
52317
|
+
videoBrightness,
|
|
52318
|
+
videoOverlayIntensity = "high",
|
|
51776
52319
|
spacing = "py-0 md:py-0",
|
|
51777
52320
|
pattern,
|
|
51778
52321
|
patternOpacity,
|
|
@@ -51784,21 +52327,21 @@ function HeroVideoBackgroundDark({
|
|
|
51784
52327
|
}) {
|
|
51785
52328
|
const renderVideo = React8.useMemo(() => {
|
|
51786
52329
|
if (videoSlot) return videoSlot;
|
|
51787
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
51788
|
-
|
|
51789
|
-
|
|
51790
|
-
|
|
51791
|
-
|
|
51792
|
-
|
|
51793
|
-
|
|
51794
|
-
"absolute top-0 left-0 size-full object-cover",
|
|
51795
|
-
|
|
51796
|
-
|
|
51797
|
-
|
|
51798
|
-
|
|
51799
|
-
}
|
|
51800
|
-
);
|
|
51801
|
-
}, [videoSlot, videoSrc,
|
|
52330
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
52331
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
52332
|
+
"video",
|
|
52333
|
+
{
|
|
52334
|
+
loop: true,
|
|
52335
|
+
playsInline: true,
|
|
52336
|
+
src: videoSrc,
|
|
52337
|
+
className: "absolute top-0 left-0 size-full object-cover",
|
|
52338
|
+
autoPlay: true,
|
|
52339
|
+
muted: true
|
|
52340
|
+
}
|
|
52341
|
+
),
|
|
52342
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, { intensity: videoOverlayIntensity })
|
|
52343
|
+
] });
|
|
52344
|
+
}, [videoSlot, videoSrc, videoOverlayIntensity]);
|
|
51802
52345
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51803
52346
|
Section,
|
|
51804
52347
|
{
|
|
@@ -115369,8 +115912,8 @@ var BLOCK_REGISTRY = {
|
|
|
115369
115912
|
},
|
|
115370
115913
|
"testimonials-centered-avatars": {
|
|
115371
115914
|
id: "testimonials-centered-avatars",
|
|
115372
|
-
name: "Testimonials Centered with
|
|
115373
|
-
description: "A
|
|
115915
|
+
name: "Testimonials Centered with Glassmorphism Card",
|
|
115916
|
+
description: "A modern testimonial section featuring a glassmorphism card with frosted glass effect as the primary focal point. Displays an overlapping avatar stack at the top, creating a community feel, with rotating testimonials including quote, author name, role, and navigation dots. The translucent card design creates visual depth and sophistication. Perfect for SaaS landing pages and premium marketing sites.",
|
|
115374
115917
|
semanticTags: [
|
|
115375
115918
|
"testimonials",
|
|
115376
115919
|
"centered",
|
|
@@ -115378,7 +115921,11 @@ var BLOCK_REGISTRY = {
|
|
|
115378
115921
|
"stack",
|
|
115379
115922
|
"community",
|
|
115380
115923
|
"social-proof",
|
|
115381
|
-
"
|
|
115924
|
+
"glassmorphism",
|
|
115925
|
+
"glass",
|
|
115926
|
+
"frosted",
|
|
115927
|
+
"modern",
|
|
115928
|
+
"premium",
|
|
115382
115929
|
"rotating"
|
|
115383
115930
|
],
|
|
115384
115931
|
category: "testimonials",
|