@opensite/ui 2.8.5 → 2.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/about-developer-profile.cjs +17 -10
- package/dist/about-developer-profile.js +17 -10
- package/dist/article-chapters-author.cjs +17 -10
- package/dist/article-chapters-author.js +17 -10
- package/dist/carousel-animated-sections.cjs +79 -25
- package/dist/carousel-animated-sections.d.cts +7 -2
- package/dist/carousel-animated-sections.d.ts +7 -2
- package/dist/carousel-animated-sections.js +79 -25
- package/dist/carousel-gallery-thumbnails.cjs +79 -25
- package/dist/carousel-gallery-thumbnails.d.cts +7 -2
- package/dist/carousel-gallery-thumbnails.d.ts +7 -2
- package/dist/carousel-gallery-thumbnails.js +79 -25
- package/dist/carousel-portfolio-hero.cjs +79 -25
- package/dist/carousel-portfolio-hero.d.cts +7 -2
- package/dist/carousel-portfolio-hero.d.ts +7 -2
- package/dist/carousel-portfolio-hero.js +79 -25
- package/dist/components.cjs +35 -10
- package/dist/components.d.cts +29 -2
- package/dist/components.d.ts +29 -2
- package/dist/components.js +35 -11
- package/dist/footer-accordion-social.cjs +17 -10
- package/dist/footer-accordion-social.js +17 -10
- package/dist/footer-animated-social.cjs +17 -10
- package/dist/footer-animated-social.js +17 -10
- package/dist/footer-brand-description.cjs +17 -10
- package/dist/footer-brand-description.js +17 -10
- package/dist/footer-brand-links-contact.cjs +17 -10
- package/dist/footer-brand-links-contact.js +17 -10
- package/dist/footer-comprehensive-links.cjs +17 -10
- package/dist/footer-comprehensive-links.js +17 -10
- package/dist/footer-contact-card.cjs +17 -10
- package/dist/footer-contact-card.js +17 -10
- package/dist/footer-cta-banner.cjs +17 -10
- package/dist/footer-cta-banner.js +17 -10
- package/dist/footer-cta-social.cjs +17 -10
- package/dist/footer-cta-social.js +17 -10
- package/dist/footer-info-cards-accordion.cjs +17 -10
- package/dist/footer-info-cards-accordion.js +17 -10
- package/dist/footer-nav-social.cjs +17 -10
- package/dist/footer-nav-social.js +17 -10
- package/dist/footer-newsletter-contact.cjs +17 -10
- package/dist/footer-newsletter-contact.js +17 -10
- package/dist/footer-newsletter-grid.cjs +17 -10
- package/dist/footer-newsletter-grid.js +17 -10
- package/dist/footer-newsletter-minimal.cjs +17 -10
- package/dist/footer-newsletter-minimal.js +17 -10
- package/dist/footer-social-apps.cjs +17 -10
- package/dist/footer-social-apps.js +17 -10
- package/dist/footer-social-newsletter.cjs +17 -10
- package/dist/footer-social-newsletter.js +17 -10
- package/dist/footer-split-image-accordion.cjs +17 -10
- package/dist/footer-split-image-accordion.js +17 -10
- package/dist/hero-badge-shadow-overlay.cjs +1 -1
- package/dist/hero-badge-shadow-overlay.js +1 -1
- package/dist/hero-coming-soon-countdown.cjs +17 -10
- package/dist/hero-coming-soon-countdown.js +17 -10
- package/dist/hero-video-background-dark.cjs +78 -16
- package/dist/hero-video-background-dark.d.cts +7 -2
- package/dist/hero-video-background-dark.d.ts +7 -2
- package/dist/hero-video-background-dark.js +78 -16
- package/dist/index.cjs +35 -10
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +35 -11
- package/dist/link-page-bento-layout.cjs +17 -10
- package/dist/link-page-bento-layout.js +17 -10
- package/dist/link-page-grid-cards.cjs +17 -10
- package/dist/link-page-grid-cards.js +17 -10
- package/dist/link-page-minimal-profile.cjs +17 -10
- package/dist/link-page-minimal-profile.js +17 -10
- package/dist/link-page-newsletter-social.cjs +17 -10
- package/dist/link-page-newsletter-social.js +17 -10
- package/dist/link-tree-block.cjs +17 -10
- package/dist/link-tree-block.js +17 -10
- package/dist/navbar-fullscreen-menu.cjs +17 -10
- package/dist/navbar-fullscreen-menu.js +17 -10
- package/dist/navbar-transparent-overlay.cjs +17 -10
- package/dist/navbar-transparent-overlay.js +17 -10
- package/dist/registry.cjs +1398 -851
- package/dist/registry.js +1398 -851
- package/dist/social-link-icon.cjs +17 -10
- package/dist/social-link-icon.d.cts +5 -0
- package/dist/social-link-icon.d.ts +5 -0
- package/dist/social-link-icon.js +17 -10
- package/dist/testimonials-animated-split.cjs +5 -5
- package/dist/testimonials-animated-split.js +5 -5
- package/dist/testimonials-bento-grid.cjs +48 -56
- package/dist/testimonials-bento-grid.js +48 -56
- package/dist/testimonials-carousel-image.cjs +608 -96
- package/dist/testimonials-carousel-image.d.cts +26 -2
- package/dist/testimonials-carousel-image.d.ts +26 -2
- package/dist/testimonials-carousel-image.js +609 -97
- package/dist/testimonials-centered-avatars.cjs +89 -62
- package/dist/testimonials-centered-avatars.d.cts +5 -1
- package/dist/testimonials-centered-avatars.d.ts +5 -1
- package/dist/testimonials-centered-avatars.js +89 -62
- package/dist/testimonials-company-logo.cjs +6 -6
- package/dist/testimonials-company-logo.js +6 -6
- package/dist/testimonials-grid-add-review.cjs +51 -29
- package/dist/testimonials-grid-add-review.js +51 -29
- package/dist/testimonials-images-helpful.cjs +181 -160
- package/dist/testimonials-images-helpful.d.cts +9 -1
- package/dist/testimonials-images-helpful.d.ts +9 -1
- package/dist/testimonials-images-helpful.js +181 -159
- package/dist/testimonials-list-verified.cjs +63 -44
- package/dist/testimonials-list-verified.d.cts +5 -1
- package/dist/testimonials-list-verified.d.ts +5 -1
- package/dist/testimonials-list-verified.js +64 -45
- package/dist/testimonials-logo-cards.cjs +53 -29
- package/dist/testimonials-logo-cards.d.cts +5 -1
- package/dist/testimonials-logo-cards.d.ts +5 -1
- package/dist/testimonials-logo-cards.js +53 -29
- package/dist/testimonials-marquee.cjs +524 -102
- package/dist/testimonials-marquee.d.cts +5 -1
- package/dist/testimonials-marquee.d.ts +5 -1
- package/dist/testimonials-marquee.js +525 -100
- package/dist/testimonials-mini-dividers.cjs +120 -83
- package/dist/testimonials-mini-dividers.d.cts +10 -6
- package/dist/testimonials-mini-dividers.d.ts +10 -6
- package/dist/testimonials-mini-dividers.js +120 -83
- package/dist/testimonials-minimal-numbered.cjs +7 -6
- package/dist/testimonials-minimal-numbered.d.cts +5 -1
- package/dist/testimonials-minimal-numbered.d.ts +5 -1
- package/dist/testimonials-minimal-numbered.js +7 -6
- package/dist/testimonials-parallax-number.cjs +14 -8
- package/dist/testimonials-parallax-number.js +14 -8
- package/dist/testimonials-scrolling-columns.cjs +97 -13
- package/dist/testimonials-scrolling-columns.js +97 -13
- package/dist/testimonials-simple-grid.cjs +513 -68
- package/dist/testimonials-simple-grid.d.cts +9 -5
- package/dist/testimonials-simple-grid.d.ts +9 -5
- package/dist/testimonials-simple-grid.js +510 -62
- package/dist/testimonials-slider-minimal.cjs +604 -90
- package/dist/testimonials-slider-minimal.d.cts +17 -1
- package/dist/testimonials-slider-minimal.d.ts +17 -1
- package/dist/testimonials-slider-minimal.js +598 -81
- package/dist/testimonials-split-image.cjs +452 -17
- package/dist/testimonials-split-image.js +448 -13
- package/dist/testimonials-twitter-cards.cjs +26 -14
- package/dist/testimonials-twitter-cards.js +26 -14
- package/package.json +11 -1
|
@@ -504,7 +504,8 @@ function TestimonialsCenteredAvatars({
|
|
|
504
504
|
quoteClassName,
|
|
505
505
|
authorClassName,
|
|
506
506
|
background,
|
|
507
|
-
|
|
507
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
508
|
+
spacing = "xl",
|
|
508
509
|
pattern,
|
|
509
510
|
patternOpacity
|
|
510
511
|
}) {
|
|
@@ -512,46 +513,62 @@ function TestimonialsCenteredAvatars({
|
|
|
512
513
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
513
514
|
return "";
|
|
514
515
|
}, []);
|
|
515
|
-
const getAvatarSrc = React.useCallback(
|
|
516
|
-
|
|
517
|
-
|
|
516
|
+
const getAvatarSrc = React.useCallback(
|
|
517
|
+
(testimonial) => {
|
|
518
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
519
|
+
},
|
|
520
|
+
[]
|
|
521
|
+
);
|
|
518
522
|
const getInitials = React.useCallback((name) => {
|
|
519
523
|
return name.split(" ").map((n) => n[0]).join("");
|
|
520
524
|
}, []);
|
|
521
525
|
const renderedTestimonials = React.useMemo(() => {
|
|
522
526
|
if (testimonialsSlot) return testimonialsSlot;
|
|
523
527
|
if (!testimonials || testimonials.length === 0) return null;
|
|
524
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
528
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
525
529
|
"div",
|
|
526
530
|
{
|
|
527
|
-
className: cn("space-y-
|
|
528
|
-
children:
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
531
|
+
className: cn("mt-12 space-y-8 md:space-y-12", testimonialsClassName),
|
|
532
|
+
children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
533
|
+
"div",
|
|
534
|
+
{
|
|
535
|
+
className: cn("space-y-4", testimonialItemClassName),
|
|
536
|
+
children: [
|
|
537
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
538
|
+
"blockquote",
|
|
539
|
+
{
|
|
540
|
+
className: cn(
|
|
541
|
+
"text-lg leading-relaxed md:text-xl text-balance",
|
|
542
|
+
quoteClassName
|
|
543
|
+
),
|
|
544
|
+
children: [
|
|
545
|
+
"\u201C",
|
|
546
|
+
testimonial.quote,
|
|
547
|
+
"\u201D"
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
551
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: authorClassName, children: [
|
|
552
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
553
|
+
(testimonial.role || testimonial.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-75", children: [
|
|
554
|
+
testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
|
|
555
|
+
testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
|
|
556
|
+
] })
|
|
557
|
+
] })
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
index
|
|
561
|
+
))
|
|
562
|
+
}
|
|
563
|
+
);
|
|
564
|
+
}, [
|
|
565
|
+
testimonialsSlot,
|
|
566
|
+
testimonialsClassName,
|
|
567
|
+
testimonials,
|
|
568
|
+
testimonialItemClassName,
|
|
569
|
+
quoteClassName,
|
|
570
|
+
authorClassName
|
|
571
|
+
]);
|
|
555
572
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
556
573
|
Section,
|
|
557
574
|
{
|
|
@@ -560,35 +577,45 @@ function TestimonialsCenteredAvatars({
|
|
|
560
577
|
pattern,
|
|
561
578
|
patternOpacity,
|
|
562
579
|
className,
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
children:
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
580
|
+
containerClassName,
|
|
581
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
582
|
+
"div",
|
|
583
|
+
{
|
|
584
|
+
className: cn(
|
|
585
|
+
"mx-auto max-w-full md:max-w-md text-center flex flex-col items-center gap-6 bg-card/50 px-10 py-20 shadow-xl border border-border/50 rounded-3xl backdrop-blur-md",
|
|
586
|
+
contentClassName
|
|
587
|
+
),
|
|
588
|
+
children: [
|
|
589
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: badgeClassName, children: badge }) : badge),
|
|
590
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
591
|
+
"h2",
|
|
592
|
+
{
|
|
593
|
+
className: cn(
|
|
594
|
+
"text-2xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
|
|
595
|
+
headingClassName
|
|
596
|
+
),
|
|
597
|
+
children: heading
|
|
598
|
+
}
|
|
599
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
600
|
+
testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
|
|
601
|
+
const authorName = getAuthorName(testimonial);
|
|
602
|
+
const avatarSrc = getAvatarSrc(testimonial);
|
|
603
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
604
|
+
Avatar,
|
|
605
|
+
{
|
|
606
|
+
className: "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary md:size-20 shadow-xl",
|
|
607
|
+
children: [
|
|
608
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
609
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
|
|
610
|
+
]
|
|
611
|
+
},
|
|
612
|
+
index
|
|
613
|
+
);
|
|
614
|
+
}) }) }),
|
|
615
|
+
renderedTestimonials
|
|
616
|
+
]
|
|
617
|
+
}
|
|
618
|
+
)
|
|
592
619
|
}
|
|
593
620
|
);
|
|
594
621
|
}
|
|
@@ -76,6 +76,10 @@ interface TestimonialsCenteredAvatarsProps {
|
|
|
76
76
|
* Pattern overlay opacity (0-1)
|
|
77
77
|
*/
|
|
78
78
|
patternOpacity?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Additional CSS classes for the container
|
|
81
|
+
*/
|
|
82
|
+
containerClassName?: string;
|
|
79
83
|
}
|
|
80
84
|
/**
|
|
81
85
|
* TestimonialsCenteredAvatars - A centered testimonial section featuring a badge,
|
|
@@ -103,6 +107,6 @@ interface TestimonialsCenteredAvatarsProps {
|
|
|
103
107
|
* />
|
|
104
108
|
* ```
|
|
105
109
|
*/
|
|
106
|
-
declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
|
|
110
|
+
declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
|
|
107
111
|
|
|
108
112
|
export { TestimonialsCenteredAvatars, type TestimonialsCenteredAvatarsProps };
|
|
@@ -76,6 +76,10 @@ interface TestimonialsCenteredAvatarsProps {
|
|
|
76
76
|
* Pattern overlay opacity (0-1)
|
|
77
77
|
*/
|
|
78
78
|
patternOpacity?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Additional CSS classes for the container
|
|
81
|
+
*/
|
|
82
|
+
containerClassName?: string;
|
|
79
83
|
}
|
|
80
84
|
/**
|
|
81
85
|
* TestimonialsCenteredAvatars - A centered testimonial section featuring a badge,
|
|
@@ -103,6 +107,6 @@ interface TestimonialsCenteredAvatarsProps {
|
|
|
103
107
|
* />
|
|
104
108
|
* ```
|
|
105
109
|
*/
|
|
106
|
-
declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
|
|
110
|
+
declare function TestimonialsCenteredAvatars({ testimonials, testimonialsSlot, badge, heading, className, contentClassName, badgeClassName, headingClassName, avatarsClassName, testimonialsClassName, testimonialItemClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, }: TestimonialsCenteredAvatarsProps): React.JSX.Element;
|
|
107
111
|
|
|
108
112
|
export { TestimonialsCenteredAvatars, type TestimonialsCenteredAvatarsProps };
|
|
@@ -479,7 +479,8 @@ function TestimonialsCenteredAvatars({
|
|
|
479
479
|
quoteClassName,
|
|
480
480
|
authorClassName,
|
|
481
481
|
background,
|
|
482
|
-
|
|
482
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
483
|
+
spacing = "xl",
|
|
483
484
|
pattern,
|
|
484
485
|
patternOpacity
|
|
485
486
|
}) {
|
|
@@ -487,46 +488,62 @@ function TestimonialsCenteredAvatars({
|
|
|
487
488
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
488
489
|
return "";
|
|
489
490
|
}, []);
|
|
490
|
-
const getAvatarSrc = useCallback(
|
|
491
|
-
|
|
492
|
-
|
|
491
|
+
const getAvatarSrc = useCallback(
|
|
492
|
+
(testimonial) => {
|
|
493
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
494
|
+
},
|
|
495
|
+
[]
|
|
496
|
+
);
|
|
493
497
|
const getInitials = useCallback((name) => {
|
|
494
498
|
return name.split(" ").map((n) => n[0]).join("");
|
|
495
499
|
}, []);
|
|
496
500
|
const renderedTestimonials = useMemo(() => {
|
|
497
501
|
if (testimonialsSlot) return testimonialsSlot;
|
|
498
502
|
if (!testimonials || testimonials.length === 0) return null;
|
|
499
|
-
return /* @__PURE__ */ jsx(
|
|
503
|
+
return /* @__PURE__ */ jsx(
|
|
500
504
|
"div",
|
|
501
505
|
{
|
|
502
|
-
className: cn("space-y-
|
|
503
|
-
children:
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
506
|
+
className: cn("mt-12 space-y-8 md:space-y-12", testimonialsClassName),
|
|
507
|
+
children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs(
|
|
508
|
+
"div",
|
|
509
|
+
{
|
|
510
|
+
className: cn("space-y-4", testimonialItemClassName),
|
|
511
|
+
children: [
|
|
512
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxs(
|
|
513
|
+
"blockquote",
|
|
514
|
+
{
|
|
515
|
+
className: cn(
|
|
516
|
+
"text-lg leading-relaxed md:text-xl text-balance",
|
|
517
|
+
quoteClassName
|
|
518
|
+
),
|
|
519
|
+
children: [
|
|
520
|
+
"\u201C",
|
|
521
|
+
testimonial.quote,
|
|
522
|
+
"\u201D"
|
|
523
|
+
]
|
|
524
|
+
}
|
|
525
|
+
) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
526
|
+
/* @__PURE__ */ jsxs("div", { className: authorClassName, children: [
|
|
527
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
528
|
+
(testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("p", { className: "text-sm opacity-75", children: [
|
|
529
|
+
testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role),
|
|
530
|
+
testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company)
|
|
531
|
+
] })
|
|
532
|
+
] })
|
|
533
|
+
]
|
|
534
|
+
},
|
|
535
|
+
index
|
|
536
|
+
))
|
|
537
|
+
}
|
|
538
|
+
);
|
|
539
|
+
}, [
|
|
540
|
+
testimonialsSlot,
|
|
541
|
+
testimonialsClassName,
|
|
542
|
+
testimonials,
|
|
543
|
+
testimonialItemClassName,
|
|
544
|
+
quoteClassName,
|
|
545
|
+
authorClassName
|
|
546
|
+
]);
|
|
530
547
|
return /* @__PURE__ */ jsx(
|
|
531
548
|
Section,
|
|
532
549
|
{
|
|
@@ -535,35 +552,45 @@ function TestimonialsCenteredAvatars({
|
|
|
535
552
|
pattern,
|
|
536
553
|
patternOpacity,
|
|
537
554
|
className,
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
children:
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
555
|
+
containerClassName,
|
|
556
|
+
children: /* @__PURE__ */ jsxs(
|
|
557
|
+
"div",
|
|
558
|
+
{
|
|
559
|
+
className: cn(
|
|
560
|
+
"mx-auto max-w-full md:max-w-md text-center flex flex-col items-center gap-6 bg-card/50 px-10 py-20 shadow-xl border border-border/50 rounded-3xl backdrop-blur-md",
|
|
561
|
+
contentClassName
|
|
562
|
+
),
|
|
563
|
+
children: [
|
|
564
|
+
badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { className: badgeClassName, children: badge }) : badge),
|
|
565
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
566
|
+
"h2",
|
|
567
|
+
{
|
|
568
|
+
className: cn(
|
|
569
|
+
"text-2xl font-semibold tracking-tight md:text-4xl lg:text-6xl text-balance",
|
|
570
|
+
headingClassName
|
|
571
|
+
),
|
|
572
|
+
children: heading
|
|
573
|
+
}
|
|
574
|
+
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
575
|
+
testimonials && testimonials.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center", avatarsClassName), children: /* @__PURE__ */ jsx("div", { className: "flex -space-x-4", children: testimonials.map((testimonial, index) => {
|
|
576
|
+
const authorName = getAuthorName(testimonial);
|
|
577
|
+
const avatarSrc = getAvatarSrc(testimonial);
|
|
578
|
+
return /* @__PURE__ */ jsxs(
|
|
579
|
+
Avatar,
|
|
580
|
+
{
|
|
581
|
+
className: "relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary md:size-20 shadow-xl",
|
|
582
|
+
children: [
|
|
583
|
+
/* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
584
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
|
|
585
|
+
]
|
|
586
|
+
},
|
|
587
|
+
index
|
|
588
|
+
);
|
|
589
|
+
}) }) }),
|
|
590
|
+
renderedTestimonials
|
|
591
|
+
]
|
|
592
|
+
}
|
|
593
|
+
)
|
|
567
594
|
}
|
|
568
595
|
);
|
|
569
596
|
}
|
|
@@ -859,14 +859,14 @@ function TestimonialsCompanyLogo({
|
|
|
859
859
|
const renderedTestimonial = React4.useMemo(() => {
|
|
860
860
|
if (testimonialSlot) return testimonialSlot;
|
|
861
861
|
if (!testimonial) return null;
|
|
862
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-
|
|
862
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-12 md:space-y-16", contentClassName), children: [
|
|
863
863
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
864
864
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
|
|
865
865
|
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
866
866
|
"blockquote",
|
|
867
867
|
{
|
|
868
868
|
className: cn(
|
|
869
|
-
"relative text-
|
|
869
|
+
"relative text-lg font-light leading-relaxed md:text-2xl",
|
|
870
870
|
quoteClassName
|
|
871
871
|
),
|
|
872
872
|
children: testimonial.quote
|
|
@@ -884,15 +884,15 @@ function TestimonialsCompanyLogo({
|
|
|
884
884
|
}
|
|
885
885
|
),
|
|
886
886
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-1 text-right", authorClassName), children: [
|
|
887
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
887
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-end", children: [
|
|
888
888
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
889
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: testimonial.role }) : testimonial.role)
|
|
889
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
|
|
890
890
|
] }),
|
|
891
891
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
892
892
|
Pressable,
|
|
893
893
|
{
|
|
894
894
|
href: testimonial.linkConfig?.href,
|
|
895
|
-
className: "text-sm font-bold uppercase transition-all duration-
|
|
895
|
+
className: "cursor-pointer text-sm font-bold uppercase transition-all duration-500 hover:underline hover:underline-offset-4",
|
|
896
896
|
children: testimonial.linkConfig?.label || "Learn more"
|
|
897
897
|
}
|
|
898
898
|
)
|
|
@@ -923,7 +923,7 @@ function TestimonialsCompanyLogo({
|
|
|
923
923
|
"div",
|
|
924
924
|
{
|
|
925
925
|
className: cn(
|
|
926
|
-
"grid items-center gap-
|
|
926
|
+
"grid items-center gap-16 lg:gap-24 grid-cols-1 lg:grid-cols-2",
|
|
927
927
|
gridClassName
|
|
928
928
|
),
|
|
929
929
|
children: [
|
|
@@ -838,14 +838,14 @@ function TestimonialsCompanyLogo({
|
|
|
838
838
|
const renderedTestimonial = useMemo(() => {
|
|
839
839
|
if (testimonialSlot) return testimonialSlot;
|
|
840
840
|
if (!testimonial) return null;
|
|
841
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-
|
|
841
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-12 md:space-y-16", contentClassName), children: [
|
|
842
842
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
843
843
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "mdi/comment-quote-outline", size: 48 }),
|
|
844
844
|
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
|
|
845
845
|
"blockquote",
|
|
846
846
|
{
|
|
847
847
|
className: cn(
|
|
848
|
-
"relative text-
|
|
848
|
+
"relative text-lg font-light leading-relaxed md:text-2xl",
|
|
849
849
|
quoteClassName
|
|
850
850
|
),
|
|
851
851
|
children: testimonial.quote
|
|
@@ -863,15 +863,15 @@ function TestimonialsCompanyLogo({
|
|
|
863
863
|
}
|
|
864
864
|
),
|
|
865
865
|
/* @__PURE__ */ jsxs("div", { className: cn("space-y-1 text-right", authorClassName), children: [
|
|
866
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
866
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end", children: [
|
|
867
867
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-semibold", children: testimonial.author }) : testimonial.author),
|
|
868
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: testimonial.role }) : testimonial.role)
|
|
868
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm opacity-75", children: testimonial.role }) : testimonial.role)
|
|
869
869
|
] }),
|
|
870
870
|
/* @__PURE__ */ jsx(
|
|
871
871
|
Pressable,
|
|
872
872
|
{
|
|
873
873
|
href: testimonial.linkConfig?.href,
|
|
874
|
-
className: "text-sm font-bold uppercase transition-all duration-
|
|
874
|
+
className: "cursor-pointer text-sm font-bold uppercase transition-all duration-500 hover:underline hover:underline-offset-4",
|
|
875
875
|
children: testimonial.linkConfig?.label || "Learn more"
|
|
876
876
|
}
|
|
877
877
|
)
|
|
@@ -902,7 +902,7 @@ function TestimonialsCompanyLogo({
|
|
|
902
902
|
"div",
|
|
903
903
|
{
|
|
904
904
|
className: cn(
|
|
905
|
-
"grid items-center gap-
|
|
905
|
+
"grid items-center gap-16 lg:gap-24 grid-cols-1 lg:grid-cols-2",
|
|
906
906
|
gridClassName
|
|
907
907
|
),
|
|
908
908
|
children: [
|
|
@@ -45,6 +45,23 @@ var DynamicIcon = React__namespace.memo(function DynamicIcon2({
|
|
|
45
45
|
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
46
46
|
});
|
|
47
47
|
DynamicIcon.displayName = "DynamicIcon";
|
|
48
|
+
function StarRating({
|
|
49
|
+
rating,
|
|
50
|
+
size = 18,
|
|
51
|
+
className
|
|
52
|
+
}) {
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
DynamicIcon,
|
|
55
|
+
{
|
|
56
|
+
name: "icon-park-solid/star",
|
|
57
|
+
size,
|
|
58
|
+
className: cn(
|
|
59
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
60
|
+
)
|
|
61
|
+
},
|
|
62
|
+
star
|
|
63
|
+
)) });
|
|
64
|
+
}
|
|
48
65
|
function Avatar({
|
|
49
66
|
className,
|
|
50
67
|
...props
|
|
@@ -489,19 +506,6 @@ var Section = React__namespace.default.forwardRef(
|
|
|
489
506
|
}
|
|
490
507
|
);
|
|
491
508
|
Section.displayName = "Section";
|
|
492
|
-
function StarRating({ rating, size = 16 }) {
|
|
493
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
494
|
-
DynamicIcon,
|
|
495
|
-
{
|
|
496
|
-
name: "lucide/star",
|
|
497
|
-
size,
|
|
498
|
-
className: cn(
|
|
499
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
500
|
-
)
|
|
501
|
-
},
|
|
502
|
-
star
|
|
503
|
-
)) });
|
|
504
|
-
}
|
|
505
509
|
function TestimonialsGridAddReview({
|
|
506
510
|
reviews,
|
|
507
511
|
reviewsSlot,
|
|
@@ -548,21 +552,27 @@ function TestimonialsGridAddReview({
|
|
|
548
552
|
addReviewCardClassName
|
|
549
553
|
),
|
|
550
554
|
onClick: onAddReview,
|
|
551
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
size:
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
555
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
556
|
+
CardContent,
|
|
557
|
+
{
|
|
558
|
+
className: cn(
|
|
559
|
+
"flex flex-col items-center gap-3 py-12 text-center",
|
|
560
|
+
getNestedCardTextColor(background)
|
|
561
|
+
),
|
|
562
|
+
children: [
|
|
563
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
564
|
+
DynamicIcon,
|
|
565
|
+
{
|
|
566
|
+
name: "lucide/plus",
|
|
567
|
+
size: 24,
|
|
568
|
+
className: "text-primary"
|
|
569
|
+
}
|
|
570
|
+
) }),
|
|
571
|
+
addReviewText && (typeof addReviewText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: addReviewText }) : addReviewText),
|
|
572
|
+
addReviewSubtext && (typeof addReviewSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: addReviewSubtext }) : addReviewSubtext)
|
|
573
|
+
]
|
|
574
|
+
}
|
|
575
|
+
)
|
|
566
576
|
}
|
|
567
577
|
),
|
|
568
578
|
reviews?.map((review, index) => {
|
|
@@ -582,7 +592,19 @@ function TestimonialsGridAddReview({
|
|
|
582
592
|
]
|
|
583
593
|
}
|
|
584
594
|
);
|
|
585
|
-
}, [
|
|
595
|
+
}, [
|
|
596
|
+
reviewsSlot,
|
|
597
|
+
gridClassName,
|
|
598
|
+
addReviewCardClassName,
|
|
599
|
+
onAddReview,
|
|
600
|
+
addReviewText,
|
|
601
|
+
addReviewSubtext,
|
|
602
|
+
reviews,
|
|
603
|
+
cardClassName,
|
|
604
|
+
authorClassName,
|
|
605
|
+
getAuthorName,
|
|
606
|
+
getInitials
|
|
607
|
+
]);
|
|
586
608
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
587
609
|
Section,
|
|
588
610
|
{
|