@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.cjs CHANGED
@@ -19917,7 +19917,6 @@ function CarouselFeatureBadge({
19917
19917
  items,
19918
19918
  itemsSlot,
19919
19919
  className,
19920
- containerClassName,
19921
19920
  contentClassName,
19922
19921
  badgeClassName,
19923
19922
  headingClassName,
@@ -19929,7 +19928,8 @@ function CarouselFeatureBadge({
19929
19928
  actionsSlot,
19930
19929
  actionsClassName,
19931
19930
  background,
19932
- spacing = "none",
19931
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
19932
+ spacing = "xl",
19933
19933
  pattern,
19934
19934
  patternOpacity,
19935
19935
  slideLayoutVariant = "square",
@@ -20035,7 +20035,8 @@ function CarouselFeatureBadge({
20035
20035
  pattern,
20036
20036
  patternOpacity,
20037
20037
  containerMaxWidth,
20038
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-end justify-end gap-6 md:gap-20 lg:grid-cols-2", children: [
20038
+ containerClassName,
20039
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-end justify-end gap-6 md:gap-20 lg:grid-cols-2", children: [
20039
20040
  /* @__PURE__ */ jsxRuntime.jsxs(
20040
20041
  "div",
20041
20042
  {
@@ -21990,49 +21991,58 @@ function CarouselScrollingFeatureShowcase({
21990
21991
  ) })
21991
21992
  }
21992
21993
  ) }) }),
21993
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-12 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
21994
+ /* @__PURE__ */ jsxRuntime.jsx(
21994
21995
  "div",
21995
21996
  {
21996
- ref: setFeatureRef(feature.id),
21997
- "data-feature-id": feature.id,
21998
21997
  className: cn(
21999
- "scroll-mt-24 transition-opacity duration-300",
22000
- activeFeature === feature.id ? "opacity-100" : "opacity-50",
22001
- feature.className
21998
+ "space-y-12 lg:space-y-32 lg:pb-[60vh]",
21999
+ featuresClassName
22002
22000
  ),
22003
- children: [
22004
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-xl shadow-xl", children: /* @__PURE__ */ jsxRuntime.jsx(
22005
- img.Img,
22006
- {
22007
- src: feature.image,
22008
- alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
22009
- className: cn(
22010
- "h-full w-full object-cover",
22011
- feature.imageClassName
22012
- ),
22013
- optixFlowConfig
22014
- }
22015
- ) }) }),
22016
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
22017
- /* @__PURE__ */ jsxRuntime.jsx(
22018
- "div",
22019
- {
22020
- className: cn(
22021
- "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
22022
- numberBadgeClassName
22023
- ),
22024
- children: index + 1
22025
- }
22001
+ children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
22002
+ "div",
22003
+ {
22004
+ ref: setFeatureRef(feature.id),
22005
+ "data-feature-id": feature.id,
22006
+ className: cn(
22007
+ "scroll-mt-24 transition-opacity duration-300",
22008
+ activeFeature === feature.id ? "opacity-100" : "opacity-50",
22009
+ feature.className
22026
22010
  ),
22027
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
22028
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl md:text-2xl font-semibold", children: feature.title }) : feature.title),
22029
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-base md:text-lg", children: feature.description }) : feature.description)
22030
- ] })
22031
- ] })
22032
- ]
22033
- },
22034
- feature.id
22035
- )) })
22011
+ children: [
22012
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-xl shadow-xl", children: /* @__PURE__ */ jsxRuntime.jsx(
22013
+ img.Img,
22014
+ {
22015
+ src: feature.image,
22016
+ alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
22017
+ className: cn(
22018
+ "h-full w-full object-cover",
22019
+ feature.imageClassName
22020
+ ),
22021
+ optixFlowConfig
22022
+ }
22023
+ ) }) }),
22024
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
22025
+ /* @__PURE__ */ jsxRuntime.jsx(
22026
+ "div",
22027
+ {
22028
+ className: cn(
22029
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
22030
+ numberBadgeClassName
22031
+ ),
22032
+ children: index + 1
22033
+ }
22034
+ ),
22035
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
22036
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl md:text-2xl font-semibold", children: feature.title }) : feature.title),
22037
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-base md:text-lg", children: feature.description }) : feature.description)
22038
+ ] })
22039
+ ] })
22040
+ ]
22041
+ },
22042
+ feature.id
22043
+ ))
22044
+ }
22045
+ )
22036
22046
  ]
22037
22047
  }
22038
22048
  )
@@ -43405,6 +43415,7 @@ function TestimonialsListVerified({
43405
43415
  pattern,
43406
43416
  patternOpacity,
43407
43417
  className,
43418
+ containerClassName,
43408
43419
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
43409
43420
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
43410
43421
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -43510,10 +43521,10 @@ function TestimonialsImagesHelpful({
43510
43521
  review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title)
43511
43522
  ] }),
43512
43523
  review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
43513
- review.images && review.images.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-3", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsxRuntime.jsx(
43524
+ review.images && review.images.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-wrap gap-4", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsxRuntime.jsx(
43514
43525
  "div",
43515
43526
  {
43516
- 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",
43527
+ 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",
43517
43528
  onClick: () => handleImageClick(review.images, imgIndex),
43518
43529
  role: "button",
43519
43530
  tabIndex: 0,
@@ -43536,80 +43547,91 @@ function TestimonialsImagesHelpful({
43536
43547
  },
43537
43548
  imgIndex
43538
43549
  )) }),
43539
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
43540
- /* @__PURE__ */ jsxRuntime.jsxs(
43541
- "div",
43542
- {
43543
- className: cn("flex items-center gap-5", authorClassName),
43544
- children: [
43545
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
43546
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43547
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
43548
- ] }),
43549
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-0", children: [
43550
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
43551
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
43552
- review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
43553
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
43554
- verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43555
- !verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
43556
- ] })
43557
- ] }),
43558
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
43559
- review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.date }),
43560
- review.variant && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
43561
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
43562
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.variant })
43550
+ /* @__PURE__ */ jsxRuntime.jsxs(
43551
+ "div",
43552
+ {
43553
+ className: cn(
43554
+ "flex items-center justify-between w-full flex-col md:flex-row gap-4"
43555
+ ),
43556
+ children: [
43557
+ /* @__PURE__ */ jsxRuntime.jsxs(
43558
+ "div",
43559
+ {
43560
+ className: cn(
43561
+ "flex items-center gap-5 w-full",
43562
+ authorClassName
43563
+ ),
43564
+ children: [
43565
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
43566
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
43567
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
43568
+ ] }),
43569
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-0", children: [
43570
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 flex-col md:flex-row", children: [
43571
+ review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
43572
+ review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
43573
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
43574
+ verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
43575
+ !verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
43576
+ ] })
43577
+ ] }),
43578
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
43579
+ review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.date }),
43580
+ review.variant && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
43581
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
43582
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.variant })
43583
+ ] })
43584
+ ] })
43563
43585
  ] })
43564
- ] })
43565
- ] })
43566
- ]
43567
- }
43568
- ),
43569
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
43570
- /* @__PURE__ */ jsxRuntime.jsxs(
43571
- Pressable,
43572
- {
43573
- asButton: true,
43574
- variant: "ghost",
43575
- size: "sm",
43576
- className: cn(
43577
- "h-8 gap-1.5",
43578
- helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
43586
+ ]
43587
+ }
43588
+ ),
43589
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
43590
+ /* @__PURE__ */ jsxRuntime.jsxs(
43591
+ Pressable,
43592
+ {
43593
+ asButton: true,
43594
+ variant: "ghost",
43595
+ size: "sm",
43596
+ className: cn(
43597
+ "h-8 gap-1.5",
43598
+ helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
43599
+ ),
43600
+ onClick: () => handleHelpful(index),
43601
+ children: [
43602
+ /* @__PURE__ */ jsxRuntime.jsx(
43603
+ DynamicIcon,
43604
+ {
43605
+ name: "lucide/thumbs-up",
43606
+ size: 16,
43607
+ className: cn(
43608
+ helpfulClicked.has(index) && "fill-current"
43609
+ )
43610
+ }
43611
+ ),
43612
+ "Helpful",
43613
+ review.helpful !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
43614
+ "(",
43615
+ review.helpful + (helpfulClicked.has(index) ? 1 : 0),
43616
+ ")"
43617
+ ] })
43618
+ ]
43619
+ }
43579
43620
  ),
43580
- onClick: () => handleHelpful(index),
43581
- children: [
43582
- /* @__PURE__ */ jsxRuntime.jsx(
43583
- DynamicIcon,
43584
- {
43585
- name: "lucide/thumbs-up",
43586
- size: 16,
43587
- className: cn(
43588
- helpfulClicked.has(index) && "fill-current"
43589
- )
43590
- }
43591
- ),
43592
- "Helpful",
43593
- review.helpful !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
43594
- "(",
43595
- review.helpful + (helpfulClicked.has(index) ? 1 : 0),
43596
- ")"
43597
- ] })
43598
- ]
43599
- }
43600
- ),
43601
- /* @__PURE__ */ jsxRuntime.jsx(
43602
- Pressable,
43603
- {
43604
- asButton: true,
43605
- variant: "ghost",
43606
- size: "sm",
43607
- className: "h-8 text-muted-foreground",
43608
- children: reportButtonLabel ?? "Report"
43609
- }
43610
- )
43611
- ] })
43612
- ] })
43621
+ /* @__PURE__ */ jsxRuntime.jsx(
43622
+ Pressable,
43623
+ {
43624
+ asButton: true,
43625
+ variant: "ghost",
43626
+ size: "sm",
43627
+ className: "h-8 text-muted-foreground",
43628
+ children: reportButtonLabel ?? "Report"
43629
+ }
43630
+ )
43631
+ ] })
43632
+ ]
43633
+ }
43634
+ )
43613
43635
  ] })
43614
43636
  ] }, index);
43615
43637
  }) });
@@ -43927,7 +43949,10 @@ function TestimonialsTwitterCards({
43927
43949
  spacing = "lg",
43928
43950
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
43929
43951
  pattern,
43930
- patternOpacity
43952
+ patternOpacity,
43953
+ actions,
43954
+ actionsSlot,
43955
+ actionsClassName
43931
43956
  }) {
43932
43957
  const getAuthorName = React32.useCallback(
43933
43958
  (testimonial) => {
@@ -44026,6 +44051,41 @@ function TestimonialsTwitterCards({
44026
44051
  getAuthorName,
44027
44052
  getInitials
44028
44053
  ]);
44054
+ const contentItems = React32.useMemo(() => {
44055
+ const items = [];
44056
+ if (heading) {
44057
+ if (typeof heading === "string") {
44058
+ items.push({
44059
+ _type: "text",
44060
+ as: "h2",
44061
+ className: cn(
44062
+ "text-pretty text-3xl md:text-4xl lg:text-6xl",
44063
+ "font-semibold tracking-tight",
44064
+ headingClassName
44065
+ ),
44066
+ children: heading
44067
+ });
44068
+ } else {
44069
+ items.push(heading);
44070
+ }
44071
+ }
44072
+ if (description) {
44073
+ if (typeof description === "string") {
44074
+ items.push({
44075
+ _type: "text",
44076
+ as: "p",
44077
+ className: cn(
44078
+ "max-w-full md:max-w-md text-lg text-balance",
44079
+ descriptionClassName
44080
+ ),
44081
+ children: description
44082
+ });
44083
+ } else {
44084
+ items.push(description);
44085
+ }
44086
+ }
44087
+ return items;
44088
+ }, [heading, headingClassName, description, descriptionClassName]);
44029
44089
  return /* @__PURE__ */ jsxRuntime.jsxs(
44030
44090
  Section,
44031
44091
  {
@@ -44036,36 +44096,27 @@ function TestimonialsTwitterCards({
44036
44096
  className,
44037
44097
  containerClassName,
44038
44098
  children: [
44039
- /* @__PURE__ */ jsxRuntime.jsxs(
44040
- "div",
44099
+ /* @__PURE__ */ jsxRuntime.jsx(
44100
+ ContentGroup,
44041
44101
  {
44102
+ items: contentItems,
44042
44103
  className: cn(
44104
+ "flex flex-col items-center",
44043
44105
  "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
44044
44106
  headerClassName
44045
- ),
44046
- children: [
44047
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
44048
- "h2",
44049
- {
44050
- className: cn(
44051
- "text-pretty text-3xl md:text-4xl lg:text-6xl",
44052
- "font-semibold tracking-tight",
44053
- headingClassName
44054
- ),
44055
- children: heading
44056
- }
44057
- ) : heading),
44058
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
44059
- "p",
44060
- {
44061
- className: cn("mt-4 text-lg text-balance", descriptionClassName),
44062
- children: description
44063
- }
44064
- ) : description)
44065
- ]
44107
+ )
44066
44108
  }
44067
44109
  ),
44068
- renderedTestimonials
44110
+ renderedTestimonials,
44111
+ /* @__PURE__ */ jsxRuntime.jsx(
44112
+ BlockActions,
44113
+ {
44114
+ actions,
44115
+ actionsSlot,
44116
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
44117
+ mobileConfig: { width: "full", position: "center" }
44118
+ }
44119
+ )
44069
44120
  ]
44070
44121
  }
44071
44122
  );
@@ -44588,17 +44639,28 @@ function TestimonialsGridAddReview({
44588
44639
  descriptionClassName,
44589
44640
  gridClassName,
44590
44641
  cardClassName,
44642
+ quoteClassName,
44591
44643
  addReviewCardClassName,
44592
44644
  authorClassName,
44593
44645
  background,
44594
- spacing,
44646
+ spacing = "lg",
44647
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
44595
44648
  pattern,
44596
- patternOpacity
44649
+ patternOpacity,
44650
+ actions,
44651
+ actionsSlot,
44652
+ actionsClassName
44597
44653
  }) {
44598
- const getAuthorName = React32.useCallback((review) => {
44599
- if (typeof review.author === "string") return review.author;
44654
+ const getAuthorName = React32.useCallback((testimonial) => {
44655
+ if (typeof testimonial.author === "string") return testimonial.author;
44600
44656
  return "";
44601
44657
  }, []);
44658
+ const getAvatarSrc = React32.useCallback(
44659
+ (testimonial) => {
44660
+ return testimonial.avatarSrc || testimonial.avatar?.src;
44661
+ },
44662
+ []
44663
+ );
44602
44664
  const getInitials = React32.useCallback((name) => {
44603
44665
  return name.split(" ").map((n) => n[0]).join("");
44604
44666
  }, []);
@@ -44616,17 +44678,14 @@ function TestimonialsGridAddReview({
44616
44678
  Card,
44617
44679
  {
44618
44680
  className: cn(
44619
- "flex cursor-pointer items-center justify-center border-2 border-dashed transition-colors hover:border-primary hover:bg-muted/50",
44681
+ "flex cursor-pointer items-center justify-center border-2 border-dashed transition-all duration-500 opacity-100 hover:border-primary hover:opacity-75",
44620
44682
  addReviewCardClassName
44621
44683
  ),
44622
44684
  onClick: onAddReview,
44623
44685
  children: /* @__PURE__ */ jsxRuntime.jsxs(
44624
44686
  CardContent,
44625
44687
  {
44626
- className: cn(
44627
- "flex flex-col items-center gap-3 py-12 text-center",
44628
- getNestedCardTextColor(background)
44629
- ),
44688
+ className: cn("flex flex-col items-center gap-3 py-12 text-center"),
44630
44689
  children: [
44631
44690
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(
44632
44691
  DynamicIcon,
@@ -44643,19 +44702,58 @@ function TestimonialsGridAddReview({
44643
44702
  )
44644
44703
  }
44645
44704
  ),
44646
- reviews?.map((review, index) => {
44647
- const authorName = getAuthorName(review);
44648
- return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "space-y-4 p-6", children: [
44649
- /* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating }),
44650
- review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-relaxed", children: review.content }) : review.content),
44651
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
44652
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-8", children: [
44653
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
44654
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
44655
- ] }),
44656
- review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: review.author }) : review.author)
44657
- ] })
44658
- ] }) }, index);
44705
+ reviews?.map((testimonial, index) => {
44706
+ const authorName = getAuthorName(testimonial);
44707
+ const avatarSrc = getAvatarSrc(testimonial);
44708
+ return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-12 justify-between", children: [
44709
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-4", children: [
44710
+ /* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: 5, size: 20 }),
44711
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
44712
+ "p",
44713
+ {
44714
+ className: cn(
44715
+ "mb-6 text-sm leading-relaxed",
44716
+ quoteClassName
44717
+ ),
44718
+ children: [
44719
+ "\u201C",
44720
+ testimonial.quote,
44721
+ "\u201D"
44722
+ ]
44723
+ }
44724
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-6", quoteClassName), children: testimonial.quote }))
44725
+ ] }),
44726
+ /* @__PURE__ */ jsxRuntime.jsxs(
44727
+ "div",
44728
+ {
44729
+ className: cn("flex items-center gap-4", authorClassName),
44730
+ children: [
44731
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-14 ring-4 ring-primary shadow-lg", children: [
44732
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
44733
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
44734
+ ] }),
44735
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-1", children: [
44736
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0", children: [
44737
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
44738
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
44739
+ ] }),
44740
+ testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
44741
+ Pressable,
44742
+ {
44743
+ href: testimonial.linkConfig.href,
44744
+ className: cn(
44745
+ "text-sm transition-all duration-500",
44746
+ "hover:underline hover:underline-offset-4",
44747
+ testimonial.linkConfig.className
44748
+ ),
44749
+ children: testimonial.linkConfig.label
44750
+ }
44751
+ )
44752
+ ] })
44753
+ ]
44754
+ }
44755
+ )
44756
+ ] }) }) }, index);
44659
44757
  })
44660
44758
  ]
44661
44759
  }
@@ -44681,36 +44779,49 @@ function TestimonialsGridAddReview({
44681
44779
  pattern,
44682
44780
  patternOpacity,
44683
44781
  className,
44782
+ containerClassName,
44684
44783
  children: [
44685
44784
  /* @__PURE__ */ jsxRuntime.jsxs(
44686
44785
  "div",
44687
44786
  {
44688
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
44787
+ className: cn(
44788
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
44789
+ headerClassName
44790
+ ),
44689
44791
  children: [
44690
44792
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
44691
44793
  "h2",
44692
44794
  {
44693
44795
  className: cn(
44694
- "text-3xl font-semibold tracking-tight md:text-4xl",
44796
+ "text-3xl font-semibold tracking-tight md:text-4xl text-pretty",
44695
44797
  headingClassName
44696
44798
  ),
44697
44799
  children: heading
44698
44800
  }
44699
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
44801
+ ) : heading),
44700
44802
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
44701
44803
  "p",
44702
44804
  {
44703
44805
  className: cn(
44704
- "mt-4 text-lg text-muted-foreground",
44806
+ "mt-2 md:mt-4 text-lg text-balance",
44705
44807
  descriptionClassName
44706
44808
  ),
44707
44809
  children: description
44708
44810
  }
44709
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
44811
+ ) : description)
44710
44812
  ]
44711
44813
  }
44712
44814
  ),
44713
- renderedReviews
44815
+ renderedReviews,
44816
+ /* @__PURE__ */ jsxRuntime.jsx(
44817
+ BlockActions,
44818
+ {
44819
+ actions,
44820
+ actionsSlot,
44821
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
44822
+ mobileConfig: { width: "full", position: "center" }
44823
+ }
44824
+ )
44714
44825
  ]
44715
44826
  }
44716
44827
  );
@@ -44910,7 +45021,10 @@ function TestimonialsSimpleGrid({
44910
45021
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
44911
45022
  spacing = "xl",
44912
45023
  pattern,
44913
- patternOpacity
45024
+ patternOpacity,
45025
+ actions,
45026
+ actionsSlot,
45027
+ actionsClassName
44914
45028
  }) {
44915
45029
  const getAuthorName = React32.useCallback((testimonial) => {
44916
45030
  if (typeof testimonial.author === "string") return testimonial.author;
@@ -44932,7 +45046,7 @@ function TestimonialsSimpleGrid({
44932
45046
  "div",
44933
45047
  {
44934
45048
  className: cn(
44935
- "grid gap-4 md:gap-6 lg:gap-8 md:grid-cols-2 lg:grid-cols-3",
45049
+ "grid gap-8 md:gap-6 lg:gap-8 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
44936
45050
  gridClassName
44937
45051
  ),
44938
45052
  children: testimonials.map((testimonial, index) => {
@@ -44944,8 +45058,8 @@ function TestimonialsSimpleGrid({
44944
45058
  className: cn(
44945
45059
  "bg-card text-card-foreground",
44946
45060
  "flex flex-col gap-6",
44947
- testimonial.linkConfig?.href ? "cursor-pointer hover:bg-black hover:text-white transition-all duration-500" : "",
44948
- "rounded-2xl py-0 shadow-xl group",
45061
+ testimonial.linkConfig?.href ? "cursor-pointer hover:opacity-75 transition-all duration-500" : "opacity-100",
45062
+ "rounded-2xl py-0 shadow-xl group overflow-hidden",
44949
45063
  "ring-4 ring-ring",
44950
45064
  cardClassName
44951
45065
  ),
@@ -44996,7 +45110,7 @@ function TestimonialsSimpleGrid({
44996
45110
  ] })
44997
45111
  }
44998
45112
  ),
44999
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-6 md: pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
45113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-6 md:pt-8 px-6 md:px-8", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base leading-relaxed", children: testimonial.quote }) : testimonial.quote) })
45000
45114
  ]
45001
45115
  }
45002
45116
  )
@@ -45055,7 +45169,16 @@ function TestimonialsSimpleGrid({
45055
45169
  ]
45056
45170
  }
45057
45171
  ),
45058
- renderedTestimonials
45172
+ renderedTestimonials,
45173
+ /* @__PURE__ */ jsxRuntime.jsx(
45174
+ BlockActions,
45175
+ {
45176
+ actions,
45177
+ actionsSlot,
45178
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45179
+ mobileConfig: { width: "full", position: "center" }
45180
+ }
45181
+ )
45059
45182
  ]
45060
45183
  }
45061
45184
  );
@@ -45456,7 +45579,10 @@ function TestimonialsStatsHeader({
45456
45579
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
45457
45580
  spacing = "xl",
45458
45581
  pattern,
45459
- patternOpacity
45582
+ patternOpacity,
45583
+ actions,
45584
+ actionsSlot,
45585
+ actionsClassName
45460
45586
  }) {
45461
45587
  const getAuthorName = React32.useCallback((testimonial) => {
45462
45588
  if (typeof testimonial.author === "string") return testimonial.author;
@@ -45491,6 +45617,7 @@ function TestimonialsStatsHeader({
45491
45617
  {
45492
45618
  className: cn(
45493
45619
  "overflow-hidden border p-0",
45620
+ "rounded-2xl shadow-xl",
45494
45621
  stat.className,
45495
45622
  statCardClassName
45496
45623
  ),
@@ -45516,7 +45643,10 @@ function TestimonialsStatsHeader({
45516
45643
  return /* @__PURE__ */ jsxRuntime.jsx(
45517
45644
  "div",
45518
45645
  {
45519
- className: cn("grid gap-6 md:grid-cols-3", testimonialsGridClassName),
45646
+ className: cn(
45647
+ "grid gap-6 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
45648
+ testimonialsGridClassName
45649
+ ),
45520
45650
  children: testimonials.map((testimonial, index) => {
45521
45651
  const authorName = getAuthorName(testimonial);
45522
45652
  const avatarSrc = getAvatarSrc(testimonial);
@@ -45548,14 +45678,14 @@ function TestimonialsStatsHeader({
45548
45678
  /* @__PURE__ */ jsxRuntime.jsxs(
45549
45679
  "div",
45550
45680
  {
45551
- className: cn("flex items-center gap-3", authorClassName),
45681
+ className: cn("flex items-center gap-4", authorClassName),
45552
45682
  children: [
45553
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-10", children: [
45683
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-14 ring-4 ring-primary shadow-lg", children: [
45554
45684
  /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
45555
45685
  /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
45556
45686
  ] }),
45557
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
45558
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
45687
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-1", children: [
45688
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0", children: [
45559
45689
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium", children: testimonial.author }) : testimonial.author),
45560
45690
  testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
45561
45691
  ] }),
@@ -45564,7 +45694,7 @@ function TestimonialsStatsHeader({
45564
45694
  {
45565
45695
  href: testimonial.linkConfig.href,
45566
45696
  className: cn(
45567
- "text-sm transition-all duration-300",
45697
+ "text-sm transition-all duration-500",
45568
45698
  "hover:underline hover:underline-offset-4",
45569
45699
  testimonial.linkConfig.className
45570
45700
  ),
@@ -45632,7 +45762,16 @@ function TestimonialsStatsHeader({
45632
45762
  }
45633
45763
  ),
45634
45764
  renderedStats,
45635
- renderedTestimonials
45765
+ renderedTestimonials,
45766
+ /* @__PURE__ */ jsxRuntime.jsx(
45767
+ BlockActions,
45768
+ {
45769
+ actions,
45770
+ actionsSlot,
45771
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45772
+ mobileConfig: { width: "full", position: "center" }
45773
+ }
45774
+ )
45636
45775
  ]
45637
45776
  }
45638
45777
  );
@@ -45652,9 +45791,12 @@ function TestimonialsWallCompact({
45652
45791
  quoteClassName,
45653
45792
  background,
45654
45793
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
45655
- spacing = "xl",
45794
+ spacing = "lg",
45656
45795
  pattern,
45657
- patternOpacity
45796
+ patternOpacity,
45797
+ actions,
45798
+ actionsSlot,
45799
+ actionsClassName
45658
45800
  }) {
45659
45801
  const getAuthorName = React32.useCallback(
45660
45802
  (testimonial) => {
@@ -45689,9 +45831,8 @@ function TestimonialsWallCompact({
45689
45831
  "div",
45690
45832
  {
45691
45833
  className: cn(
45834
+ "bg-card text-card-foreground",
45692
45835
  "rounded-lg border p-4 transition-shadow hover:shadow-md",
45693
- getNestedCardBg(background, "card"),
45694
- getNestedCardTextColor(background),
45695
45836
  cardClassName
45696
45837
  ),
45697
45838
  children: [
@@ -45710,14 +45851,23 @@ function TestimonialsWallCompact({
45710
45851
  ] }),
45711
45852
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
45712
45853
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm font-medium", children: testimonial.author }) : testimonial.author),
45713
- testimonial.handle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs ", children: testimonial.handle })
45854
+ testimonial.handle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-semibold opacity-75", children: testimonial.handle })
45714
45855
  ] })
45715
45856
  ] }),
45716
45857
  testimonial.badge && (typeof testimonial.badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", className: "shrink-0 text-xs", children: testimonial.badge }) : testimonial.badge)
45717
45858
  ]
45718
45859
  }
45719
45860
  ),
45720
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm leading-relaxed", quoteClassName), children: testimonial.quote }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote }))
45861
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
45862
+ "p",
45863
+ {
45864
+ className: cn(
45865
+ "text-sm leading-relaxed pt-2",
45866
+ quoteClassName
45867
+ ),
45868
+ children: testimonial.quote
45869
+ }
45870
+ ) : testimonial.quote)
45721
45871
  ]
45722
45872
  },
45723
45873
  index
@@ -45749,23 +45899,41 @@ function TestimonialsWallCompact({
45749
45899
  /* @__PURE__ */ jsxRuntime.jsxs(
45750
45900
  "div",
45751
45901
  {
45752
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
45902
+ className: cn(
45903
+ "mx-auto mb-12 max-w-full md:max-w-md text-center",
45904
+ headerClassName
45905
+ ),
45753
45906
  children: [
45754
45907
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
45755
45908
  "h2",
45756
45909
  {
45757
45910
  className: cn(
45758
- "text-3xl font-semibold tracking-tight md:text-4xl",
45911
+ "text-3xl font-semibold tracking-tight md:text-4xl text-pretty",
45759
45912
  headingClassName
45760
45913
  ),
45761
45914
  children: heading
45762
45915
  }
45763
45916
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
45764
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
45917
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
45918
+ "p",
45919
+ {
45920
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
45921
+ children: description
45922
+ }
45923
+ ) : description)
45765
45924
  ]
45766
45925
  }
45767
45926
  ),
45768
- renderedTestimonials
45927
+ renderedTestimonials,
45928
+ /* @__PURE__ */ jsxRuntime.jsx(
45929
+ BlockActions,
45930
+ {
45931
+ actions,
45932
+ actionsSlot,
45933
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
45934
+ mobileConfig: { width: "full", position: "center" }
45935
+ }
45936
+ )
45769
45937
  ]
45770
45938
  }
45771
45939
  );
@@ -45836,11 +46004,13 @@ function TestimonialsMiniDividers({
45836
46004
  const authorName = getAuthorName(testimonial);
45837
46005
  const avatarSrc = getAvatarSrc(testimonial);
45838
46006
  return /* @__PURE__ */ jsxRuntime.jsxs(
45839
- "div",
46007
+ Pressable,
45840
46008
  {
46009
+ href: testimonial.linkConfig?.href,
45841
46010
  className: cn(
45842
- "group flex flex-col gap-4 border-t border-dashed p-4 transition-colors duration-300 hover:bg-muted/50 lg:p-8",
46011
+ "group flex flex-col gap-4 border-t border-dashed p-6 lg:p-8",
45843
46012
  index % 3 === 1 && "md:border-x md:border-dashed",
46013
+ testimonial.linkConfig?.href ? "transition-all duration-500 hover:opacity-75 cursor-pointer" : "",
45844
46014
  itemClassName
45845
46015
  ),
45846
46016
  children: [
@@ -45851,24 +46021,15 @@ function TestimonialsMiniDividers({
45851
46021
  ] }),
45852
46022
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("min-w-0", authorClassName), children: [
45853
46023
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate font-medium", children: testimonial.author }) : testimonial.author),
45854
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm text-muted-foreground", children: testimonial.role }) : testimonial.role)
46024
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-sm", children: testimonial.role }) : testimonial.role)
45855
46025
  ] })
45856
46026
  ] }),
45857
46027
  testimonial.rating != null && /* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: testimonial.rating }),
45858
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
45859
- "p",
45860
- {
45861
- className: cn(
45862
- "text-sm leading-relaxed text-muted-foreground",
45863
- quoteClassName
45864
- ),
45865
- children: [
45866
- "\u201C",
45867
- testimonial.quote,
45868
- "\u201D"
45869
- ]
45870
- }
45871
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", quoteClassName), children: testimonial.quote }))
46028
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm leading-relaxed", quoteClassName), children: [
46029
+ "\u201C",
46030
+ testimonial.quote,
46031
+ "\u201D"
46032
+ ] }) : testimonial.quote)
45872
46033
  ]
45873
46034
  },
45874
46035
  index
@@ -46000,7 +46161,7 @@ function TestimonialsLogoCards({
46000
46161
  src: testimonial.companyLogo,
46001
46162
  alt: testimonial.companyLogoAlt || "Company logo",
46002
46163
  className: cn(
46003
- index === 0 ? "h-10" : "h-5",
46164
+ index === 0 ? "h-10" : "h-10 md:h-5",
46004
46165
  "w-auto object-contain"
46005
46166
  ),
46006
46167
  optixFlowConfig
@@ -46018,8 +46179,8 @@ function TestimonialsLogoCards({
46018
46179
  "blockquote",
46019
46180
  {
46020
46181
  className: cn(
46021
- "leading-relaxed",
46022
- index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
46182
+ "leading-relaxed font-light",
46183
+ index === 0 ? "text-base md:text-xl" : "text-base md:text-base",
46023
46184
  quoteClassName
46024
46185
  ),
46025
46186
  children: testimonial.quote
@@ -46041,7 +46202,7 @@ function TestimonialsLogoCards({
46041
46202
  ),
46042
46203
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
46043
46204
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
46044
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
46205
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
46045
46206
  ] })
46046
46207
  ] })
46047
46208
  ]
@@ -46081,7 +46242,10 @@ function TestimonialsLogoCards({
46081
46242
  /* @__PURE__ */ jsxRuntime.jsxs(
46082
46243
  "div",
46083
46244
  {
46084
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
46245
+ className: cn(
46246
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
46247
+ headerClassName
46248
+ ),
46085
46249
  children: [
46086
46250
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
46087
46251
  "h2",
@@ -46123,34 +46287,24 @@ function TestimonialsQuoteCarousel({
46123
46287
  authorClassName,
46124
46288
  navigationClassName,
46125
46289
  background,
46126
- spacing,
46127
46290
  pattern,
46128
- patternOpacity
46291
+ patternOpacity,
46292
+ spacing = "lg",
46293
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
46129
46294
  }) {
46130
46295
  const getAuthorName = React32.useCallback((testimonial) => {
46131
46296
  if (typeof testimonial.author === "string") return testimonial.author;
46132
46297
  return "";
46133
46298
  }, []);
46134
- const getAvatarSrc = React32.useCallback((testimonial) => {
46135
- return testimonial.avatarSrc || testimonial.avatar?.src;
46136
- }, []);
46299
+ const getAvatarSrc = React32.useCallback(
46300
+ (testimonial) => {
46301
+ return testimonial.avatarSrc || testimonial.avatar?.src;
46302
+ },
46303
+ []
46304
+ );
46137
46305
  const getInitials = React32.useCallback((name) => {
46138
46306
  return name.split(" ").map((n) => n[0]).join("");
46139
46307
  }, []);
46140
- const renderedHeading = React32.useMemo(() => {
46141
- if (typeof heading === "string") {
46142
- return heading.split(" ").map(
46143
- (word, i) => i === 1 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-primary", children: [
46144
- word,
46145
- " "
46146
- ] }, i) : /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
46147
- word,
46148
- " "
46149
- ] }, i)
46150
- );
46151
- }
46152
- return heading;
46153
- }, [heading]);
46154
46308
  const renderedTestimonials = React32.useMemo(() => {
46155
46309
  if (testimonialsSlot) return testimonialsSlot;
46156
46310
  if (!testimonials || testimonials.length === 0) return null;
@@ -46174,36 +46328,36 @@ function TestimonialsQuoteCarousel({
46174
46328
  "div",
46175
46329
  {
46176
46330
  className: cn(
46177
- "flex h-full flex-col rounded-xl border bg-background p-6 shadow-sm transition-all hover:shadow-md",
46331
+ "bg-card text-card-foreground",
46332
+ "flex h-full flex-col rounded-xl border p-6 shadow-sm transition-all hover:shadow-md",
46178
46333
  cardClassName
46179
46334
  ),
46180
46335
  children: [
46181
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 font-serif text-4xl text-primary", children: "\u201C" }),
46182
46336
  /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "mb-6 flex-1", children: testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
46183
46337
  "p",
46184
46338
  {
46185
46339
  className: cn(
46186
- "text-sm leading-relaxed",
46340
+ "text-base leading-relaxed",
46187
46341
  quoteClassName
46188
46342
  ),
46189
46343
  children: testimonial.quote
46190
46344
  }
46191
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })) }),
46345
+ ) : testimonial.quote) }),
46192
46346
  /* @__PURE__ */ jsxRuntime.jsxs(
46193
46347
  "div",
46194
46348
  {
46195
46349
  className: cn(
46196
- "mt-auto flex items-center gap-3",
46350
+ "mt-auto flex items-center gap-4",
46197
46351
  authorClassName
46198
46352
  ),
46199
46353
  children: [
46200
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-10", children: [
46354
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-10 ring-4 ring-primary", children: [
46201
46355
  /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
46202
46356
  /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
46203
46357
  ] }),
46204
46358
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-left", children: [
46205
- testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
46206
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: testimonial.role }) : testimonial.role)
46359
+ testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
46360
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
46207
46361
  ] })
46208
46362
  ]
46209
46363
  }
@@ -46231,7 +46385,18 @@ function TestimonialsQuoteCarousel({
46231
46385
  ]
46232
46386
  }
46233
46387
  ) });
46234
- }, [testimonialsSlot, carouselClassName, testimonials, cardClassName, quoteClassName, authorClassName, navigationClassName, getAuthorName, getAvatarSrc, getInitials]);
46388
+ }, [
46389
+ testimonialsSlot,
46390
+ carouselClassName,
46391
+ testimonials,
46392
+ cardClassName,
46393
+ quoteClassName,
46394
+ authorClassName,
46395
+ navigationClassName,
46396
+ getAuthorName,
46397
+ getAvatarSrc,
46398
+ getInitials
46399
+ ]);
46235
46400
  return /* @__PURE__ */ jsxRuntime.jsxs(
46236
46401
  Section,
46237
46402
  {
@@ -46240,32 +46405,33 @@ function TestimonialsQuoteCarousel({
46240
46405
  pattern,
46241
46406
  patternOpacity,
46242
46407
  className,
46408
+ containerClassName,
46243
46409
  children: [
46244
46410
  /* @__PURE__ */ jsxRuntime.jsxs(
46245
46411
  "div",
46246
46412
  {
46247
- className: cn("mx-auto mb-12 max-w-2xl text-center", headerClassName),
46413
+ className: cn(
46414
+ "mx-auto mb-12 max-w-full md:max-w-2xl text-center",
46415
+ headerClassName
46416
+ ),
46248
46417
  children: [
46249
46418
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
46250
46419
  "h2",
46251
46420
  {
46252
46421
  className: cn(
46253
- "text-3xl font-semibold tracking-tight md:text-4xl",
46422
+ "text-3xl font-semibold tracking-tight md:text-4xl text-balance",
46254
46423
  headingClassName
46255
46424
  ),
46256
- children: renderedHeading
46425
+ children: heading
46257
46426
  }
46258
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
46427
+ ) : heading),
46259
46428
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
46260
46429
  "p",
46261
46430
  {
46262
- className: cn(
46263
- "mt-4 text-lg text-muted-foreground",
46264
- descriptionClassName
46265
- ),
46431
+ className: cn("mt-4 text-lg text-balance", descriptionClassName),
46266
46432
  children: description
46267
46433
  }
46268
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", descriptionClassName), children: description }))
46434
+ ) : description)
46269
46435
  ]
46270
46436
  }
46271
46437
  ),
@@ -46617,7 +46783,18 @@ function TestimonialsScrollingColumns({
46617
46783
  ) : testimonial.quote),
46618
46784
  /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: cn("mt-4", authorClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
46619
46785
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "uppercase text-base font-semibold", children: testimonial.author }) : null),
46620
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-thin", children: testimonial.role }) : null)
46786
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-thin opacity-75", children: testimonial.role }) : null),
46787
+ testimonial.linkConfig?.href ? /* @__PURE__ */ jsxRuntime.jsx(
46788
+ Pressable,
46789
+ {
46790
+ href: testimonial.linkConfig.href,
46791
+ className: cn(
46792
+ "text-base font-bold",
46793
+ testimonial.linkConfig.className
46794
+ ),
46795
+ children: testimonial.linkConfig.label || "Full Review"
46796
+ }
46797
+ ) : null
46621
46798
  ] }) })
46622
46799
  ] })
46623
46800
  ]
@@ -46695,7 +46872,7 @@ function TestimonialsMinimalNumbered({
46695
46872
  authorClassName,
46696
46873
  navigationClassName,
46697
46874
  background,
46698
- spacing = "py-8 md:py-12",
46875
+ spacing = "xl",
46699
46876
  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",
46700
46877
  pattern,
46701
46878
  patternOpacity
@@ -47135,7 +47312,7 @@ function TestimonialsParallaxNumber({
47135
47312
  "div",
47136
47313
  {
47137
47314
  className: cn(
47138
- "flex items-center gap-4 flex-col md:flex-row",
47315
+ "flex items-center gap-4 flex-col-reverse md:flex-row",
47139
47316
  navigationClassName
47140
47317
  ),
47141
47318
  children: [
@@ -47253,9 +47430,12 @@ function TestimonialsMasonryGrid({
47253
47430
  authorClassName,
47254
47431
  background,
47255
47432
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
47256
- spacing = "xl",
47433
+ spacing = "lg",
47257
47434
  pattern,
47258
- patternOpacity
47435
+ patternOpacity,
47436
+ actions,
47437
+ actionsSlot,
47438
+ actionsClassName
47259
47439
  }) {
47260
47440
  const columns = testimonials ? [
47261
47441
  testimonials.filter((_, i) => i % 3 === 0),
@@ -47296,29 +47476,29 @@ function TestimonialsMasonryGrid({
47296
47476
  "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
47297
47477
  ),
47298
47478
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
47299
- testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-sm leading-relaxed line-clamp-3", children: [
47479
+ testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-lg leading-relaxed line-clamp-6 md:line-clamp-3 font-thin", children: [
47300
47480
  "\u201C",
47301
47481
  testimonial.quote,
47302
47482
  "\u201D"
47303
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-3", children: testimonial.quote })),
47304
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-3", children: [
47305
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-12 ring-4 ring-primary shadow-lg", children: [
47483
+ ] }) : testimonial.quote),
47484
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-4", children: [
47485
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-14 ring-4 ring-primary shadow-lg", children: [
47306
47486
  /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
47307
47487
  /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
47308
47488
  ] }),
47309
47489
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
47310
47490
  testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
47311
- testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs", children: testimonial.role }) : testimonial.role),
47491
+ testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-thin opacity-75", children: testimonial.role }) : testimonial.role),
47312
47492
  testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
47313
47493
  Pressable,
47314
47494
  {
47315
47495
  href: testimonial.linkConfig.href,
47316
47496
  className: cn(
47317
- "text-sm transition-all duration-300",
47318
- "underline underline-offset-4",
47497
+ "text-sm transition-all duration-500",
47498
+ "hover:underline hover:underline-offset-4",
47319
47499
  testimonial.linkConfig.className
47320
47500
  ),
47321
- children: testimonial.linkConfig.label
47501
+ children: testimonial.linkConfig.label || "Full Review"
47322
47502
  }
47323
47503
  )
47324
47504
  ] })
@@ -47380,7 +47560,16 @@ function TestimonialsMasonryGrid({
47380
47560
  ]
47381
47561
  }
47382
47562
  ),
47383
- renderedTestimonials
47563
+ renderedTestimonials,
47564
+ /* @__PURE__ */ jsxRuntime.jsx(
47565
+ BlockActions,
47566
+ {
47567
+ actions,
47568
+ actionsSlot,
47569
+ actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
47570
+ mobileConfig: { width: "full", position: "center" }
47571
+ }
47572
+ )
47384
47573
  ]
47385
47574
  }
47386
47575
  );