@opensite/ui 2.8.6 → 2.8.8

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.
Files changed (143) hide show
  1. package/dist/about-developer-profile.cjs +17 -10
  2. package/dist/about-developer-profile.js +17 -10
  3. package/dist/article-chapters-author.cjs +17 -10
  4. package/dist/article-chapters-author.js +17 -10
  5. package/dist/carousel-animated-sections.cjs +79 -25
  6. package/dist/carousel-animated-sections.d.cts +7 -2
  7. package/dist/carousel-animated-sections.d.ts +7 -2
  8. package/dist/carousel-animated-sections.js +79 -25
  9. package/dist/carousel-gallery-thumbnails.cjs +79 -25
  10. package/dist/carousel-gallery-thumbnails.d.cts +7 -2
  11. package/dist/carousel-gallery-thumbnails.d.ts +7 -2
  12. package/dist/carousel-gallery-thumbnails.js +79 -25
  13. package/dist/carousel-icon-sidebar.cjs +5 -4
  14. package/dist/carousel-icon-sidebar.js +5 -4
  15. package/dist/carousel-portfolio-hero.cjs +79 -25
  16. package/dist/carousel-portfolio-hero.d.cts +7 -2
  17. package/dist/carousel-portfolio-hero.d.ts +7 -2
  18. package/dist/carousel-portfolio-hero.js +79 -25
  19. package/dist/components.cjs +81 -42
  20. package/dist/components.d.cts +29 -2
  21. package/dist/components.d.ts +29 -2
  22. package/dist/components.js +81 -43
  23. package/dist/contact-map.cjs +46 -32
  24. package/dist/contact-map.js +46 -32
  25. package/dist/footer-accordion-social.cjs +17 -10
  26. package/dist/footer-accordion-social.js +17 -10
  27. package/dist/footer-animated-social.cjs +17 -10
  28. package/dist/footer-animated-social.js +17 -10
  29. package/dist/footer-brand-description.cjs +17 -10
  30. package/dist/footer-brand-description.js +17 -10
  31. package/dist/footer-brand-links-contact.cjs +17 -10
  32. package/dist/footer-brand-links-contact.js +17 -10
  33. package/dist/footer-comprehensive-links.cjs +17 -10
  34. package/dist/footer-comprehensive-links.js +17 -10
  35. package/dist/footer-contact-card.cjs +17 -10
  36. package/dist/footer-contact-card.js +17 -10
  37. package/dist/footer-cta-banner.cjs +17 -10
  38. package/dist/footer-cta-banner.js +17 -10
  39. package/dist/footer-cta-social.cjs +17 -10
  40. package/dist/footer-cta-social.js +17 -10
  41. package/dist/footer-info-cards-accordion.cjs +17 -10
  42. package/dist/footer-info-cards-accordion.js +17 -10
  43. package/dist/footer-nav-social.cjs +17 -10
  44. package/dist/footer-nav-social.js +17 -10
  45. package/dist/footer-newsletter-contact.cjs +17 -10
  46. package/dist/footer-newsletter-contact.js +17 -10
  47. package/dist/footer-newsletter-grid.cjs +17 -10
  48. package/dist/footer-newsletter-grid.js +17 -10
  49. package/dist/footer-newsletter-minimal.cjs +17 -10
  50. package/dist/footer-newsletter-minimal.js +17 -10
  51. package/dist/footer-social-apps.cjs +17 -10
  52. package/dist/footer-social-apps.js +17 -10
  53. package/dist/footer-social-newsletter.cjs +17 -10
  54. package/dist/footer-social-newsletter.js +17 -10
  55. package/dist/footer-split-image-accordion.cjs +17 -10
  56. package/dist/footer-split-image-accordion.js +17 -10
  57. package/dist/geo-map.cjs +46 -32
  58. package/dist/geo-map.js +46 -32
  59. package/dist/hero-coming-soon-countdown.cjs +17 -10
  60. package/dist/hero-coming-soon-countdown.js +17 -10
  61. package/dist/hero-video-background-dark.cjs +78 -16
  62. package/dist/hero-video-background-dark.d.cts +7 -2
  63. package/dist/hero-video-background-dark.d.ts +7 -2
  64. package/dist/hero-video-background-dark.js +78 -16
  65. package/dist/index.cjs +81 -42
  66. package/dist/index.d.cts +1 -0
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.js +81 -43
  69. package/dist/link-page-bento-layout.cjs +17 -10
  70. package/dist/link-page-bento-layout.js +17 -10
  71. package/dist/link-page-grid-cards.cjs +17 -10
  72. package/dist/link-page-grid-cards.js +17 -10
  73. package/dist/link-page-minimal-profile.cjs +17 -10
  74. package/dist/link-page-minimal-profile.js +17 -10
  75. package/dist/link-page-newsletter-social.cjs +17 -10
  76. package/dist/link-page-newsletter-social.js +17 -10
  77. package/dist/link-tree-block.cjs +17 -10
  78. package/dist/link-tree-block.js +17 -10
  79. package/dist/navbar-fullscreen-menu.cjs +17 -10
  80. package/dist/navbar-fullscreen-menu.js +17 -10
  81. package/dist/navbar-transparent-overlay.cjs +17 -10
  82. package/dist/navbar-transparent-overlay.js +17 -10
  83. package/dist/registry.cjs +967 -620
  84. package/dist/registry.js +967 -620
  85. package/dist/social-link-icon.cjs +17 -10
  86. package/dist/social-link-icon.d.cts +5 -0
  87. package/dist/social-link-icon.d.ts +5 -0
  88. package/dist/social-link-icon.js +17 -10
  89. package/dist/testimonials-bento-grid.cjs +1 -1
  90. package/dist/testimonials-bento-grid.js +1 -1
  91. package/dist/testimonials-carousel-image.cjs +16 -2
  92. package/dist/testimonials-carousel-image.d.cts +5 -1
  93. package/dist/testimonials-carousel-image.d.ts +5 -1
  94. package/dist/testimonials-carousel-image.js +16 -2
  95. package/dist/testimonials-centered-avatars.cjs +1 -1
  96. package/dist/testimonials-centered-avatars.js +1 -1
  97. package/dist/testimonials-grid-add-review.cjs +51 -29
  98. package/dist/testimonials-grid-add-review.js +51 -29
  99. package/dist/testimonials-images-helpful.cjs +181 -160
  100. package/dist/testimonials-images-helpful.d.cts +9 -1
  101. package/dist/testimonials-images-helpful.d.ts +9 -1
  102. package/dist/testimonials-images-helpful.js +181 -159
  103. package/dist/testimonials-large-quote.cjs +74 -43
  104. package/dist/testimonials-large-quote.d.cts +5 -1
  105. package/dist/testimonials-large-quote.d.ts +5 -1
  106. package/dist/testimonials-large-quote.js +74 -43
  107. package/dist/testimonials-list-verified.cjs +63 -44
  108. package/dist/testimonials-list-verified.d.cts +5 -1
  109. package/dist/testimonials-list-verified.d.ts +5 -1
  110. package/dist/testimonials-list-verified.js +64 -45
  111. package/dist/testimonials-logo-cards.cjs +55 -25
  112. package/dist/testimonials-logo-cards.d.cts +5 -1
  113. package/dist/testimonials-logo-cards.d.ts +5 -1
  114. package/dist/testimonials-logo-cards.js +55 -25
  115. package/dist/testimonials-marquee.cjs +440 -28
  116. package/dist/testimonials-marquee.js +441 -26
  117. package/dist/testimonials-masonry-grid.cjs +486 -69
  118. package/dist/testimonials-masonry-grid.d.cts +5 -1
  119. package/dist/testimonials-masonry-grid.d.ts +5 -1
  120. package/dist/testimonials-masonry-grid.js +483 -63
  121. package/dist/testimonials-mini-dividers.cjs +119 -83
  122. package/dist/testimonials-mini-dividers.d.cts +10 -6
  123. package/dist/testimonials-mini-dividers.d.ts +10 -6
  124. package/dist/testimonials-mini-dividers.js +119 -83
  125. package/dist/testimonials-minimal-numbered.cjs +9 -7
  126. package/dist/testimonials-minimal-numbered.d.cts +5 -1
  127. package/dist/testimonials-minimal-numbered.d.ts +5 -1
  128. package/dist/testimonials-minimal-numbered.js +9 -7
  129. package/dist/testimonials-parallax-number.cjs +14 -9
  130. package/dist/testimonials-parallax-number.js +14 -9
  131. package/dist/testimonials-scrolling-columns.cjs +100 -21
  132. package/dist/testimonials-scrolling-columns.js +100 -21
  133. package/dist/testimonials-simple-grid.cjs +22 -5
  134. package/dist/testimonials-simple-grid.js +22 -5
  135. package/dist/testimonials-slider-minimal.cjs +1 -1
  136. package/dist/testimonials-slider-minimal.js +1 -1
  137. package/dist/testimonials-stats-header.cjs +528 -87
  138. package/dist/testimonials-stats-header.d.cts +39 -3
  139. package/dist/testimonials-stats-header.d.ts +39 -3
  140. package/dist/testimonials-stats-header.js +523 -82
  141. package/dist/testimonials-twitter-cards.cjs +20 -12
  142. package/dist/testimonials-twitter-cards.js +20 -12
  143. package/package.json +11 -1
package/dist/registry.js CHANGED
@@ -40,16 +40,6 @@ import { TextInput as TextInput$1 } from '@page-speed/forms/inputs';
40
40
  function cn(...inputs) {
41
41
  return twMerge(clsx(inputs));
42
42
  }
43
- var BRIGHTNESS_CLASS_MAP = {
44
- "10": "brightness-[.1]",
45
- "20": "brightness-[.2]",
46
- "25": "brightness-[.25]",
47
- "30": "brightness-[.3]",
48
- "40": "brightness-[.4]",
49
- "50": "brightness-50",
50
- "75": "brightness-75",
51
- "100": "brightness-100"
52
- };
53
43
  function getNestedCardBg(parentBg, variant = "muted", options) {
54
44
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
55
45
  if (isDark) {
@@ -1184,41 +1174,55 @@ function MarkerMediaCarousel({
1184
1174
  React8.useEffect(() => {
1185
1175
  setActiveIndex(0);
1186
1176
  }, [mediaResetKey]);
1187
- const activeMediaItem = mediaItems[activeItemIndex];
1188
- const mediaType = resolveMediaType(activeMediaItem);
1189
1177
  return /* @__PURE__ */ jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
1190
- /* @__PURE__ */ jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsx(
1191
- "video",
1192
- {
1193
- className: "h-full w-full object-cover",
1194
- controls: true,
1195
- preload: "metadata",
1196
- poster: activeMediaItem.poster,
1197
- children: /* @__PURE__ */ jsx("source", { src: activeMediaItem.src })
1198
- }
1199
- ) : /* @__PURE__ */ jsx(
1200
- Img,
1201
- {
1202
- src: activeMediaItem.src,
1203
- alt: activeMediaItem.alt ?? "Map marker media",
1204
- className: "h-full w-full object-cover",
1205
- loading: "eager",
1206
- optixFlowConfig
1207
- }
1208
- ) }),
1178
+ /* @__PURE__ */ jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
1179
+ const isActive = index === activeItemIndex;
1180
+ const mediaType = resolveMediaType(item);
1181
+ return /* @__PURE__ */ jsx(
1182
+ "div",
1183
+ {
1184
+ "aria-hidden": !isActive,
1185
+ className: cn(
1186
+ "absolute inset-0 transition-opacity duration-500 ease-in-out",
1187
+ isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
1188
+ ),
1189
+ children: mediaType === "video" ? /* @__PURE__ */ jsx(
1190
+ "video",
1191
+ {
1192
+ className: "h-full w-full object-cover",
1193
+ controls: isActive,
1194
+ preload: "metadata",
1195
+ poster: item.poster,
1196
+ tabIndex: isActive ? 0 : -1,
1197
+ children: /* @__PURE__ */ jsx("source", { src: item.src })
1198
+ }
1199
+ ) : /* @__PURE__ */ jsx(
1200
+ Img,
1201
+ {
1202
+ src: item.src,
1203
+ alt: item.alt ?? "Map marker media",
1204
+ className: "h-full w-full object-cover",
1205
+ loading: "eager",
1206
+ optixFlowConfig
1207
+ }
1208
+ )
1209
+ },
1210
+ normalizeId(item.id, `media-slide-${index}`)
1211
+ );
1212
+ }) }),
1209
1213
  totalItems > 1 ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
1210
1214
  /* @__PURE__ */ jsx(
1211
1215
  "button",
1212
1216
  {
1213
1217
  type: "button",
1214
1218
  "aria-label": "Show previous media",
1215
- className: "absolute left-2 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1219
+ className: "absolute left-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1216
1220
  onClick: () => {
1217
1221
  setActiveIndex(
1218
1222
  (current) => (current - 1 + totalItems) % totalItems
1219
1223
  );
1220
1224
  },
1221
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
1225
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
1222
1226
  }
1223
1227
  ),
1224
1228
  /* @__PURE__ */ jsx(
@@ -1226,20 +1230,20 @@ function MarkerMediaCarousel({
1226
1230
  {
1227
1231
  type: "button",
1228
1232
  "aria-label": "Show next media",
1229
- className: "absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1233
+ className: "absolute right-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1230
1234
  onClick: () => {
1231
1235
  setActiveIndex((current) => (current + 1) % totalItems);
1232
1236
  },
1233
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1237
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
1234
1238
  }
1235
1239
  ),
1236
- /* @__PURE__ */ jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5", children: mediaItems.map((item, index) => /* @__PURE__ */ jsx(
1240
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5 z-[2]", children: mediaItems.map((item, index) => /* @__PURE__ */ jsx(
1237
1241
  "button",
1238
1242
  {
1239
1243
  type: "button",
1240
1244
  "aria-label": `Show media item ${index + 1}`,
1241
1245
  className: cn(
1242
- "h-2 rounded-full transition-all",
1246
+ "h-2 rounded-full transition-all duration-300",
1243
1247
  index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
1244
1248
  ),
1245
1249
  onClick: () => setActiveIndex(index)
@@ -1570,9 +1574,9 @@ function GeoMap({
1570
1574
  {
1571
1575
  type: "button",
1572
1576
  "aria-label": "Close marker details",
1573
- className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1577
+ className: "\n flex size-12 items-center justify-center rounded-bl-lg rounded-br-0 rounded-t-0 bg-black text-white transition-all duration-500 absolute top-0 right-0 z-10 cursor-pointer ring-4 ring-white\n",
1574
1578
  onClick: clearSelection,
1575
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1579
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1576
1580
  }
1577
1581
  ),
1578
1582
  markerMediaItems.length > 0 ? /* @__PURE__ */ jsx(
@@ -1594,7 +1598,7 @@ function GeoMap({
1594
1598
  {
1595
1599
  name: "lucide:map-pin",
1596
1600
  className: "opacity-50",
1597
- size: 14
1601
+ size: 18
1598
1602
  }
1599
1603
  ),
1600
1604
  typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsx(
@@ -1616,7 +1620,7 @@ function GeoMap({
1616
1620
  {
1617
1621
  name: "lucide:clock",
1618
1622
  className: "opacity-50",
1619
- size: 14
1623
+ size: 18
1620
1624
  }
1621
1625
  ),
1622
1626
  typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
@@ -1644,7 +1648,7 @@ function GeoMap({
1644
1648
  "aria-label": "Close cluster details",
1645
1649
  className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1646
1650
  onClick: clearSelection,
1647
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1651
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1648
1652
  }
1649
1653
  ),
1650
1654
  /* @__PURE__ */ jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
@@ -2030,6 +2034,23 @@ function PopoverContent({
2030
2034
  }
2031
2035
  ) });
2032
2036
  }
2037
+ function StarRating({
2038
+ rating,
2039
+ size = 18,
2040
+ className
2041
+ }) {
2042
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
2043
+ DynamicIcon,
2044
+ {
2045
+ name: "icon-park-solid/star",
2046
+ size,
2047
+ className: cn(
2048
+ star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
2049
+ )
2050
+ },
2051
+ star
2052
+ )) });
2053
+ }
2033
2054
  var BUTTON_SIZES = {
2034
2055
  sm: { buttonSize: "size-8", iconSize: 16 },
2035
2056
  md: { buttonSize: "size-10", iconSize: 20 },
@@ -2131,6 +2152,7 @@ var SocialLinkIcon = React8.forwardRef(
2131
2152
  iconClassName,
2132
2153
  className,
2133
2154
  iconNameOverride,
2155
+ iconOnly = false,
2134
2156
  ...pressableProps
2135
2157
  }, ref) => {
2136
2158
  const platform = usePlatformFromUrl(href);
@@ -2143,6 +2165,21 @@ var SocialLinkIcon = React8.forwardRef(
2143
2165
  const accessibleLabel = React8.useMemo(() => {
2144
2166
  return label || platformName;
2145
2167
  }, [label, platformName]);
2168
+ const icon = React8.useMemo(() => {
2169
+ return /* @__PURE__ */ jsx(
2170
+ DynamicIcon,
2171
+ {
2172
+ name: iconName,
2173
+ size: iconSize,
2174
+ color: iconColor,
2175
+ className: iconClassName,
2176
+ alt: accessibleLabel
2177
+ }
2178
+ );
2179
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
2180
+ if (iconOnly) {
2181
+ return icon;
2182
+ }
2146
2183
  return /* @__PURE__ */ jsx(
2147
2184
  Pressable,
2148
2185
  {
@@ -2154,16 +2191,7 @@ var SocialLinkIcon = React8.forwardRef(
2154
2191
  className
2155
2192
  ),
2156
2193
  ...pressableProps,
2157
- children: /* @__PURE__ */ jsx(
2158
- DynamicIcon,
2159
- {
2160
- name: iconName,
2161
- size: iconSize,
2162
- color: iconColor,
2163
- className: iconClassName,
2164
- alt: accessibleLabel
2165
- }
2166
- )
2194
+ children: icon
2167
2195
  }
2168
2196
  );
2169
2197
  }
@@ -19721,6 +19749,67 @@ function ContactHelpCenter({
19721
19749
  }
19722
19750
  );
19723
19751
  }
19752
+ var DIRECTION_STYLES = {
19753
+ "bottom-to-top": "bg-linear-to-t",
19754
+ "top-to-bottom": "bg-linear-to-b",
19755
+ "left-to-right": "bg-linear-to-r",
19756
+ "right-to-left": "bg-linear-to-l",
19757
+ "bottom-left-to-top-right": "bg-linear-to-tr",
19758
+ "bottom-right-to-top-left": "bg-linear-to-tl",
19759
+ "top-left-to-bottom-right": "bg-linear-to-br",
19760
+ "top-right-to-bottom-left": "bg-linear-to-bl"
19761
+ };
19762
+ var INTENSITY_STOPS = {
19763
+ low: "from-black/40 via-black/20 to-transparent",
19764
+ default: "from-black/70 via-black/35 to-transparent",
19765
+ high: "from-black/85 via-black/50 to-transparent",
19766
+ "very-high": "from-black/95 via-black/60 to-black/20"
19767
+ };
19768
+ var RADIAL_INTENSITY = {
19769
+ low: {
19770
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
19771
+ },
19772
+ default: {
19773
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
19774
+ },
19775
+ high: {
19776
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
19777
+ },
19778
+ "very-high": {
19779
+ 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%)"
19780
+ }
19781
+ };
19782
+ function GradientOverlay({
19783
+ direction = "bottom-to-top",
19784
+ intensity = "default",
19785
+ className,
19786
+ style,
19787
+ ...props
19788
+ }) {
19789
+ if (direction === "radial-center") {
19790
+ return /* @__PURE__ */ jsx(
19791
+ "div",
19792
+ {
19793
+ className: cn("absolute inset-0", className),
19794
+ style: { ...RADIAL_INTENSITY[intensity], ...style },
19795
+ ...props
19796
+ }
19797
+ );
19798
+ }
19799
+ return /* @__PURE__ */ jsx(
19800
+ "div",
19801
+ {
19802
+ className: cn(
19803
+ "absolute inset-0",
19804
+ DIRECTION_STYLES[direction],
19805
+ INTENSITY_STOPS[intensity],
19806
+ className
19807
+ ),
19808
+ style,
19809
+ ...props
19810
+ }
19811
+ );
19812
+ }
19724
19813
  function CarouselAnimatedSections({
19725
19814
  sections,
19726
19815
  sectionsSlot,
@@ -19736,7 +19825,8 @@ function CarouselAnimatedSections({
19736
19825
  navigationClassName,
19737
19826
  arrowsClassName,
19738
19827
  counterClassName,
19739
- slideMediaBrightness = "50",
19828
+ slideMediaBrightness,
19829
+ slideMediaOverlayIntensity = "high",
19740
19830
  optixFlowConfig,
19741
19831
  background = "dark",
19742
19832
  spacing = "py-0",
@@ -19825,7 +19915,7 @@ function CarouselAnimatedSections({
19825
19915
  containerMaxWidth,
19826
19916
  containerClassName,
19827
19917
  children: [
19828
- sectionsSlot ? sectionsSlot : currentSection ? /* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsx(
19918
+ sectionsSlot ? sectionsSlot : currentSection ? /* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsxs(
19829
19919
  motion.div,
19830
19920
  {
19831
19921
  custom: direction,
@@ -19836,19 +19926,21 @@ function CarouselAnimatedSections({
19836
19926
  transition: { duration: 0.6, ease: [0.4, 0, 0.2, 1] },
19837
19927
  onAnimationComplete: () => setIsAnimating(false),
19838
19928
  className: cn("absolute inset-0", currentSection?.className),
19839
- children: /* @__PURE__ */ jsx(
19840
- Img,
19841
- {
19842
- src: currentSection?.image,
19843
- alt: typeof currentSection?.title === "string" ? currentSection?.title : `Section ${currentSection?.id}`,
19844
- className: cn(
19845
- "h-full w-full object-cover",
19846
- BRIGHTNESS_CLASS_MAP[slideMediaBrightness],
19847
- currentSection?.imageClassName
19848
- ),
19849
- optixFlowConfig
19850
- }
19851
- )
19929
+ children: [
19930
+ /* @__PURE__ */ jsx(
19931
+ Img,
19932
+ {
19933
+ src: currentSection?.image,
19934
+ alt: typeof currentSection?.title === "string" ? currentSection?.title : `Section ${currentSection?.id}`,
19935
+ className: cn(
19936
+ "h-full w-full object-cover",
19937
+ currentSection?.imageClassName
19938
+ ),
19939
+ optixFlowConfig
19940
+ }
19941
+ ),
19942
+ /* @__PURE__ */ jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
19943
+ ]
19852
19944
  },
19853
19945
  currentIndex
19854
19946
  ) }) : null,
@@ -20813,7 +20905,8 @@ function CarouselGalleryThumbnails({
20813
20905
  spacing = "sm",
20814
20906
  pattern,
20815
20907
  patternOpacity,
20816
- slideMediaBrightness = "100"
20908
+ slideMediaBrightness,
20909
+ slideMediaOverlayIntensity = "default"
20817
20910
  }) {
20818
20911
  const [currentIndex, setCurrentIndex] = React8.useState(0);
20819
20912
  const prevSlide = React8.useCallback(() => {
@@ -20862,7 +20955,7 @@ function CarouselGalleryThumbnails({
20862
20955
  "relative aspect-video w-full overflow-hidden",
20863
20956
  slideClassName
20864
20957
  ),
20865
- children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */ jsx(
20958
+ children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */ jsxs(
20866
20959
  "div",
20867
20960
  {
20868
20961
  className: cn(
@@ -20870,19 +20963,21 @@ function CarouselGalleryThumbnails({
20870
20963
  index === currentIndex ? "translate-x-0 opacity-100" : index < currentIndex ? "-translate-x-full opacity-0" : "translate-x-full opacity-0",
20871
20964
  image.className
20872
20965
  ),
20873
- children: /* @__PURE__ */ jsx(
20874
- Img,
20875
- {
20876
- src: image.src,
20877
- alt: typeof image.alt === "string" ? image.alt : `Image ${index + 1}`,
20878
- className: cn(
20879
- "h-full w-full object-cover",
20880
- BRIGHTNESS_CLASS_MAP[slideMediaBrightness],
20881
- image.imageClassName
20882
- ),
20883
- optixFlowConfig
20884
- }
20885
- )
20966
+ children: [
20967
+ /* @__PURE__ */ jsx(
20968
+ Img,
20969
+ {
20970
+ src: image.src,
20971
+ alt: typeof image.alt === "string" ? image.alt : `Image ${index + 1}`,
20972
+ className: cn(
20973
+ "h-full w-full object-cover",
20974
+ image.imageClassName
20975
+ ),
20976
+ optixFlowConfig
20977
+ }
20978
+ ),
20979
+ /* @__PURE__ */ jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
20980
+ ]
20886
20981
  },
20887
20982
  `slide-${index}`
20888
20983
  ))
@@ -21699,7 +21794,8 @@ function CarouselPortfolioHero({
21699
21794
  spacing = "none",
21700
21795
  pattern,
21701
21796
  patternOpacity,
21702
- slideMediaBrightness = "50"
21797
+ slideMediaBrightness,
21798
+ slideMediaOverlayIntensity = "high"
21703
21799
  }) {
21704
21800
  const [currentIndex, setCurrentIndex] = React8.useState(0);
21705
21801
  const intervalRef = React8.useRef(null);
@@ -21740,7 +21836,7 @@ function CarouselPortfolioHero({
21740
21836
  patternOpacity,
21741
21837
  containerClassName,
21742
21838
  children: [
21743
- slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsx(
21839
+ slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxs(
21744
21840
  "div",
21745
21841
  {
21746
21842
  className: cn(
@@ -21748,19 +21844,21 @@ function CarouselPortfolioHero({
21748
21844
  index === currentIndex ? "opacity-100" : "opacity-0",
21749
21845
  slide.className
21750
21846
  ),
21751
- children: /* @__PURE__ */ jsx(
21752
- Img,
21753
- {
21754
- src: slide.image,
21755
- alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
21756
- className: cn(
21757
- "h-full w-full object-cover",
21758
- BRIGHTNESS_CLASS_MAP[slideMediaBrightness],
21759
- slide.imageClassName
21760
- ),
21761
- optixFlowConfig
21762
- }
21763
- )
21847
+ children: [
21848
+ /* @__PURE__ */ jsx(
21849
+ Img,
21850
+ {
21851
+ src: slide.image,
21852
+ alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
21853
+ className: cn(
21854
+ "h-full w-full object-cover",
21855
+ slide.imageClassName
21856
+ ),
21857
+ optixFlowConfig
21858
+ }
21859
+ ),
21860
+ /* @__PURE__ */ jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
21861
+ ]
21764
21862
  },
21765
21863
  slide.id
21766
21864
  )),
@@ -33537,7 +33635,8 @@ function CarouselIconSidebar({
33537
33635
  src: image.src,
33538
33636
  alt: typeof image.title === "string" ? image.title : image.alt || "Carousel image",
33539
33637
  className: cn(
33540
- "h-full w-full rounded-lg object-cover cursor-pointer",
33638
+ "aspect-4/3",
33639
+ "h-full w-full object-cover cursor-pointer aspect-4/3",
33541
33640
  imageClassName
33542
33641
  ),
33543
33642
  loading: "lazy",
@@ -33597,13 +33696,13 @@ function CarouselIconSidebar({
33597
33696
  /* @__PURE__ */ jsx(Carousel, { setApi, className: cn("w-full", carouselClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 md:gap-6 md:grid-cols-5", children: [
33598
33697
  /* @__PURE__ */ jsx("div", { className: "md:col-span-2", children: sidebarContent }),
33599
33698
  /* @__PURE__ */ jsx("div", { className: "h-full md:col-span-3", children: /* @__PURE__ */ jsx(
33600
- CarouselContent,
33699
+ "div",
33601
33700
  {
33602
33701
  className: cn(
33603
- "overflow-hidden rounded-2xl shadow-lg h-full",
33702
+ "overflow-hidden rounded-2xl shadow-lg",
33604
33703
  carouselContentClassName
33605
33704
  ),
33606
- children: itemsContent
33705
+ children: /* @__PURE__ */ jsx(CarouselContent, { children: itemsContent })
33607
33706
  }
33608
33707
  ) })
33609
33708
  ] }) }),
@@ -43809,19 +43908,6 @@ function CaseStudiesTestimonialStats({
43809
43908
  }
43810
43909
  );
43811
43910
  }
43812
- function StarRating({ rating, size = 16 }) {
43813
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
43814
- DynamicIcon,
43815
- {
43816
- name: "lucide/star",
43817
- size,
43818
- className: cn(
43819
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
43820
- )
43821
- },
43822
- star
43823
- )) });
43824
- }
43825
43911
  function TestimonialsListVerified({
43826
43912
  reviews,
43827
43913
  reviewsSlot,
@@ -43834,7 +43920,8 @@ function TestimonialsListVerified({
43834
43920
  contentClassName,
43835
43921
  authorClassName,
43836
43922
  background,
43837
- spacing,
43923
+ spacing = "lg",
43924
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
43838
43925
  pattern,
43839
43926
  patternOpacity
43840
43927
  }) {
@@ -43853,35 +43940,49 @@ function TestimonialsListVerified({
43853
43940
  return /* @__PURE__ */ jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
43854
43941
  const authorName = getAuthorName(review);
43855
43942
  return /* @__PURE__ */ jsxs("div", { className: reviewClassName, children: [
43856
- index > 0 && /* @__PURE__ */ jsx(Separator, { className: "my-6" }),
43857
- /* @__PURE__ */ jsxs("div", { className: cn("space-y-3", contentClassName), children: [
43858
- /* @__PURE__ */ jsxs("div", { children: [
43859
- /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 16 }),
43860
- review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mt-2 font-medium", children: review.title }) : /* @__PURE__ */ jsx("div", { className: "mt-2", children: review.title }))
43943
+ index > 0 && /* @__PURE__ */ 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" }),
43944
+ /* @__PURE__ */ jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
43945
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
43946
+ /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 22 }),
43947
+ review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
43861
43948
  ] }),
43862
- review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: review.content }) : review.content),
43863
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
43864
- /* @__PURE__ */ jsxs(Avatar, { className: "size-8", children: [
43865
- /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43866
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
43867
- ] }),
43868
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
43869
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
43870
- review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-emerald-600", children: [
43871
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 16 }),
43872
- verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-xs", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43873
- !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-xs", children: "Verified Purchase" })
43874
- ] }),
43875
- review.date && /* @__PURE__ */ jsxs(Fragment$1, { children: [
43876
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "\xB7" }),
43877
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: review.date })
43878
- ] })
43879
- ] })
43949
+ review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
43950
+ /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
43951
+ /* @__PURE__ */ jsxs(
43952
+ "div",
43953
+ {
43954
+ className: cn("flex items-center gap-5", authorClassName),
43955
+ children: [
43956
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
43957
+ /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43958
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
43959
+ ] }),
43960
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-base flex-col items-start", children: [
43961
+ review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
43962
+ review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
43963
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
43964
+ verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43965
+ !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
43966
+ ] })
43967
+ ] })
43968
+ ]
43969
+ }
43970
+ ),
43971
+ review.date && /* @__PURE__ */ jsx("span", { className: "relative", children: review.date })
43880
43972
  ] })
43881
43973
  ] })
43882
43974
  ] }, index);
43883
43975
  }) });
43884
- }, [reviewsSlot, reviews, reviewClassName, contentClassName, authorClassName, verifiedPurchaseLabel, getAuthorName, getInitials]);
43976
+ }, [
43977
+ reviewsSlot,
43978
+ reviews,
43979
+ reviewClassName,
43980
+ contentClassName,
43981
+ authorClassName,
43982
+ verifiedPurchaseLabel,
43983
+ getAuthorName,
43984
+ getInitials
43985
+ ]);
43885
43986
  return /* @__PURE__ */ jsx(
43886
43987
  Section,
43887
43988
  {
@@ -43890,21 +43991,21 @@ function TestimonialsListVerified({
43890
43991
  pattern,
43891
43992
  patternOpacity,
43892
43993
  className,
43893
- children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl", children: [
43894
- /* @__PURE__ */ jsxs("div", { className: cn("mb-8", headerClassName), children: [
43994
+ children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
43995
+ /* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
43895
43996
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
43896
43997
  "h2",
43897
43998
  {
43898
43999
  className: cn(
43899
- "text-2xl font-semibold tracking-tight md:text-3xl",
44000
+ "text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
43900
44001
  headingClassName
43901
44002
  ),
43902
44003
  children: heading
43903
44004
  }
43904
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
44005
+ ) : heading),
43905
44006
  totalReviews > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
43906
- /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 20 }),
43907
- /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
44007
+ /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
44008
+ /* @__PURE__ */ jsxs("span", { className: "text-sm", children: [
43908
44009
  averageRating.toFixed(1),
43909
44010
  " out of 5 \xB7 ",
43910
44011
  totalReviews,
@@ -43917,23 +44018,11 @@ function TestimonialsListVerified({
43917
44018
  }
43918
44019
  );
43919
44020
  }
43920
- function StarRating2({ rating, size = 16 }) {
43921
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
43922
- DynamicIcon,
43923
- {
43924
- name: "lucide/star",
43925
- size,
43926
- className: cn(
43927
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
43928
- )
43929
- },
43930
- star
43931
- )) });
43932
- }
43933
44021
  function TestimonialsImagesHelpful({
43934
44022
  reviews,
43935
44023
  reviewsSlot,
43936
44024
  heading,
44025
+ verifiedPurchaseLabel,
43937
44026
  writeReviewLabel,
43938
44027
  reportButtonLabel,
43939
44028
  className,
@@ -43945,12 +44034,16 @@ function TestimonialsImagesHelpful({
43945
44034
  imagesClassName,
43946
44035
  onWriteReview,
43947
44036
  background,
43948
- spacing = "py-6 md:py-32",
44037
+ spacing = "lg",
44038
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
43949
44039
  pattern,
43950
44040
  patternOpacity,
43951
44041
  optixFlowConfig
43952
44042
  }) {
43953
44043
  const [helpfulClicked, setHelpfulClicked] = useState(/* @__PURE__ */ new Set());
44044
+ const [lightboxOpen, setLightboxOpen] = useState(false);
44045
+ const [lightboxItems, setLightboxItems] = useState([]);
44046
+ const [lightboxIndex, setLightboxIndex] = useState(0);
43954
44047
  const totalReviews = reviews?.length ?? 0;
43955
44048
  const averageRating = totalReviews > 0 ? (reviews?.reduce((sum, review) => sum + review.rating, 0) ?? 0) / totalReviews : 0;
43956
44049
  const handleHelpful = useCallback((reviewIndex) => {
@@ -43964,6 +44057,25 @@ function TestimonialsImagesHelpful({
43964
44057
  return newSet;
43965
44058
  });
43966
44059
  }, []);
44060
+ const handleImageClick = useCallback(
44061
+ (reviewImages, imageIndex) => {
44062
+ const items = reviewImages.map((src, i) => ({
44063
+ id: `review-image-${i}`,
44064
+ type: "image",
44065
+ src,
44066
+ alt: `Review image ${i + 1}`,
44067
+ download: true,
44068
+ share: true
44069
+ }));
44070
+ setLightboxItems(items);
44071
+ setLightboxIndex(imageIndex);
44072
+ setLightboxOpen(true);
44073
+ },
44074
+ []
44075
+ );
44076
+ const handleLightboxClose = useCallback(() => {
44077
+ setLightboxOpen(false);
44078
+ }, []);
43967
44079
  const getAuthorName = useCallback((review) => {
43968
44080
  if (typeof review.author === "string") return review.author;
43969
44081
  return "";
@@ -43977,54 +44089,28 @@ function TestimonialsImagesHelpful({
43977
44089
  return /* @__PURE__ */ jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
43978
44090
  const authorName = getAuthorName(review);
43979
44091
  return /* @__PURE__ */ jsxs("div", { className: reviewClassName, children: [
43980
- index > 0 && /* @__PURE__ */ jsx(Separator, { className: "my-6" }),
43981
- /* @__PURE__ */ jsx(Card, { className: "border-0 p-0 shadow-none", children: /* @__PURE__ */ jsxs(CardContent, { className: cn("space-y-4 p-0", contentClassName), children: [
43982
- /* @__PURE__ */ jsxs(
43983
- "div",
43984
- {
43985
- className: cn(
43986
- "flex items-start justify-between gap-4",
43987
- authorClassName
43988
- ),
43989
- children: [
43990
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
43991
- /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
43992
- /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43993
- /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
43994
- ] }),
43995
- /* @__PURE__ */ jsxs("div", { children: [
43996
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
43997
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
43998
- review.verified && /* @__PURE__ */ jsx("span", { className: "flex items-center gap-1 text-emerald-600", children: /* @__PURE__ */ jsx(
43999
- DynamicIcon,
44000
- {
44001
- name: "lucide/badge-check",
44002
- size: 16
44003
- }
44004
- ) })
44005
- ] }),
44006
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
44007
- review.date && /* @__PURE__ */ jsx("span", { children: review.date }),
44008
- review.variant && /* @__PURE__ */ jsxs(Fragment$1, { children: [
44009
- /* @__PURE__ */ jsx("span", { children: "\xB7" }),
44010
- /* @__PURE__ */ jsx("span", { children: review.variant })
44011
- ] })
44012
- ] })
44013
- ] })
44014
- ] }),
44015
- /* @__PURE__ */ jsx(StarRating2, { rating: review.rating, size: 16 })
44016
- ]
44017
- }
44018
- ),
44019
- /* @__PURE__ */ jsxs("div", { children: [
44020
- review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title),
44021
- review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm leading-relaxed text-muted-foreground", children: review.content }) : /* @__PURE__ */ jsx("div", { className: "mt-2", children: review.content }))
44092
+ index > 0 && /* @__PURE__ */ 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" }),
44093
+ /* @__PURE__ */ jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
44094
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
44095
+ /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 22 }),
44096
+ review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
44022
44097
  ] }),
44023
- review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex gap-2", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsx(
44098
+ review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
44099
+ review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex gap-3", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsx(
44024
44100
  "div",
44025
44101
  {
44026
- className: "size-20 overflow-hidden rounded-lg sm:size-24",
44027
- children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, children: /* @__PURE__ */ jsx(
44102
+ 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",
44103
+ onClick: () => handleImageClick(review.images, imgIndex),
44104
+ role: "button",
44105
+ tabIndex: 0,
44106
+ onKeyDown: (e) => {
44107
+ if (e.key === "Enter" || e.key === " ") {
44108
+ e.preventDefault();
44109
+ handleImageClick(review.images, imgIndex);
44110
+ }
44111
+ },
44112
+ "aria-label": `View review image ${imgIndex + 1} in lightbox`,
44113
+ children: /* @__PURE__ */ jsx(
44028
44114
  Img,
44029
44115
  {
44030
44116
  src: image,
@@ -44032,54 +44118,85 @@ function TestimonialsImagesHelpful({
44032
44118
  className: "size-full object-cover",
44033
44119
  optixFlowConfig
44034
44120
  }
44035
- ) })
44121
+ )
44036
44122
  },
44037
44123
  imgIndex
44038
44124
  )) }),
44039
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
44125
+ /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
44040
44126
  /* @__PURE__ */ jsxs(
44041
- Pressable,
44127
+ "div",
44042
44128
  {
44043
- asButton: true,
44044
- variant: "ghost",
44045
- size: "sm",
44046
- className: cn(
44047
- "h-8 gap-1.5 text-muted-foreground",
44048
- helpfulClicked.has(index) && "text-foreground"
44049
- ),
44050
- onClick: () => handleHelpful(index),
44129
+ className: cn("flex items-center gap-5", authorClassName),
44051
44130
  children: [
44052
- /* @__PURE__ */ jsx(
44053
- DynamicIcon,
44054
- {
44055
- name: "lucide/thumbs-up",
44056
- size: 16,
44057
- className: cn(
44058
- helpfulClicked.has(index) && "fill-current"
44059
- )
44060
- }
44061
- ),
44062
- "Helpful",
44063
- review.helpful !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
44064
- "(",
44065
- review.helpful + (helpfulClicked.has(index) ? 1 : 0),
44066
- ")"
44131
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
44132
+ /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
44133
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
44134
+ ] }),
44135
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-0", children: [
44136
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
44137
+ review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
44138
+ review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
44139
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
44140
+ verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
44141
+ !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
44142
+ ] })
44143
+ ] }),
44144
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
44145
+ review.date && /* @__PURE__ */ jsx("span", { children: review.date }),
44146
+ review.variant && /* @__PURE__ */ jsxs(Fragment$1, { children: [
44147
+ /* @__PURE__ */ jsx("span", { children: "\xB7" }),
44148
+ /* @__PURE__ */ jsx("span", { children: review.variant })
44149
+ ] })
44150
+ ] })
44067
44151
  ] })
44068
44152
  ]
44069
44153
  }
44070
44154
  ),
44071
- /* @__PURE__ */ jsx(
44072
- Pressable,
44073
- {
44074
- asButton: true,
44075
- variant: "ghost",
44076
- size: "sm",
44077
- className: "h-8 text-muted-foreground",
44078
- children: reportButtonLabel ?? "Report"
44079
- }
44080
- )
44155
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
44156
+ /* @__PURE__ */ jsxs(
44157
+ Pressable,
44158
+ {
44159
+ asButton: true,
44160
+ variant: "ghost",
44161
+ size: "sm",
44162
+ className: cn(
44163
+ "h-8 gap-1.5",
44164
+ helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
44165
+ ),
44166
+ onClick: () => handleHelpful(index),
44167
+ children: [
44168
+ /* @__PURE__ */ jsx(
44169
+ DynamicIcon,
44170
+ {
44171
+ name: "lucide/thumbs-up",
44172
+ size: 16,
44173
+ className: cn(
44174
+ helpfulClicked.has(index) && "fill-current"
44175
+ )
44176
+ }
44177
+ ),
44178
+ "Helpful",
44179
+ review.helpful !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
44180
+ "(",
44181
+ review.helpful + (helpfulClicked.has(index) ? 1 : 0),
44182
+ ")"
44183
+ ] })
44184
+ ]
44185
+ }
44186
+ ),
44187
+ /* @__PURE__ */ jsx(
44188
+ Pressable,
44189
+ {
44190
+ asButton: true,
44191
+ variant: "ghost",
44192
+ size: "sm",
44193
+ className: "h-8 text-muted-foreground",
44194
+ children: reportButtonLabel ?? "Report"
44195
+ }
44196
+ )
44197
+ ] })
44081
44198
  ] })
44082
- ] }) })
44199
+ ] })
44083
44200
  ] }, index);
44084
44201
  }) });
44085
44202
  }, [
@@ -44092,11 +44209,13 @@ function TestimonialsImagesHelpful({
44092
44209
  helpfulClicked,
44093
44210
  optixFlowConfig,
44094
44211
  reportButtonLabel,
44212
+ verifiedPurchaseLabel,
44095
44213
  getAuthorName,
44096
44214
  getInitials,
44097
- handleHelpful
44215
+ handleHelpful,
44216
+ handleImageClick
44098
44217
  ]);
44099
- return /* @__PURE__ */ jsx(
44218
+ return /* @__PURE__ */ jsxs(
44100
44219
  Section,
44101
44220
  {
44102
44221
  background,
@@ -44104,42 +44223,57 @@ function TestimonialsImagesHelpful({
44104
44223
  pattern,
44105
44224
  patternOpacity,
44106
44225
  className,
44107
- children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl", children: [
44108
- /* @__PURE__ */ jsxs(
44109
- "div",
44110
- {
44111
- className: cn(
44112
- "mb-8 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",
44113
- headerClassName
44114
- ),
44115
- children: [
44116
- /* @__PURE__ */ jsxs("div", { children: [
44117
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
44118
- "h2",
44119
- {
44120
- className: cn(
44121
- "text-2xl font-semibold tracking-tight md:text-3xl",
44122
- headingClassName
44123
- ),
44124
- children: heading
44125
- }
44126
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
44127
- totalReviews > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
44128
- /* @__PURE__ */ jsx(StarRating2, { rating: Math.round(averageRating), size: 20 }),
44129
- /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: averageRating.toFixed(1) }),
44130
- /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
44131
- "(",
44132
- totalReviews,
44133
- " reviews)"
44134
- ] })
44135
- ] })
44136
- ] }),
44226
+ containerClassName,
44227
+ children: [
44228
+ /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
44229
+ /* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
44230
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between", children: [
44231
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
44232
+ "h2",
44233
+ {
44234
+ className: cn(
44235
+ "text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
44236
+ headingClassName
44237
+ ),
44238
+ children: heading
44239
+ }
44240
+ ) : heading),
44137
44241
  (writeReviewLabel || onWriteReview) && /* @__PURE__ */ jsx(Pressable, { asButton: true, variant: "outline", onClick: onWriteReview, children: writeReviewLabel })
44138
- ]
44242
+ ] }),
44243
+ totalReviews > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
44244
+ /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
44245
+ /* @__PURE__ */ jsxs("span", { className: "text-sm", children: [
44246
+ averageRating.toFixed(1),
44247
+ " out of 5 \xB7 ",
44248
+ totalReviews,
44249
+ " reviews"
44250
+ ] })
44251
+ ] })
44252
+ ] }),
44253
+ renderedReviews
44254
+ ] }),
44255
+ lightboxOpen && /* @__PURE__ */ jsx(
44256
+ Lightbox,
44257
+ {
44258
+ items: lightboxItems,
44259
+ initialIndex: lightboxIndex,
44260
+ layout: "horizontal",
44261
+ controls: {
44262
+ navigation: true,
44263
+ thumbnails: true,
44264
+ download: true,
44265
+ share: true,
44266
+ fullscreen: true,
44267
+ captions: true,
44268
+ counter: true
44269
+ },
44270
+ onClose: handleLightboxClose,
44271
+ enableKeyboardShortcuts: true,
44272
+ closeOnEscape: true,
44273
+ closeOnBackdropClick: true
44139
44274
  }
44140
- ),
44141
- renderedReviews
44142
- ] })
44275
+ )
44276
+ ]
44143
44277
  }
44144
44278
  );
44145
44279
  }
@@ -44283,7 +44417,7 @@ function TestimonialsBentoGrid({
44283
44417
  ] }),
44284
44418
  /* @__PURE__ */ jsxs("div", { className: "space-y-0 leading-tight", children: [
44285
44419
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
44286
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role),
44420
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
44287
44421
  testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
44288
44422
  Pressable,
44289
44423
  {
@@ -44398,7 +44532,7 @@ function TestimonialsTwitterCards({
44398
44532
  "div",
44399
44533
  {
44400
44534
  className: cn(
44401
- "grid gap-4 md:gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
44535
+ "grid gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
44402
44536
  gridClassName
44403
44537
  ),
44404
44538
  children: testimonials.map((testimonial, index) => {
@@ -44451,7 +44585,8 @@ function TestimonialsTwitterCards({
44451
44585
  SocialLinkIcon,
44452
44586
  {
44453
44587
  href: testimonial.linkConfig.href,
44454
- iconSize: 24
44588
+ iconSize: 24,
44589
+ iconOnly: true
44455
44590
  }
44456
44591
  )
44457
44592
  ]
@@ -44532,6 +44667,7 @@ function TestimonialsCarouselImage({
44532
44667
  className,
44533
44668
  contentClassName,
44534
44669
  quoteIconClassName,
44670
+ logoClassName,
44535
44671
  quoteClassName,
44536
44672
  authorClassName,
44537
44673
  navigationClassName,
@@ -44539,7 +44675,7 @@ function TestimonialsCarouselImage({
44539
44675
  dotsClassName,
44540
44676
  optixFlowConfig,
44541
44677
  background,
44542
- containerClassName = "mx-0 w-screen px-0 sm:px-0 lg:px-0 max-w-screen relative z-10",
44678
+ containerClassName = "mx-0 w-screen px-0 sm:px-0 lg:px-0 max-w-screen relative z-10 h-full",
44543
44679
  spacing = "none",
44544
44680
  pattern,
44545
44681
  patternOpacity
@@ -44597,7 +44733,18 @@ function TestimonialsCarouselImage({
44597
44733
  contentClassName
44598
44734
  ),
44599
44735
  children: [
44600
- /* @__PURE__ */ jsx(
44736
+ current?.logoSrc ? /* @__PURE__ */ jsx(
44737
+ Img,
44738
+ {
44739
+ src: current.logoSrc,
44740
+ alt: typeof current.company === "string" ? `${current.company} logo` : typeof current.author === "string" ? `${current.author} company logo` : "Company logo",
44741
+ className: cn(
44742
+ "mx-auto mb-6 max-h-12 max-w-32 object-contain md:max-h-16 md:max-w-48",
44743
+ logoClassName
44744
+ ),
44745
+ optixFlowConfig
44746
+ }
44747
+ ) : /* @__PURE__ */ jsx(
44601
44748
  DynamicIcon,
44602
44749
  {
44603
44750
  name: "mdi/comment-quote-outline",
@@ -44655,6 +44802,8 @@ function TestimonialsCarouselImage({
44655
44802
  testimonialsSlot,
44656
44803
  contentClassName,
44657
44804
  quoteIconClassName,
44805
+ logoClassName,
44806
+ optixFlowConfig,
44658
44807
  current,
44659
44808
  quoteClassName,
44660
44809
  authorClassName
@@ -44855,7 +45004,7 @@ function TestimonialsCenteredAvatars({
44855
45004
  "div",
44856
45005
  {
44857
45006
  className: cn(
44858
- "mx-auto max-w-full md:max-w-md text-center flex flex-col items-center gap-6",
45007
+ "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",
44859
45008
  contentClassName
44860
45009
  ),
44861
45010
  children: [
@@ -45011,19 +45160,6 @@ function TestimonialsCompanyLogo({
45011
45160
  }
45012
45161
  );
45013
45162
  }
45014
- function StarRating3({ rating, size = 16 }) {
45015
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
45016
- DynamicIcon,
45017
- {
45018
- name: "lucide/star",
45019
- size,
45020
- className: cn(
45021
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
45022
- )
45023
- },
45024
- star
45025
- )) });
45026
- }
45027
45163
  function TestimonialsGridAddReview({
45028
45164
  reviews,
45029
45165
  reviewsSlot,
@@ -45070,27 +45206,33 @@ function TestimonialsGridAddReview({
45070
45206
  addReviewCardClassName
45071
45207
  ),
45072
45208
  onClick: onAddReview,
45073
- children: /* @__PURE__ */ jsxs(CardContent, { className: cn(
45074
- "flex flex-col items-center gap-3 py-12 text-center",
45075
- getNestedCardTextColor(background)
45076
- ), children: [
45077
- /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(
45078
- DynamicIcon,
45079
- {
45080
- name: "lucide/plus",
45081
- size: 24,
45082
- className: "text-primary"
45083
- }
45084
- ) }),
45085
- addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
45086
- addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
45087
- ] })
45209
+ children: /* @__PURE__ */ jsxs(
45210
+ CardContent,
45211
+ {
45212
+ className: cn(
45213
+ "flex flex-col items-center gap-3 py-12 text-center",
45214
+ getNestedCardTextColor(background)
45215
+ ),
45216
+ children: [
45217
+ /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(
45218
+ DynamicIcon,
45219
+ {
45220
+ name: "lucide/plus",
45221
+ size: 24,
45222
+ className: "text-primary"
45223
+ }
45224
+ ) }),
45225
+ addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
45226
+ addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
45227
+ ]
45228
+ }
45229
+ )
45088
45230
  }
45089
45231
  ),
45090
45232
  reviews?.map((review, index) => {
45091
45233
  const authorName = getAuthorName(review);
45092
45234
  return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6", children: [
45093
- /* @__PURE__ */ jsx(StarRating3, { rating: review.rating }),
45235
+ /* @__PURE__ */ jsx(StarRating, { rating: review.rating }),
45094
45236
  review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: review.content }) : review.content),
45095
45237
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
45096
45238
  /* @__PURE__ */ jsxs(Avatar, { className: "size-8", children: [
@@ -45104,7 +45246,19 @@ function TestimonialsGridAddReview({
45104
45246
  ]
45105
45247
  }
45106
45248
  );
45107
- }, [reviewsSlot, gridClassName, addReviewCardClassName, onAddReview, addReviewText, addReviewSubtext, reviews, cardClassName, authorClassName, getAuthorName, getInitials]);
45249
+ }, [
45250
+ reviewsSlot,
45251
+ gridClassName,
45252
+ addReviewCardClassName,
45253
+ onAddReview,
45254
+ addReviewText,
45255
+ addReviewSubtext,
45256
+ reviews,
45257
+ cardClassName,
45258
+ authorClassName,
45259
+ getAuthorName,
45260
+ getInitials
45261
+ ]);
45108
45262
  return /* @__PURE__ */ jsxs(
45109
45263
  Section,
45110
45264
  {
@@ -45210,10 +45364,18 @@ function TestimonialsMarquee({
45210
45364
  const authorName = getAuthorName(testimonial);
45211
45365
  const avatarSrc = getAvatarSrc(testimonial);
45212
45366
  return /* @__PURE__ */ jsx(
45213
- Card,
45367
+ Pressable,
45214
45368
  {
45215
- className: cn("w-80 shrink-0", cardClassName),
45216
- children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
45369
+ href: testimonial?.linkConfig?.href,
45370
+ className: cn(
45371
+ "bg-card text-card-foreground",
45372
+ "rounded-2xl border shadow-xl",
45373
+ "cursor-pointer transition-all duration-500",
45374
+ "hover:bg-primary hover:text-primary-foreground",
45375
+ "flex flex-col gap-6 w-80 shrink-0",
45376
+ cardClassName
45377
+ ),
45378
+ children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6 h-full flex flex-col justify-between gap-12", children: [
45217
45379
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
45218
45380
  "p",
45219
45381
  {
@@ -45231,15 +45393,15 @@ function TestimonialsMarquee({
45231
45393
  /* @__PURE__ */ jsxs(
45232
45394
  "div",
45233
45395
  {
45234
- className: cn("flex items-center gap-3", authorClassName),
45396
+ className: cn("flex items-center gap-4", authorClassName),
45235
45397
  children: [
45236
- /* @__PURE__ */ jsxs(Avatar, { className: "size-9", children: [
45398
+ /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-10 ring-4 ring-primary shadow-lg", children: [
45237
45399
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
45238
45400
  /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
45239
45401
  ] }),
45240
45402
  /* @__PURE__ */ jsxs("div", { children: [
45241
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
45242
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role)
45403
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
45404
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm", children: testimonial.role }) : testimonial.role)
45243
45405
  ] })
45244
45406
  ]
45245
45407
  }
@@ -45277,18 +45439,18 @@ function TestimonialsMarquee({
45277
45439
  className: cn("overflow-hidden", className),
45278
45440
  containerClassName,
45279
45441
  children: [
45280
- /* @__PURE__ */ jsx("div", { className: cn("mb-12", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-2xl text-center", children: [
45442
+ /* @__PURE__ */ jsx("div", { className: cn("mb-12", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-2xl text-center space-y-2", children: [
45281
45443
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
45282
45444
  "h2",
45283
45445
  {
45284
45446
  className: cn(
45285
- "text-3xl font-semibold tracking-tight md:text-4xl",
45447
+ "text-3xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-pretty",
45286
45448
  headingClassName
45287
45449
  ),
45288
45450
  children: heading
45289
45451
  }
45290
45452
  ) : heading),
45291
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : description)
45453
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : description)
45292
45454
  ] }) }),
45293
45455
  renderedTestimonials,
45294
45456
  /* @__PURE__ */ jsx("style", { children: `
@@ -45369,7 +45531,7 @@ function TestimonialsSimpleGrid({
45369
45531
  "bg-card text-card-foreground",
45370
45532
  "flex flex-col gap-6",
45371
45533
  testimonial.linkConfig?.href ? "cursor-pointer hover:bg-black hover:text-white transition-all duration-500" : "",
45372
- "rounded-2xl py-6 shadow-xl group",
45534
+ "rounded-2xl py-0 shadow-xl group",
45373
45535
  "ring-4 ring-ring",
45374
45536
  cardClassName
45375
45537
  ),
@@ -45377,7 +45539,7 @@ function TestimonialsSimpleGrid({
45377
45539
  CardContent,
45378
45540
  {
45379
45541
  className: cn(
45380
- "px-6 h-full flex flex-col-reverse items-stretch justify-between gap-12",
45542
+ "px-0 h-full flex flex-col-reverse items-stretch justify-between gap-12",
45381
45543
  cardContentClassName
45382
45544
  ),
45383
45545
  children: [
@@ -45389,7 +45551,7 @@ function TestimonialsSimpleGrid({
45389
45551
  authorClassName
45390
45552
  ),
45391
45553
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
45392
- /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
45554
+ /* @__PURE__ */ 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: [
45393
45555
  /* @__PURE__ */ jsx(
45394
45556
  AvatarImage,
45395
45557
  {
@@ -45399,11 +45561,28 @@ function TestimonialsSimpleGrid({
45399
45561
  ),
45400
45562
  /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
45401
45563
  ] }),
45402
- /* @__PURE__ */ jsx("div", { children: testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-medium leading-none", children: testimonial.author }) : testimonial.author) })
45564
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 pt-2 pr-6 pb-2", children: [
45565
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0", children: [
45566
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold leading-relaxed", children: testimonial.author }) : testimonial.author),
45567
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base", children: testimonial.role }) : testimonial.role)
45568
+ ] }),
45569
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
45570
+ Pressable,
45571
+ {
45572
+ href: testimonial.linkConfig.href,
45573
+ className: cn(
45574
+ "text-base transition-all duration-300",
45575
+ "underline underline-offset-4",
45576
+ testimonial.linkConfig.className
45577
+ ),
45578
+ children: testimonial.linkConfig.label
45579
+ }
45580
+ )
45581
+ ] })
45403
45582
  ] })
45404
45583
  }
45405
45584
  ),
45406
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: testimonial.quote }) : testimonial.quote)
45585
+ /* @__PURE__ */ jsx("div", { className: "pt-6 md: pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
45407
45586
  ]
45408
45587
  }
45409
45588
  )
@@ -45574,7 +45753,7 @@ function TestimonialsSliderMinimal({
45574
45753
  Avatar,
45575
45754
  {
45576
45755
  className: cn(
45577
- "relative flex shrink-0 overflow-hidden rounded-3xl ring-8 ring-primary shadow-xl size-24",
45756
+ "relative flex shrink-0 overflow-hidden rounded-full ring-4 ring-primary shadow-xl size-12",
45578
45757
  avatarClassName
45579
45758
  ),
45580
45759
  children: [
@@ -45856,6 +46035,7 @@ function TestimonialsStatsHeader({
45856
46035
  statItemClassName,
45857
46036
  testimonialsGridClassName,
45858
46037
  cardClassName,
46038
+ statCardClassName,
45859
46039
  quoteClassName,
45860
46040
  authorClassName,
45861
46041
  background,
@@ -45874,6 +46054,11 @@ function TestimonialsStatsHeader({
45874
46054
  },
45875
46055
  []
45876
46056
  );
46057
+ const renderStatIcon = useCallback((stat) => {
46058
+ if (stat.iconSlot) return stat.iconSlot;
46059
+ if (!stat.icon) return null;
46060
+ return /* @__PURE__ */ jsx("div", { className: "mb-6", children: /* @__PURE__ */ jsx(DynamicIcon, { name: stat.icon, size: 32, className: stat.iconColor }) });
46061
+ }, []);
45877
46062
  const getInitials = useCallback((name) => {
45878
46063
  return name.split(" ").map((n) => n[0]).join("");
45879
46064
  }, []);
@@ -45884,24 +46069,29 @@ function TestimonialsStatsHeader({
45884
46069
  "div",
45885
46070
  {
45886
46071
  className: cn(
45887
- "mb-12 grid grid-cols-2 gap-4 md:grid-cols-4",
46072
+ "mb-12 grid gap-6 md:grid-cols-2 lg:grid-cols-3",
45888
46073
  statsGridClassName
45889
46074
  ),
45890
- children: stats.map((stat, index) => /* @__PURE__ */ jsxs(
45891
- "div",
46075
+ children: stats.map((stat) => /* @__PURE__ */ jsx(
46076
+ Card,
45892
46077
  {
45893
46078
  className: cn(
45894
- "rounded-lg p-6 text-center",
45895
- getNestedCardBg(background),
45896
- getNestedCardTextColor(background),
45897
- statItemClassName
46079
+ "overflow-hidden border p-0",
46080
+ stat.className,
46081
+ statCardClassName
45898
46082
  ),
45899
- children: [
45900
- typeof stat.value === "string" ? /* @__PURE__ */ jsx("p", { className: "text-3xl font-bold text-primary md:text-4xl", children: stat.value }) : stat.value,
45901
- typeof stat.label === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: stat.label }) : stat.label
45902
- ]
46083
+ children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6 md:p-8", children: [
46084
+ renderStatIcon(stat),
46085
+ /* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-end", children: [
46086
+ stat.prefix && /* @__PURE__ */ jsx("span", { className: "mb-1 mr-1 text-2xl font-bold", children: stat.prefix }),
46087
+ /* @__PURE__ */ jsx("h3", { className: "text-4xl font-bold tracking-tight leading-tight md:text-5xl", children: stat.value }),
46088
+ stat.suffix && /* @__PURE__ */ jsx("span", { className: "mb-1 ml-1 text-2xl font-bold", children: stat.suffix })
46089
+ ] }),
46090
+ stat.label && /* @__PURE__ */ jsx("div", { className: "mb-4 text-xl font-semibold", children: stat.label }),
46091
+ stat.description && (typeof stat.description === "string" ? /* @__PURE__ */ jsx("p", { className: "opacity-75", children: stat.description }) : stat.description)
46092
+ ] })
45903
46093
  },
45904
- index
46094
+ stat.id
45905
46095
  ))
45906
46096
  }
45907
46097
  );
@@ -45916,41 +46106,65 @@ function TestimonialsStatsHeader({
45916
46106
  children: testimonials.map((testimonial, index) => {
45917
46107
  const authorName = getAuthorName(testimonial);
45918
46108
  const avatarSrc = getAvatarSrc(testimonial);
45919
- return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
45920
- /* @__PURE__ */ jsx("div", { className: "mb-4 flex gap-1", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx(
45921
- DynamicIcon,
45922
- {
45923
- name: "lucide/star",
45924
- size: 16,
45925
- className: "fill-primary text-primary"
45926
- },
45927
- i
45928
- )) }),
45929
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
45930
- "p",
45931
- {
45932
- className: cn(
45933
- "mb-6 text-sm leading-relaxed",
45934
- quoteClassName
45935
- ),
45936
- children: [
45937
- "\u201C",
45938
- testimonial.quote,
45939
- "\u201D"
45940
- ]
45941
- }
45942
- ) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", quoteClassName), children: testimonial.quote })),
45943
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
45944
- /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
45945
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
45946
- /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
45947
- ] }),
45948
- /* @__PURE__ */ jsxs("div", { children: [
45949
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
45950
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
45951
- ] })
45952
- ] })
45953
- ] }) }, index);
46109
+ return /* @__PURE__ */ jsx(
46110
+ "div",
46111
+ {
46112
+ className: cn(
46113
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-2xl border py-0 shadow-xl",
46114
+ cardClassName
46115
+ ),
46116
+ children: /* @__PURE__ */ jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-12 justify-between", children: [
46117
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-4", children: [
46118
+ /* @__PURE__ */ jsx(StarRating, { rating: 5, size: 20 }),
46119
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
46120
+ "p",
46121
+ {
46122
+ className: cn(
46123
+ "mb-6 text-sm leading-relaxed",
46124
+ quoteClassName
46125
+ ),
46126
+ children: [
46127
+ "\u201C",
46128
+ testimonial.quote,
46129
+ "\u201D"
46130
+ ]
46131
+ }
46132
+ ) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", quoteClassName), children: testimonial.quote }))
46133
+ ] }),
46134
+ /* @__PURE__ */ jsxs(
46135
+ "div",
46136
+ {
46137
+ className: cn("flex items-center gap-3", authorClassName),
46138
+ children: [
46139
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
46140
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46141
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
46142
+ ] }),
46143
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
46144
+ /* @__PURE__ */ jsxs("div", { children: [
46145
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
46146
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
46147
+ ] }),
46148
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
46149
+ Pressable,
46150
+ {
46151
+ href: testimonial.linkConfig.href,
46152
+ className: cn(
46153
+ "text-sm transition-all duration-300",
46154
+ "hover:underline hover:underline-offset-4",
46155
+ testimonial.linkConfig.className
46156
+ ),
46157
+ children: testimonial.linkConfig.label
46158
+ }
46159
+ )
46160
+ ] })
46161
+ ]
46162
+ }
46163
+ )
46164
+ ] }) })
46165
+ },
46166
+ index
46167
+ );
45954
46168
  })
45955
46169
  }
45956
46170
  );
@@ -46142,19 +46356,6 @@ function TestimonialsWallCompact({
46142
46356
  }
46143
46357
  );
46144
46358
  }
46145
- function StarRating4({ rating, size = 14 }) {
46146
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
46147
- DynamicIcon,
46148
- {
46149
- name: "lucide/star",
46150
- size,
46151
- className: cn(
46152
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
46153
- )
46154
- },
46155
- star
46156
- )) });
46157
- }
46158
46359
  function TestimonialsMiniDividers({
46159
46360
  testimonials,
46160
46361
  testimonialsSlot,
@@ -46169,101 +46370,133 @@ function TestimonialsMiniDividers({
46169
46370
  quoteClassName,
46170
46371
  authorClassName,
46171
46372
  background,
46172
- spacing,
46373
+ spacing = "lg",
46374
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
46173
46375
  pattern,
46174
46376
  patternOpacity
46175
46377
  }) {
46176
- const getAuthorName = useCallback((testimonial) => {
46177
- if (typeof testimonial.author === "string") return testimonial.author;
46178
- return "";
46179
- }, []);
46180
- const getAvatarSrc = useCallback((testimonial) => {
46181
- return testimonial.avatarSrc || testimonial.avatar?.src;
46182
- }, []);
46378
+ const getAuthorName = useCallback(
46379
+ (testimonial) => {
46380
+ if (typeof testimonial.author === "string") return testimonial.author;
46381
+ return "";
46382
+ },
46383
+ []
46384
+ );
46385
+ const getAvatarSrc = useCallback(
46386
+ (testimonial) => {
46387
+ return testimonial.avatarSrc || testimonial.avatar?.src;
46388
+ },
46389
+ []
46390
+ );
46183
46391
  const getInitials = useCallback((name) => {
46184
46392
  return name.split(" ").map((n) => n[0]).join("");
46185
46393
  }, []);
46186
46394
  const renderedTestimonials = useMemo(() => {
46187
46395
  if (testimonialsSlot) return testimonialsSlot;
46188
46396
  if (!testimonials || testimonials.length === 0) return null;
46189
- return /* @__PURE__ */ jsx(
46397
+ return /* @__PURE__ */ jsxs(
46190
46398
  "div",
46191
46399
  {
46192
46400
  className: cn(
46193
- "grid divide-y sm:grid-cols-2 sm:divide-x sm:divide-y-0 lg:grid-cols-3 lg:divide-x",
46401
+ "relative grid border-x border-b border-dashed md:grid-cols-3",
46194
46402
  gridClassName
46195
46403
  ),
46196
- children: testimonials.map((testimonial, index) => {
46197
- const authorName = getAuthorName(testimonial);
46198
- const avatarSrc = getAvatarSrc(testimonial);
46199
- return /* @__PURE__ */ jsxs(
46200
- "div",
46404
+ children: [
46405
+ /* @__PURE__ */ jsx(
46406
+ DynamicIcon,
46201
46407
  {
46202
- className: cn(
46203
- "p-6",
46204
- index >= 2 && "lg:border-t-0",
46205
- index >= 3 && "sm:border-t lg:border-t-0",
46206
- itemClassName
46207
- ),
46208
- children: [
46209
- testimonial.rating && /* @__PURE__ */ jsx(StarRating4, { rating: testimonial.rating }),
46210
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
46211
- "p",
46212
- {
46213
- className: cn(
46214
- "mt-3 text-sm leading-relaxed",
46215
- quoteClassName
46216
- ),
46217
- children: [
46218
- "\u201C",
46219
- testimonial.quote,
46220
- "\u201D"
46221
- ]
46222
- }
46223
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-3", quoteClassName), children: testimonial.quote })),
46224
- /* @__PURE__ */ jsxs(
46225
- "div",
46226
- {
46227
- className: cn("mt-4 flex items-center gap-3", authorClassName),
46228
- children: [
46229
- /* @__PURE__ */ jsxs(Avatar, { className: "size-8", children: [
46230
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46231
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
46232
- ] }),
46233
- /* @__PURE__ */ jsxs("div", { children: [
46234
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
46235
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
46236
- ] })
46237
- ]
46238
- }
46239
- )
46240
- ]
46241
- },
46242
- index
46243
- );
46244
- })
46408
+ name: "lucide/sparkle",
46409
+ size: 20,
46410
+ className: "absolute top-0 right-0 translate-x-2.5 -translate-y-2.5 fill-primary"
46411
+ }
46412
+ ),
46413
+ /* @__PURE__ */ jsx(
46414
+ DynamicIcon,
46415
+ {
46416
+ name: "lucide/sparkle",
46417
+ size: 20,
46418
+ className: "absolute top-0 left-0 -translate-x-2.5 -translate-y-2.5 fill-primary"
46419
+ }
46420
+ ),
46421
+ testimonials.map((testimonial, index) => {
46422
+ const authorName = getAuthorName(testimonial);
46423
+ const avatarSrc = getAvatarSrc(testimonial);
46424
+ return /* @__PURE__ */ jsxs(
46425
+ "div",
46426
+ {
46427
+ className: cn(
46428
+ "group flex flex-col gap-4 border-t border-dashed p-4 transition-colors duration-300 hover:bg-muted/50 lg:p-8",
46429
+ index % 3 === 1 && "md:border-x md:border-dashed",
46430
+ itemClassName
46431
+ ),
46432
+ children: [
46433
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
46434
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-10 shrink-0 rounded-md bg-card shadow-sm lg:size-12", children: [
46435
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46436
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "rounded-md bg-card text-card-foreground text-sm", children: getInitials(authorName) })
46437
+ ] }),
46438
+ /* @__PURE__ */ jsxs("div", { className: cn("min-w-0", authorClassName), children: [
46439
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate font-medium", children: testimonial.author }) : testimonial.author),
46440
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate text-sm text-muted-foreground", children: testimonial.role }) : testimonial.role)
46441
+ ] })
46442
+ ] }),
46443
+ testimonial.rating != null && /* @__PURE__ */ jsx(StarRating, { rating: testimonial.rating }),
46444
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
46445
+ "p",
46446
+ {
46447
+ className: cn(
46448
+ "text-sm leading-relaxed text-muted-foreground",
46449
+ quoteClassName
46450
+ ),
46451
+ children: [
46452
+ "\u201C",
46453
+ testimonial.quote,
46454
+ "\u201D"
46455
+ ]
46456
+ }
46457
+ ) : /* @__PURE__ */ jsx("div", { className: cn("text-sm", quoteClassName), children: testimonial.quote }))
46458
+ ]
46459
+ },
46460
+ index
46461
+ );
46462
+ })
46463
+ ]
46245
46464
  }
46246
46465
  );
46247
- }, [testimonialsSlot, gridClassName, testimonials, itemClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
46248
- return /* @__PURE__ */ jsxs(
46466
+ }, [
46467
+ testimonialsSlot,
46468
+ gridClassName,
46469
+ testimonials,
46470
+ itemClassName,
46471
+ quoteClassName,
46472
+ authorClassName,
46473
+ getAuthorName,
46474
+ getAvatarSrc,
46475
+ getInitials
46476
+ ]);
46477
+ return /* @__PURE__ */ jsx(
46249
46478
  Section,
46250
46479
  {
46251
46480
  background,
46252
46481
  spacing,
46253
46482
  pattern,
46254
46483
  patternOpacity,
46255
- className,
46256
- children: [
46257
- /* @__PURE__ */ jsxs(
46484
+ className: cn("relative flex items-center justify-center", className),
46485
+ containerClassName,
46486
+ children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
46487
+ /* @__PURE__ */ jsx(
46258
46488
  "div",
46259
46489
  {
46260
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
46261
- children: [
46490
+ className: cn(
46491
+ "border-x border-t border-dashed px-4 py-6 md:py-16 md:px-16",
46492
+ headerClassName
46493
+ ),
46494
+ children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl", children: [
46262
46495
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
46263
46496
  "h2",
46264
46497
  {
46265
46498
  className: cn(
46266
- "text-3xl font-semibold tracking-tight md:text-4xl",
46499
+ "text-center text-3xl font-semibold tracking-tight md:text-4xl",
46267
46500
  headingClassName
46268
46501
  ),
46269
46502
  children: heading
@@ -46273,17 +46506,17 @@ function TestimonialsMiniDividers({
46273
46506
  "p",
46274
46507
  {
46275
46508
  className: cn(
46276
- "mt-4 text-lg text-muted-foreground",
46509
+ "mx-auto mt-4 max-w-2xl text-center text-lg text-balance",
46277
46510
  descriptionClassName
46278
46511
  ),
46279
46512
  children: description
46280
46513
  }
46281
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
46282
- ]
46514
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
46515
+ ] })
46283
46516
  }
46284
46517
  ),
46285
46518
  renderedTestimonials
46286
- ]
46519
+ ] })
46287
46520
  }
46288
46521
  );
46289
46522
  }
@@ -46303,18 +46536,25 @@ function TestimonialsLogoCards({
46303
46536
  quoteClassName,
46304
46537
  authorClassName,
46305
46538
  background,
46306
- spacing,
46539
+ spacing = "lg",
46540
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
46307
46541
  pattern,
46308
46542
  patternOpacity,
46309
46543
  optixFlowConfig
46310
46544
  }) {
46311
- const getAuthorName = useCallback((testimonial) => {
46312
- if (typeof testimonial.author === "string") return testimonial.author;
46313
- return "";
46314
- }, []);
46315
- const getAvatarSrc = useCallback((testimonial) => {
46316
- return testimonial.avatarSrc || testimonial.avatar?.src;
46317
- }, []);
46545
+ const getAuthorName = useCallback(
46546
+ (testimonial) => {
46547
+ if (typeof testimonial.author === "string") return testimonial.author;
46548
+ return "";
46549
+ },
46550
+ []
46551
+ );
46552
+ const getAvatarSrc = useCallback(
46553
+ (testimonial) => {
46554
+ return testimonial.avatarSrc || testimonial.avatar?.src;
46555
+ },
46556
+ []
46557
+ );
46318
46558
  const getInitials = useCallback((name) => {
46319
46559
  return name.split(" ").map((n) => n[0]).join("");
46320
46560
  }, []);
@@ -46345,7 +46585,10 @@ function TestimonialsLogoCards({
46345
46585
  {
46346
46586
  src: testimonial.companyLogo,
46347
46587
  alt: testimonial.companyLogoAlt || "Company logo",
46348
- className: "h-6 w-auto object-contain dark:invert",
46588
+ className: cn(
46589
+ index === 0 ? "h-10" : "h-5",
46590
+ "w-auto object-contain"
46591
+ ),
46349
46592
  optixFlowConfig
46350
46593
  }
46351
46594
  ) }),
@@ -46362,20 +46605,29 @@ function TestimonialsLogoCards({
46362
46605
  {
46363
46606
  className: cn(
46364
46607
  "leading-relaxed",
46365
- index === 0 ? "text-xl font-medium" : "text-sm",
46608
+ index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
46366
46609
  quoteClassName
46367
46610
  ),
46368
46611
  children: testimonial.quote
46369
46612
  }
46370
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
46613
+ ) : testimonial.quote),
46371
46614
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
46372
- /* @__PURE__ */ jsxs(Avatar, { className: cn(index === 0 ? "size-12" : "size-10"), children: [
46373
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46374
- /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
46375
- ] }),
46615
+ /* @__PURE__ */ jsxs(
46616
+ Avatar,
46617
+ {
46618
+ className: cn(
46619
+ index === 0 ? "size-12" : "size-10",
46620
+ "ring-4 ring-primary"
46621
+ ),
46622
+ children: [
46623
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46624
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
46625
+ ]
46626
+ }
46627
+ ),
46376
46628
  /* @__PURE__ */ jsxs("div", { children: [
46377
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium not-italic", children: testimonial.author }) : testimonial.author),
46378
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
46629
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
46630
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
46379
46631
  ] })
46380
46632
  ] })
46381
46633
  ]
@@ -46388,7 +46640,20 @@ function TestimonialsLogoCards({
46388
46640
  })
46389
46641
  }
46390
46642
  );
46391
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardHeaderClassName, optixFlowConfig, cardContentClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
46643
+ }, [
46644
+ testimonialsSlot,
46645
+ gridClassName,
46646
+ testimonials,
46647
+ cardClassName,
46648
+ cardHeaderClassName,
46649
+ optixFlowConfig,
46650
+ cardContentClassName,
46651
+ quoteClassName,
46652
+ authorClassName,
46653
+ getAuthorName,
46654
+ getAvatarSrc,
46655
+ getInitials
46656
+ ]);
46392
46657
  return /* @__PURE__ */ jsxs(
46393
46658
  Section,
46394
46659
  {
@@ -46397,6 +46662,7 @@ function TestimonialsLogoCards({
46397
46662
  pattern,
46398
46663
  patternOpacity,
46399
46664
  className,
46665
+ containerClassName,
46400
46666
  children: [
46401
46667
  /* @__PURE__ */ jsxs(
46402
46668
  "div",
@@ -46407,22 +46673,19 @@ function TestimonialsLogoCards({
46407
46673
  "h2",
46408
46674
  {
46409
46675
  className: cn(
46410
- "text-3xl font-semibold tracking-tight md:text-4xl",
46676
+ "text-3xl font-semibold tracking-tight md:text-4xl text-balance",
46411
46677
  headingClassName
46412
46678
  ),
46413
46679
  children: heading
46414
46680
  }
46415
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
46681
+ ) : heading),
46416
46682
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
46417
46683
  "p",
46418
46684
  {
46419
- className: cn(
46420
- "mt-4 text-lg text-muted-foreground",
46421
- descriptionClassName
46422
- ),
46685
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
46423
46686
  children: description
46424
46687
  }
46425
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
46688
+ ) : description)
46426
46689
  ]
46427
46690
  }
46428
46691
  ),
@@ -46892,7 +47155,7 @@ function TestimonialsScrollingColumns({
46892
47155
  motion.div,
46893
47156
  {
46894
47157
  className: cn(
46895
- "relative overflow-hidden rounded-lg bg-card shadow-sm",
47158
+ "relative overflow-hidden rounded-2xl shadow-sm",
46896
47159
  cardClassName
46897
47160
  ),
46898
47161
  variants: itemVariants2,
@@ -46907,35 +47170,40 @@ function TestimonialsScrollingColumns({
46907
47170
  optixFlowConfig
46908
47171
  }
46909
47172
  ),
46910
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-foreground/70 via-foreground/40 to-transparent" })
47173
+ /* @__PURE__ */ jsx(GradientOverlay, {})
46911
47174
  ] }),
46912
- /* @__PURE__ */ jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left text-background", children: [
46913
- /* @__PURE__ */ jsx(
47175
+ /* @__PURE__ */ jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left", children: [
47176
+ testimonial?.logoSrc ? /* @__PURE__ */ jsx(
47177
+ Img,
47178
+ {
47179
+ src: testimonial.logoSrc,
47180
+ alt: typeof testimonial.company === "string" ? `${testimonial.company} logo` : typeof testimonial.author === "string" ? `${testimonial.author} company logo` : "Company logo",
47181
+ className: cn(
47182
+ "flex justify-start items-start mb-6 max-h-10 max-w-32 object-contain md:max-h-10 md:max-w-48"
47183
+ ),
47184
+ optixFlowConfig
47185
+ }
47186
+ ) : /* @__PURE__ */ jsx(
46914
47187
  DynamicIcon,
46915
47188
  {
46916
- name: "lucide/quote",
46917
- size: 32,
46918
- className: "mb-4 text-background/40"
47189
+ name: "mdi/comment-quote-outline",
47190
+ size: 42,
47191
+ className: cn("opacity-50")
46919
47192
  }
46920
47193
  ),
46921
47194
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
46922
47195
  "blockquote",
46923
47196
  {
46924
47197
  className: cn(
46925
- "text-base font-medium leading-relaxed",
47198
+ "text-base font-base leading-relaxed",
46926
47199
  quoteClassName
46927
47200
  ),
46928
47201
  children: testimonial.quote
46929
47202
  }
46930
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
46931
- /* @__PURE__ */ jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxs("p", { className: "font-semibold", children: [
46932
- "\u2014",
46933
- " ",
46934
- testimonial.author && (typeof testimonial.author === "string" ? testimonial.author : null),
46935
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxs("span", { className: "ml-1 text-background/60", children: [
46936
- ", ",
46937
- testimonial.role
46938
- ] }) : null)
47203
+ ) : testimonial.quote),
47204
+ /* @__PURE__ */ jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
47205
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("div", { className: "uppercase text-base font-semibold", children: testimonial.author }) : null),
47206
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("div", { className: "text-sm font-thin", children: testimonial.role }) : null)
46939
47207
  ] }) })
46940
47208
  ] })
46941
47209
  ]
@@ -46968,19 +47236,32 @@ function TestimonialsScrollingColumns({
46968
47236
  /* @__PURE__ */ jsxs(
46969
47237
  "div",
46970
47238
  {
46971
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
47239
+ className: cn(
47240
+ "mx-auto mb-12 max-w-full md:max-w-2xl space-y-4 text-center",
47241
+ headerClassName
47242
+ ),
46972
47243
  children: [
46973
47244
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
46974
47245
  "h2",
46975
47246
  {
46976
47247
  className: cn(
46977
- "text-3xl font-semibold tracking-tight md:text-4xl",
47248
+ "text-pretty text-3xl md:text-4xl lg:text-6xl",
47249
+ "font-semibold tracking-tight",
46978
47250
  headingClassName
46979
47251
  ),
46980
47252
  children: heading
46981
47253
  }
46982
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
46983
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg ", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
47254
+ ) : heading),
47255
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
47256
+ "p",
47257
+ {
47258
+ className: cn(
47259
+ "text-base md:text-lg text-balance",
47260
+ descriptionClassName
47261
+ ),
47262
+ children: description
47263
+ }
47264
+ ) : description)
46984
47265
  ]
46985
47266
  }
46986
47267
  ),
@@ -47000,7 +47281,8 @@ function TestimonialsMinimalNumbered({
47000
47281
  authorClassName,
47001
47282
  navigationClassName,
47002
47283
  background,
47003
- spacing,
47284
+ spacing = "py-8 md:py-12",
47285
+ containerClassName = "w-full px-6 sm:px-6 md:px-8 lg:px-0 max-w-full md:max-w-lg min-h-70dvh h-70dvh flex flex-col items-center justify-center",
47004
47286
  pattern,
47005
47287
  patternOpacity
47006
47288
  }) {
@@ -47053,19 +47335,19 @@ function TestimonialsMinimalNumbered({
47053
47335
  if (!current) return null;
47054
47336
  const authorName = getAuthorName(current);
47055
47337
  const avatarSrc = getAvatarSrc(current);
47056
- return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-8", contentClassName), children: [
47338
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-4 md:gap-8", contentClassName), children: [
47057
47339
  /* @__PURE__ */ jsx(
47058
47340
  "span",
47059
47341
  {
47060
47342
  className: cn(
47061
- "text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
47343
+ "text-4xl md:text-8xl font-light leading-none select-none transition-all duration-500",
47062
47344
  numberClassName
47063
47345
  ),
47064
47346
  style: { fontFeatureSettings: '"tnum"' },
47065
47347
  children: String(active + 1).padStart(2, "0")
47066
47348
  }
47067
47349
  ),
47068
- /* @__PURE__ */ jsxs("div", { className: "flex-1 pt-6", children: [
47350
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 pt-0 md:pt-6", children: [
47069
47351
  current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsx(
47070
47352
  "blockquote",
47071
47353
  {
@@ -47136,6 +47418,7 @@ function TestimonialsMinimalNumbered({
47136
47418
  pattern,
47137
47419
  patternOpacity,
47138
47420
  className,
47421
+ containerClassName,
47139
47422
  children: /* @__PURE__ */ jsxs("div", { className: "max-w-4xl mx-auto", children: [
47140
47423
  renderedTestimonial,
47141
47424
  /* @__PURE__ */ jsxs(
@@ -47171,13 +47454,13 @@ function TestimonialsMinimalNumbered({
47171
47454
  String(testimonials.length).padStart(2, "0")
47172
47455
  ] })
47173
47456
  ] }) }),
47174
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
47457
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
47175
47458
  /* @__PURE__ */ jsx(
47176
47459
  "button",
47177
47460
  {
47178
47461
  onClick: handlePrev,
47179
47462
  className: "rounded-full p-2 transition-all duration-300 ",
47180
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
47463
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
47181
47464
  }
47182
47465
  ),
47183
47466
  /* @__PURE__ */ jsx(
@@ -47185,7 +47468,7 @@ function TestimonialsMinimalNumbered({
47185
47468
  {
47186
47469
  onClick: handleNext,
47187
47470
  className: "rounded-full p-2 transition-all duration-300 ",
47188
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
47471
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
47189
47472
  }
47190
47473
  )
47191
47474
  ] })
@@ -47306,10 +47589,11 @@ function TestimonialsParallaxNumber({
47306
47589
  motion.div,
47307
47590
  {
47308
47591
  className: cn(
47309
- "pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter ",
47592
+ "opacity-15",
47593
+ "pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter",
47310
47594
  numberClassName
47311
47595
  ),
47312
- style: { x: numberX, y: numberY },
47596
+ style: { x: numberX, y: numberY, opacity: 0.1 },
47313
47597
  children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
47314
47598
  motion.span,
47315
47599
  {
@@ -47318,14 +47602,14 @@ function TestimonialsParallaxNumber({
47318
47602
  exit: { opacity: 0, scale: 1.1, filter: "blur(10px)" },
47319
47603
  transition: { duration: 0.6, ease: [0.22, 1, 0.36, 1] },
47320
47604
  className: "block",
47321
- children: current.backgroundIcon ? /* @__PURE__ */ jsx(DynamicIcon, { name: current.backgroundIcon }) : current.backgroundLabel != null ? current.backgroundLabel : null
47605
+ children: current.backgroundIcon ? /* @__PURE__ */ jsx(DynamicIcon, { name: current.backgroundIcon, size: 320 }) : current.backgroundLabel != null ? current.backgroundLabel : null
47322
47606
  },
47323
47607
  activeIndex
47324
47608
  ) })
47325
47609
  }
47326
47610
  ),
47327
47611
  /* @__PURE__ */ jsxs("div", { className: "relative flex", children: [
47328
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center border-r border-border/50 pr-16", children: [
47612
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center border-r-0 md:border-r border-border/30 pr-4 md:pr-16", children: [
47329
47613
  /* @__PURE__ */ jsxs(
47330
47614
  motion.span,
47331
47615
  {
@@ -47351,7 +47635,7 @@ function TestimonialsParallaxNumber({
47351
47635
  }
47352
47636
  ) })
47353
47637
  ] }),
47354
- /* @__PURE__ */ jsxs("div", { className: "flex-1 py-12 pl-16", children: [
47638
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 py-6 md:py-12 pl-4 md:pl-16", children: [
47355
47639
  /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
47356
47640
  motion.div,
47357
47641
  {
@@ -47360,7 +47644,7 @@ function TestimonialsParallaxNumber({
47360
47644
  exit: { opacity: 0, x: 20 },
47361
47645
  transition: { duration: 0.4 },
47362
47646
  className: "mb-8",
47363
- children: /* @__PURE__ */ jsx("span", { className: "inline-flex items-center gap-2 rounded-full border border-border px-3 py-1 text-xs ", children: companyName })
47647
+ children: /* @__PURE__ */ jsx("span", { className: "inline-flex items-center gap-2 rounded-full border border-border px-4 py-2 text-sm", children: companyName })
47364
47648
  },
47365
47649
  activeIndex
47366
47650
  ) }),
@@ -47368,7 +47652,8 @@ function TestimonialsParallaxNumber({
47368
47652
  motion.blockquote,
47369
47653
  {
47370
47654
  className: cn(
47371
- "text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
47655
+ "text-2xl md:text-4xl lg:text-5xl",
47656
+ "font-light leading-[1.15] tracking-tight",
47372
47657
  quoteClassName
47373
47658
  ),
47374
47659
  initial: "hidden",
@@ -47403,7 +47688,7 @@ function TestimonialsParallaxNumber({
47403
47688
  },
47404
47689
  activeIndex
47405
47690
  ) }) }),
47406
- /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-between", children: [
47691
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start md:items-end justify-between", children: [
47407
47692
  /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
47408
47693
  motion.div,
47409
47694
  {
@@ -47435,7 +47720,10 @@ function TestimonialsParallaxNumber({
47435
47720
  /* @__PURE__ */ jsxs(
47436
47721
  "div",
47437
47722
  {
47438
- className: cn("flex items-center gap-4", navigationClassName),
47723
+ className: cn(
47724
+ "flex items-center gap-4 flex-col md:flex-row",
47725
+ navigationClassName
47726
+ ),
47439
47727
  children: [
47440
47728
  /* @__PURE__ */ jsx(
47441
47729
  motion.button,
@@ -47550,7 +47838,8 @@ function TestimonialsMasonryGrid({
47550
47838
  quoteClassName,
47551
47839
  authorClassName,
47552
47840
  background,
47553
- spacing,
47841
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
47842
+ spacing = "xl",
47554
47843
  pattern,
47555
47844
  patternOpacity
47556
47845
  }) {
@@ -47563,9 +47852,12 @@ function TestimonialsMasonryGrid({
47563
47852
  if (typeof testimonial.author === "string") return testimonial.author;
47564
47853
  return "";
47565
47854
  }, []);
47566
- const getAvatarSrc = useCallback((testimonial) => {
47567
- return testimonial.avatarSrc || testimonial.avatar?.src;
47568
- }, []);
47855
+ const getAvatarSrc = useCallback(
47856
+ (testimonial) => {
47857
+ return testimonial.avatarSrc || testimonial.avatar?.src;
47858
+ },
47859
+ []
47860
+ );
47569
47861
  const getInitials = useCallback((name) => {
47570
47862
  return name.split(" ").map((n) => n[0]).join("");
47571
47863
  }, []);
@@ -47582,42 +47874,60 @@ function TestimonialsMasonryGrid({
47582
47874
  children: columns.map((column, columnIndex) => /* @__PURE__ */ jsx("div", { className: "space-y-4", children: column.map((testimonial, index) => {
47583
47875
  const authorName = getAuthorName(testimonial);
47584
47876
  const avatarSrc = getAvatarSrc(testimonial);
47585
- return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
47586
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
47587
- "p",
47588
- {
47589
- className: cn(
47590
- "mb-4 text-sm leading-relaxed",
47591
- quoteClassName
47592
- ),
47593
- children: [
47877
+ return /* @__PURE__ */ jsx(
47878
+ "div",
47879
+ {
47880
+ className: cn(
47881
+ cardClassName,
47882
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
47883
+ ),
47884
+ children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
47885
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
47594
47886
  "\u201C",
47595
47887
  testimonial.quote,
47596
47888
  "\u201D"
47597
- ]
47598
- }
47599
- ) : /* @__PURE__ */ jsx("div", { className: cn("mb-4", quoteClassName), children: testimonial.quote })),
47600
- /* @__PURE__ */ jsxs(
47601
- "div",
47602
- {
47603
- className: cn("flex items-center gap-3", authorClassName),
47604
- children: [
47605
- /* @__PURE__ */ jsxs(Avatar, { className: "size-9", children: [
47889
+ ] }) : /* @__PURE__ */ jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
47890
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
47891
+ /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
47606
47892
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
47607
47893
  /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
47608
47894
  ] }),
47609
- /* @__PURE__ */ jsxs("div", { children: [
47895
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0 leading-tight", children: [
47610
47896
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
47611
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
47897
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
47898
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
47899
+ Pressable,
47900
+ {
47901
+ href: testimonial.linkConfig.href,
47902
+ className: cn(
47903
+ "text-sm transition-all duration-300",
47904
+ "underline underline-offset-4",
47905
+ testimonial.linkConfig.className
47906
+ ),
47907
+ children: testimonial.linkConfig.label
47908
+ }
47909
+ )
47612
47910
  ] })
47613
- ]
47614
- }
47615
- )
47616
- ] }) }, index);
47911
+ ] })
47912
+ ] })
47913
+ },
47914
+ index
47915
+ );
47617
47916
  }) }, columnIndex))
47618
47917
  }
47619
47918
  );
47620
- }, [testimonialsSlot, gridClassName, columns, cardClassName, quoteClassName, authorClassName, testimonials, getAuthorName, getAvatarSrc, getInitials]);
47919
+ }, [
47920
+ testimonialsSlot,
47921
+ gridClassName,
47922
+ columns,
47923
+ cardClassName,
47924
+ quoteClassName,
47925
+ authorClassName,
47926
+ testimonials,
47927
+ getAuthorName,
47928
+ getAvatarSrc,
47929
+ getInitials
47930
+ ]);
47621
47931
  return /* @__PURE__ */ jsxs(
47622
47932
  Section,
47623
47933
  {
@@ -47626,32 +47936,33 @@ function TestimonialsMasonryGrid({
47626
47936
  pattern,
47627
47937
  patternOpacity,
47628
47938
  className,
47939
+ containerClassName,
47629
47940
  children: [
47630
47941
  /* @__PURE__ */ jsxs(
47631
47942
  "div",
47632
47943
  {
47633
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
47944
+ className: cn(
47945
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
47946
+ headerClassName
47947
+ ),
47634
47948
  children: [
47635
47949
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
47636
47950
  "h2",
47637
47951
  {
47638
47952
  className: cn(
47639
- "text-3xl font-semibold tracking-tight md:text-4xl",
47953
+ "text-3xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
47640
47954
  headingClassName
47641
47955
  ),
47642
47956
  children: heading
47643
47957
  }
47644
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
47958
+ ) : heading),
47645
47959
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
47646
47960
  "p",
47647
47961
  {
47648
- className: cn(
47649
- "mt-4 text-lg text-muted-foreground",
47650
- descriptionClassName
47651
- ),
47962
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
47652
47963
  children: description
47653
47964
  }
47654
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
47965
+ ) : description)
47655
47966
  ]
47656
47967
  }
47657
47968
  ),
@@ -47670,7 +47981,8 @@ function TestimonialsLargeQuote({
47670
47981
  authorClassName,
47671
47982
  avatarClassName,
47672
47983
  background,
47673
- spacing,
47984
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
47985
+ spacing = "xl",
47674
47986
  pattern,
47675
47987
  patternOpacity
47676
47988
  }) {
@@ -47689,49 +48001,78 @@ function TestimonialsLargeQuote({
47689
48001
  if (!testimonial) return null;
47690
48002
  const authorName = getAuthorName();
47691
48003
  const avatarSrc = getAvatarSrc();
47692
- return /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl text-center", contentClassName), children: [
47693
- /* @__PURE__ */ jsx(
47694
- DynamicIcon,
47695
- {
47696
- name: "lucide/quote",
47697
- size: 64,
47698
- className: cn("mx-auto mb-8 text-primary/20", quoteIconClassName)
47699
- }
47700
- ),
47701
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
47702
- "blockquote",
47703
- {
47704
- className: cn(
47705
- "text-2xl font-medium leading-relaxed md:text-3xl lg:text-4xl",
47706
- quoteClassName
47707
- ),
47708
- children: testimonial.quote
47709
- }
47710
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
47711
- /* @__PURE__ */ jsxs(
47712
- "div",
47713
- {
47714
- className: cn(
47715
- "mt-10 flex flex-col items-center gap-4",
47716
- authorClassName
48004
+ return /* @__PURE__ */ jsxs(
48005
+ "div",
48006
+ {
48007
+ className: cn(
48008
+ "mx-auto max-full md:max-w-lg text-center",
48009
+ contentClassName
48010
+ ),
48011
+ children: [
48012
+ /* @__PURE__ */ jsx(
48013
+ DynamicIcon,
48014
+ {
48015
+ name: "mdi/comment-quote-outline",
48016
+ size: 48,
48017
+ className: cn("mx-auto mb-8 ", quoteIconClassName)
48018
+ }
47717
48019
  ),
47718
- children: [
47719
- /* @__PURE__ */ jsxs(Avatar, { className: cn("size-16", avatarClassName), children: [
47720
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
47721
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
47722
- ] }),
47723
- /* @__PURE__ */ jsxs("div", { children: [
47724
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold", children: testimonial.author }) : testimonial.author),
47725
- (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground", children: [
47726
- testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
47727
- testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
47728
- ] })
47729
- ] })
47730
- ]
47731
- }
47732
- )
47733
- ] });
47734
- }, [testimonialSlot, contentClassName, quoteIconClassName, testimonial, quoteClassName, authorClassName, avatarClassName, getAuthorName, getAvatarSrc, getInitials]);
48020
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
48021
+ "blockquote",
48022
+ {
48023
+ className: cn(
48024
+ "text-2xl font-light leading-relaxed md:text-3xl lg:text-4xl text-balance",
48025
+ quoteClassName
48026
+ ),
48027
+ children: testimonial.quote
48028
+ }
48029
+ ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
48030
+ /* @__PURE__ */ jsxs(
48031
+ "div",
48032
+ {
48033
+ className: cn(
48034
+ "mt-10 md:mt-16 flex flex-col items-center gap-4 md:gap-8",
48035
+ authorClassName
48036
+ ),
48037
+ children: [
48038
+ /* @__PURE__ */ jsxs(
48039
+ Avatar,
48040
+ {
48041
+ className: cn(
48042
+ "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary shadow-lg",
48043
+ avatarClassName
48044
+ ),
48045
+ children: [
48046
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
48047
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
48048
+ ]
48049
+ }
48050
+ ),
48051
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4", children: [
48052
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold", children: testimonial.author }) : testimonial.author),
48053
+ (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
48054
+ /* @__PURE__ */ jsx("div", { className: "text-base font-normal opacity-75", children: testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role) }),
48055
+ /* @__PURE__ */ jsx("div", { className: "text-sm uppercase font-semibold opacity-75", children: testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company) })
48056
+ ] })
48057
+ ] })
48058
+ ]
48059
+ }
48060
+ )
48061
+ ]
48062
+ }
48063
+ );
48064
+ }, [
48065
+ testimonialSlot,
48066
+ contentClassName,
48067
+ quoteIconClassName,
48068
+ testimonial,
48069
+ quoteClassName,
48070
+ authorClassName,
48071
+ avatarClassName,
48072
+ getAuthorName,
48073
+ getAvatarSrc,
48074
+ getInitials
48075
+ ]);
47735
48076
  return /* @__PURE__ */ jsx(
47736
48077
  Section,
47737
48078
  {
@@ -47740,6 +48081,7 @@ function TestimonialsLargeQuote({
47740
48081
  pattern,
47741
48082
  patternOpacity,
47742
48083
  className,
48084
+ containerClassName,
47743
48085
  children: renderedTestimonial
47744
48086
  }
47745
48087
  );
@@ -52038,7 +52380,8 @@ function HeroVideoBackgroundDark({
52038
52380
  videoSrc,
52039
52381
  videoSlot,
52040
52382
  background,
52041
- videoBrightness = "50",
52383
+ videoBrightness,
52384
+ videoOverlayIntensity = "high",
52042
52385
  spacing = "py-0 md:py-0",
52043
52386
  pattern,
52044
52387
  patternOpacity,
@@ -52050,21 +52393,21 @@ function HeroVideoBackgroundDark({
52050
52393
  }) {
52051
52394
  const renderVideo = useMemo(() => {
52052
52395
  if (videoSlot) return videoSlot;
52053
- return /* @__PURE__ */ jsx(
52054
- "video",
52055
- {
52056
- loop: true,
52057
- playsInline: true,
52058
- src: videoSrc,
52059
- className: cn(
52060
- "absolute top-0 left-0 size-full object-cover",
52061
- `brightness-${videoBrightness}`
52062
- ),
52063
- autoPlay: true,
52064
- muted: true
52065
- }
52066
- );
52067
- }, [videoSlot, videoSrc, videoBrightness]);
52396
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
52397
+ /* @__PURE__ */ jsx(
52398
+ "video",
52399
+ {
52400
+ loop: true,
52401
+ playsInline: true,
52402
+ src: videoSrc,
52403
+ className: "absolute top-0 left-0 size-full object-cover",
52404
+ autoPlay: true,
52405
+ muted: true
52406
+ }
52407
+ ),
52408
+ /* @__PURE__ */ jsx(GradientOverlay, { intensity: videoOverlayIntensity })
52409
+ ] });
52410
+ }, [videoSlot, videoSrc, videoOverlayIntensity]);
52068
52411
  return /* @__PURE__ */ jsx(
52069
52412
  Section,
52070
52413
  {
@@ -115635,8 +115978,8 @@ var BLOCK_REGISTRY = {
115635
115978
  },
115636
115979
  "testimonials-centered-avatars": {
115637
115980
  id: "testimonials-centered-avatars",
115638
- name: "Testimonials Centered with Avatar Stack",
115639
- description: "A centered testimonial section featuring an overlapping avatar stack at the top, creating a community feel. Displays a rotating testimonial with quote, author name, role, and navigation dots. The stacked avatars create visual interest and suggest multiple satisfied customers. Perfect for SaaS landing pages.",
115981
+ name: "Testimonials Centered with Glassmorphism Card",
115982
+ 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.",
115640
115983
  semanticTags: [
115641
115984
  "testimonials",
115642
115985
  "centered",
@@ -115644,7 +115987,11 @@ var BLOCK_REGISTRY = {
115644
115987
  "stack",
115645
115988
  "community",
115646
115989
  "social-proof",
115647
- "minimal",
115990
+ "glassmorphism",
115991
+ "glass",
115992
+ "frosted",
115993
+ "modern",
115994
+ "premium",
115648
115995
  "rotating"
115649
115996
  ],
115650
115997
  category: "testimonials",