@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
@@ -4,7 +4,7 @@ import React__default, { useCallback, useMemo } from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
8
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
9
9
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
10
10
 
@@ -20,6 +20,23 @@ 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
+ function StarRating({
24
+ rating,
25
+ size = 18,
26
+ className
27
+ }) {
28
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
29
+ DynamicIcon,
30
+ {
31
+ name: "icon-park-solid/star",
32
+ size,
33
+ className: cn(
34
+ star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
35
+ )
36
+ },
37
+ star
38
+ )) });
39
+ }
23
40
  function Avatar({
24
41
  className,
25
42
  ...props
@@ -461,19 +478,6 @@ var Section = React__default.forwardRef(
461
478
  }
462
479
  );
463
480
  Section.displayName = "Section";
464
- function StarRating({ rating, size = 16 }) {
465
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
466
- DynamicIcon,
467
- {
468
- name: "lucide/star",
469
- size,
470
- className: cn(
471
- star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
472
- )
473
- },
474
- star
475
- )) });
476
- }
477
481
  function TestimonialsListVerified({
478
482
  reviews,
479
483
  reviewsSlot,
@@ -486,7 +490,8 @@ function TestimonialsListVerified({
486
490
  contentClassName,
487
491
  authorClassName,
488
492
  background,
489
- spacing,
493
+ spacing = "lg",
494
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
490
495
  pattern,
491
496
  patternOpacity
492
497
  }) {
@@ -505,35 +510,49 @@ function TestimonialsListVerified({
505
510
  return /* @__PURE__ */ jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
506
511
  const authorName = getAuthorName(review);
507
512
  return /* @__PURE__ */ jsxs("div", { className: reviewClassName, children: [
508
- index > 0 && /* @__PURE__ */ jsx(Separator, { className: "my-6" }),
509
- /* @__PURE__ */ jsxs("div", { className: cn("space-y-3", contentClassName), children: [
510
- /* @__PURE__ */ jsxs("div", { children: [
511
- /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 16 }),
512
- 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 }))
513
+ 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" }),
514
+ /* @__PURE__ */ jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
515
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
516
+ /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 22 }),
517
+ review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
513
518
  ] }),
514
- review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: review.content }) : review.content),
515
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
516
- /* @__PURE__ */ jsxs(Avatar, { className: "size-8", children: [
517
- /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
518
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
519
- ] }),
520
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
521
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
522
- review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-emerald-600", children: [
523
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 16 }),
524
- verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-xs", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
525
- !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-xs", children: "Verified Purchase" })
526
- ] }),
527
- review.date && /* @__PURE__ */ jsxs(Fragment, { children: [
528
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "\xB7" }),
529
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: review.date })
530
- ] })
531
- ] })
519
+ review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
520
+ /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
521
+ /* @__PURE__ */ jsxs(
522
+ "div",
523
+ {
524
+ className: cn("flex items-center gap-5", authorClassName),
525
+ children: [
526
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
527
+ /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
528
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
529
+ ] }),
530
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-base flex-col items-start", children: [
531
+ review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
532
+ review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
533
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
534
+ verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
535
+ !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
536
+ ] })
537
+ ] })
538
+ ]
539
+ }
540
+ ),
541
+ review.date && /* @__PURE__ */ jsx("span", { className: "relative", children: review.date })
532
542
  ] })
533
543
  ] })
534
544
  ] }, index);
535
545
  }) });
536
- }, [reviewsSlot, reviews, reviewClassName, contentClassName, authorClassName, verifiedPurchaseLabel, getAuthorName, getInitials]);
546
+ }, [
547
+ reviewsSlot,
548
+ reviews,
549
+ reviewClassName,
550
+ contentClassName,
551
+ authorClassName,
552
+ verifiedPurchaseLabel,
553
+ getAuthorName,
554
+ getInitials
555
+ ]);
537
556
  return /* @__PURE__ */ jsx(
538
557
  Section,
539
558
  {
@@ -542,21 +561,21 @@ function TestimonialsListVerified({
542
561
  pattern,
543
562
  patternOpacity,
544
563
  className,
545
- children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl", children: [
546
- /* @__PURE__ */ jsxs("div", { className: cn("mb-8", headerClassName), children: [
564
+ children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
565
+ /* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
547
566
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
548
567
  "h2",
549
568
  {
550
569
  className: cn(
551
- "text-2xl font-semibold tracking-tight md:text-3xl",
570
+ "text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
552
571
  headingClassName
553
572
  ),
554
573
  children: heading
555
574
  }
556
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
575
+ ) : heading),
557
576
  totalReviews > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
558
- /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 20 }),
559
- /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
577
+ /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
578
+ /* @__PURE__ */ jsxs("span", { className: "text-sm", children: [
560
579
  averageRating.toFixed(1),
561
580
  " out of 5 \xB7 ",
562
581
  totalReviews,
@@ -508,18 +508,25 @@ function TestimonialsLogoCards({
508
508
  quoteClassName,
509
509
  authorClassName,
510
510
  background,
511
- spacing,
511
+ spacing = "lg",
512
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
512
513
  pattern,
513
514
  patternOpacity,
514
515
  optixFlowConfig
515
516
  }) {
516
- const getAuthorName = React.useCallback((testimonial) => {
517
- if (typeof testimonial.author === "string") return testimonial.author;
518
- return "";
519
- }, []);
520
- const getAvatarSrc = React.useCallback((testimonial) => {
521
- return testimonial.avatarSrc || testimonial.avatar?.src;
522
- }, []);
517
+ const getAuthorName = React.useCallback(
518
+ (testimonial) => {
519
+ if (typeof testimonial.author === "string") return testimonial.author;
520
+ return "";
521
+ },
522
+ []
523
+ );
524
+ const getAvatarSrc = React.useCallback(
525
+ (testimonial) => {
526
+ return testimonial.avatarSrc || testimonial.avatar?.src;
527
+ },
528
+ []
529
+ );
523
530
  const getInitials = React.useCallback((name) => {
524
531
  return name.split(" ").map((n) => n[0]).join("");
525
532
  }, []);
@@ -550,7 +557,10 @@ function TestimonialsLogoCards({
550
557
  {
551
558
  src: testimonial.companyLogo,
552
559
  alt: testimonial.companyLogoAlt || "Company logo",
553
- className: "h-6 w-auto object-contain dark:invert",
560
+ className: cn(
561
+ index === 0 ? "h-10" : "h-5",
562
+ "w-auto object-contain"
563
+ ),
554
564
  optixFlowConfig
555
565
  }
556
566
  ) }),
@@ -567,20 +577,29 @@ function TestimonialsLogoCards({
567
577
  {
568
578
  className: cn(
569
579
  "leading-relaxed",
570
- index === 0 ? "text-xl font-medium" : "text-sm",
580
+ index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
571
581
  quoteClassName
572
582
  ),
573
583
  children: testimonial.quote
574
584
  }
575
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
585
+ ) : testimonial.quote),
576
586
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
577
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: cn(index === 0 ? "size-12" : "size-10"), children: [
578
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
579
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
580
- ] }),
587
+ /* @__PURE__ */ jsxRuntime.jsxs(
588
+ Avatar,
589
+ {
590
+ className: cn(
591
+ index === 0 ? "size-12" : "size-10",
592
+ "ring-4 ring-primary"
593
+ ),
594
+ children: [
595
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
596
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
597
+ ]
598
+ }
599
+ ),
581
600
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
582
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm font-medium not-italic", children: testimonial.author }) : testimonial.author),
583
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
601
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
602
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
584
603
  ] })
585
604
  ] })
586
605
  ]
@@ -593,7 +612,20 @@ function TestimonialsLogoCards({
593
612
  })
594
613
  }
595
614
  );
596
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardHeaderClassName, optixFlowConfig, cardContentClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
615
+ }, [
616
+ testimonialsSlot,
617
+ gridClassName,
618
+ testimonials,
619
+ cardClassName,
620
+ cardHeaderClassName,
621
+ optixFlowConfig,
622
+ cardContentClassName,
623
+ quoteClassName,
624
+ authorClassName,
625
+ getAuthorName,
626
+ getAvatarSrc,
627
+ getInitials
628
+ ]);
597
629
  return /* @__PURE__ */ jsxRuntime.jsxs(
598
630
  Section,
599
631
  {
@@ -602,6 +634,7 @@ function TestimonialsLogoCards({
602
634
  pattern,
603
635
  patternOpacity,
604
636
  className,
637
+ containerClassName,
605
638
  children: [
606
639
  /* @__PURE__ */ jsxRuntime.jsxs(
607
640
  "div",
@@ -617,17 +650,8 @@ function TestimonialsLogoCards({
617
650
  ),
618
651
  children: heading
619
652
  }
620
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
621
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
622
- "p",
623
- {
624
- className: cn(
625
- "mt-4 text-lg text-muted-foreground",
626
- descriptionClassName
627
- ),
628
- children: description
629
- }
630
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
653
+ ) : heading),
654
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : description)
631
655
  ]
632
656
  }
633
657
  ),
@@ -97,6 +97,10 @@ interface TestimonialsLogoCardsProps {
97
97
  * OptixFlow image optimization configuration
98
98
  */
99
99
  optixFlowConfig?: OptixFlowConfig;
100
+ /**
101
+ * Additional CSS classes for the container
102
+ */
103
+ containerClassName?: string;
100
104
  }
101
105
  /**
102
106
  * TestimonialsLogoCards - A grid of testimonial cards featuring company logos in the
@@ -125,6 +129,6 @@ interface TestimonialsLogoCardsProps {
125
129
  * />
126
130
  * ```
127
131
  */
128
- declare function TestimonialsLogoCards({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, cardHeaderClassName, cardContentClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: TestimonialsLogoCardsProps): React.JSX.Element;
132
+ declare function TestimonialsLogoCards({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, cardHeaderClassName, cardContentClassName, quoteClassName, authorClassName, background, spacing, containerClassName, pattern, patternOpacity, optixFlowConfig, }: TestimonialsLogoCardsProps): React.JSX.Element;
129
133
 
130
134
  export { type LogoTestimonialItem, TestimonialsLogoCards, type TestimonialsLogoCardsProps };
@@ -97,6 +97,10 @@ interface TestimonialsLogoCardsProps {
97
97
  * OptixFlow image optimization configuration
98
98
  */
99
99
  optixFlowConfig?: OptixFlowConfig;
100
+ /**
101
+ * Additional CSS classes for the container
102
+ */
103
+ containerClassName?: string;
100
104
  }
101
105
  /**
102
106
  * TestimonialsLogoCards - A grid of testimonial cards featuring company logos in the
@@ -125,6 +129,6 @@ interface TestimonialsLogoCardsProps {
125
129
  * />
126
130
  * ```
127
131
  */
128
- declare function TestimonialsLogoCards({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, cardHeaderClassName, cardContentClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, }: TestimonialsLogoCardsProps): React.JSX.Element;
132
+ declare function TestimonialsLogoCards({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, cardHeaderClassName, cardContentClassName, quoteClassName, authorClassName, background, spacing, containerClassName, pattern, patternOpacity, optixFlowConfig, }: TestimonialsLogoCardsProps): React.JSX.Element;
129
133
 
130
134
  export { type LogoTestimonialItem, TestimonialsLogoCards, type TestimonialsLogoCardsProps };
@@ -483,18 +483,25 @@ function TestimonialsLogoCards({
483
483
  quoteClassName,
484
484
  authorClassName,
485
485
  background,
486
- spacing,
486
+ spacing = "lg",
487
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
487
488
  pattern,
488
489
  patternOpacity,
489
490
  optixFlowConfig
490
491
  }) {
491
- const getAuthorName = useCallback((testimonial) => {
492
- if (typeof testimonial.author === "string") return testimonial.author;
493
- return "";
494
- }, []);
495
- const getAvatarSrc = useCallback((testimonial) => {
496
- return testimonial.avatarSrc || testimonial.avatar?.src;
497
- }, []);
492
+ const getAuthorName = useCallback(
493
+ (testimonial) => {
494
+ if (typeof testimonial.author === "string") return testimonial.author;
495
+ return "";
496
+ },
497
+ []
498
+ );
499
+ const getAvatarSrc = useCallback(
500
+ (testimonial) => {
501
+ return testimonial.avatarSrc || testimonial.avatar?.src;
502
+ },
503
+ []
504
+ );
498
505
  const getInitials = useCallback((name) => {
499
506
  return name.split(" ").map((n) => n[0]).join("");
500
507
  }, []);
@@ -525,7 +532,10 @@ function TestimonialsLogoCards({
525
532
  {
526
533
  src: testimonial.companyLogo,
527
534
  alt: testimonial.companyLogoAlt || "Company logo",
528
- className: "h-6 w-auto object-contain dark:invert",
535
+ className: cn(
536
+ index === 0 ? "h-10" : "h-5",
537
+ "w-auto object-contain"
538
+ ),
529
539
  optixFlowConfig
530
540
  }
531
541
  ) }),
@@ -542,20 +552,29 @@ function TestimonialsLogoCards({
542
552
  {
543
553
  className: cn(
544
554
  "leading-relaxed",
545
- index === 0 ? "text-xl font-medium" : "text-sm",
555
+ index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
546
556
  quoteClassName
547
557
  ),
548
558
  children: testimonial.quote
549
559
  }
550
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
560
+ ) : testimonial.quote),
551
561
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
552
- /* @__PURE__ */ jsxs(Avatar, { className: cn(index === 0 ? "size-12" : "size-10"), children: [
553
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
554
- /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
555
- ] }),
562
+ /* @__PURE__ */ jsxs(
563
+ Avatar,
564
+ {
565
+ className: cn(
566
+ index === 0 ? "size-12" : "size-10",
567
+ "ring-4 ring-primary"
568
+ ),
569
+ children: [
570
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
571
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
572
+ ]
573
+ }
574
+ ),
556
575
  /* @__PURE__ */ jsxs("div", { children: [
557
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium not-italic", children: testimonial.author }) : testimonial.author),
558
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
576
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
577
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
559
578
  ] })
560
579
  ] })
561
580
  ]
@@ -568,7 +587,20 @@ function TestimonialsLogoCards({
568
587
  })
569
588
  }
570
589
  );
571
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardHeaderClassName, optixFlowConfig, cardContentClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
590
+ }, [
591
+ testimonialsSlot,
592
+ gridClassName,
593
+ testimonials,
594
+ cardClassName,
595
+ cardHeaderClassName,
596
+ optixFlowConfig,
597
+ cardContentClassName,
598
+ quoteClassName,
599
+ authorClassName,
600
+ getAuthorName,
601
+ getAvatarSrc,
602
+ getInitials
603
+ ]);
572
604
  return /* @__PURE__ */ jsxs(
573
605
  Section,
574
606
  {
@@ -577,6 +609,7 @@ function TestimonialsLogoCards({
577
609
  pattern,
578
610
  patternOpacity,
579
611
  className,
612
+ containerClassName,
580
613
  children: [
581
614
  /* @__PURE__ */ jsxs(
582
615
  "div",
@@ -592,17 +625,8 @@ function TestimonialsLogoCards({
592
625
  ),
593
626
  children: heading
594
627
  }
595
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
596
- description && (typeof description === "string" ? /* @__PURE__ */ jsx(
597
- "p",
598
- {
599
- className: cn(
600
- "mt-4 text-lg text-muted-foreground",
601
- descriptionClassName
602
- ),
603
- children: description
604
- }
605
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
628
+ ) : heading),
629
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : description)
606
630
  ]
607
631
  }
608
632
  ),