@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
@@ -501,6 +501,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
501
501
  iconClassName,
502
502
  className,
503
503
  iconNameOverride,
504
+ iconOnly = false,
504
505
  ...pressableProps
505
506
  }, ref) => {
506
507
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
@@ -513,6 +514,21 @@ var SocialLinkIcon = React__namespace.forwardRef(
513
514
  const accessibleLabel = React__namespace.useMemo(() => {
514
515
  return label || platformName;
515
516
  }, [label, platformName]);
517
+ const icon = React__namespace.useMemo(() => {
518
+ return /* @__PURE__ */ jsxRuntime.jsx(
519
+ DynamicIcon,
520
+ {
521
+ name: iconName,
522
+ size: iconSize,
523
+ color: iconColor,
524
+ className: iconClassName,
525
+ alt: accessibleLabel
526
+ }
527
+ );
528
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
529
+ if (iconOnly) {
530
+ return icon;
531
+ }
516
532
  return /* @__PURE__ */ jsxRuntime.jsx(
517
533
  Pressable,
518
534
  {
@@ -524,16 +540,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
524
540
  className
525
541
  ),
526
542
  ...pressableProps,
527
- children: /* @__PURE__ */ jsxRuntime.jsx(
528
- DynamicIcon,
529
- {
530
- name: iconName,
531
- size: iconSize,
532
- color: iconColor,
533
- className: iconClassName,
534
- alt: accessibleLabel
535
- }
536
- )
543
+ children: icon
537
544
  }
538
545
  );
539
546
  }
@@ -45,6 +45,11 @@ interface SocialLinkIconProps extends Omit<PressableProps, "children">, SocialLi
45
45
  * Required href for the link
46
46
  */
47
47
  href: string;
48
+ /**
49
+ * Return icon only
50
+ * @default false
51
+ */
52
+ iconOnly?: boolean;
48
53
  }
49
54
  /**
50
55
  * SocialLinkIcon - A reusable social media link icon component.
@@ -45,6 +45,11 @@ interface SocialLinkIconProps extends Omit<PressableProps, "children">, SocialLi
45
45
  * Required href for the link
46
46
  */
47
47
  href: string;
48
+ /**
49
+ * Return icon only
50
+ * @default false
51
+ */
52
+ iconOnly?: boolean;
48
53
  }
49
54
  /**
50
55
  * SocialLinkIcon - A reusable social media link icon component.
@@ -479,6 +479,7 @@ var SocialLinkIcon = React.forwardRef(
479
479
  iconClassName,
480
480
  className,
481
481
  iconNameOverride,
482
+ iconOnly = false,
482
483
  ...pressableProps
483
484
  }, ref) => {
484
485
  const platform = usePlatformFromUrl(href);
@@ -491,6 +492,21 @@ var SocialLinkIcon = React.forwardRef(
491
492
  const accessibleLabel = React.useMemo(() => {
492
493
  return label || platformName;
493
494
  }, [label, platformName]);
495
+ const icon = React.useMemo(() => {
496
+ return /* @__PURE__ */ jsx(
497
+ DynamicIcon,
498
+ {
499
+ name: iconName,
500
+ size: iconSize,
501
+ color: iconColor,
502
+ className: iconClassName,
503
+ alt: accessibleLabel
504
+ }
505
+ );
506
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
507
+ if (iconOnly) {
508
+ return icon;
509
+ }
494
510
  return /* @__PURE__ */ jsx(
495
511
  Pressable,
496
512
  {
@@ -502,16 +518,7 @@ var SocialLinkIcon = React.forwardRef(
502
518
  className
503
519
  ),
504
520
  ...pressableProps,
505
- children: /* @__PURE__ */ jsx(
506
- DynamicIcon,
507
- {
508
- name: iconName,
509
- size: iconSize,
510
- color: iconColor,
511
- className: iconClassName,
512
- alt: accessibleLabel
513
- }
514
- )
521
+ children: icon
515
522
  }
516
523
  );
517
524
  }
@@ -1003,14 +1003,14 @@ function TestimonialsAnimatedSplit({
1003
1003
  animate: { opacity: 1, y: 0 },
1004
1004
  exit: { opacity: 0, y: -20 },
1005
1005
  transition: { duration: 0.4 },
1006
- className: "space-y-6",
1006
+ className: "space-y-4 md:space-y-6",
1007
1007
  children: [
1008
1008
  /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
1009
1009
  current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1010
1010
  "blockquote",
1011
1011
  {
1012
1012
  className: cn(
1013
- "text-lg font-base leading-relaxed md:text-2xl",
1013
+ "text-base md:text-lg font-thin leading-normal md:leading-relaxed md:text-2xl line-clamp-4",
1014
1014
  quoteClassName
1015
1015
  ),
1016
1016
  children: current.quote
@@ -1022,9 +1022,9 @@ function TestimonialsAnimatedSplit({
1022
1022
  /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
1023
1023
  ] }),
1024
1024
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
1025
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
1026
- current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: current.author }) : current.author),
1027
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-base tracking-wide", children: [
1025
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row items-start md:items-center gap-0 md:gap-1", children: [
1026
+ current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm md:text-base font-semibold", children: current.author }) : current.author),
1027
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm md:text-base font-normal tracking-normal md:tracking-wide", children: [
1028
1028
  current.role && (typeof current.role === "string" ? current.role : null),
1029
1029
  current.company && (typeof current.company === "string" ? ` at ${current.company}` : null)
1030
1030
  ] })
@@ -981,14 +981,14 @@ function TestimonialsAnimatedSplit({
981
981
  animate: { opacity: 1, y: 0 },
982
982
  exit: { opacity: 0, y: -20 },
983
983
  transition: { duration: 0.4 },
984
- className: "space-y-6",
984
+ className: "space-y-4 md:space-y-6",
985
985
  children: [
986
986
  /* @__PURE__ */ jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
987
987
  current.quote && (typeof current.quote === "string" ? /* @__PURE__ */ jsx(
988
988
  "blockquote",
989
989
  {
990
990
  className: cn(
991
- "text-lg font-base leading-relaxed md:text-2xl",
991
+ "text-base md:text-lg font-thin leading-normal md:leading-relaxed md:text-2xl line-clamp-4",
992
992
  quoteClassName
993
993
  ),
994
994
  children: current.quote
@@ -1000,9 +1000,9 @@ function TestimonialsAnimatedSplit({
1000
1000
  /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
1001
1001
  ] }),
1002
1002
  /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
1003
- /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
1004
- current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-semibold", children: current.author }) : current.author),
1005
- /* @__PURE__ */ jsxs("span", { className: "font-base tracking-wide", children: [
1003
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col md:flex-row items-start md:items-center gap-0 md:gap-1", children: [
1004
+ current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm md:text-base font-semibold", children: current.author }) : current.author),
1005
+ /* @__PURE__ */ jsxs("span", { className: "text-sm md:text-base font-normal tracking-normal md:tracking-wide", children: [
1006
1006
  current.role && (typeof current.role === "string" ? current.role : null),
1007
1007
  current.company && (typeof current.company === "string" ? ` at ${current.company}` : null)
1008
1008
  ] })
@@ -505,29 +505,6 @@ function AvatarFallback({
505
505
  }
506
506
  );
507
507
  }
508
- function Card({ className, ...props }) {
509
- return /* @__PURE__ */ jsxRuntime.jsx(
510
- "div",
511
- {
512
- "data-slot": "card",
513
- className: cn(
514
- "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
515
- className
516
- ),
517
- ...props
518
- }
519
- );
520
- }
521
- function CardContent({ className, ...props }) {
522
- return /* @__PURE__ */ jsxRuntime.jsx(
523
- "div",
524
- {
525
- "data-slot": "card-content",
526
- className: cn("px-6", className),
527
- ...props
528
- }
529
- );
530
- }
531
508
  var maxWidthStyles = {
532
509
  sm: "max-w-screen-sm",
533
510
  md: "max-w-screen-md",
@@ -956,10 +933,13 @@ function TestimonialsBentoGrid({
956
933
  ),
957
934
  children: [
958
935
  /* @__PURE__ */ jsxRuntime.jsx(
959
- Card,
936
+ "div",
960
937
  {
961
- className: cn("md:col-span-2 lg:row-span-2", featuredCardClassName),
962
- children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "flex h-full flex-col justify-between p-6 md:p-8", children: [
938
+ className: cn(
939
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm md:col-span-2 lg:row-span-2",
940
+ featuredCardClassName
941
+ ),
942
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 md:p-8 gap-8 md:gap-12", children: [
963
943
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
964
944
  /* @__PURE__ */ jsxRuntime.jsx(
965
945
  DynamicIcon,
@@ -989,11 +969,11 @@ function TestimonialsBentoGrid({
989
969
  {
990
970
  className: cn("mt-6 flex items-center gap-4", authorClassName),
991
971
  children: [
992
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12", children: [
972
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
993
973
  /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: featuredAvatarSrc, alt: featuredAuthorName }),
994
974
  /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(featuredAuthorName) })
995
975
  ] }),
996
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
976
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
997
977
  featured.author && (typeof featured.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: featured.author }) : featured.author),
998
978
  (featured.role || featured.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
999
979
  featured.role && (typeof featured.role === "string" ? featured.role : featured.role),
@@ -1004,7 +984,8 @@ function TestimonialsBentoGrid({
1004
984
  {
1005
985
  href: featured.linkConfig.href,
1006
986
  className: cn(
1007
- "text-sm text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
987
+ "text-sm transition-all duration-300",
988
+ "underline underline-offset-4",
1008
989
  featured.linkConfig.className
1009
990
  ),
1010
991
  children: featured.linkConfig.label
@@ -1020,34 +1001,45 @@ function TestimonialsBentoGrid({
1020
1001
  others.slice(0, 5).map((testimonial, index) => {
1021
1002
  const authorName = getAuthorName(testimonial);
1022
1003
  const avatarSrc = getAvatarSrc(testimonial);
1023
- return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "flex h-full flex-col justify-between p-6", children: [
1024
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
1025
- "\u201C",
1026
- testimonial.quote,
1027
- "\u201D"
1028
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
1029
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
1030
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-9", children: [
1031
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
1032
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
1033
- ] }),
1034
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1035
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
1036
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role),
1037
- testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
1038
- Pressable,
1039
- {
1040
- href: testimonial.linkConfig.href,
1041
- className: cn(
1042
- "text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
1043
- testimonial.linkConfig.className
1044
- ),
1045
- children: testimonial.linkConfig.label
1046
- }
1047
- )
1004
+ return /* @__PURE__ */ jsxRuntime.jsx(
1005
+ "div",
1006
+ {
1007
+ className: cn(
1008
+ cardClassName,
1009
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
1010
+ ),
1011
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
1012
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
1013
+ "\u201C",
1014
+ testimonial.quote,
1015
+ "\u201D"
1016
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
1017
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
1018
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
1019
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
1020
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
1021
+ ] }),
1022
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
1023
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
1024
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
1025
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
1026
+ Pressable,
1027
+ {
1028
+ href: testimonial.linkConfig.href,
1029
+ className: cn(
1030
+ "text-sm transition-all duration-300",
1031
+ "underline underline-offset-4",
1032
+ testimonial.linkConfig.className
1033
+ ),
1034
+ children: testimonial.linkConfig.label
1035
+ }
1036
+ )
1037
+ ] })
1038
+ ] })
1048
1039
  ] })
1049
- ] })
1050
- ] }) }, index);
1040
+ },
1041
+ index
1042
+ );
1051
1043
  })
1052
1044
  ]
1053
1045
  }
@@ -483,29 +483,6 @@ function AvatarFallback({
483
483
  }
484
484
  );
485
485
  }
486
- function Card({ className, ...props }) {
487
- return /* @__PURE__ */ jsx(
488
- "div",
489
- {
490
- "data-slot": "card",
491
- className: cn(
492
- "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
493
- className
494
- ),
495
- ...props
496
- }
497
- );
498
- }
499
- function CardContent({ className, ...props }) {
500
- return /* @__PURE__ */ jsx(
501
- "div",
502
- {
503
- "data-slot": "card-content",
504
- className: cn("px-6", className),
505
- ...props
506
- }
507
- );
508
- }
509
486
  var maxWidthStyles = {
510
487
  sm: "max-w-screen-sm",
511
488
  md: "max-w-screen-md",
@@ -934,10 +911,13 @@ function TestimonialsBentoGrid({
934
911
  ),
935
912
  children: [
936
913
  /* @__PURE__ */ jsx(
937
- Card,
914
+ "div",
938
915
  {
939
- className: cn("md:col-span-2 lg:row-span-2", featuredCardClassName),
940
- children: /* @__PURE__ */ jsxs(CardContent, { className: "flex h-full flex-col justify-between p-6 md:p-8", children: [
916
+ className: cn(
917
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm md:col-span-2 lg:row-span-2",
918
+ featuredCardClassName
919
+ ),
920
+ children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col justify-between p-6 md:p-8 gap-8 md:gap-12", children: [
941
921
  /* @__PURE__ */ jsxs("div", { children: [
942
922
  /* @__PURE__ */ jsx(
943
923
  DynamicIcon,
@@ -967,11 +947,11 @@ function TestimonialsBentoGrid({
967
947
  {
968
948
  className: cn("mt-6 flex items-center gap-4", authorClassName),
969
949
  children: [
970
- /* @__PURE__ */ jsxs(Avatar, { className: "size-12", children: [
950
+ /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
971
951
  /* @__PURE__ */ jsx(AvatarImage, { src: featuredAvatarSrc, alt: featuredAuthorName }),
972
952
  /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(featuredAuthorName) })
973
953
  ] }),
974
- /* @__PURE__ */ jsxs("div", { children: [
954
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0 leading-tight", children: [
975
955
  featured.author && (typeof featured.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-semibold", children: featured.author }) : featured.author),
976
956
  (featured.role || featured.company) && /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
977
957
  featured.role && (typeof featured.role === "string" ? featured.role : featured.role),
@@ -982,7 +962,8 @@ function TestimonialsBentoGrid({
982
962
  {
983
963
  href: featured.linkConfig.href,
984
964
  className: cn(
985
- "text-sm text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
965
+ "text-sm transition-all duration-300",
966
+ "underline underline-offset-4",
986
967
  featured.linkConfig.className
987
968
  ),
988
969
  children: featured.linkConfig.label
@@ -998,34 +979,45 @@ function TestimonialsBentoGrid({
998
979
  others.slice(0, 5).map((testimonial, index) => {
999
980
  const authorName = getAuthorName(testimonial);
1000
981
  const avatarSrc = getAvatarSrc(testimonial);
1001
- return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "flex h-full flex-col justify-between p-6", children: [
1002
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
1003
- "\u201C",
1004
- testimonial.quote,
1005
- "\u201D"
1006
- ] }) : /* @__PURE__ */ jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
1007
- /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
1008
- /* @__PURE__ */ jsxs(Avatar, { className: "size-9", children: [
1009
- /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
1010
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
1011
- ] }),
1012
- /* @__PURE__ */ jsxs("div", { children: [
1013
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
1014
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role),
1015
- testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
1016
- Pressable,
1017
- {
1018
- href: testimonial.linkConfig.href,
1019
- className: cn(
1020
- "text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors",
1021
- testimonial.linkConfig.className
1022
- ),
1023
- children: testimonial.linkConfig.label
1024
- }
1025
- )
982
+ return /* @__PURE__ */ jsx(
983
+ "div",
984
+ {
985
+ className: cn(
986
+ cardClassName,
987
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
988
+ ),
989
+ children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
990
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
991
+ "\u201C",
992
+ testimonial.quote,
993
+ "\u201D"
994
+ ] }) : /* @__PURE__ */ jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
995
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
996
+ /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
997
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
998
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
999
+ ] }),
1000
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0 leading-tight", children: [
1001
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
1002
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
1003
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
1004
+ Pressable,
1005
+ {
1006
+ href: testimonial.linkConfig.href,
1007
+ className: cn(
1008
+ "text-sm transition-all duration-300",
1009
+ "underline underline-offset-4",
1010
+ testimonial.linkConfig.className
1011
+ ),
1012
+ children: testimonial.linkConfig.label
1013
+ }
1014
+ )
1015
+ ] })
1016
+ ] })
1026
1017
  ] })
1027
- ] })
1028
- ] }) }, index);
1018
+ },
1019
+ index
1020
+ );
1029
1021
  })
1030
1022
  ]
1031
1023
  }