@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.
- package/dist/carousel-feature-badge.cjs +4 -3
- package/dist/carousel-feature-badge.d.cts +1 -1
- package/dist/carousel-feature-badge.d.ts +1 -1
- package/dist/carousel-feature-badge.js +4 -3
- package/dist/carousel-scrolling-feature-showcase.cjs +47 -38
- package/dist/carousel-scrolling-feature-showcase.js +47 -38
- package/dist/registry.cjs +454 -265
- package/dist/registry.js +454 -265
- package/dist/testimonials-grid-add-review.cjs +578 -39
- package/dist/testimonials-grid-add-review.d.cts +26 -26
- package/dist/testimonials-grid-add-review.d.ts +26 -26
- package/dist/testimonials-grid-add-review.js +577 -38
- package/dist/testimonials-images-helpful.cjs +85 -74
- package/dist/testimonials-images-helpful.js +85 -74
- package/dist/testimonials-list-verified.cjs +1 -0
- package/dist/testimonials-list-verified.js +1 -0
- package/dist/testimonials-logo-cards.cjs +8 -5
- package/dist/testimonials-logo-cards.js +8 -5
- package/dist/testimonials-masonry-grid.cjs +87 -11
- package/dist/testimonials-masonry-grid.d.cts +14 -1
- package/dist/testimonials-masonry-grid.d.ts +14 -1
- package/dist/testimonials-masonry-grid.js +88 -12
- package/dist/testimonials-mini-dividers.cjs +438 -26
- package/dist/testimonials-mini-dividers.js +434 -22
- package/dist/testimonials-minimal-numbered.cjs +1 -1
- package/dist/testimonials-minimal-numbered.js +1 -1
- package/dist/testimonials-parallax-number.cjs +1 -1
- package/dist/testimonials-parallax-number.js +1 -1
- package/dist/testimonials-quote-carousel.cjs +39 -37
- package/dist/testimonials-quote-carousel.d.cts +5 -1
- package/dist/testimonials-quote-carousel.d.ts +5 -1
- package/dist/testimonials-quote-carousel.js +39 -37
- package/dist/testimonials-scrolling-columns.cjs +438 -8
- package/dist/testimonials-scrolling-columns.js +436 -6
- package/dist/testimonials-simple-grid.cjs +82 -6
- package/dist/testimonials-simple-grid.d.cts +14 -1
- package/dist/testimonials-simple-grid.d.ts +14 -1
- package/dist/testimonials-simple-grid.js +83 -7
- package/dist/testimonials-stats-header.cjs +88 -8
- package/dist/testimonials-stats-header.d.cts +14 -1
- package/dist/testimonials-stats-header.d.ts +14 -1
- package/dist/testimonials-stats-header.js +89 -9
- package/dist/testimonials-twitter-cards.cjs +150 -25
- package/dist/testimonials-twitter-cards.d.cts +14 -1
- package/dist/testimonials-twitter-cards.d.ts +14 -1
- package/dist/testimonials-twitter-cards.js +151 -26
- package/dist/testimonials-wall-compact.cjs +529 -50
- package/dist/testimonials-wall-compact.d.cts +14 -1
- package/dist/testimonials-wall-compact.d.ts +14 -1
- package/dist/testimonials-wall-compact.js +526 -44
- package/package.json +1 -1
|
@@ -1000,10 +1000,10 @@ function TestimonialsImagesHelpful({
|
|
|
1000
1000
|
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
1001
1001
|
] }),
|
|
1002
1002
|
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),
|
|
1003
|
-
review.images && review.images.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-
|
|
1003
|
+
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(
|
|
1004
1004
|
"div",
|
|
1005
1005
|
{
|
|
1006
|
-
className: "size-20 cursor-pointer overflow-hidden rounded-lg sm:size-24 transition-transform duration-300 hover:scale-[1.03] shadow-
|
|
1006
|
+
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",
|
|
1007
1007
|
onClick: () => handleImageClick(review.images, imgIndex),
|
|
1008
1008
|
role: "button",
|
|
1009
1009
|
tabIndex: 0,
|
|
@@ -1026,80 +1026,91 @@ function TestimonialsImagesHelpful({
|
|
|
1026
1026
|
},
|
|
1027
1027
|
imgIndex
|
|
1028
1028
|
)) }),
|
|
1029
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1029
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1030
|
+
"div",
|
|
1031
|
+
{
|
|
1032
|
+
className: cn(
|
|
1033
|
+
"flex items-center justify-between w-full flex-col md:flex-row gap-4"
|
|
1034
|
+
),
|
|
1035
|
+
children: [
|
|
1036
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1037
|
+
"div",
|
|
1038
|
+
{
|
|
1039
|
+
className: cn(
|
|
1040
|
+
"flex items-center gap-5 w-full",
|
|
1041
|
+
authorClassName
|
|
1042
|
+
),
|
|
1043
|
+
children: [
|
|
1044
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
1045
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
1046
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
1047
|
+
] }),
|
|
1048
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-0", children: [
|
|
1049
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 flex-col md:flex-row", children: [
|
|
1050
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
1051
|
+
review.verified && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
|
|
1052
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
1053
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
1054
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
1055
|
+
] })
|
|
1056
|
+
] }),
|
|
1057
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
1058
|
+
review.date && /* @__PURE__ */ jsxRuntime.jsx("span", { children: review.date }),
|
|
1059
|
+
review.variant && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1060
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
|
|
1061
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: review.variant })
|
|
1062
|
+
] })
|
|
1063
|
+
] })
|
|
1053
1064
|
] })
|
|
1054
|
-
]
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1065
|
+
]
|
|
1066
|
+
}
|
|
1067
|
+
),
|
|
1068
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
1069
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1070
|
+
Pressable,
|
|
1071
|
+
{
|
|
1072
|
+
asButton: true,
|
|
1073
|
+
variant: "ghost",
|
|
1074
|
+
size: "sm",
|
|
1075
|
+
className: cn(
|
|
1076
|
+
"h-8 gap-1.5",
|
|
1077
|
+
helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
|
|
1078
|
+
),
|
|
1079
|
+
onClick: () => handleHelpful(index),
|
|
1080
|
+
children: [
|
|
1081
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1082
|
+
DynamicIcon,
|
|
1083
|
+
{
|
|
1084
|
+
name: "lucide/thumbs-up",
|
|
1085
|
+
size: 16,
|
|
1086
|
+
className: cn(
|
|
1087
|
+
helpfulClicked.has(index) && "fill-current"
|
|
1088
|
+
)
|
|
1089
|
+
}
|
|
1090
|
+
),
|
|
1091
|
+
"Helpful",
|
|
1092
|
+
review.helpful !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1093
|
+
"(",
|
|
1094
|
+
review.helpful + (helpfulClicked.has(index) ? 1 : 0),
|
|
1095
|
+
")"
|
|
1096
|
+
] })
|
|
1097
|
+
]
|
|
1098
|
+
}
|
|
1069
1099
|
),
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
"(",
|
|
1085
|
-
review.helpful + (helpfulClicked.has(index) ? 1 : 0),
|
|
1086
|
-
")"
|
|
1087
|
-
] })
|
|
1088
|
-
]
|
|
1089
|
-
}
|
|
1090
|
-
),
|
|
1091
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1092
|
-
Pressable,
|
|
1093
|
-
{
|
|
1094
|
-
asButton: true,
|
|
1095
|
-
variant: "ghost",
|
|
1096
|
-
size: "sm",
|
|
1097
|
-
className: "h-8 text-muted-foreground",
|
|
1098
|
-
children: reportButtonLabel ?? "Report"
|
|
1099
|
-
}
|
|
1100
|
-
)
|
|
1101
|
-
] })
|
|
1102
|
-
] })
|
|
1100
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1101
|
+
Pressable,
|
|
1102
|
+
{
|
|
1103
|
+
asButton: true,
|
|
1104
|
+
variant: "ghost",
|
|
1105
|
+
size: "sm",
|
|
1106
|
+
className: "h-8 text-muted-foreground",
|
|
1107
|
+
children: reportButtonLabel ?? "Report"
|
|
1108
|
+
}
|
|
1109
|
+
)
|
|
1110
|
+
] })
|
|
1111
|
+
]
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1103
1114
|
] })
|
|
1104
1115
|
] }, index);
|
|
1105
1116
|
}) });
|
|
@@ -977,10 +977,10 @@ function TestimonialsImagesHelpful({
|
|
|
977
977
|
review.title && (typeof review.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "font-medium", children: review.title }) : review.title)
|
|
978
978
|
] }),
|
|
979
979
|
review.content && (typeof review.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-base md:text-lg leading-relaxed font-light", children: review.content }) : review.content),
|
|
980
|
-
review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex gap-
|
|
980
|
+
review.images && review.images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap gap-4", imagesClassName), children: review.images.map((image, imgIndex) => /* @__PURE__ */ jsx(
|
|
981
981
|
"div",
|
|
982
982
|
{
|
|
983
|
-
className: "size-20 cursor-pointer overflow-hidden rounded-lg sm:size-24 transition-transform duration-300 hover:scale-[1.03] shadow-
|
|
983
|
+
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",
|
|
984
984
|
onClick: () => handleImageClick(review.images, imgIndex),
|
|
985
985
|
role: "button",
|
|
986
986
|
tabIndex: 0,
|
|
@@ -1003,80 +1003,91 @@ function TestimonialsImagesHelpful({
|
|
|
1003
1003
|
},
|
|
1004
1004
|
imgIndex
|
|
1005
1005
|
)) }),
|
|
1006
|
-
/* @__PURE__ */ jsxs(
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1006
|
+
/* @__PURE__ */ jsxs(
|
|
1007
|
+
"div",
|
|
1008
|
+
{
|
|
1009
|
+
className: cn(
|
|
1010
|
+
"flex items-center justify-between w-full flex-col md:flex-row gap-4"
|
|
1011
|
+
),
|
|
1012
|
+
children: [
|
|
1013
|
+
/* @__PURE__ */ jsxs(
|
|
1014
|
+
"div",
|
|
1015
|
+
{
|
|
1016
|
+
className: cn(
|
|
1017
|
+
"flex items-center gap-5 w-full",
|
|
1018
|
+
authorClassName
|
|
1019
|
+
),
|
|
1020
|
+
children: [
|
|
1021
|
+
/* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-4 ring-primary shadow-lg", children: [
|
|
1022
|
+
/* @__PURE__ */ jsx(AvatarImage, { src: review.avatarSrc, alt: authorName }),
|
|
1023
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-md", children: getInitials(authorName) })
|
|
1024
|
+
] }),
|
|
1025
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-0", children: [
|
|
1026
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-col md:flex-row", children: [
|
|
1027
|
+
review.author && (typeof review.author === "string" ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: review.author }) : review.author),
|
|
1028
|
+
review.verified && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
1029
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/badge-check", size: 18 }),
|
|
1030
|
+
verifiedPurchaseLabel && (typeof verifiedPurchaseLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-sm", children: verifiedPurchaseLabel }) : verifiedPurchaseLabel),
|
|
1031
|
+
!verifiedPurchaseLabel && /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verified Purchase" })
|
|
1032
|
+
] })
|
|
1033
|
+
] }),
|
|
1034
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
1035
|
+
review.date && /* @__PURE__ */ jsx("span", { children: review.date }),
|
|
1036
|
+
review.variant && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1037
|
+
/* @__PURE__ */ jsx("span", { children: "\xB7" }),
|
|
1038
|
+
/* @__PURE__ */ jsx("span", { children: review.variant })
|
|
1039
|
+
] })
|
|
1040
|
+
] })
|
|
1030
1041
|
] })
|
|
1031
|
-
]
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1042
|
+
]
|
|
1043
|
+
}
|
|
1044
|
+
),
|
|
1045
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
1046
|
+
/* @__PURE__ */ jsxs(
|
|
1047
|
+
Pressable,
|
|
1048
|
+
{
|
|
1049
|
+
asButton: true,
|
|
1050
|
+
variant: "ghost",
|
|
1051
|
+
size: "sm",
|
|
1052
|
+
className: cn(
|
|
1053
|
+
"h-8 gap-1.5",
|
|
1054
|
+
helpfulClicked.has(index) ? "text-foreground" : "text-muted-foreground"
|
|
1055
|
+
),
|
|
1056
|
+
onClick: () => handleHelpful(index),
|
|
1057
|
+
children: [
|
|
1058
|
+
/* @__PURE__ */ jsx(
|
|
1059
|
+
DynamicIcon,
|
|
1060
|
+
{
|
|
1061
|
+
name: "lucide/thumbs-up",
|
|
1062
|
+
size: 16,
|
|
1063
|
+
className: cn(
|
|
1064
|
+
helpfulClicked.has(index) && "fill-current"
|
|
1065
|
+
)
|
|
1066
|
+
}
|
|
1067
|
+
),
|
|
1068
|
+
"Helpful",
|
|
1069
|
+
review.helpful !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
|
|
1070
|
+
"(",
|
|
1071
|
+
review.helpful + (helpfulClicked.has(index) ? 1 : 0),
|
|
1072
|
+
")"
|
|
1073
|
+
] })
|
|
1074
|
+
]
|
|
1075
|
+
}
|
|
1046
1076
|
),
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
"(",
|
|
1062
|
-
review.helpful + (helpfulClicked.has(index) ? 1 : 0),
|
|
1063
|
-
")"
|
|
1064
|
-
] })
|
|
1065
|
-
]
|
|
1066
|
-
}
|
|
1067
|
-
),
|
|
1068
|
-
/* @__PURE__ */ jsx(
|
|
1069
|
-
Pressable,
|
|
1070
|
-
{
|
|
1071
|
-
asButton: true,
|
|
1072
|
-
variant: "ghost",
|
|
1073
|
-
size: "sm",
|
|
1074
|
-
className: "h-8 text-muted-foreground",
|
|
1075
|
-
children: reportButtonLabel ?? "Report"
|
|
1076
|
-
}
|
|
1077
|
-
)
|
|
1078
|
-
] })
|
|
1079
|
-
] })
|
|
1077
|
+
/* @__PURE__ */ jsx(
|
|
1078
|
+
Pressable,
|
|
1079
|
+
{
|
|
1080
|
+
asButton: true,
|
|
1081
|
+
variant: "ghost",
|
|
1082
|
+
size: "sm",
|
|
1083
|
+
className: "h-8 text-muted-foreground",
|
|
1084
|
+
children: reportButtonLabel ?? "Report"
|
|
1085
|
+
}
|
|
1086
|
+
)
|
|
1087
|
+
] })
|
|
1088
|
+
]
|
|
1089
|
+
}
|
|
1090
|
+
)
|
|
1080
1091
|
] })
|
|
1081
1092
|
] }, index);
|
|
1082
1093
|
}) });
|
|
@@ -584,6 +584,7 @@ function TestimonialsListVerified({
|
|
|
584
584
|
pattern,
|
|
585
585
|
patternOpacity,
|
|
586
586
|
className,
|
|
587
|
+
containerClassName,
|
|
587
588
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
588
589
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
589
590
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -561,6 +561,7 @@ function TestimonialsListVerified({
|
|
|
561
561
|
pattern,
|
|
562
562
|
patternOpacity,
|
|
563
563
|
className,
|
|
564
|
+
containerClassName,
|
|
564
565
|
children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-full md:max-w-3xl", children: [
|
|
565
566
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 md:mb-24 space-y-6", headerClassName), children: [
|
|
566
567
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
@@ -558,7 +558,7 @@ function TestimonialsLogoCards({
|
|
|
558
558
|
src: testimonial.companyLogo,
|
|
559
559
|
alt: testimonial.companyLogoAlt || "Company logo",
|
|
560
560
|
className: cn(
|
|
561
|
-
index === 0 ? "h-10" : "h-5",
|
|
561
|
+
index === 0 ? "h-10" : "h-10 md:h-5",
|
|
562
562
|
"w-auto object-contain"
|
|
563
563
|
),
|
|
564
564
|
optixFlowConfig
|
|
@@ -576,8 +576,8 @@ function TestimonialsLogoCards({
|
|
|
576
576
|
"blockquote",
|
|
577
577
|
{
|
|
578
578
|
className: cn(
|
|
579
|
-
"leading-relaxed",
|
|
580
|
-
index === 0 ? "text-
|
|
579
|
+
"leading-relaxed font-light",
|
|
580
|
+
index === 0 ? "text-base md:text-xl" : "text-base md:text-base",
|
|
581
581
|
quoteClassName
|
|
582
582
|
),
|
|
583
583
|
children: testimonial.quote
|
|
@@ -599,7 +599,7 @@ function TestimonialsLogoCards({
|
|
|
599
599
|
),
|
|
600
600
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
601
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-
|
|
602
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
|
|
603
603
|
] })
|
|
604
604
|
] })
|
|
605
605
|
]
|
|
@@ -639,7 +639,10 @@ function TestimonialsLogoCards({
|
|
|
639
639
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
640
640
|
"div",
|
|
641
641
|
{
|
|
642
|
-
className: cn(
|
|
642
|
+
className: cn(
|
|
643
|
+
"mx-auto mb-12 max-w-full md:max-w-2xl text-center",
|
|
644
|
+
headerClassName
|
|
645
|
+
),
|
|
643
646
|
children: [
|
|
644
647
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
645
648
|
"h2",
|
|
@@ -533,7 +533,7 @@ function TestimonialsLogoCards({
|
|
|
533
533
|
src: testimonial.companyLogo,
|
|
534
534
|
alt: testimonial.companyLogoAlt || "Company logo",
|
|
535
535
|
className: cn(
|
|
536
|
-
index === 0 ? "h-10" : "h-5",
|
|
536
|
+
index === 0 ? "h-10" : "h-10 md:h-5",
|
|
537
537
|
"w-auto object-contain"
|
|
538
538
|
),
|
|
539
539
|
optixFlowConfig
|
|
@@ -551,8 +551,8 @@ function TestimonialsLogoCards({
|
|
|
551
551
|
"blockquote",
|
|
552
552
|
{
|
|
553
553
|
className: cn(
|
|
554
|
-
"leading-relaxed",
|
|
555
|
-
index === 0 ? "text-
|
|
554
|
+
"leading-relaxed font-light",
|
|
555
|
+
index === 0 ? "text-base md:text-xl" : "text-base md:text-base",
|
|
556
556
|
quoteClassName
|
|
557
557
|
),
|
|
558
558
|
children: testimonial.quote
|
|
@@ -574,7 +574,7 @@ function TestimonialsLogoCards({
|
|
|
574
574
|
),
|
|
575
575
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
576
576
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsx("cite", { className: "text-sm md:text-base font-medium", children: testimonial.author }) : testimonial.author),
|
|
577
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-
|
|
577
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75 font-semibold", children: testimonial.role }) : testimonial.role)
|
|
578
578
|
] })
|
|
579
579
|
] })
|
|
580
580
|
]
|
|
@@ -614,7 +614,10 @@ function TestimonialsLogoCards({
|
|
|
614
614
|
/* @__PURE__ */ jsxs(
|
|
615
615
|
"div",
|
|
616
616
|
{
|
|
617
|
-
className: cn(
|
|
617
|
+
className: cn(
|
|
618
|
+
"mx-auto mb-12 max-w-full md:max-w-2xl text-center",
|
|
619
|
+
headerClassName
|
|
620
|
+
),
|
|
618
621
|
children: [
|
|
619
622
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
620
623
|
"h2",
|
|
@@ -872,6 +872,70 @@ var Pressable = React3__namespace.forwardRef(
|
|
|
872
872
|
}
|
|
873
873
|
);
|
|
874
874
|
Pressable.displayName = "Pressable";
|
|
875
|
+
var MOBILE_CLASSES = {
|
|
876
|
+
"fit-left": "items-start md:items-center",
|
|
877
|
+
"fit-center": "items-center",
|
|
878
|
+
"fit-right": "items-end md:items-center",
|
|
879
|
+
"full-left": "items-stretch md:items-center",
|
|
880
|
+
"full-center": "items-stretch md:items-center",
|
|
881
|
+
"full-right": "items-stretch md:items-center"
|
|
882
|
+
};
|
|
883
|
+
function BlockActions({
|
|
884
|
+
mobileConfig,
|
|
885
|
+
actionsClassName,
|
|
886
|
+
verticalSpacing = "mt-4 md:mt-8",
|
|
887
|
+
actions,
|
|
888
|
+
actionsSlot
|
|
889
|
+
}) {
|
|
890
|
+
const width = mobileConfig?.width ?? "full";
|
|
891
|
+
const position = mobileConfig?.position ?? "center";
|
|
892
|
+
const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
|
|
893
|
+
if (actionsSlot) {
|
|
894
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
|
|
895
|
+
} else if (actions && actions?.length > 0) {
|
|
896
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
897
|
+
"div",
|
|
898
|
+
{
|
|
899
|
+
className: cn(
|
|
900
|
+
"flex flex-col md:flex-row flex-wrap gap-4",
|
|
901
|
+
mobileLayoutClass,
|
|
902
|
+
actionsClassName,
|
|
903
|
+
verticalSpacing
|
|
904
|
+
),
|
|
905
|
+
children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
|
|
906
|
+
}
|
|
907
|
+
);
|
|
908
|
+
} else {
|
|
909
|
+
return null;
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
function ActionComponent({ action }) {
|
|
913
|
+
const {
|
|
914
|
+
label,
|
|
915
|
+
icon,
|
|
916
|
+
iconAfter,
|
|
917
|
+
children,
|
|
918
|
+
href,
|
|
919
|
+
onClick,
|
|
920
|
+
className: actionClassName,
|
|
921
|
+
...pressableProps
|
|
922
|
+
} = action;
|
|
923
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
924
|
+
Pressable,
|
|
925
|
+
{
|
|
926
|
+
href,
|
|
927
|
+
onClick,
|
|
928
|
+
asButton: action.asButton ?? true,
|
|
929
|
+
className: actionClassName,
|
|
930
|
+
...pressableProps,
|
|
931
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
932
|
+
icon,
|
|
933
|
+
label,
|
|
934
|
+
iconAfter
|
|
935
|
+
] })
|
|
936
|
+
}
|
|
937
|
+
);
|
|
938
|
+
}
|
|
875
939
|
function TestimonialsMasonryGrid({
|
|
876
940
|
testimonials,
|
|
877
941
|
testimonialsSlot,
|
|
@@ -887,9 +951,12 @@ function TestimonialsMasonryGrid({
|
|
|
887
951
|
authorClassName,
|
|
888
952
|
background,
|
|
889
953
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
890
|
-
spacing = "
|
|
954
|
+
spacing = "lg",
|
|
891
955
|
pattern,
|
|
892
|
-
patternOpacity
|
|
956
|
+
patternOpacity,
|
|
957
|
+
actions,
|
|
958
|
+
actionsSlot,
|
|
959
|
+
actionsClassName
|
|
893
960
|
}) {
|
|
894
961
|
const columns = testimonials ? [
|
|
895
962
|
testimonials.filter((_, i) => i % 3 === 0),
|
|
@@ -930,29 +997,29 @@ function TestimonialsMasonryGrid({
|
|
|
930
997
|
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm"
|
|
931
998
|
),
|
|
932
999
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col justify-between p-6 gap-8", children: [
|
|
933
|
-
testimonial.quote && (typeof testimonial.quote === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-
|
|
1000
|
+
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: [
|
|
934
1001
|
"\u201C",
|
|
935
1002
|
testimonial.quote,
|
|
936
1003
|
"\u201D"
|
|
937
|
-
] }) :
|
|
938
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-
|
|
939
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-
|
|
1004
|
+
] }) : testimonial.quote),
|
|
1005
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-4", children: [
|
|
1006
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "relative flex shrink-0 overflow-hidden rounded-full size-14 ring-4 ring-primary shadow-lg", children: [
|
|
940
1007
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
941
1008
|
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { className: "text-xs", children: getInitials(authorName) })
|
|
942
1009
|
] }),
|
|
943
1010
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0 leading-tight", children: [
|
|
944
1011
|
testimonial.author && (typeof testimonial.author === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: testimonial.author }) : testimonial.author),
|
|
945
|
-
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
1012
|
+
testimonial.role && (typeof testimonial.role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-thin opacity-75", children: testimonial.role }) : testimonial.role),
|
|
946
1013
|
testimonial.linkConfig?.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
947
1014
|
Pressable,
|
|
948
1015
|
{
|
|
949
1016
|
href: testimonial.linkConfig.href,
|
|
950
1017
|
className: cn(
|
|
951
|
-
"text-sm
|
|
952
|
-
"underline underline-offset-4",
|
|
1018
|
+
"text-sm transition-all duration-500",
|
|
1019
|
+
"hover:underline hover:underline-offset-4",
|
|
953
1020
|
testimonial.linkConfig.className
|
|
954
1021
|
),
|
|
955
|
-
children: testimonial.linkConfig.label
|
|
1022
|
+
children: testimonial.linkConfig.label || "Full Review"
|
|
956
1023
|
}
|
|
957
1024
|
)
|
|
958
1025
|
] })
|
|
@@ -1014,7 +1081,16 @@ function TestimonialsMasonryGrid({
|
|
|
1014
1081
|
]
|
|
1015
1082
|
}
|
|
1016
1083
|
),
|
|
1017
|
-
renderedTestimonials
|
|
1084
|
+
renderedTestimonials,
|
|
1085
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1086
|
+
BlockActions,
|
|
1087
|
+
{
|
|
1088
|
+
actions,
|
|
1089
|
+
actionsSlot,
|
|
1090
|
+
actionsClassName: cn("mt-8 md:mt-12 justify-center", actionsClassName),
|
|
1091
|
+
mobileConfig: { width: "full", position: "center" }
|
|
1092
|
+
}
|
|
1093
|
+
)
|
|
1018
1094
|
]
|
|
1019
1095
|
}
|
|
1020
1096
|
);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-B8KCpwXH.cjs';
|
|
3
|
+
import { ActionConfig } from '@page-speed/maps/components/geo-map';
|
|
3
4
|
import { T as TestimonialItem } from './blocks-BtDAbw8d.cjs';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import 'class-variance-authority';
|
|
@@ -76,6 +77,18 @@ interface TestimonialsMasonryGridProps {
|
|
|
76
77
|
* Additional CSS classes for the container
|
|
77
78
|
*/
|
|
78
79
|
containerClassName?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Array of action configurations for CTA buttons
|
|
82
|
+
*/
|
|
83
|
+
actions?: ActionConfig[];
|
|
84
|
+
/**
|
|
85
|
+
* Custom slot for rendering actions (overrides actions array)
|
|
86
|
+
*/
|
|
87
|
+
actionsSlot?: React.ReactNode;
|
|
88
|
+
/**
|
|
89
|
+
* Additional CSS classes for the actions container
|
|
90
|
+
*/
|
|
91
|
+
actionsClassName?: string;
|
|
79
92
|
}
|
|
80
93
|
/**
|
|
81
94
|
* TestimonialsMasonryGrid - A masonry-style grid layout for testimonials with varying
|
|
@@ -102,6 +115,6 @@ interface TestimonialsMasonryGridProps {
|
|
|
102
115
|
* />
|
|
103
116
|
* ```
|
|
104
117
|
*/
|
|
105
|
-
declare function TestimonialsMasonryGrid({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, }: TestimonialsMasonryGridProps): React.JSX.Element;
|
|
118
|
+
declare function TestimonialsMasonryGrid({ testimonials, testimonialsSlot, heading, description, className, headerClassName, headingClassName, descriptionClassName, gridClassName, cardClassName, quoteClassName, authorClassName, background, containerClassName, spacing, pattern, patternOpacity, actions, actionsSlot, actionsClassName, }: TestimonialsMasonryGridProps): React.JSX.Element;
|
|
106
119
|
|
|
107
120
|
export { TestimonialsMasonryGrid, type TestimonialsMasonryGridProps };
|