@opensite/ui 2.9.0 → 2.9.2

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 (51) hide show
  1. package/dist/carousel-feature-badge.cjs +4 -3
  2. package/dist/carousel-feature-badge.d.cts +1 -1
  3. package/dist/carousel-feature-badge.d.ts +1 -1
  4. package/dist/carousel-feature-badge.js +4 -3
  5. package/dist/carousel-scrolling-feature-showcase.cjs +47 -38
  6. package/dist/carousel-scrolling-feature-showcase.js +47 -38
  7. package/dist/registry.cjs +454 -265
  8. package/dist/registry.js +454 -265
  9. package/dist/testimonials-grid-add-review.cjs +578 -39
  10. package/dist/testimonials-grid-add-review.d.cts +26 -26
  11. package/dist/testimonials-grid-add-review.d.ts +26 -26
  12. package/dist/testimonials-grid-add-review.js +577 -38
  13. package/dist/testimonials-images-helpful.cjs +85 -74
  14. package/dist/testimonials-images-helpful.js +85 -74
  15. package/dist/testimonials-list-verified.cjs +1 -0
  16. package/dist/testimonials-list-verified.js +1 -0
  17. package/dist/testimonials-logo-cards.cjs +8 -5
  18. package/dist/testimonials-logo-cards.js +8 -5
  19. package/dist/testimonials-masonry-grid.cjs +87 -11
  20. package/dist/testimonials-masonry-grid.d.cts +14 -1
  21. package/dist/testimonials-masonry-grid.d.ts +14 -1
  22. package/dist/testimonials-masonry-grid.js +88 -12
  23. package/dist/testimonials-mini-dividers.cjs +438 -26
  24. package/dist/testimonials-mini-dividers.js +434 -22
  25. package/dist/testimonials-minimal-numbered.cjs +1 -1
  26. package/dist/testimonials-minimal-numbered.js +1 -1
  27. package/dist/testimonials-parallax-number.cjs +1 -1
  28. package/dist/testimonials-parallax-number.js +1 -1
  29. package/dist/testimonials-quote-carousel.cjs +39 -37
  30. package/dist/testimonials-quote-carousel.d.cts +5 -1
  31. package/dist/testimonials-quote-carousel.d.ts +5 -1
  32. package/dist/testimonials-quote-carousel.js +39 -37
  33. package/dist/testimonials-scrolling-columns.cjs +438 -8
  34. package/dist/testimonials-scrolling-columns.js +436 -6
  35. package/dist/testimonials-simple-grid.cjs +82 -6
  36. package/dist/testimonials-simple-grid.d.cts +14 -1
  37. package/dist/testimonials-simple-grid.d.ts +14 -1
  38. package/dist/testimonials-simple-grid.js +83 -7
  39. package/dist/testimonials-stats-header.cjs +88 -8
  40. package/dist/testimonials-stats-header.d.cts +14 -1
  41. package/dist/testimonials-stats-header.d.ts +14 -1
  42. package/dist/testimonials-stats-header.js +89 -9
  43. package/dist/testimonials-twitter-cards.cjs +150 -25
  44. package/dist/testimonials-twitter-cards.d.cts +14 -1
  45. package/dist/testimonials-twitter-cards.d.ts +14 -1
  46. package/dist/testimonials-twitter-cards.js +151 -26
  47. package/dist/testimonials-wall-compact.cjs +529 -50
  48. package/dist/testimonials-wall-compact.d.cts +14 -1
  49. package/dist/testimonials-wall-compact.d.ts +14 -1
  50. package/dist/testimonials-wall-compact.js +526 -44
  51. package/package.json +1 -1
package/dist/registry.js CHANGED
@@ -19877,7 +19877,6 @@ function CarouselFeatureBadge({
19877
19877
  items,
19878
19878
  itemsSlot,
19879
19879
  className,
19880
- containerClassName,
19881
19880
  contentClassName,
19882
19881
  badgeClassName,
19883
19882
  headingClassName,
@@ -19889,7 +19888,8 @@ function CarouselFeatureBadge({
19889
19888
  actionsSlot,
19890
19889
  actionsClassName,
19891
19890
  background,
19892
- spacing = "none",
19891
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
19892
+ spacing = "xl",
19893
19893
  pattern,
19894
19894
  patternOpacity,
19895
19895
  slideLayoutVariant = "square",
@@ -19995,7 +19995,8 @@ function CarouselFeatureBadge({
19995
19995
  pattern,
19996
19996
  patternOpacity,
19997
19997
  containerMaxWidth,
19998
- children: /* @__PURE__ */ jsx("div", { className: cn("mx-auto", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-end justify-end gap-6 md:gap-20 lg:grid-cols-2", children: [
19998
+ containerClassName,
19999
+ children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-end justify-end gap-6 md:gap-20 lg:grid-cols-2", children: [
19999
20000
  /* @__PURE__ */ jsxs(
20000
20001
  "div",
20001
20002
  {
@@ -21950,49 +21951,58 @@ function CarouselScrollingFeatureShowcase({
21950
21951
  ) })
21951
21952
  }
21952
21953
  ) }) }),
21953
- /* @__PURE__ */ jsx("div", { className: cn("space-y-12 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
21954
+ /* @__PURE__ */ jsx(
21954
21955
  "div",
21955
21956
  {
21956
- ref: setFeatureRef(feature.id),
21957
- "data-feature-id": feature.id,
21958
21957
  className: cn(
21959
- "scroll-mt-24 transition-opacity duration-300",
21960
- activeFeature === feature.id ? "opacity-100" : "opacity-50",
21961
- feature.className
21958
+ "space-y-12 lg:space-y-32 lg:pb-[60vh]",
21959
+ featuresClassName
21962
21960
  ),
21963
- children: [
21964
- /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-xl shadow-xl", children: /* @__PURE__ */ jsx(
21965
- Img,
21966
- {
21967
- src: feature.image,
21968
- alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
21969
- className: cn(
21970
- "h-full w-full object-cover",
21971
- feature.imageClassName
21972
- ),
21973
- optixFlowConfig
21974
- }
21975
- ) }) }),
21976
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
21977
- /* @__PURE__ */ jsx(
21978
- "div",
21979
- {
21980
- className: cn(
21981
- "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
21982
- numberBadgeClassName
21983
- ),
21984
- children: index + 1
21985
- }
21961
+ children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
21962
+ "div",
21963
+ {
21964
+ ref: setFeatureRef(feature.id),
21965
+ "data-feature-id": feature.id,
21966
+ className: cn(
21967
+ "scroll-mt-24 transition-opacity duration-300",
21968
+ activeFeature === feature.id ? "opacity-100" : "opacity-50",
21969
+ feature.className
21986
21970
  ),
21987
- /* @__PURE__ */ jsxs("div", { children: [
21988
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-xl md:text-2xl font-semibold", children: feature.title }) : feature.title),
21989
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-base md:text-lg", children: feature.description }) : feature.description)
21990
- ] })
21991
- ] })
21992
- ]
21993
- },
21994
- feature.id
21995
- )) })
21971
+ children: [
21972
+ /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-xl shadow-xl", children: /* @__PURE__ */ jsx(
21973
+ Img,
21974
+ {
21975
+ src: feature.image,
21976
+ alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
21977
+ className: cn(
21978
+ "h-full w-full object-cover",
21979
+ feature.imageClassName
21980
+ ),
21981
+ optixFlowConfig
21982
+ }
21983
+ ) }) }),
21984
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
21985
+ /* @__PURE__ */ jsx(
21986
+ "div",
21987
+ {
21988
+ className: cn(
21989
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
21990
+ numberBadgeClassName
21991
+ ),
21992
+ children: index + 1
21993
+ }
21994
+ ),
21995
+ /* @__PURE__ */ jsxs("div", { children: [
21996
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-xl md:text-2xl font-semibold", children: feature.title }) : feature.title),
21997
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-base md:text-lg", children: feature.description }) : feature.description)
21998
+ ] })
21999
+ ] })
22000
+ ]
22001
+ },
22002
+ feature.id
22003
+ ))
22004
+ }
22005
+ )
21996
22006
  ]
21997
22007
  }
21998
22008
  )
@@ -43365,6 +43375,7 @@ function TestimonialsListVerified({
43365
43375
  pattern,
43366
43376
  patternOpacity,
43367
43377
  className,
43378
+ containerClassName,
43368
43379
  children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
43369
43380
  /* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
43370
43381
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
@@ -43470,10 +43481,10 @@ function TestimonialsImagesHelpful({
43470
43481
  review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
43471
43482
  ] }),
43472
43483
  review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
43473
- review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex gap-3", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsx(
43484
+ review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap gap-4", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsx(
43474
43485
  "div",
43475
43486
  {
43476
- className: "size-20 cursor-pointer overflow-hidden rounded-lg sm:size-24 transition-transform duration-300 hover:scale-[1.03] shadow-sm hover:shadow-lg",
43487
+ className: "size-20 cursor-pointer overflow-hidden rounded-lg sm:size-24 transition-transform duration-300 hover:scale-[1.03] shadow-lg hover:shadow-xl ring-4 ring-primary",
43477
43488
  onClick: () => handleImageClick(review.images, imgIndex),
43478
43489
  role: "button",
43479
43490
  tabIndex: 0,
@@ -43496,80 +43507,91 @@ function TestimonialsImagesHelpful({
43496
43507
  },
43497
43508
  imgIndex
43498
43509
  )) }),
43499
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
43500
- /* @__PURE__ */ jsxs(
43501
- "div",
43502
- {
43503
- className: cn("flex items-center gap-5", authorClassName),
43504
- children: [
43505
- /* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
43506
- /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43507
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
43508
- ] }),
43509
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-0", children: [
43510
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
43511
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
43512
- review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
43513
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
43514
- verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43515
- !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
43516
- ] })
43517
- ] }),
43518
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
43519
- review.date && /* @__PURE__ */ jsx("span", { children: review.date }),
43520
- review.variant && /* @__PURE__ */ jsxs(Fragment$1, { children: [
43521
- /* @__PURE__ */ jsx("span", { children: "\xB7" }),
43522
- /* @__PURE__ */ jsx("span", { children: review.variant })
43510
+ /* @__PURE__ */ jsxs(
43511
+ "div",
43512
+ {
43513
+ className: cn(
43514
+ "flex items-center justify-between w-full flex-col md:flex-row gap-4"
43515
+ ),
43516
+ children: [
43517
+ /* @__PURE__ */ jsxs(
43518
+ "div",
43519
+ {
43520
+ className: cn(
43521
+ "flex items-center gap-5 w-full",
43522
+ authorClassName
43523
+ ),
43524
+ children: [
43525
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
43526
+ /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43527
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
43528
+ ] }),
43529
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-0", children: [
43530
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-col md:flex-row", children: [
43531
+ review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
43532
+ review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
43533
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
43534
+ verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43535
+ !verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
43536
+ ] })
43537
+ ] }),
43538
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
43539
+ review.date && /* @__PURE__ */ jsx("span", { children: review.date }),
43540
+ review.variant && /* @__PURE__ */ jsxs(Fragment$1, { children: [
43541
+ /* @__PURE__ */ jsx("span", { children: "\xB7" }),
43542
+ /* @__PURE__ */ jsx("span", { children: review.variant })
43543
+ ] })
43544
+ ] })
43523
43545
  ] })
43524
- ] })
43525
- ] })
43526
- ]
43527
- }
43528
- ),
43529
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
43530
- /* @__PURE__ */ jsxs(
43531
- Pressable,
43532
- {
43533
- asButton: true,
43534
- variant: "ghost",
43535
- size: "sm",
43536
- className: cn(
43537
- "h-8 gap-1.5",
43538
- helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
43546
+ ]
43547
+ }
43548
+ ),
43549
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
43550
+ /* @__PURE__ */ jsxs(
43551
+ Pressable,
43552
+ {
43553
+ asButton: true,
43554
+ variant: "ghost",
43555
+ size: "sm",
43556
+ className: cn(
43557
+ "h-8 gap-1.5",
43558
+ helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
43559
+ ),
43560
+ onClick: () => handleHelpful(index),
43561
+ children: [
43562
+ /* @__PURE__ */ jsx(
43563
+ DynamicIcon,
43564
+ {
43565
+ name: "lucide/thumbs-up",
43566
+ size: 16,
43567
+ className: cn(
43568
+ helpfulClicked.has(index) && "fill-current"
43569
+ )
43570
+ }
43571
+ ),
43572
+ "Helpful",
43573
+ review.helpful !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
43574
+ "(",
43575
+ review.helpful + (helpfulClicked.has(index) ? 1 : 0),
43576
+ ")"
43577
+ ] })
43578
+ ]
43579
+ }
43539
43580
  ),
43540
- onClick: () => handleHelpful(index),
43541
- children: [
43542
- /* @__PURE__ */ jsx(
43543
- DynamicIcon,
43544
- {
43545
- name: "lucide/thumbs-up",
43546
- size: 16,
43547
- className: cn(
43548
- helpfulClicked.has(index) && "fill-current"
43549
- )
43550
- }
43551
- ),
43552
- "Helpful",
43553
- review.helpful !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
43554
- "(",
43555
- review.helpful + (helpfulClicked.has(index) ? 1 : 0),
43556
- ")"
43557
- ] })
43558
- ]
43559
- }
43560
- ),
43561
- /* @__PURE__ */ jsx(
43562
- Pressable,
43563
- {
43564
- asButton: true,
43565
- variant: "ghost",
43566
- size: "sm",
43567
- className: "h-8 text-muted-foreground",
43568
- children: reportButtonLabel ?? "Report"
43569
- }
43570
- )
43571
- ] })
43572
- ] })
43581
+ /* @__PURE__ */ jsx(
43582
+ Pressable,
43583
+ {
43584
+ asButton: true,
43585
+ variant: "ghost",
43586
+ size: "sm",
43587
+ className: "h-8 text-muted-foreground",
43588
+ children: reportButtonLabel ?? "Report"
43589
+ }
43590
+ )
43591
+ ] })
43592
+ ]
43593
+ }
43594
+ )
43573
43595
  ] })
43574
43596
  ] }, index);
43575
43597
  }) });
@@ -43887,7 +43909,10 @@ function TestimonialsTwitterCards({
43887
43909
  spacing = "lg",
43888
43910
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
43889
43911
  pattern,
43890
- patternOpacity
43912
+ patternOpacity,
43913
+ actions,
43914
+ actionsSlot,
43915
+ actionsClassName
43891
43916
  }) {
43892
43917
  const getAuthorName = useCallback(
43893
43918
  (testimonial) => {
@@ -43986,6 +44011,41 @@ function TestimonialsTwitterCards({
43986
44011
  getAuthorName,
43987
44012
  getInitials
43988
44013
  ]);
44014
+ const contentItems = useMemo(() => {
44015
+ const items = [];
44016
+ if (heading) {
44017
+ if (typeof heading === "string") {
44018
+ items.push({
44019
+ _type: "text",
44020
+ as: "h2",
44021
+ className: cn(
44022
+ "text-pretty text-3xl md:text-4xl lg:text-6xl",
44023
+ "font-semibold tracking-tight",
44024
+ headingClassName
44025
+ ),
44026
+ children: heading
44027
+ });
44028
+ } else {
44029
+ items.push(heading);
44030
+ }
44031
+ }
44032
+ if (description) {
44033
+ if (typeof description === "string") {
44034
+ items.push({
44035
+ _type: "text",
44036
+ as: "p",
44037
+ className: cn(
44038
+ "max-w-full md:max-w-md text-lg text-balance",
44039
+ descriptionClassName
44040
+ ),
44041
+ children: description
44042
+ });
44043
+ } else {
44044
+ items.push(description);
44045
+ }
44046
+ }
44047
+ return items;
44048
+ }, [heading, headingClassName, description, descriptionClassName]);
43989
44049
  return /* @__PURE__ */ jsxs(
43990
44050
  Section,
43991
44051
  {
@@ -43996,36 +44056,27 @@ function TestimonialsTwitterCards({
43996
44056
  className,
43997
44057
  containerClassName,
43998
44058
  children: [
43999
- /* @__PURE__ */ jsxs(
44000
- "div",
44059
+ /* @__PURE__ */ jsx(
44060
+ ContentGroup,
44001
44061
  {
44062
+ items: contentItems,
44002
44063
  className: cn(
44064
+ "flex flex-col items-center",
44003
44065
  "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
44004
44066
  headerClassName
44005
- ),
44006
- children: [
44007
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
44008
- "h2",
44009
- {
44010
- className: cn(
44011
- "text-pretty text-3xl md:text-4xl lg:text-6xl",
44012
- "font-semibold tracking-tight",
44013
- headingClassName
44014
- ),
44015
- children: heading
44016
- }
44017
- ) : heading),
44018
- description && (typeof description === "string" ? /* @__PURE__ */ jsx(
44019
- "p",
44020
- {
44021
- className: cn("mt-4 text-lg text-balance", descriptionClassName),
44022
- children: description
44023
- }
44024
- ) : description)
44025
- ]
44067
+ )
44026
44068
  }
44027
44069
  ),
44028
- renderedTestimonials
44070
+ renderedTestimonials,
44071
+ /* @__PURE__ */ jsx(
44072
+ BlockActions,
44073
+ {
44074
+ actions,
44075
+ actionsSlot,
44076
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
44077
+ mobileConfig: { width: "full", position: "center" }
44078
+ }
44079
+ )
44029
44080
  ]
44030
44081
  }
44031
44082
  );
@@ -44548,17 +44599,28 @@ function TestimonialsGridAddReview({
44548
44599
  descriptionClassName,
44549
44600
  gridClassName,
44550
44601
  cardClassName,
44602
+ quoteClassName,
44551
44603
  addReviewCardClassName,
44552
44604
  authorClassName,
44553
44605
  background,
44554
- spacing,
44606
+ spacing = "lg",
44607
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
44555
44608
  pattern,
44556
- patternOpacity
44609
+ patternOpacity,
44610
+ actions,
44611
+ actionsSlot,
44612
+ actionsClassName
44557
44613
  }) {
44558
- const getAuthorName = useCallback((review) => {
44559
- if (typeof review.author === "string") return review.author;
44614
+ const getAuthorName = useCallback((testimonial) => {
44615
+ if (typeof testimonial.author === "string") return testimonial.author;
44560
44616
  return "";
44561
44617
  }, []);
44618
+ const getAvatarSrc = useCallback(
44619
+ (testimonial) => {
44620
+ return testimonial.avatarSrc || testimonial.avatar?.src;
44621
+ },
44622
+ []
44623
+ );
44562
44624
  const getInitials = useCallback((name) => {
44563
44625
  return name.split(" ").map((n) => n[0]).join("");
44564
44626
  }, []);
@@ -44576,17 +44638,14 @@ function TestimonialsGridAddReview({
44576
44638
  Card,
44577
44639
  {
44578
44640
  className: cn(
44579
- "flex cursor-pointer items-center justify-center border-2 border-dashed transition-colors hover:border-primary hover:bg-muted/50",
44641
+ "flex cursor-pointer items-center justify-center border-2 border-dashed transition-all duration-500 opacity-100 hover:border-primary hover:opacity-75",
44580
44642
  addReviewCardClassName
44581
44643
  ),
44582
44644
  onClick: onAddReview,
44583
44645
  children: /* @__PURE__ */ jsxs(
44584
44646
  CardContent,
44585
44647
  {
44586
- className: cn(
44587
- "flex flex-col items-center gap-3 py-12 text-center",
44588
- getNestedCardTextColor(background)
44589
- ),
44648
+ className: cn("flex flex-col items-center gap-3 py-12 text-center"),
44590
44649
  children: [
44591
44650
  /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(
44592
44651
  DynamicIcon,
@@ -44603,19 +44662,58 @@ function TestimonialsGridAddReview({
44603
44662
  )
44604
44663
  }
44605
44664
  ),
44606
- reviews?.map((review, index) => {
44607
- const authorName = getAuthorName(review);
44608
- return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6", children: [
44609
- /* @__PURE__ */ jsx(StarRating, { rating: review.rating }),
44610
- review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: review.content }) : review.content),
44611
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
44612
- /* @__PURE__ */ jsxs(Avatar, { className: "size-8", children: [
44613
- /* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
44614
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
44615
- ] }),
44616
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: review.author }) : review.author)
44617
- ] })
44618
- ] }) }, index);
44665
+ reviews?.map((testimonial, index) => {
44666
+ const authorName = getAuthorName(testimonial);
44667
+ const avatarSrc = getAvatarSrc(testimonial);
44668
+ return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-12 justify-between", children: [
44669
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-4", children: [
44670
+ /* @__PURE__ */ jsx(StarRating, { rating: 5, size: 20 }),
44671
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
44672
+ "p",
44673
+ {
44674
+ className: cn(
44675
+ "mb-6 text-sm leading-relaxed",
44676
+ quoteClassName
44677
+ ),
44678
+ children: [
44679
+ "\u201C",
44680
+ testimonial.quote,
44681
+ "\u201D"
44682
+ ]
44683
+ }
44684
+ ) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", quoteClassName), children: testimonial.quote }))
44685
+ ] }),
44686
+ /* @__PURE__ */ jsxs(
44687
+ "div",
44688
+ {
44689
+ className: cn("flex items-center gap-4", authorClassName),
44690
+ children: [
44691
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-14 ring-4 ring-primary shadow-lg", children: [
44692
+ /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
44693
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
44694
+ ] }),
44695
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-1", children: [
44696
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0", children: [
44697
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
44698
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
44699
+ ] }),
44700
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
44701
+ Pressable,
44702
+ {
44703
+ href: testimonial.linkConfig.href,
44704
+ className: cn(
44705
+ "text-sm transition-all duration-500",
44706
+ "hover:underline hover:underline-offset-4",
44707
+ testimonial.linkConfig.className
44708
+ ),
44709
+ children: testimonial.linkConfig.label
44710
+ }
44711
+ )
44712
+ ] })
44713
+ ]
44714
+ }
44715
+ )
44716
+ ] }) }) }, index);
44619
44717
  })
44620
44718
  ]
44621
44719
  }
@@ -44641,36 +44739,49 @@ function TestimonialsGridAddReview({
44641
44739
  pattern,
44642
44740
  patternOpacity,
44643
44741
  className,
44742
+ containerClassName,
44644
44743
  children: [
44645
44744
  /* @__PURE__ */ jsxs(
44646
44745
  "div",
44647
44746
  {
44648
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
44747
+ className: cn(
44748
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
44749
+ headerClassName
44750
+ ),
44649
44751
  children: [
44650
44752
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
44651
44753
  "h2",
44652
44754
  {
44653
44755
  className: cn(
44654
- "text-3xl font-semibold tracking-tight md:text-4xl",
44756
+ "text-3xl font-semibold tracking-tight md:text-4xl text-pretty",
44655
44757
  headingClassName
44656
44758
  ),
44657
44759
  children: heading
44658
44760
  }
44659
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
44761
+ ) : heading),
44660
44762
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
44661
44763
  "p",
44662
44764
  {
44663
44765
  className: cn(
44664
- "mt-4 text-lg text-muted-foreground",
44766
+ "mt-2 md:mt-4 text-lg text-balance",
44665
44767
  descriptionClassName
44666
44768
  ),
44667
44769
  children: description
44668
44770
  }
44669
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
44771
+ ) : description)
44670
44772
  ]
44671
44773
  }
44672
44774
  ),
44673
- renderedReviews
44775
+ renderedReviews,
44776
+ /* @__PURE__ */ jsx(
44777
+ BlockActions,
44778
+ {
44779
+ actions,
44780
+ actionsSlot,
44781
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
44782
+ mobileConfig: { width: "full", position: "center" }
44783
+ }
44784
+ )
44674
44785
  ]
44675
44786
  }
44676
44787
  );
@@ -44870,7 +44981,10 @@ function TestimonialsSimpleGrid({
44870
44981
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
44871
44982
  spacing = "xl",
44872
44983
  pattern,
44873
- patternOpacity
44984
+ patternOpacity,
44985
+ actions,
44986
+ actionsSlot,
44987
+ actionsClassName
44874
44988
  }) {
44875
44989
  const getAuthorName = useCallback((testimonial) => {
44876
44990
  if (typeof testimonial.author === "string") return testimonial.author;
@@ -44892,7 +45006,7 @@ function TestimonialsSimpleGrid({
44892
45006
  "div",
44893
45007
  {
44894
45008
  className: cn(
44895
- "grid gap-4 md:gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
45009
+ "grid gap-8 md:gap-6 lg:gap-8 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
44896
45010
  gridClassName
44897
45011
  ),
44898
45012
  children: testimonials.map((testimonial, index) => {
@@ -44904,8 +45018,8 @@ function TestimonialsSimpleGrid({
44904
45018
  className: cn(
44905
45019
  "bg-card text-card-foreground",
44906
45020
  "flex flex-col gap-6",
44907
- testimonial.linkConfig?.href ? "cursor-pointer hover:bg-black hover:text-white transition-all duration-500" : "",
44908
- "rounded-2xl py-0 shadow-xl group",
45021
+ testimonial.linkConfig?.href ? "cursor-pointer hover:opacity-75 transition-all duration-500" : "opacity-100",
45022
+ "rounded-2xl py-0 shadow-xl group overflow-hidden",
44909
45023
  "ring-4 ring-ring",
44910
45024
  cardClassName
44911
45025
  ),
@@ -44956,7 +45070,7 @@ function TestimonialsSimpleGrid({
44956
45070
  ] })
44957
45071
  }
44958
45072
  ),
44959
- /* @__PURE__ */ jsx("div", { className: "pt-6 md: pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
45073
+ /* @__PURE__ */ jsx("div", { className: "pt-6 md:pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
44960
45074
  ]
44961
45075
  }
44962
45076
  )
@@ -45015,7 +45129,16 @@ function TestimonialsSimpleGrid({
45015
45129
  ]
45016
45130
  }
45017
45131
  ),
45018
- renderedTestimonials
45132
+ renderedTestimonials,
45133
+ /* @__PURE__ */ jsx(
45134
+ BlockActions,
45135
+ {
45136
+ actions,
45137
+ actionsSlot,
45138
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45139
+ mobileConfig: { width: "full", position: "center" }
45140
+ }
45141
+ )
45019
45142
  ]
45020
45143
  }
45021
45144
  );
@@ -45416,7 +45539,10 @@ function TestimonialsStatsHeader({
45416
45539
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
45417
45540
  spacing = "xl",
45418
45541
  pattern,
45419
- patternOpacity
45542
+ patternOpacity,
45543
+ actions,
45544
+ actionsSlot,
45545
+ actionsClassName
45420
45546
  }) {
45421
45547
  const getAuthorName = useCallback((testimonial) => {
45422
45548
  if (typeof testimonial.author === "string") return testimonial.author;
@@ -45451,6 +45577,7 @@ function TestimonialsStatsHeader({
45451
45577
  {
45452
45578
  className: cn(
45453
45579
  "overflow-hidden border p-0",
45580
+ "rounded-2xl shadow-xl",
45454
45581
  stat.className,
45455
45582
  statCardClassName
45456
45583
  ),
@@ -45476,7 +45603,10 @@ function TestimonialsStatsHeader({
45476
45603
  return /* @__PURE__ */ jsx(
45477
45604
  "div",
45478
45605
  {
45479
- className: cn("grid gap-6 md:grid-cols-3", testimonialsGridClassName),
45606
+ className: cn(
45607
+ "grid gap-6 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
45608
+ testimonialsGridClassName
45609
+ ),
45480
45610
  children: testimonials.map((testimonial, index) => {
45481
45611
  const authorName = getAuthorName(testimonial);
45482
45612
  const avatarSrc = getAvatarSrc(testimonial);
@@ -45508,14 +45638,14 @@ function TestimonialsStatsHeader({
45508
45638
  /* @__PURE__ */ jsxs(
45509
45639
  "div",
45510
45640
  {
45511
- className: cn("flex items-center gap-3", authorClassName),
45641
+ className: cn("flex items-center gap-4", authorClassName),
45512
45642
  children: [
45513
- /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
45643
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-14 ring-4 ring-primary shadow-lg", children: [
45514
45644
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
45515
45645
  /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
45516
45646
  ] }),
45517
- /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
45518
- /* @__PURE__ */ jsxs("div", { children: [
45647
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-1", children: [
45648
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0", children: [
45519
45649
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
45520
45650
  testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
45521
45651
  ] }),
@@ -45524,7 +45654,7 @@ function TestimonialsStatsHeader({
45524
45654
  {
45525
45655
  href: testimonial.linkConfig.href,
45526
45656
  className: cn(
45527
- "text-sm transition-all duration-300",
45657
+ "text-sm transition-all duration-500",
45528
45658
  "hover:underline hover:underline-offset-4",
45529
45659
  testimonial.linkConfig.className
45530
45660
  ),
@@ -45592,7 +45722,16 @@ function TestimonialsStatsHeader({
45592
45722
  }
45593
45723
  ),
45594
45724
  renderedStats,
45595
- renderedTestimonials
45725
+ renderedTestimonials,
45726
+ /* @__PURE__ */ jsx(
45727
+ BlockActions,
45728
+ {
45729
+ actions,
45730
+ actionsSlot,
45731
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45732
+ mobileConfig: { width: "full", position: "center" }
45733
+ }
45734
+ )
45596
45735
  ]
45597
45736
  }
45598
45737
  );
@@ -45612,9 +45751,12 @@ function TestimonialsWallCompact({
45612
45751
  quoteClassName,
45613
45752
  background,
45614
45753
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
45615
- spacing = "xl",
45754
+ spacing = "lg",
45616
45755
  pattern,
45617
- patternOpacity
45756
+ patternOpacity,
45757
+ actions,
45758
+ actionsSlot,
45759
+ actionsClassName
45618
45760
  }) {
45619
45761
  const getAuthorName = useCallback(
45620
45762
  (testimonial) => {
@@ -45649,9 +45791,8 @@ function TestimonialsWallCompact({
45649
45791
  "div",
45650
45792
  {
45651
45793
  className: cn(
45794
+ "bg-card text-card-foreground",
45652
45795
  "rounded-lg border p-4 transition-shadow hover:shadow-md",
45653
- getNestedCardBg(background, "card"),
45654
- getNestedCardTextColor(background),
45655
45796
  cardClassName
45656
45797
  ),
45657
45798
  children: [
@@ -45670,14 +45811,23 @@ function TestimonialsWallCompact({
45670
45811
  ] }),
45671
45812
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
45672
45813
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-medium", children: testimonial.author }) : testimonial.author),
45673
- testimonial.handle && /* @__PURE__ */ jsx("p", { className: "truncate text-xs ", children: testimonial.handle })
45814
+ testimonial.handle && /* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold opacity-75", children: testimonial.handle })
45674
45815
  ] })
45675
45816
  ] }),
45676
45817
  testimonial.badge && (typeof testimonial.badge === "string" ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "shrink-0 text-xs", children: testimonial.badge }) : testimonial.badge)
45677
45818
  ]
45678
45819
  }
45679
45820
  ),
45680
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm leading-relaxed", quoteClassName), children: testimonial.quote }) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote }))
45821
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
45822
+ "p",
45823
+ {
45824
+ className: cn(
45825
+ "text-sm leading-relaxed pt-2",
45826
+ quoteClassName
45827
+ ),
45828
+ children: testimonial.quote
45829
+ }
45830
+ ) : testimonial.quote)
45681
45831
  ]
45682
45832
  },
45683
45833
  index
@@ -45709,23 +45859,41 @@ function TestimonialsWallCompact({
45709
45859
  /* @__PURE__ */ jsxs(
45710
45860
  "div",
45711
45861
  {
45712
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
45862
+ className: cn(
45863
+ "mx-auto mb-12 max-w-full md:max-w-md text-center",
45864
+ headerClassName
45865
+ ),
45713
45866
  children: [
45714
45867
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
45715
45868
  "h2",
45716
45869
  {
45717
45870
  className: cn(
45718
- "text-3xl font-semibold tracking-tight md:text-4xl",
45871
+ "text-3xl font-semibold tracking-tight md:text-4xl text-pretty",
45719
45872
  headingClassName
45720
45873
  ),
45721
45874
  children: heading
45722
45875
  }
45723
45876
  ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
45724
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
45877
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
45878
+ "p",
45879
+ {
45880
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
45881
+ children: description
45882
+ }
45883
+ ) : description)
45725
45884
  ]
45726
45885
  }
45727
45886
  ),
45728
- renderedTestimonials
45887
+ renderedTestimonials,
45888
+ /* @__PURE__ */ jsx(
45889
+ BlockActions,
45890
+ {
45891
+ actions,
45892
+ actionsSlot,
45893
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45894
+ mobileConfig: { width: "full", position: "center" }
45895
+ }
45896
+ )
45729
45897
  ]
45730
45898
  }
45731
45899
  );
@@ -45796,11 +45964,13 @@ function TestimonialsMiniDividers({
45796
45964
  const authorName = getAuthorName(testimonial);
45797
45965
  const avatarSrc = getAvatarSrc(testimonial);
45798
45966
  return /* @__PURE__ */ jsxs(
45799
- "div",
45967
+ Pressable,
45800
45968
  {
45969
+ href: testimonial.linkConfig?.href,
45801
45970
  className: cn(
45802
- "group flex flex-col gap-4 border-t border-dashed p-4 transition-colors duration-300 hover:bg-muted/50 lg:p-8",
45971
+ "group flex flex-col gap-4 border-t border-dashed p-6 lg:p-8",
45803
45972
  index % 3 === 1 && "md:border-x md:border-dashed",
45973
+ testimonial.linkConfig?.href ? "transition-all duration-500 hover:opacity-75 cursor-pointer" : "",
45804
45974
  itemClassName
45805
45975
  ),
45806
45976
  children: [
@@ -45811,24 +45981,15 @@ function TestimonialsMiniDividers({
45811
45981
  ] }),
45812
45982
  /* @__PURE__ */ jsxs("div", { className: cn("min-w-0", authorClassName), children: [
45813
45983
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate font-medium", children: testimonial.author }) : testimonial.author),
45814
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate text-sm text-muted-foreground", children: testimonial.role }) : testimonial.role)
45984
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate text-sm", children: testimonial.role }) : testimonial.role)
45815
45985
  ] })
45816
45986
  ] }),
45817
45987
  testimonial.rating != null && /* @__PURE__ */ jsx(StarRating, { rating: testimonial.rating }),
45818
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
45819
- "p",
45820
- {
45821
- className: cn(
45822
- "text-sm leading-relaxed text-muted-foreground",
45823
- quoteClassName
45824
- ),
45825
- children: [
45826
- "\u201C",
45827
- testimonial.quote,
45828
- "\u201D"
45829
- ]
45830
- }
45831
- ) : /* @__PURE__ */ jsx("div", { className: cn("text-sm", quoteClassName), children: testimonial.quote }))
45988
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("p", { className: cn("text-sm leading-relaxed", quoteClassName), children: [
45989
+ "\u201C",
45990
+ testimonial.quote,
45991
+ "\u201D"
45992
+ ] }) : testimonial.quote)
45832
45993
  ]
45833
45994
  },
45834
45995
  index
@@ -45960,7 +46121,7 @@ function TestimonialsLogoCards({
45960
46121
  src: testimonial.companyLogo,
45961
46122
  alt: testimonial.companyLogoAlt || "Company logo",
45962
46123
  className: cn(
45963
- index === 0 ? "h-10" : "h-5",
46124
+ index === 0 ? "h-10" : "h-10 md:h-5",
45964
46125
  "w-auto object-contain"
45965
46126
  ),
45966
46127
  optixFlowConfig
@@ -45978,8 +46139,8 @@ function TestimonialsLogoCards({
45978
46139
  "blockquote",
45979
46140
  {
45980
46141
  className: cn(
45981
- "leading-relaxed",
45982
- index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
46142
+ "leading-relaxed font-light",
46143
+ index === 0 ? "text-base md:text-xl" : "text-base md:text-base",
45983
46144
  quoteClassName
45984
46145
  ),
45985
46146
  children: testimonial.quote
@@ -46001,7 +46162,7 @@ function TestimonialsLogoCards({
46001
46162
  ),
46002
46163
  /* @__PURE__ */ jsxs("div", { children: [
46003
46164
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
46004
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
46165
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
46005
46166
  ] })
46006
46167
  ] })
46007
46168
  ]
@@ -46041,7 +46202,10 @@ function TestimonialsLogoCards({
46041
46202
  /* @__PURE__ */ jsxs(
46042
46203
  "div",
46043
46204
  {
46044
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
46205
+ className: cn(
46206
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
46207
+ headerClassName
46208
+ ),
46045
46209
  children: [
46046
46210
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
46047
46211
  "h2",
@@ -46083,34 +46247,24 @@ function TestimonialsQuoteCarousel({
46083
46247
  authorClassName,
46084
46248
  navigationClassName,
46085
46249
  background,
46086
- spacing,
46087
46250
  pattern,
46088
- patternOpacity
46251
+ patternOpacity,
46252
+ spacing = "lg",
46253
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
46089
46254
  }) {
46090
46255
  const getAuthorName = useCallback((testimonial) => {
46091
46256
  if (typeof testimonial.author === "string") return testimonial.author;
46092
46257
  return "";
46093
46258
  }, []);
46094
- const getAvatarSrc = useCallback((testimonial) => {
46095
- return testimonial.avatarSrc || testimonial.avatar?.src;
46096
- }, []);
46259
+ const getAvatarSrc = useCallback(
46260
+ (testimonial) => {
46261
+ return testimonial.avatarSrc || testimonial.avatar?.src;
46262
+ },
46263
+ []
46264
+ );
46097
46265
  const getInitials = useCallback((name) => {
46098
46266
  return name.split(" ").map((n) => n[0]).join("");
46099
46267
  }, []);
46100
- const renderedHeading = useMemo(() => {
46101
- if (typeof heading === "string") {
46102
- return heading.split(" ").map(
46103
- (word, i) => i === 1 ? /* @__PURE__ */ jsxs("span", { className: "text-primary", children: [
46104
- word,
46105
- " "
46106
- ] }, i) : /* @__PURE__ */ jsxs("span", { children: [
46107
- word,
46108
- " "
46109
- ] }, i)
46110
- );
46111
- }
46112
- return heading;
46113
- }, [heading]);
46114
46268
  const renderedTestimonials = useMemo(() => {
46115
46269
  if (testimonialsSlot) return testimonialsSlot;
46116
46270
  if (!testimonials || testimonials.length === 0) return null;
@@ -46134,36 +46288,36 @@ function TestimonialsQuoteCarousel({
46134
46288
  "div",
46135
46289
  {
46136
46290
  className: cn(
46137
- "flex h-full flex-col rounded-xl border bg-background p-6 shadow-sm transition-all hover:shadow-md",
46291
+ "bg-card text-card-foreground",
46292
+ "flex h-full flex-col rounded-xl border p-6 shadow-sm transition-all hover:shadow-md",
46138
46293
  cardClassName
46139
46294
  ),
46140
46295
  children: [
46141
- /* @__PURE__ */ jsx("div", { className: "mb-4 font-serif text-4xl text-primary", children: "\u201C" }),
46142
46296
  /* @__PURE__ */ jsx("blockquote", { className: "mb-6 flex-1", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
46143
46297
  "p",
46144
46298
  {
46145
46299
  className: cn(
46146
- "text-sm leading-relaxed",
46300
+ "text-base leading-relaxed",
46147
46301
  quoteClassName
46148
46302
  ),
46149
46303
  children: testimonial.quote
46150
46304
  }
46151
- ) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })) }),
46305
+ ) : testimonial.quote) }),
46152
46306
  /* @__PURE__ */ jsxs(
46153
46307
  "div",
46154
46308
  {
46155
46309
  className: cn(
46156
- "mt-auto flex items-center gap-3",
46310
+ "mt-auto flex items-center gap-4",
46157
46311
  authorClassName
46158
46312
  ),
46159
46313
  children: [
46160
- /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
46314
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-10 ring-4 ring-primary", children: [
46161
46315
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46162
46316
  /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
46163
46317
  ] }),
46164
46318
  /* @__PURE__ */ jsxs("div", { className: "text-left", children: [
46165
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
46166
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
46319
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
46320
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
46167
46321
  ] })
46168
46322
  ]
46169
46323
  }
@@ -46191,7 +46345,18 @@ function TestimonialsQuoteCarousel({
46191
46345
  ]
46192
46346
  }
46193
46347
  ) });
46194
- }, [testimonialsSlot, carouselClassName, testimonials, cardClassName, quoteClassName, authorClassName, navigationClassName, getAuthorName, getAvatarSrc, getInitials]);
46348
+ }, [
46349
+ testimonialsSlot,
46350
+ carouselClassName,
46351
+ testimonials,
46352
+ cardClassName,
46353
+ quoteClassName,
46354
+ authorClassName,
46355
+ navigationClassName,
46356
+ getAuthorName,
46357
+ getAvatarSrc,
46358
+ getInitials
46359
+ ]);
46195
46360
  return /* @__PURE__ */ jsxs(
46196
46361
  Section,
46197
46362
  {
@@ -46200,32 +46365,33 @@ function TestimonialsQuoteCarousel({
46200
46365
  pattern,
46201
46366
  patternOpacity,
46202
46367
  className,
46368
+ containerClassName,
46203
46369
  children: [
46204
46370
  /* @__PURE__ */ jsxs(
46205
46371
  "div",
46206
46372
  {
46207
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
46373
+ className: cn(
46374
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
46375
+ headerClassName
46376
+ ),
46208
46377
  children: [
46209
46378
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
46210
46379
  "h2",
46211
46380
  {
46212
46381
  className: cn(
46213
- "text-3xl font-semibold tracking-tight md:text-4xl",
46382
+ "text-3xl font-semibold tracking-tight md:text-4xl text-balance",
46214
46383
  headingClassName
46215
46384
  ),
46216
- children: renderedHeading
46385
+ children: heading
46217
46386
  }
46218
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
46387
+ ) : heading),
46219
46388
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
46220
46389
  "p",
46221
46390
  {
46222
- className: cn(
46223
- "mt-4 text-lg text-muted-foreground",
46224
- descriptionClassName
46225
- ),
46391
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
46226
46392
  children: description
46227
46393
  }
46228
- ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
46394
+ ) : description)
46229
46395
  ]
46230
46396
  }
46231
46397
  ),
@@ -46577,7 +46743,18 @@ function TestimonialsScrollingColumns({
46577
46743
  ) : testimonial.quote),
46578
46744
  /* @__PURE__ */ jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
46579
46745
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("div", { className: "uppercase text-base font-semibold", children: testimonial.author }) : null),
46580
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("div", { className: "text-sm font-thin", children: testimonial.role }) : null)
46746
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("div", { className: "text-sm font-thin opacity-75", children: testimonial.role }) : null),
46747
+ testimonial.linkConfig?.href ? /* @__PURE__ */ jsx(
46748
+ Pressable,
46749
+ {
46750
+ href: testimonial.linkConfig.href,
46751
+ className: cn(
46752
+ "text-base font-bold",
46753
+ testimonial.linkConfig.className
46754
+ ),
46755
+ children: testimonial.linkConfig.label || "Full Review"
46756
+ }
46757
+ ) : null
46581
46758
  ] }) })
46582
46759
  ] })
46583
46760
  ]
@@ -46655,7 +46832,7 @@ function TestimonialsMinimalNumbered({
46655
46832
  authorClassName,
46656
46833
  navigationClassName,
46657
46834
  background,
46658
- spacing = "py-8 md:py-12",
46835
+ spacing = "xl",
46659
46836
  containerClassName = "w-full px-6 sm:px-6 md:px-8 lg:px-0 max-w-full md:max-w-lg min-h-70dvh h-70dvh flex flex-col items-center justify-center",
46660
46837
  pattern,
46661
46838
  patternOpacity
@@ -47095,7 +47272,7 @@ function TestimonialsParallaxNumber({
47095
47272
  "div",
47096
47273
  {
47097
47274
  className: cn(
47098
- "flex items-center gap-4 flex-col md:flex-row",
47275
+ "flex items-center gap-4 flex-col-reverse md:flex-row",
47099
47276
  navigationClassName
47100
47277
  ),
47101
47278
  children: [
@@ -47213,9 +47390,12 @@ function TestimonialsMasonryGrid({
47213
47390
  authorClassName,
47214
47391
  background,
47215
47392
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
47216
- spacing = "xl",
47393
+ spacing = "lg",
47217
47394
  pattern,
47218
- patternOpacity
47395
+ patternOpacity,
47396
+ actions,
47397
+ actionsSlot,
47398
+ actionsClassName
47219
47399
  }) {
47220
47400
  const columns = testimonials ? [
47221
47401
  testimonials.filter((_, i) => i % 3 === 0),
@@ -47256,29 +47436,29 @@ function TestimonialsMasonryGrid({
47256
47436
  "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
47257
47437
  ),
47258
47438
  children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
47259
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
47439
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs("blockquote", { className: "text-lg leading-relaxed line-clamp-6 md:line-clamp-3 font-thin", children: [
47260
47440
  "\u201C",
47261
47441
  testimonial.quote,
47262
47442
  "\u201D"
47263
- ] }) : /* @__PURE__ */ jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
47264
- /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
47265
- /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
47443
+ ] }) : testimonial.quote),
47444
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-4", children: [
47445
+ /* @__PURE__ */ jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-14 ring-4 ring-primary shadow-lg", children: [
47266
47446
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
47267
47447
  /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
47268
47448
  ] }),
47269
47449
  /* @__PURE__ */ jsxs("div", { className: "space-y-0 leading-tight", children: [
47270
47450
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
47271
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
47451
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-thin opacity-75", children: testimonial.role }) : testimonial.role),
47272
47452
  testimonial.linkConfig?.href && /* @__PURE__ */ jsx(
47273
47453
  Pressable,
47274
47454
  {
47275
47455
  href: testimonial.linkConfig.href,
47276
47456
  className: cn(
47277
- "text-sm transition-all duration-300",
47278
- "underline underline-offset-4",
47457
+ "text-sm transition-all duration-500",
47458
+ "hover:underline hover:underline-offset-4",
47279
47459
  testimonial.linkConfig.className
47280
47460
  ),
47281
- children: testimonial.linkConfig.label
47461
+ children: testimonial.linkConfig.label || "Full Review"
47282
47462
  }
47283
47463
  )
47284
47464
  ] })
@@ -47340,7 +47520,16 @@ function TestimonialsMasonryGrid({
47340
47520
  ]
47341
47521
  }
47342
47522
  ),
47343
- renderedTestimonials
47523
+ renderedTestimonials,
47524
+ /* @__PURE__ */ jsx(
47525
+ BlockActions,
47526
+ {
47527
+ actions,
47528
+ actionsSlot,
47529
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
47530
+ mobileConfig: { width: "full", position: "center" }
47531
+ }
47532
+ )
47344
47533
  ]
47345
47534
  }
47346
47535
  );