@opensite/ui 2.8.6 → 2.8.8
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-icon-sidebar.cjs +5 -4
- package/dist/carousel-icon-sidebar.js +5 -4
- 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 +81 -42
- package/dist/components.d.cts +29 -2
- package/dist/components.d.ts +29 -2
- package/dist/components.js +81 -43
- package/dist/contact-map.cjs +46 -32
- package/dist/contact-map.js +46 -32
- 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/geo-map.cjs +46 -32
- package/dist/geo-map.js +46 -32
- 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 +81 -42
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +81 -43
- 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 +967 -620
- package/dist/registry.js +967 -620
- 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-bento-grid.cjs +1 -1
- package/dist/testimonials-bento-grid.js +1 -1
- package/dist/testimonials-carousel-image.cjs +16 -2
- package/dist/testimonials-carousel-image.d.cts +5 -1
- package/dist/testimonials-carousel-image.d.ts +5 -1
- package/dist/testimonials-carousel-image.js +16 -2
- package/dist/testimonials-centered-avatars.cjs +1 -1
- package/dist/testimonials-centered-avatars.js +1 -1
- 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-large-quote.cjs +74 -43
- package/dist/testimonials-large-quote.d.cts +5 -1
- package/dist/testimonials-large-quote.d.ts +5 -1
- package/dist/testimonials-large-quote.js +74 -43
- 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 +55 -25
- package/dist/testimonials-logo-cards.d.cts +5 -1
- package/dist/testimonials-logo-cards.d.ts +5 -1
- package/dist/testimonials-logo-cards.js +55 -25
- package/dist/testimonials-marquee.cjs +440 -28
- package/dist/testimonials-marquee.js +441 -26
- package/dist/testimonials-masonry-grid.cjs +486 -69
- package/dist/testimonials-masonry-grid.d.cts +5 -1
- package/dist/testimonials-masonry-grid.d.ts +5 -1
- package/dist/testimonials-masonry-grid.js +483 -63
- package/dist/testimonials-mini-dividers.cjs +119 -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 +119 -83
- package/dist/testimonials-minimal-numbered.cjs +9 -7
- package/dist/testimonials-minimal-numbered.d.cts +5 -1
- package/dist/testimonials-minimal-numbered.d.ts +5 -1
- package/dist/testimonials-minimal-numbered.js +9 -7
- package/dist/testimonials-parallax-number.cjs +14 -9
- package/dist/testimonials-parallax-number.js +14 -9
- package/dist/testimonials-scrolling-columns.cjs +100 -21
- package/dist/testimonials-scrolling-columns.js +100 -21
- package/dist/testimonials-simple-grid.cjs +22 -5
- package/dist/testimonials-simple-grid.js +22 -5
- package/dist/testimonials-slider-minimal.cjs +1 -1
- package/dist/testimonials-slider-minimal.js +1 -1
- package/dist/testimonials-stats-header.cjs +528 -87
- package/dist/testimonials-stats-header.d.cts +39 -3
- package/dist/testimonials-stats-header.d.ts +39 -3
- package/dist/testimonials-stats-header.js +523 -82
- package/dist/testimonials-twitter-cards.cjs +20 -12
- package/dist/testimonials-twitter-cards.js +20 -12
- package/package.json +11 -1
|
@@ -450,7 +450,8 @@ function TestimonialsLargeQuote({
|
|
|
450
450
|
authorClassName,
|
|
451
451
|
avatarClassName,
|
|
452
452
|
background,
|
|
453
|
-
|
|
453
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
454
|
+
spacing = "xl",
|
|
454
455
|
pattern,
|
|
455
456
|
patternOpacity
|
|
456
457
|
}) {
|
|
@@ -469,49 +470,78 @@ function TestimonialsLargeQuote({
|
|
|
469
470
|
if (!testimonial) return null;
|
|
470
471
|
const authorName = getAuthorName();
|
|
471
472
|
const avatarSrc = getAvatarSrc();
|
|
472
|
-
return /* @__PURE__ */ jsxs(
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
),
|
|
488
|
-
children: testimonial.quote
|
|
489
|
-
}
|
|
490
|
-
) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
491
|
-
/* @__PURE__ */ jsxs(
|
|
492
|
-
"div",
|
|
493
|
-
{
|
|
494
|
-
className: cn(
|
|
495
|
-
"mt-10 flex flex-col items-center gap-4",
|
|
496
|
-
authorClassName
|
|
473
|
+
return /* @__PURE__ */ jsxs(
|
|
474
|
+
"div",
|
|
475
|
+
{
|
|
476
|
+
className: cn(
|
|
477
|
+
"mx-auto max-full md:max-w-lg text-center",
|
|
478
|
+
contentClassName
|
|
479
|
+
),
|
|
480
|
+
children: [
|
|
481
|
+
/* @__PURE__ */ jsx(
|
|
482
|
+
DynamicIcon,
|
|
483
|
+
{
|
|
484
|
+
name: "mdi/comment-quote-outline",
|
|
485
|
+
size: 48,
|
|
486
|
+
className: cn("mx-auto mb-8 ", quoteIconClassName)
|
|
487
|
+
}
|
|
497
488
|
),
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
489
|
+
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsx(
|
|
490
|
+
"blockquote",
|
|
491
|
+
{
|
|
492
|
+
className: cn(
|
|
493
|
+
"text-2xl font-light leading-relaxed md:text-3xl lg:text-4xl text-balance",
|
|
494
|
+
quoteClassName
|
|
495
|
+
),
|
|
496
|
+
children: testimonial.quote
|
|
497
|
+
}
|
|
498
|
+
) : /* @__PURE__ */ jsx("div", { className: quoteClassName, children: testimonial.quote })),
|
|
499
|
+
/* @__PURE__ */ jsxs(
|
|
500
|
+
"div",
|
|
501
|
+
{
|
|
502
|
+
className: cn(
|
|
503
|
+
"mt-10 md:mt-16 flex flex-col items-center gap-4 md:gap-8",
|
|
504
|
+
authorClassName
|
|
505
|
+
),
|
|
506
|
+
children: [
|
|
507
|
+
/* @__PURE__ */ jsxs(
|
|
508
|
+
Avatar,
|
|
509
|
+
{
|
|
510
|
+
className: cn(
|
|
511
|
+
"relative flex shrink-0 overflow-hidden rounded-full size-16 ring-4 ring-primary shadow-lg",
|
|
512
|
+
avatarClassName
|
|
513
|
+
),
|
|
514
|
+
children: [
|
|
515
|
+
/* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
516
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-lg", children: getInitials(authorName) })
|
|
517
|
+
]
|
|
518
|
+
}
|
|
519
|
+
),
|
|
520
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4", children: [
|
|
521
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold", children: testimonial.author }) : testimonial.author),
|
|
522
|
+
(testimonial.role || testimonial.company) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
|
|
523
|
+
/* @__PURE__ */ jsx("div", { className: "text-base font-normal opacity-75", children: testimonial.role && (typeof testimonial.role === "string" ? testimonial.role : testimonial.role) }),
|
|
524
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm uppercase font-semibold opacity-75", children: testimonial.company && (typeof testimonial.company === "string" ? ` at ${testimonial.company}` : testimonial.company) })
|
|
525
|
+
] })
|
|
526
|
+
] })
|
|
527
|
+
]
|
|
528
|
+
}
|
|
529
|
+
)
|
|
530
|
+
]
|
|
531
|
+
}
|
|
532
|
+
);
|
|
533
|
+
}, [
|
|
534
|
+
testimonialSlot,
|
|
535
|
+
contentClassName,
|
|
536
|
+
quoteIconClassName,
|
|
537
|
+
testimonial,
|
|
538
|
+
quoteClassName,
|
|
539
|
+
authorClassName,
|
|
540
|
+
avatarClassName,
|
|
541
|
+
getAuthorName,
|
|
542
|
+
getAvatarSrc,
|
|
543
|
+
getInitials
|
|
544
|
+
]);
|
|
515
545
|
return /* @__PURE__ */ jsx(
|
|
516
546
|
Section,
|
|
517
547
|
{
|
|
@@ -520,6 +550,7 @@ function TestimonialsLargeQuote({
|
|
|
520
550
|
pattern,
|
|
521
551
|
patternOpacity,
|
|
522
552
|
className,
|
|
553
|
+
containerClassName,
|
|
523
554
|
children: renderedTestimonial
|
|
524
555
|
}
|
|
525
556
|
);
|
|
@@ -43,6 +43,23 @@ var DynamicIcon = React__namespace.memo(function DynamicIcon2({
|
|
|
43
43
|
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
44
44
|
});
|
|
45
45
|
DynamicIcon.displayName = "DynamicIcon";
|
|
46
|
+
function StarRating({
|
|
47
|
+
rating,
|
|
48
|
+
size = 18,
|
|
49
|
+
className
|
|
50
|
+
}) {
|
|
51
|
+
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(
|
|
52
|
+
DynamicIcon,
|
|
53
|
+
{
|
|
54
|
+
name: "icon-park-solid/star",
|
|
55
|
+
size,
|
|
56
|
+
className: cn(
|
|
57
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
58
|
+
)
|
|
59
|
+
},
|
|
60
|
+
star
|
|
61
|
+
)) });
|
|
62
|
+
}
|
|
46
63
|
function Avatar({
|
|
47
64
|
className,
|
|
48
65
|
...props
|
|
@@ -484,19 +501,6 @@ var Section = React__namespace.default.forwardRef(
|
|
|
484
501
|
}
|
|
485
502
|
);
|
|
486
503
|
Section.displayName = "Section";
|
|
487
|
-
function StarRating({ rating, size = 16 }) {
|
|
488
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
489
|
-
DynamicIcon,
|
|
490
|
-
{
|
|
491
|
-
name: "lucide/star",
|
|
492
|
-
size,
|
|
493
|
-
className: cn(
|
|
494
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
495
|
-
)
|
|
496
|
-
},
|
|
497
|
-
star
|
|
498
|
-
)) });
|
|
499
|
-
}
|
|
500
504
|
function TestimonialsListVerified({
|
|
501
505
|
reviews,
|
|
502
506
|
reviewsSlot,
|
|
@@ -509,7 +513,8 @@ function TestimonialsListVerified({
|
|
|
509
513
|
contentClassName,
|
|
510
514
|
authorClassName,
|
|
511
515
|
background,
|
|
512
|
-
spacing,
|
|
516
|
+
spacing = "lg",
|
|
517
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
513
518
|
pattern,
|
|
514
519
|
patternOpacity
|
|
515
520
|
}) {
|
|
@@ -528,35 +533,49 @@ function TestimonialsListVerified({
|
|
|
528
533
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
|
|
529
534
|
const authorName = getAuthorName(review);
|
|
530
535
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reviewClassName, children: [
|
|
531
|
-
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-
|
|
532
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-
|
|
533
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
534
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size:
|
|
535
|
-
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "
|
|
536
|
+
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "bg-border/50 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-12 md:my-16" }),
|
|
537
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
|
|
538
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
539
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size: 22 }),
|
|
540
|
+
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
536
541
|
] }),
|
|
537
|
-
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
538
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center
|
|
539
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
542
|
+
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),
|
|
543
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
|
|
544
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
545
|
+
"div",
|
|
546
|
+
{
|
|
547
|
+
className: cn("flex items-center gap-5", authorClassName),
|
|
548
|
+
children: [
|
|
549
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
550
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
551
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
552
|
+
] }),
|
|
553
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-base flex-col items-start", children: [
|
|
554
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
555
|
+
review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
|
|
556
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
557
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
558
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
559
|
+
] })
|
|
560
|
+
] })
|
|
561
|
+
]
|
|
562
|
+
}
|
|
563
|
+
),
|
|
564
|
+
review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative", children: review.date })
|
|
555
565
|
] })
|
|
556
566
|
] })
|
|
557
567
|
] }, index);
|
|
558
568
|
}) });
|
|
559
|
-
}, [
|
|
569
|
+
}, [
|
|
570
|
+
reviewsSlot,
|
|
571
|
+
reviews,
|
|
572
|
+
reviewClassName,
|
|
573
|
+
contentClassName,
|
|
574
|
+
authorClassName,
|
|
575
|
+
verifiedPurchaseLabel,
|
|
576
|
+
getAuthorName,
|
|
577
|
+
getInitials
|
|
578
|
+
]);
|
|
560
579
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
561
580
|
Section,
|
|
562
581
|
{
|
|
@@ -565,21 +584,21 @@ function TestimonialsListVerified({
|
|
|
565
584
|
pattern,
|
|
566
585
|
patternOpacity,
|
|
567
586
|
className,
|
|
568
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-3xl", children: [
|
|
569
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-
|
|
587
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
588
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
570
589
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
571
590
|
"h2",
|
|
572
591
|
{
|
|
573
592
|
className: cn(
|
|
574
|
-
"text-2xl font-semibold tracking-tight md:text-3xl",
|
|
593
|
+
"text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
|
|
575
594
|
headingClassName
|
|
576
595
|
),
|
|
577
596
|
children: heading
|
|
578
597
|
}
|
|
579
|
-
) :
|
|
598
|
+
) : heading),
|
|
580
599
|
totalReviews > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
|
|
581
|
-
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: Math.round(averageRating), size:
|
|
582
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm
|
|
600
|
+
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
|
|
601
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm", children: [
|
|
583
602
|
averageRating.toFixed(1),
|
|
584
603
|
" out of 5 \xB7 ",
|
|
585
604
|
totalReviews,
|
|
@@ -97,6 +97,10 @@ interface TestimonialsListVerifiedProps {
|
|
|
97
97
|
* Pattern overlay opacity (0-1)
|
|
98
98
|
*/
|
|
99
99
|
patternOpacity?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Additional CSS classes for the container
|
|
102
|
+
*/
|
|
103
|
+
containerClassName?: string;
|
|
100
104
|
}
|
|
101
105
|
/**
|
|
102
106
|
* TestimonialsListVerified - A clean, vertical list of customer reviews with rating summary,
|
|
@@ -124,6 +128,6 @@ interface TestimonialsListVerifiedProps {
|
|
|
124
128
|
* />
|
|
125
129
|
* ```
|
|
126
130
|
*/
|
|
127
|
-
declare function TestimonialsListVerified({ reviews, reviewsSlot, heading, verifiedPurchaseLabel, className, headerClassName, headingClassName, reviewClassName, contentClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsListVerifiedProps): React.JSX.Element;
|
|
131
|
+
declare function TestimonialsListVerified({ reviews, reviewsSlot, heading, verifiedPurchaseLabel, className, headerClassName, headingClassName, reviewClassName, contentClassName, authorClassName, background, spacing, containerClassName, pattern, patternOpacity, }: TestimonialsListVerifiedProps): React.JSX.Element;
|
|
128
132
|
|
|
129
133
|
export { type ReviewItem, TestimonialsListVerified, type TestimonialsListVerifiedProps };
|
|
@@ -97,6 +97,10 @@ interface TestimonialsListVerifiedProps {
|
|
|
97
97
|
* Pattern overlay opacity (0-1)
|
|
98
98
|
*/
|
|
99
99
|
patternOpacity?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Additional CSS classes for the container
|
|
102
|
+
*/
|
|
103
|
+
containerClassName?: string;
|
|
100
104
|
}
|
|
101
105
|
/**
|
|
102
106
|
* TestimonialsListVerified - A clean, vertical list of customer reviews with rating summary,
|
|
@@ -124,6 +128,6 @@ interface TestimonialsListVerifiedProps {
|
|
|
124
128
|
* />
|
|
125
129
|
* ```
|
|
126
130
|
*/
|
|
127
|
-
declare function TestimonialsListVerified({ reviews, reviewsSlot, heading, verifiedPurchaseLabel, className, headerClassName, headingClassName, reviewClassName, contentClassName, authorClassName, background, spacing, pattern, patternOpacity, }: TestimonialsListVerifiedProps): React.JSX.Element;
|
|
131
|
+
declare function TestimonialsListVerified({ reviews, reviewsSlot, heading, verifiedPurchaseLabel, className, headerClassName, headingClassName, reviewClassName, contentClassName, authorClassName, background, spacing, containerClassName, pattern, patternOpacity, }: TestimonialsListVerifiedProps): React.JSX.Element;
|
|
128
132
|
|
|
129
133
|
export { type ReviewItem, TestimonialsListVerified, type TestimonialsListVerifiedProps };
|
|
@@ -4,7 +4,7 @@ import React__default, { useCallback, useMemo } from 'react';
|
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { Icon } from '@page-speed/icon';
|
|
7
|
-
import { jsx, jsxs
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
8
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
9
9
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
10
10
|
|
|
@@ -20,6 +20,23 @@ var DynamicIcon = React.memo(function DynamicIcon2({
|
|
|
20
20
|
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
21
21
|
});
|
|
22
22
|
DynamicIcon.displayName = "DynamicIcon";
|
|
23
|
+
function StarRating({
|
|
24
|
+
rating,
|
|
25
|
+
size = 18,
|
|
26
|
+
className
|
|
27
|
+
}) {
|
|
28
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
|
|
29
|
+
DynamicIcon,
|
|
30
|
+
{
|
|
31
|
+
name: "icon-park-solid/star",
|
|
32
|
+
size,
|
|
33
|
+
className: cn(
|
|
34
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
35
|
+
)
|
|
36
|
+
},
|
|
37
|
+
star
|
|
38
|
+
)) });
|
|
39
|
+
}
|
|
23
40
|
function Avatar({
|
|
24
41
|
className,
|
|
25
42
|
...props
|
|
@@ -461,19 +478,6 @@ var Section = React__default.forwardRef(
|
|
|
461
478
|
}
|
|
462
479
|
);
|
|
463
480
|
Section.displayName = "Section";
|
|
464
|
-
function StarRating({ rating, size = 16 }) {
|
|
465
|
-
return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
|
|
466
|
-
DynamicIcon,
|
|
467
|
-
{
|
|
468
|
-
name: "lucide/star",
|
|
469
|
-
size,
|
|
470
|
-
className: cn(
|
|
471
|
-
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
472
|
-
)
|
|
473
|
-
},
|
|
474
|
-
star
|
|
475
|
-
)) });
|
|
476
|
-
}
|
|
477
481
|
function TestimonialsListVerified({
|
|
478
482
|
reviews,
|
|
479
483
|
reviewsSlot,
|
|
@@ -486,7 +490,8 @@ function TestimonialsListVerified({
|
|
|
486
490
|
contentClassName,
|
|
487
491
|
authorClassName,
|
|
488
492
|
background,
|
|
489
|
-
spacing,
|
|
493
|
+
spacing = "lg",
|
|
494
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
490
495
|
pattern,
|
|
491
496
|
patternOpacity
|
|
492
497
|
}) {
|
|
@@ -505,35 +510,49 @@ function TestimonialsListVerified({
|
|
|
505
510
|
return /* @__PURE__ */ jsx("div", { className: "space-y-0", children: reviews.map((review, index) => {
|
|
506
511
|
const authorName = getAuthorName(review);
|
|
507
512
|
return /* @__PURE__ */ jsxs("div", { className: reviewClassName, children: [
|
|
508
|
-
index > 0 && /* @__PURE__ */ jsx(Separator, { className: "my-
|
|
509
|
-
/* @__PURE__ */ jsxs("div", { className: cn("space-y-
|
|
510
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
511
|
-
/* @__PURE__ */ jsx(StarRating, { rating: review.rating, size:
|
|
512
|
-
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "
|
|
513
|
+
index > 0 && /* @__PURE__ */ jsx(Separator, { className: "bg-border/50 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-12 md:my-16" }),
|
|
514
|
+
/* @__PURE__ */ jsxs("div", { className: cn("space-y-6 md:space-y-12", contentClassName), children: [
|
|
515
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
516
|
+
/* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: 22 }),
|
|
517
|
+
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
513
518
|
] }),
|
|
514
|
-
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-
|
|
515
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center
|
|
516
|
-
/* @__PURE__ */ jsxs(
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
519
|
+
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
|
|
520
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between w-full"), children: [
|
|
521
|
+
/* @__PURE__ */ jsxs(
|
|
522
|
+
"div",
|
|
523
|
+
{
|
|
524
|
+
className: cn("flex items-center gap-5", authorClassName),
|
|
525
|
+
children: [
|
|
526
|
+
/* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
527
|
+
/* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
528
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
529
|
+
] }),
|
|
530
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-base flex-col items-start", children: [
|
|
531
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
532
|
+
review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
533
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
534
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
535
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
536
|
+
] })
|
|
537
|
+
] })
|
|
538
|
+
]
|
|
539
|
+
}
|
|
540
|
+
),
|
|
541
|
+
review.date && /* @__PURE__ */ jsx("span", { className: "relative", children: review.date })
|
|
532
542
|
] })
|
|
533
543
|
] })
|
|
534
544
|
] }, index);
|
|
535
545
|
}) });
|
|
536
|
-
}, [
|
|
546
|
+
}, [
|
|
547
|
+
reviewsSlot,
|
|
548
|
+
reviews,
|
|
549
|
+
reviewClassName,
|
|
550
|
+
contentClassName,
|
|
551
|
+
authorClassName,
|
|
552
|
+
verifiedPurchaseLabel,
|
|
553
|
+
getAuthorName,
|
|
554
|
+
getInitials
|
|
555
|
+
]);
|
|
537
556
|
return /* @__PURE__ */ jsx(
|
|
538
557
|
Section,
|
|
539
558
|
{
|
|
@@ -542,21 +561,21 @@ function TestimonialsListVerified({
|
|
|
542
561
|
pattern,
|
|
543
562
|
patternOpacity,
|
|
544
563
|
className,
|
|
545
|
-
children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl", children: [
|
|
546
|
-
/* @__PURE__ */ jsxs("div", { className: cn("mb-
|
|
564
|
+
children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
565
|
+
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
547
566
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
548
567
|
"h2",
|
|
549
568
|
{
|
|
550
569
|
className: cn(
|
|
551
|
-
"text-2xl font-semibold tracking-tight md:text-3xl",
|
|
570
|
+
"text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl",
|
|
552
571
|
headingClassName
|
|
553
572
|
),
|
|
554
573
|
children: heading
|
|
555
574
|
}
|
|
556
|
-
) :
|
|
575
|
+
) : heading),
|
|
557
576
|
totalReviews > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
|
|
558
|
-
/* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size:
|
|
559
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm
|
|
577
|
+
/* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: 22 }),
|
|
578
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm", children: [
|
|
560
579
|
averageRating.toFixed(1),
|
|
561
580
|
" out of 5 \xB7 ",
|
|
562
581
|
totalReviews,
|
|
@@ -508,18 +508,25 @@ function TestimonialsLogoCards({
|
|
|
508
508
|
quoteClassName,
|
|
509
509
|
authorClassName,
|
|
510
510
|
background,
|
|
511
|
-
spacing,
|
|
511
|
+
spacing = "lg",
|
|
512
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
512
513
|
pattern,
|
|
513
514
|
patternOpacity,
|
|
514
515
|
optixFlowConfig
|
|
515
516
|
}) {
|
|
516
|
-
const getAuthorName = React.useCallback(
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
517
|
+
const getAuthorName = React.useCallback(
|
|
518
|
+
(testimonial) => {
|
|
519
|
+
if (typeof testimonial.author === "string") return testimonial.author;
|
|
520
|
+
return "";
|
|
521
|
+
},
|
|
522
|
+
[]
|
|
523
|
+
);
|
|
524
|
+
const getAvatarSrc = React.useCallback(
|
|
525
|
+
(testimonial) => {
|
|
526
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
527
|
+
},
|
|
528
|
+
[]
|
|
529
|
+
);
|
|
523
530
|
const getInitials = React.useCallback((name) => {
|
|
524
531
|
return name.split(" ").map((n) => n[0]).join("");
|
|
525
532
|
}, []);
|
|
@@ -550,7 +557,10 @@ function TestimonialsLogoCards({
|
|
|
550
557
|
{
|
|
551
558
|
src: testimonial.companyLogo,
|
|
552
559
|
alt: testimonial.companyLogoAlt || "Company logo",
|
|
553
|
-
className:
|
|
560
|
+
className: cn(
|
|
561
|
+
index === 0 ? "h-10" : "h-5",
|
|
562
|
+
"w-auto object-contain"
|
|
563
|
+
),
|
|
554
564
|
optixFlowConfig
|
|
555
565
|
}
|
|
556
566
|
) }),
|
|
@@ -567,20 +577,29 @@ function TestimonialsLogoCards({
|
|
|
567
577
|
{
|
|
568
578
|
className: cn(
|
|
569
579
|
"leading-relaxed",
|
|
570
|
-
index === 0 ? "text-xl font-
|
|
580
|
+
index === 0 ? "text-lg md:text-xl font-light" : "text-sm md:text-base",
|
|
571
581
|
quoteClassName
|
|
572
582
|
),
|
|
573
583
|
children: testimonial.quote
|
|
574
584
|
}
|
|
575
|
-
) :
|
|
585
|
+
) : testimonial.quote),
|
|
576
586
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
|
|
577
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
587
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
588
|
+
Avatar,
|
|
589
|
+
{
|
|
590
|
+
className: cn(
|
|
591
|
+
index === 0 ? "size-12" : "size-10",
|
|
592
|
+
"ring-4 ring-primary"
|
|
593
|
+
),
|
|
594
|
+
children: [
|
|
595
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
596
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
597
|
+
]
|
|
598
|
+
}
|
|
599
|
+
),
|
|
581
600
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
582
|
-
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm font-medium
|
|
583
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-
|
|
601
|
+
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
|
|
602
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs md:text-sm", children: testimonial.role }) : testimonial.role)
|
|
584
603
|
] })
|
|
585
604
|
] })
|
|
586
605
|
]
|
|
@@ -593,7 +612,20 @@ function TestimonialsLogoCards({
|
|
|
593
612
|
})
|
|
594
613
|
}
|
|
595
614
|
);
|
|
596
|
-
}, [
|
|
615
|
+
}, [
|
|
616
|
+
testimonialsSlot,
|
|
617
|
+
gridClassName,
|
|
618
|
+
testimonials,
|
|
619
|
+
cardClassName,
|
|
620
|
+
cardHeaderClassName,
|
|
621
|
+
optixFlowConfig,
|
|
622
|
+
cardContentClassName,
|
|
623
|
+
quoteClassName,
|
|
624
|
+
authorClassName,
|
|
625
|
+
getAuthorName,
|
|
626
|
+
getAvatarSrc,
|
|
627
|
+
getInitials
|
|
628
|
+
]);
|
|
597
629
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
598
630
|
Section,
|
|
599
631
|
{
|
|
@@ -602,6 +634,7 @@ function TestimonialsLogoCards({
|
|
|
602
634
|
pattern,
|
|
603
635
|
patternOpacity,
|
|
604
636
|
className,
|
|
637
|
+
containerClassName,
|
|
605
638
|
children: [
|
|
606
639
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
607
640
|
"div",
|
|
@@ -612,22 +645,19 @@ function TestimonialsLogoCards({
|
|
|
612
645
|
"h2",
|
|
613
646
|
{
|
|
614
647
|
className: cn(
|
|
615
|
-
"text-3xl font-semibold tracking-tight md:text-4xl",
|
|
648
|
+
"text-3xl font-semibold tracking-tight md:text-4xl text-balance",
|
|
616
649
|
headingClassName
|
|
617
650
|
),
|
|
618
651
|
children: heading
|
|
619
652
|
}
|
|
620
|
-
) :
|
|
653
|
+
) : heading),
|
|
621
654
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
622
655
|
"p",
|
|
623
656
|
{
|
|
624
|
-
className: cn(
|
|
625
|
-
"mt-4 text-lg text-muted-foreground",
|
|
626
|
-
descriptionClassName
|
|
627
|
-
),
|
|
657
|
+
className: cn("mt-4 text-lg text-balance", descriptionClassName),
|
|
628
658
|
children: description
|
|
629
659
|
}
|
|
630
|
-
) :
|
|
660
|
+
) : description)
|
|
631
661
|
]
|
|
632
662
|
}
|
|
633
663
|
),
|