@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
@@ -504,7 +504,8 @@ function TestimonialsCenteredAvatars({
504
504
  quoteClassName,
505
505
  authorClassName,
506
506
  background,
507
- spacing,
507
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
508
+ spacing = "xl",
508
509
  pattern,
509
510
  patternOpacity
510
511
  }) {
@@ -512,46 +513,62 @@ function TestimonialsCenteredAvatars({
512
513
  if (typeof testimonial.author === "string") return testimonial.author;
513
514
  return "";
514
515
  }, []);
515
- const getAvatarSrc = React.useCallback((testimonial) => {
516
- return testimonial.avatarSrc || testimonial.avatar?.src;
517
- }, []);
516
+ const getAvatarSrc = React.useCallback(
517
+ (testimonial) => {
518
+ return testimonial.avatarSrc || testimonial.avatar?.src;
519
+ },
520
+ []
521
+ );
518
522
  const getInitials = React.useCallback((name) => {
519
523
  return name.split(" ").map((n) => n[0]).join("");
520
524
  }, []);
521
525
  const renderedTestimonials = React.useMemo(() => {
522
526
  if (testimonialsSlot) return testimonialsSlot;
523
527
  if (!testimonials || testimonials.length === 0) return null;
524
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12 space-y-8", testimonialsClassName), children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsxs(
528
+ return /* @__PURE__ */ jsxRuntime.jsx(
525
529
  "div",
526
530
  {
527
- className: cn("space-y-4", testimonialItemClassName),
528
- children: [
529
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
530
- "blockquote",
531
- {
532
- className: cn(
533
- "text-lg leading-relaxed text-muted-foreground md:text-xl",
534
- quoteClassName
535
- ),
536
- children: [
537
- "\u201C",
538
- testimonial.quote,
539
- "\u201D"
540
- ]
541
- }
542
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
543
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: authorClassName, children: [
544
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
545
- (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
546
- testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
547
- testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
548
- ] })
549
- ] })
550
- ]
551
- },
552
- index
553
- )) });
554
- }, [testimonialsSlot, testimonialsClassName, testimonials, testimonialItemClassName, quoteClassName, authorClassName]);
531
+ className: cn("mt-12 space-y-8 md:space-y-12", testimonialsClassName),
532
+ children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsxs(
533
+ "div",
534
+ {
535
+ className: cn("space-y-4", testimonialItemClassName),
536
+ children: [
537
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
538
+ "blockquote",
539
+ {
540
+ className: cn(
541
+ "text-lg leading-relaxed md:text-xl text-balance",
542
+ quoteClassName
543
+ ),
544
+ children: [
545
+ "\u201C",
546
+ testimonial.quote,
547
+ "\u201D"
548
+ ]
549
+ }
550
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
551
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: authorClassName, children: [
552
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
553
+ (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-75", children: [
554
+ testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
555
+ testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
556
+ ] })
557
+ ] })
558
+ ]
559
+ },
560
+ index
561
+ ))
562
+ }
563
+ );
564
+ }, [
565
+ testimonialsSlot,
566
+ testimonialsClassName,
567
+ testimonials,
568
+ testimonialItemClassName,
569
+ quoteClassName,
570
+ authorClassName
571
+ ]);
555
572
  return /* @__PURE__ */ jsxRuntime.jsx(
556
573
  Section,
557
574
  {
@@ -560,35 +577,45 @@ function TestimonialsCenteredAvatars({
560
577
  pattern,
561
578
  patternOpacity,
562
579
  className,
563
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
564
- badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", className: cn("mb-4", badgeClassName), children: badge }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", badgeClassName), children: badge })),
565
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
566
- "h2",
567
- {
568
- className: cn(
569
- "text-3xl font-semibold tracking-tight md:text-4xl",
570
- headingClassName
571
- ),
572
- children: heading
573
- }
574
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
575
- testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
576
- const authorName = getAuthorName(testimonial);
577
- const avatarSrc = getAvatarSrc(testimonial);
578
- return /* @__PURE__ */ jsxRuntime.jsxs(
579
- Avatar,
580
- {
581
- className: "size-16 border-4 border-background ring-2 ring-border md:size-20",
582
- children: [
583
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
584
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
585
- ]
586
- },
587
- index
588
- );
589
- }) }) }),
590
- renderedTestimonials
591
- ] })
580
+ containerClassName,
581
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
582
+ "div",
583
+ {
584
+ className: cn(
585
+ "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",
586
+ contentClassName
587
+ ),
588
+ children: [
589
+ badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: badgeClassName, children: badge }) : badge),
590
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
591
+ "h2",
592
+ {
593
+ className: cn(
594
+ "text-2xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
595
+ headingClassName
596
+ ),
597
+ children: heading
598
+ }
599
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
600
+ testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
601
+ const authorName = getAuthorName(testimonial);
602
+ const avatarSrc = getAvatarSrc(testimonial);
603
+ return /* @__PURE__ */ jsxRuntime.jsxs(
604
+ Avatar,
605
+ {
606
+ className: "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary md:size-20 shadow-xl",
607
+ children: [
608
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
609
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
610
+ ]
611
+ },
612
+ index
613
+ );
614
+ }) }) }),
615
+ renderedTestimonials
616
+ ]
617
+ }
618
+ )
592
619
  }
593
620
  );
594
621
  }
@@ -76,6 +76,10 @@ interface TestimonialsCenteredAvatarsProps {
76
76
  * Pattern overlay opacity (0-1)
77
77
  */
78
78
  patternOpacity?: number;
79
+ /**
80
+ * Additional CSS classes for the container
81
+ */
82
+ containerClassName?: string;
79
83
  }
80
84
  /**
81
85
  * TestimonialsCenteredAvatars - A centered testimonial section featuring a badge,
@@ -103,6 +107,6 @@ interface TestimonialsCenteredAvatarsProps {
103
107
  * />
104
108
  * ```
105
109
  */
106
- declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
110
+ declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
107
111
 
108
112
  export { TestimonialsCenteredAvatars, type TestimonialsCenteredAvatarsProps };
@@ -76,6 +76,10 @@ interface TestimonialsCenteredAvatarsProps {
76
76
  * Pattern overlay opacity (0-1)
77
77
  */
78
78
  patternOpacity?: number;
79
+ /**
80
+ * Additional CSS classes for the container
81
+ */
82
+ containerClassName?: string;
79
83
  }
80
84
  /**
81
85
  * TestimonialsCenteredAvatars - A centered testimonial section featuring a badge,
@@ -103,6 +107,6 @@ interface TestimonialsCenteredAvatarsProps {
103
107
  * />
104
108
  * ```
105
109
  */
106
- declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
110
+ declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
107
111
 
108
112
  export { TestimonialsCenteredAvatars, type TestimonialsCenteredAvatarsProps };
@@ -479,7 +479,8 @@ function TestimonialsCenteredAvatars({
479
479
  quoteClassName,
480
480
  authorClassName,
481
481
  background,
482
- spacing,
482
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
483
+ spacing = "xl",
483
484
  pattern,
484
485
  patternOpacity
485
486
  }) {
@@ -487,46 +488,62 @@ function TestimonialsCenteredAvatars({
487
488
  if (typeof testimonial.author === "string") return testimonial.author;
488
489
  return "";
489
490
  }, []);
490
- const getAvatarSrc = useCallback((testimonial) => {
491
- return testimonial.avatarSrc || testimonial.avatar?.src;
492
- }, []);
491
+ const getAvatarSrc = useCallback(
492
+ (testimonial) => {
493
+ return testimonial.avatarSrc || testimonial.avatar?.src;
494
+ },
495
+ []
496
+ );
493
497
  const getInitials = useCallback((name) => {
494
498
  return name.split(" ").map((n) => n[0]).join("");
495
499
  }, []);
496
500
  const renderedTestimonials = useMemo(() => {
497
501
  if (testimonialsSlot) return testimonialsSlot;
498
502
  if (!testimonials || testimonials.length === 0) return null;
499
- return /* @__PURE__ */ jsx("div", { className: cn("mt-12 space-y-8", testimonialsClassName), children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs(
503
+ return /* @__PURE__ */ jsx(
500
504
  "div",
501
505
  {
502
- className: cn("space-y-4", testimonialItemClassName),
503
- children: [
504
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
505
- "blockquote",
506
- {
507
- className: cn(
508
- "text-lg leading-relaxed text-muted-foreground md:text-xl",
509
- quoteClassName
510
- ),
511
- children: [
512
- "\u201C",
513
- testimonial.quote,
514
- "\u201D"
515
- ]
516
- }
517
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
518
- /* @__PURE__ */ jsxs("div", { className: authorClassName, children: [
519
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
520
- (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
521
- testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
522
- testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
523
- ] })
524
- ] })
525
- ]
526
- },
527
- index
528
- )) });
529
- }, [testimonialsSlot, testimonialsClassName, testimonials, testimonialItemClassName, quoteClassName, authorClassName]);
506
+ className: cn("mt-12 space-y-8 md:space-y-12", testimonialsClassName),
507
+ children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs(
508
+ "div",
509
+ {
510
+ className: cn("space-y-4", testimonialItemClassName),
511
+ children: [
512
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
513
+ "blockquote",
514
+ {
515
+ className: cn(
516
+ "text-lg leading-relaxed md:text-xl text-balance",
517
+ quoteClassName
518
+ ),
519
+ children: [
520
+ "\u201C",
521
+ testimonial.quote,
522
+ "\u201D"
523
+ ]
524
+ }
525
+ ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
526
+ /* @__PURE__ */ jsxs("div", { className: authorClassName, children: [
527
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
528
+ (testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("p", { className: "text-sm opacity-75", children: [
529
+ testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
530
+ testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
531
+ ] })
532
+ ] })
533
+ ]
534
+ },
535
+ index
536
+ ))
537
+ }
538
+ );
539
+ }, [
540
+ testimonialsSlot,
541
+ testimonialsClassName,
542
+ testimonials,
543
+ testimonialItemClassName,
544
+ quoteClassName,
545
+ authorClassName
546
+ ]);
530
547
  return /* @__PURE__ */ jsx(
531
548
  Section,
532
549
  {
@@ -535,35 +552,45 @@ function TestimonialsCenteredAvatars({
535
552
  pattern,
536
553
  patternOpacity,
537
554
  className,
538
- children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
539
- badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("mb-4", badgeClassName), children: badge }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4", badgeClassName), children: badge })),
540
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
541
- "h2",
542
- {
543
- className: cn(
544
- "text-3xl font-semibold tracking-tight md:text-4xl",
545
- headingClassName
546
- ),
547
- children: heading
548
- }
549
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
550
- testimonials && testimonials.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
551
- const authorName = getAuthorName(testimonial);
552
- const avatarSrc = getAvatarSrc(testimonial);
553
- return /* @__PURE__ */ jsxs(
554
- Avatar,
555
- {
556
- className: "size-16 border-4 border-background ring-2 ring-border md:size-20",
557
- children: [
558
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
559
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
560
- ]
561
- },
562
- index
563
- );
564
- }) }) }),
565
- renderedTestimonials
566
- ] })
555
+ containerClassName,
556
+ children: /* @__PURE__ */ jsxs(
557
+ "div",
558
+ {
559
+ className: cn(
560
+ "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",
561
+ contentClassName
562
+ ),
563
+ children: [
564
+ badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { className: badgeClassName, children: badge }) : badge),
565
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
566
+ "h2",
567
+ {
568
+ className: cn(
569
+ "text-2xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
570
+ headingClassName
571
+ ),
572
+ children: heading
573
+ }
574
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
575
+ testimonials && testimonials.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
576
+ const authorName = getAuthorName(testimonial);
577
+ const avatarSrc = getAvatarSrc(testimonial);
578
+ return /* @__PURE__ */ jsxs(
579
+ Avatar,
580
+ {
581
+ className: "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary md:size-20 shadow-xl",
582
+ children: [
583
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
584
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
585
+ ]
586
+ },
587
+ index
588
+ );
589
+ }) }) }),
590
+ renderedTestimonials
591
+ ]
592
+ }
593
+ )
567
594
  }
568
595
  );
569
596
  }
@@ -859,14 +859,14 @@ function TestimonialsCompanyLogo({
859
859
  const renderedTestimonial = React4.useMemo(() => {
860
860
  if (testimonialSlot) return testimonialSlot;
861
861
  if (!testimonial) return null;
862
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-8", contentClassName), children: [
862
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-12 md:space-y-16", contentClassName), children: [
863
863
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
864
864
  /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
865
865
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
866
866
  "blockquote",
867
867
  {
868
868
  className: cn(
869
- "relative text-xl font-medium leading-relaxed md:text-2xl",
869
+ "relative text-lg font-light leading-relaxed md:text-2xl",
870
870
  quoteClassName
871
871
  ),
872
872
  children: testimonial.quote
@@ -884,15 +884,15 @@ function TestimonialsCompanyLogo({
884
884
  }
885
885
  ),
886
886
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-1 text-right", authorClassName), children: [
887
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-x-2", children: [
887
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-end", children: [
888
888
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
889
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: testimonial.role }) : testimonial.role)
889
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
890
890
  ] }),
891
891
  /* @__PURE__ */ jsxRuntime.jsx(
892
892
  Pressable,
893
893
  {
894
894
  href: testimonial.linkConfig?.href,
895
- className: "text-sm font-bold uppercase transition-all duration-300 hover:underline hover:underline-offset-4",
895
+ className: "cursor-pointer text-sm font-bold uppercase transition-all duration-500 hover:underline hover:underline-offset-4",
896
896
  children: testimonial.linkConfig?.label || "Learn more"
897
897
  }
898
898
  )
@@ -923,7 +923,7 @@ function TestimonialsCompanyLogo({
923
923
  "div",
924
924
  {
925
925
  className: cn(
926
- "grid items-center gap-12 lg:gap-24 grid-cols-1 lg:grid-cols-2",
926
+ "grid items-center gap-16 lg:gap-24 grid-cols-1 lg:grid-cols-2",
927
927
  gridClassName
928
928
  ),
929
929
  children: [
@@ -838,14 +838,14 @@ function TestimonialsCompanyLogo({
838
838
  const renderedTestimonial = useMemo(() => {
839
839
  if (testimonialSlot) return testimonialSlot;
840
840
  if (!testimonial) return null;
841
- return /* @__PURE__ */ jsxs("div", { className: cn("space-y-8", contentClassName), children: [
841
+ return /* @__PURE__ */ jsxs("div", { className: cn("space-y-12 md:space-y-16", contentClassName), children: [
842
842
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
843
843
  /* @__PURE__ */ jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
844
844
  testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
845
845
  "blockquote",
846
846
  {
847
847
  className: cn(
848
- "relative text-xl font-medium leading-relaxed md:text-2xl",
848
+ "relative text-lg font-light leading-relaxed md:text-2xl",
849
849
  quoteClassName
850
850
  ),
851
851
  children: testimonial.quote
@@ -863,15 +863,15 @@ function TestimonialsCompanyLogo({
863
863
  }
864
864
  ),
865
865
  /* @__PURE__ */ jsxs("div", { className: cn("space-y-1 text-right", authorClassName), children: [
866
- /* @__PURE__ */ jsxs("div", { className: "space-x-2", children: [
866
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end", children: [
867
867
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
868
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: testimonial.role }) : testimonial.role)
868
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
869
869
  ] }),
870
870
  /* @__PURE__ */ jsx(
871
871
  Pressable,
872
872
  {
873
873
  href: testimonial.linkConfig?.href,
874
- className: "text-sm font-bold uppercase transition-all duration-300 hover:underline hover:underline-offset-4",
874
+ className: "cursor-pointer text-sm font-bold uppercase transition-all duration-500 hover:underline hover:underline-offset-4",
875
875
  children: testimonial.linkConfig?.label || "Learn more"
876
876
  }
877
877
  )
@@ -902,7 +902,7 @@ function TestimonialsCompanyLogo({
902
902
  "div",
903
903
  {
904
904
  className: cn(
905
- "grid items-center gap-12 lg:gap-24 grid-cols-1 lg:grid-cols-2",
905
+ "grid items-center gap-16 lg:gap-24 grid-cols-1 lg:grid-cols-2",
906
906
  gridClassName
907
907
  ),
908
908
  children: [
@@ -45,6 +45,23 @@ var DynamicIcon = React__namespace.memo(function DynamicIcon2({
45
45
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
46
46
  });
47
47
  DynamicIcon.displayName = "DynamicIcon";
48
+ function StarRating({
49
+ rating,
50
+ size = 18,
51
+ className
52
+ }) {
53
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
54
+ DynamicIcon,
55
+ {
56
+ name: "icon-park-solid/star",
57
+ size,
58
+ className: cn(
59
+ star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
60
+ )
61
+ },
62
+ star
63
+ )) });
64
+ }
48
65
  function Avatar({
49
66
  className,
50
67
  ...props
@@ -489,19 +506,6 @@ var Section = React__namespace.default.forwardRef(
489
506
  }
490
507
  );
491
508
  Section.displayName = "Section";
492
- function StarRating({ rating, size = 16 }) {
493
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
494
- DynamicIcon,
495
- {
496
- name: "lucide/star",
497
- size,
498
- className: cn(
499
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
500
- )
501
- },
502
- star
503
- )) });
504
- }
505
509
  function TestimonialsGridAddReview({
506
510
  reviews,
507
511
  reviewsSlot,
@@ -548,21 +552,27 @@ function TestimonialsGridAddReview({
548
552
  addReviewCardClassName
549
553
  ),
550
554
  onClick: onAddReview,
551
- children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: cn(
552
- "flex flex-col items-center gap-3 py-12 text-center",
553
- getNestedCardTextColor(background)
554
- ), children: [
555
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(
556
- DynamicIcon,
557
- {
558
- name: "lucide/plus",
559
- size: 24,
560
- className: "text-primary"
561
- }
562
- ) }),
563
- addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
564
- addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
565
- ] })
555
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
556
+ CardContent,
557
+ {
558
+ className: cn(
559
+ "flex flex-col items-center gap-3 py-12 text-center",
560
+ getNestedCardTextColor(background)
561
+ ),
562
+ children: [
563
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(
564
+ DynamicIcon,
565
+ {
566
+ name: "lucide/plus",
567
+ size: 24,
568
+ className: "text-primary"
569
+ }
570
+ ) }),
571
+ addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
572
+ addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
573
+ ]
574
+ }
575
+ )
566
576
  }
567
577
  ),
568
578
  reviews?.map((review, index) => {
@@ -582,7 +592,19 @@ function TestimonialsGridAddReview({
582
592
  ]
583
593
  }
584
594
  );
585
- }, [reviewsSlot, gridClassName, addReviewCardClassName, onAddReview, addReviewText, addReviewSubtext, reviews, cardClassName, authorClassName, getAuthorName, getInitials]);
595
+ }, [
596
+ reviewsSlot,
597
+ gridClassName,
598
+ addReviewCardClassName,
599
+ onAddReview,
600
+ addReviewText,
601
+ addReviewSubtext,
602
+ reviews,
603
+ cardClassName,
604
+ authorClassName,
605
+ getAuthorName,
606
+ getInitials
607
+ ]);
586
608
  return /* @__PURE__ */ jsxRuntime.jsxs(
587
609
  Section,
588
610
  {