@opensite/ui 2.8.5 → 2.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) 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-portfolio-hero.cjs +79 -25
  14. package/dist/carousel-portfolio-hero.d.cts +7 -2
  15. package/dist/carousel-portfolio-hero.d.ts +7 -2
  16. package/dist/carousel-portfolio-hero.js +79 -25
  17. package/dist/components.cjs +35 -10
  18. package/dist/components.d.cts +29 -2
  19. package/dist/components.d.ts +29 -2
  20. package/dist/components.js +35 -11
  21. package/dist/footer-accordion-social.cjs +17 -10
  22. package/dist/footer-accordion-social.js +17 -10
  23. package/dist/footer-animated-social.cjs +17 -10
  24. package/dist/footer-animated-social.js +17 -10
  25. package/dist/footer-brand-description.cjs +17 -10
  26. package/dist/footer-brand-description.js +17 -10
  27. package/dist/footer-brand-links-contact.cjs +17 -10
  28. package/dist/footer-brand-links-contact.js +17 -10
  29. package/dist/footer-comprehensive-links.cjs +17 -10
  30. package/dist/footer-comprehensive-links.js +17 -10
  31. package/dist/footer-contact-card.cjs +17 -10
  32. package/dist/footer-contact-card.js +17 -10
  33. package/dist/footer-cta-banner.cjs +17 -10
  34. package/dist/footer-cta-banner.js +17 -10
  35. package/dist/footer-cta-social.cjs +17 -10
  36. package/dist/footer-cta-social.js +17 -10
  37. package/dist/footer-info-cards-accordion.cjs +17 -10
  38. package/dist/footer-info-cards-accordion.js +17 -10
  39. package/dist/footer-nav-social.cjs +17 -10
  40. package/dist/footer-nav-social.js +17 -10
  41. package/dist/footer-newsletter-contact.cjs +17 -10
  42. package/dist/footer-newsletter-contact.js +17 -10
  43. package/dist/footer-newsletter-grid.cjs +17 -10
  44. package/dist/footer-newsletter-grid.js +17 -10
  45. package/dist/footer-newsletter-minimal.cjs +17 -10
  46. package/dist/footer-newsletter-minimal.js +17 -10
  47. package/dist/footer-social-apps.cjs +17 -10
  48. package/dist/footer-social-apps.js +17 -10
  49. package/dist/footer-social-newsletter.cjs +17 -10
  50. package/dist/footer-social-newsletter.js +17 -10
  51. package/dist/footer-split-image-accordion.cjs +17 -10
  52. package/dist/footer-split-image-accordion.js +17 -10
  53. package/dist/hero-badge-shadow-overlay.cjs +1 -1
  54. package/dist/hero-badge-shadow-overlay.js +1 -1
  55. package/dist/hero-coming-soon-countdown.cjs +17 -10
  56. package/dist/hero-coming-soon-countdown.js +17 -10
  57. package/dist/hero-video-background-dark.cjs +78 -16
  58. package/dist/hero-video-background-dark.d.cts +7 -2
  59. package/dist/hero-video-background-dark.d.ts +7 -2
  60. package/dist/hero-video-background-dark.js +78 -16
  61. package/dist/index.cjs +35 -10
  62. package/dist/index.d.cts +1 -0
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.js +35 -11
  65. package/dist/link-page-bento-layout.cjs +17 -10
  66. package/dist/link-page-bento-layout.js +17 -10
  67. package/dist/link-page-grid-cards.cjs +17 -10
  68. package/dist/link-page-grid-cards.js +17 -10
  69. package/dist/link-page-minimal-profile.cjs +17 -10
  70. package/dist/link-page-minimal-profile.js +17 -10
  71. package/dist/link-page-newsletter-social.cjs +17 -10
  72. package/dist/link-page-newsletter-social.js +17 -10
  73. package/dist/link-tree-block.cjs +17 -10
  74. package/dist/link-tree-block.js +17 -10
  75. package/dist/navbar-fullscreen-menu.cjs +17 -10
  76. package/dist/navbar-fullscreen-menu.js +17 -10
  77. package/dist/navbar-transparent-overlay.cjs +17 -10
  78. package/dist/navbar-transparent-overlay.js +17 -10
  79. package/dist/registry.cjs +1398 -851
  80. package/dist/registry.js +1398 -851
  81. package/dist/social-link-icon.cjs +17 -10
  82. package/dist/social-link-icon.d.cts +5 -0
  83. package/dist/social-link-icon.d.ts +5 -0
  84. package/dist/social-link-icon.js +17 -10
  85. package/dist/testimonials-animated-split.cjs +5 -5
  86. package/dist/testimonials-animated-split.js +5 -5
  87. package/dist/testimonials-bento-grid.cjs +48 -56
  88. package/dist/testimonials-bento-grid.js +48 -56
  89. package/dist/testimonials-carousel-image.cjs +608 -96
  90. package/dist/testimonials-carousel-image.d.cts +26 -2
  91. package/dist/testimonials-carousel-image.d.ts +26 -2
  92. package/dist/testimonials-carousel-image.js +609 -97
  93. package/dist/testimonials-centered-avatars.cjs +89 -62
  94. package/dist/testimonials-centered-avatars.d.cts +5 -1
  95. package/dist/testimonials-centered-avatars.d.ts +5 -1
  96. package/dist/testimonials-centered-avatars.js +89 -62
  97. package/dist/testimonials-company-logo.cjs +6 -6
  98. package/dist/testimonials-company-logo.js +6 -6
  99. package/dist/testimonials-grid-add-review.cjs +51 -29
  100. package/dist/testimonials-grid-add-review.js +51 -29
  101. package/dist/testimonials-images-helpful.cjs +181 -160
  102. package/dist/testimonials-images-helpful.d.cts +9 -1
  103. package/dist/testimonials-images-helpful.d.ts +9 -1
  104. package/dist/testimonials-images-helpful.js +181 -159
  105. package/dist/testimonials-list-verified.cjs +63 -44
  106. package/dist/testimonials-list-verified.d.cts +5 -1
  107. package/dist/testimonials-list-verified.d.ts +5 -1
  108. package/dist/testimonials-list-verified.js +64 -45
  109. package/dist/testimonials-logo-cards.cjs +53 -29
  110. package/dist/testimonials-logo-cards.d.cts +5 -1
  111. package/dist/testimonials-logo-cards.d.ts +5 -1
  112. package/dist/testimonials-logo-cards.js +53 -29
  113. package/dist/testimonials-marquee.cjs +524 -102
  114. package/dist/testimonials-marquee.d.cts +5 -1
  115. package/dist/testimonials-marquee.d.ts +5 -1
  116. package/dist/testimonials-marquee.js +525 -100
  117. package/dist/testimonials-mini-dividers.cjs +120 -83
  118. package/dist/testimonials-mini-dividers.d.cts +10 -6
  119. package/dist/testimonials-mini-dividers.d.ts +10 -6
  120. package/dist/testimonials-mini-dividers.js +120 -83
  121. package/dist/testimonials-minimal-numbered.cjs +7 -6
  122. package/dist/testimonials-minimal-numbered.d.cts +5 -1
  123. package/dist/testimonials-minimal-numbered.d.ts +5 -1
  124. package/dist/testimonials-minimal-numbered.js +7 -6
  125. package/dist/testimonials-parallax-number.cjs +14 -8
  126. package/dist/testimonials-parallax-number.js +14 -8
  127. package/dist/testimonials-scrolling-columns.cjs +97 -13
  128. package/dist/testimonials-scrolling-columns.js +97 -13
  129. package/dist/testimonials-simple-grid.cjs +513 -68
  130. package/dist/testimonials-simple-grid.d.cts +9 -5
  131. package/dist/testimonials-simple-grid.d.ts +9 -5
  132. package/dist/testimonials-simple-grid.js +510 -62
  133. package/dist/testimonials-slider-minimal.cjs +604 -90
  134. package/dist/testimonials-slider-minimal.d.cts +17 -1
  135. package/dist/testimonials-slider-minimal.d.ts +17 -1
  136. package/dist/testimonials-slider-minimal.js +598 -81
  137. package/dist/testimonials-split-image.cjs +452 -17
  138. package/dist/testimonials-split-image.js +448 -13
  139. package/dist/testimonials-twitter-cards.cjs +26 -14
  140. package/dist/testimonials-twitter-cards.js +26 -14
  141. package/package.json +11 -1
@@ -60,6 +60,10 @@ interface TestimonialsMinimalNumberedProps {
60
60
  * Pattern overlay opacity (0-1)
61
61
  */
62
62
  patternOpacity?: number;
63
+ /**
64
+ * Additional CSS classes for the container
65
+ */
66
+ containerClassName?: string;
63
67
  }
64
68
  /**
65
69
  * TestimonialsMinimalNumbered - A minimal testimonial slider featuring large numbered
@@ -86,6 +90,6 @@ interface TestimonialsMinimalNumberedProps {
86
90
  * />
87
91
  * ```
88
92
  */
89
- declare function TestimonialsMinimalNumbered({ testimonials, testimonialsSlot, autoPlayInterval, className, contentClassName, numberClassName, quoteClassName, authorClassName, navigationClassName, background, spacing, pattern, patternOpacity, }: TestimonialsMinimalNumberedProps): React.JSX.Element;
93
+ declare function TestimonialsMinimalNumbered({ testimonials, testimonialsSlot, autoPlayInterval, className, contentClassName, numberClassName, quoteClassName, authorClassName, navigationClassName, background, spacing, containerClassName, pattern, patternOpacity, }: TestimonialsMinimalNumberedProps): React.JSX.Element;
90
94
 
91
95
  export { TestimonialsMinimalNumbered, type TestimonialsMinimalNumberedProps };
@@ -60,6 +60,10 @@ interface TestimonialsMinimalNumberedProps {
60
60
  * Pattern overlay opacity (0-1)
61
61
  */
62
62
  patternOpacity?: number;
63
+ /**
64
+ * Additional CSS classes for the container
65
+ */
66
+ containerClassName?: string;
63
67
  }
64
68
  /**
65
69
  * TestimonialsMinimalNumbered - A minimal testimonial slider featuring large numbered
@@ -86,6 +90,6 @@ interface TestimonialsMinimalNumberedProps {
86
90
  * />
87
91
  * ```
88
92
  */
89
- declare function TestimonialsMinimalNumbered({ testimonials, testimonialsSlot, autoPlayInterval, className, contentClassName, numberClassName, quoteClassName, authorClassName, navigationClassName, background, spacing, pattern, patternOpacity, }: TestimonialsMinimalNumberedProps): React.JSX.Element;
93
+ declare function TestimonialsMinimalNumbered({ testimonials, testimonialsSlot, autoPlayInterval, className, contentClassName, numberClassName, quoteClassName, authorClassName, navigationClassName, background, spacing, containerClassName, pattern, patternOpacity, }: TestimonialsMinimalNumberedProps): React.JSX.Element;
90
94
 
91
95
  export { TestimonialsMinimalNumbered, type TestimonialsMinimalNumberedProps };
@@ -451,7 +451,8 @@ function TestimonialsMinimalNumbered({
451
451
  authorClassName,
452
452
  navigationClassName,
453
453
  background,
454
- spacing,
454
+ spacing = "lg",
455
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
455
456
  pattern,
456
457
  patternOpacity
457
458
  }) {
@@ -509,14 +510,14 @@ function TestimonialsMinimalNumbered({
509
510
  "span",
510
511
  {
511
512
  className: cn(
512
- "text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
513
+ "text-4xl md:text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
513
514
  numberClassName
514
515
  ),
515
516
  style: { fontFeatureSettings: '"tnum"' },
516
517
  children: String(active + 1).padStart(2, "0")
517
518
  }
518
519
  ),
519
- /* @__PURE__ */ jsxs("div", { className: "flex-1 pt-6", children: [
520
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 pt-0 md:pt-6", children: [
520
521
  current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsx(
521
522
  "blockquote",
522
523
  {
@@ -622,13 +623,13 @@ function TestimonialsMinimalNumbered({
622
623
  String(testimonials.length).padStart(2, "0")
623
624
  ] })
624
625
  ] }) }),
625
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
626
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
626
627
  /* @__PURE__ */ jsx(
627
628
  "button",
628
629
  {
629
630
  onClick: handlePrev,
630
631
  className: "rounded-full p-2 transition-all duration-300 ",
631
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
632
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24 })
632
633
  }
633
634
  ),
634
635
  /* @__PURE__ */ jsx(
@@ -636,7 +637,7 @@ function TestimonialsMinimalNumbered({
636
637
  {
637
638
  onClick: handleNext,
638
639
  className: "rounded-full p-2 transition-all duration-300 ",
639
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
640
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24 })
640
641
  }
641
642
  )
642
643
  ] })
@@ -945,10 +945,11 @@ function TestimonialsParallaxNumber({
945
945
  framerMotion.motion.div,
946
946
  {
947
947
  className: cn(
948
+ "opacity-15",
948
949
  "pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter ",
949
950
  numberClassName
950
951
  ),
951
- style: { x: numberX, y: numberY },
952
+ style: { x: numberX, y: numberY, opacity: 0.1 },
952
953
  children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
953
954
  framerMotion.motion.span,
954
955
  {
@@ -957,14 +958,14 @@ function TestimonialsParallaxNumber({
957
958
  exit: { opacity: 0, scale: 1.1, filter: "blur(10px)" },
958
959
  transition: { duration: 0.6, ease: [0.22, 1, 0.36, 1] },
959
960
  className: "block",
960
- children: current.backgroundIcon ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: current.backgroundIcon }) : current.backgroundLabel != null ? current.backgroundLabel : null
961
+ children: current.backgroundIcon ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: current.backgroundIcon, size: 320 }) : current.backgroundLabel != null ? current.backgroundLabel : null
961
962
  },
962
963
  activeIndex
963
964
  ) })
964
965
  }
965
966
  ),
966
967
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex", children: [
967
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center border-r border-border/50 pr-16", children: [
968
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center border-r-0 md:border-r border-border/50 pr-4 md:pr-16", children: [
968
969
  /* @__PURE__ */ jsxRuntime.jsxs(
969
970
  framerMotion.motion.span,
970
971
  {
@@ -990,7 +991,7 @@ function TestimonialsParallaxNumber({
990
991
  }
991
992
  ) })
992
993
  ] }),
993
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 py-12 pl-16", children: [
994
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 py-6 md:py-12 pl-4 md:pl-16", children: [
994
995
  /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
995
996
  framerMotion.motion.div,
996
997
  {
@@ -1007,7 +1008,7 @@ function TestimonialsParallaxNumber({
1007
1008
  framerMotion.motion.blockquote,
1008
1009
  {
1009
1010
  className: cn(
1010
- "text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
1011
+ "text-2xl md:text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
1011
1012
  quoteClassName
1012
1013
  ),
1013
1014
  initial: "hidden",
@@ -1042,7 +1043,7 @@ function TestimonialsParallaxNumber({
1042
1043
  },
1043
1044
  activeIndex
1044
1045
  ) }) }),
1045
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end justify-between", children: [
1046
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start md:items-end justify-between", children: [
1046
1047
  /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
1047
1048
  framerMotion.motion.div,
1048
1049
  {
@@ -1059,7 +1060,9 @@ function TestimonialsParallaxNumber({
1059
1060
  {
1060
1061
  href: current.linkConfig.href,
1061
1062
  className: cn(
1062
- "text-sm text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
1063
+ "transition-all duration-500",
1064
+ "hover:underline hover:underline-offset-4",
1065
+ "text-sm",
1063
1066
  current.linkConfig.className
1064
1067
  ),
1065
1068
  children: current.linkConfig.label
@@ -1072,7 +1075,10 @@ function TestimonialsParallaxNumber({
1072
1075
  /* @__PURE__ */ jsxRuntime.jsxs(
1073
1076
  "div",
1074
1077
  {
1075
- className: cn("flex items-center gap-4", navigationClassName),
1078
+ className: cn(
1079
+ "flex items-center gap-4 flex-col md:flex-row",
1080
+ navigationClassName
1081
+ ),
1076
1082
  children: [
1077
1083
  /* @__PURE__ */ jsxRuntime.jsx(
1078
1084
  framerMotion.motion.button,
@@ -924,10 +924,11 @@ function TestimonialsParallaxNumber({
924
924
  motion.div,
925
925
  {
926
926
  className: cn(
927
+ "opacity-15",
927
928
  "pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter ",
928
929
  numberClassName
929
930
  ),
930
- style: { x: numberX, y: numberY },
931
+ style: { x: numberX, y: numberY, opacity: 0.1 },
931
932
  children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
932
933
  motion.span,
933
934
  {
@@ -936,14 +937,14 @@ function TestimonialsParallaxNumber({
936
937
  exit: { opacity: 0, scale: 1.1, filter: "blur(10px)" },
937
938
  transition: { duration: 0.6, ease: [0.22, 1, 0.36, 1] },
938
939
  className: "block",
939
- children: current.backgroundIcon ? /* @__PURE__ */ jsx(DynamicIcon, { name: current.backgroundIcon }) : current.backgroundLabel != null ? current.backgroundLabel : null
940
+ children: current.backgroundIcon ? /* @__PURE__ */ jsx(DynamicIcon, { name: current.backgroundIcon, size: 320 }) : current.backgroundLabel != null ? current.backgroundLabel : null
940
941
  },
941
942
  activeIndex
942
943
  ) })
943
944
  }
944
945
  ),
945
946
  /* @__PURE__ */ jsxs("div", { className: "relative flex", children: [
946
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center border-r border-border/50 pr-16", children: [
947
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center border-r-0 md:border-r border-border/50 pr-4 md:pr-16", children: [
947
948
  /* @__PURE__ */ jsxs(
948
949
  motion.span,
949
950
  {
@@ -969,7 +970,7 @@ function TestimonialsParallaxNumber({
969
970
  }
970
971
  ) })
971
972
  ] }),
972
- /* @__PURE__ */ jsxs("div", { className: "flex-1 py-12 pl-16", children: [
973
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 py-6 md:py-12 pl-4 md:pl-16", children: [
973
974
  /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
974
975
  motion.div,
975
976
  {
@@ -986,7 +987,7 @@ function TestimonialsParallaxNumber({
986
987
  motion.blockquote,
987
988
  {
988
989
  className: cn(
989
- "text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
990
+ "text-2xl md:text-3xl font-light leading-[1.15] tracking-tight md:text-4xl lg:text-5xl",
990
991
  quoteClassName
991
992
  ),
992
993
  initial: "hidden",
@@ -1021,7 +1022,7 @@ function TestimonialsParallaxNumber({
1021
1022
  },
1022
1023
  activeIndex
1023
1024
  ) }) }),
1024
- /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-between", children: [
1025
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start md:items-end justify-between", children: [
1025
1026
  /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
1026
1027
  motion.div,
1027
1028
  {
@@ -1038,7 +1039,9 @@ function TestimonialsParallaxNumber({
1038
1039
  {
1039
1040
  href: current.linkConfig.href,
1040
1041
  className: cn(
1041
- "text-sm text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
1042
+ "transition-all duration-500",
1043
+ "hover:underline hover:underline-offset-4",
1044
+ "text-sm",
1042
1045
  current.linkConfig.className
1043
1046
  ),
1044
1047
  children: current.linkConfig.label
@@ -1051,7 +1054,10 @@ function TestimonialsParallaxNumber({
1051
1054
  /* @__PURE__ */ jsxs(
1052
1055
  "div",
1053
1056
  {
1054
- className: cn("flex items-center gap-4", navigationClassName),
1057
+ className: cn(
1058
+ "flex items-center gap-4 flex-col md:flex-row",
1059
+ navigationClassName
1060
+ ),
1055
1061
  children: [
1056
1062
  /* @__PURE__ */ jsx(
1057
1063
  motion.button,
@@ -41,6 +41,67 @@ var DynamicIcon = React__namespace.memo(function DynamicIcon2({
41
41
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
42
42
  });
43
43
  DynamicIcon.displayName = "DynamicIcon";
44
+ var DIRECTION_STYLES = {
45
+ "bottom-to-top": "bg-linear-to-t",
46
+ "top-to-bottom": "bg-linear-to-b",
47
+ "left-to-right": "bg-linear-to-r",
48
+ "right-to-left": "bg-linear-to-l",
49
+ "bottom-left-to-top-right": "bg-linear-to-tr",
50
+ "bottom-right-to-top-left": "bg-linear-to-tl",
51
+ "top-left-to-bottom-right": "bg-linear-to-br",
52
+ "top-right-to-bottom-left": "bg-linear-to-bl"
53
+ };
54
+ var INTENSITY_STOPS = {
55
+ low: "from-black/40 via-black/20 to-transparent",
56
+ default: "from-black/70 via-black/35 to-transparent",
57
+ high: "from-black/85 via-black/50 to-transparent",
58
+ "very-high": "from-black/95 via-black/60 to-black/20"
59
+ };
60
+ var RADIAL_INTENSITY = {
61
+ low: {
62
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
63
+ },
64
+ default: {
65
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
66
+ },
67
+ high: {
68
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
69
+ },
70
+ "very-high": {
71
+ 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%)"
72
+ }
73
+ };
74
+ function GradientOverlay({
75
+ direction = "bottom-to-top",
76
+ intensity = "default",
77
+ className,
78
+ style,
79
+ ...props
80
+ }) {
81
+ if (direction === "radial-center") {
82
+ return /* @__PURE__ */ jsxRuntime.jsx(
83
+ "div",
84
+ {
85
+ className: cn("absolute inset-0", className),
86
+ style: { ...RADIAL_INTENSITY[intensity], ...style },
87
+ ...props
88
+ }
89
+ );
90
+ }
91
+ return /* @__PURE__ */ jsxRuntime.jsx(
92
+ "div",
93
+ {
94
+ className: cn(
95
+ "absolute inset-0",
96
+ DIRECTION_STYLES[direction],
97
+ INTENSITY_STOPS[intensity],
98
+ className
99
+ ),
100
+ style,
101
+ ...props
102
+ }
103
+ );
104
+ }
44
105
  var maxWidthStyles = {
45
106
  sm: "max-w-screen-sm",
46
107
  md: "max-w-screen-md",
@@ -483,7 +544,7 @@ function TestimonialsScrollingColumns({
483
544
  framerMotion.motion.div,
484
545
  {
485
546
  className: cn(
486
- "relative overflow-hidden rounded-lg bg-card shadow-sm",
547
+ "relative overflow-hidden rounded-2xl bg-card text-card-foreground shadow-sm",
487
548
  cardClassName
488
549
  ),
489
550
  variants: itemVariants,
@@ -498,15 +559,25 @@ function TestimonialsScrollingColumns({
498
559
  optixFlowConfig
499
560
  }
500
561
  ),
501
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-foreground/70 via-foreground/40 to-transparent" })
562
+ /* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, {})
502
563
  ] }),
503
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left text-background", children: [
504
- /* @__PURE__ */ jsxRuntime.jsx(
564
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left", children: [
565
+ testimonial?.logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(
566
+ img.Img,
567
+ {
568
+ src: testimonial.logoSrc,
569
+ alt: typeof testimonial.company === "string" ? `${testimonial.company} logo` : typeof testimonial.author === "string" ? `${testimonial.author} company logo` : "Company logo",
570
+ className: cn(
571
+ "mx-auto mb-6 max-h-12 max-w-32 object-contain md:max-h-16 md:max-w-48"
572
+ ),
573
+ optixFlowConfig
574
+ }
575
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
505
576
  DynamicIcon,
506
577
  {
507
- name: "lucide/quote",
508
- size: 32,
509
- className: "mb-4 text-background/40"
578
+ name: "mdi/comment-quote-outline",
579
+ size: 42,
580
+ className: cn("opacity-50")
510
581
  }
511
582
  ),
512
583
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -518,12 +589,12 @@ function TestimonialsScrollingColumns({
518
589
  ),
519
590
  children: testimonial.quote
520
591
  }
521
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
592
+ ) : testimonial.quote),
522
593
  /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-semibold", children: [
523
594
  "\u2014",
524
595
  " ",
525
596
  testimonial.author && (typeof testimonial.author === "string" ? testimonial.author : null),
526
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1 text-background/60", children: [
597
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1", children: [
527
598
  ", ",
528
599
  testimonial.role
529
600
  ] }) : null)
@@ -559,19 +630,32 @@ function TestimonialsScrollingColumns({
559
630
  /* @__PURE__ */ jsxRuntime.jsxs(
560
631
  "div",
561
632
  {
562
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
633
+ className: cn(
634
+ "mx-auto mb-12 max-w-full md:max-w-2xl space-y-4 text-center",
635
+ headerClassName
636
+ ),
563
637
  children: [
564
638
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
565
639
  "h2",
566
640
  {
567
641
  className: cn(
568
- "text-3xl font-semibold tracking-tight md:text-4xl",
642
+ "text-pretty text-3xl md:text-4xl lg:text-6xl",
643
+ "font-semibold tracking-tight",
569
644
  headingClassName
570
645
  ),
571
646
  children: heading
572
647
  }
573
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
574
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-lg ", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
648
+ ) : heading),
649
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
650
+ "p",
651
+ {
652
+ className: cn(
653
+ "text-base text-base md:text-lg text-balance",
654
+ descriptionClassName
655
+ ),
656
+ children: description
657
+ }
658
+ ) : description)
575
659
  ]
576
660
  }
577
661
  ),
@@ -20,6 +20,67 @@ var DynamicIcon = React.memo(function DynamicIcon2({
20
20
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
21
21
  });
22
22
  DynamicIcon.displayName = "DynamicIcon";
23
+ var DIRECTION_STYLES = {
24
+ "bottom-to-top": "bg-linear-to-t",
25
+ "top-to-bottom": "bg-linear-to-b",
26
+ "left-to-right": "bg-linear-to-r",
27
+ "right-to-left": "bg-linear-to-l",
28
+ "bottom-left-to-top-right": "bg-linear-to-tr",
29
+ "bottom-right-to-top-left": "bg-linear-to-tl",
30
+ "top-left-to-bottom-right": "bg-linear-to-br",
31
+ "top-right-to-bottom-left": "bg-linear-to-bl"
32
+ };
33
+ var INTENSITY_STOPS = {
34
+ low: "from-black/40 via-black/20 to-transparent",
35
+ default: "from-black/70 via-black/35 to-transparent",
36
+ high: "from-black/85 via-black/50 to-transparent",
37
+ "very-high": "from-black/95 via-black/60 to-black/20"
38
+ };
39
+ var RADIAL_INTENSITY = {
40
+ low: {
41
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
42
+ },
43
+ default: {
44
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
45
+ },
46
+ high: {
47
+ background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
48
+ },
49
+ "very-high": {
50
+ 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%)"
51
+ }
52
+ };
53
+ function GradientOverlay({
54
+ direction = "bottom-to-top",
55
+ intensity = "default",
56
+ className,
57
+ style,
58
+ ...props
59
+ }) {
60
+ if (direction === "radial-center") {
61
+ return /* @__PURE__ */ jsx(
62
+ "div",
63
+ {
64
+ className: cn("absolute inset-0", className),
65
+ style: { ...RADIAL_INTENSITY[intensity], ...style },
66
+ ...props
67
+ }
68
+ );
69
+ }
70
+ return /* @__PURE__ */ jsx(
71
+ "div",
72
+ {
73
+ className: cn(
74
+ "absolute inset-0",
75
+ DIRECTION_STYLES[direction],
76
+ INTENSITY_STOPS[intensity],
77
+ className
78
+ ),
79
+ style,
80
+ ...props
81
+ }
82
+ );
83
+ }
23
84
  var maxWidthStyles = {
24
85
  sm: "max-w-screen-sm",
25
86
  md: "max-w-screen-md",
@@ -462,7 +523,7 @@ function TestimonialsScrollingColumns({
462
523
  motion.div,
463
524
  {
464
525
  className: cn(
465
- "relative overflow-hidden rounded-lg bg-card shadow-sm",
526
+ "relative overflow-hidden rounded-2xl bg-card text-card-foreground shadow-sm",
466
527
  cardClassName
467
528
  ),
468
529
  variants: itemVariants,
@@ -477,15 +538,25 @@ function TestimonialsScrollingColumns({
477
538
  optixFlowConfig
478
539
  }
479
540
  ),
480
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-foreground/70 via-foreground/40 to-transparent" })
541
+ /* @__PURE__ */ jsx(GradientOverlay, {})
481
542
  ] }),
482
- /* @__PURE__ */ jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left text-background", children: [
483
- /* @__PURE__ */ jsx(
543
+ /* @__PURE__ */ jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-6 text-left", children: [
544
+ testimonial?.logoSrc ? /* @__PURE__ */ jsx(
545
+ Img,
546
+ {
547
+ src: testimonial.logoSrc,
548
+ alt: typeof testimonial.company === "string" ? `${testimonial.company} logo` : typeof testimonial.author === "string" ? `${testimonial.author} company logo` : "Company logo",
549
+ className: cn(
550
+ "mx-auto mb-6 max-h-12 max-w-32 object-contain md:max-h-16 md:max-w-48"
551
+ ),
552
+ optixFlowConfig
553
+ }
554
+ ) : /* @__PURE__ */ jsx(
484
555
  DynamicIcon,
485
556
  {
486
- name: "lucide/quote",
487
- size: 32,
488
- className: "mb-4 text-background/40"
557
+ name: "mdi/comment-quote-outline",
558
+ size: 42,
559
+ className: cn("opacity-50")
489
560
  }
490
561
  ),
491
562
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
@@ -497,12 +568,12 @@ function TestimonialsScrollingColumns({
497
568
  ),
498
569
  children: testimonial.quote
499
570
  }
500
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
571
+ ) : testimonial.quote),
501
572
  /* @__PURE__ */ jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxs("p", { className: "font-semibold", children: [
502
573
  "\u2014",
503
574
  " ",
504
575
  testimonial.author && (typeof testimonial.author === "string" ? testimonial.author : null),
505
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxs("span", { className: "ml-1 text-background/60", children: [
576
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxs("span", { className: "ml-1", children: [
506
577
  ", ",
507
578
  testimonial.role
508
579
  ] }) : null)
@@ -538,19 +609,32 @@ function TestimonialsScrollingColumns({
538
609
  /* @__PURE__ */ jsxs(
539
610
  "div",
540
611
  {
541
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
612
+ className: cn(
613
+ "mx-auto mb-12 max-w-full md:max-w-2xl space-y-4 text-center",
614
+ headerClassName
615
+ ),
542
616
  children: [
543
617
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
544
618
  "h2",
545
619
  {
546
620
  className: cn(
547
- "text-3xl font-semibold tracking-tight md:text-4xl",
621
+ "text-pretty text-3xl md:text-4xl lg:text-6xl",
622
+ "font-semibold tracking-tight",
548
623
  headingClassName
549
624
  ),
550
625
  children: heading
551
626
  }
552
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
553
- 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 }))
627
+ ) : heading),
628
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
629
+ "p",
630
+ {
631
+ className: cn(
632
+ "text-base text-base md:text-lg text-balance",
633
+ descriptionClassName
634
+ ),
635
+ children: description
636
+ }
637
+ ) : description)
554
638
  ]
555
639
  }
556
640
  ),