@opensite/ui 1.6.9 → 1.7.0
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/hero-billing-platform-logos.cjs +77 -52
- package/dist/hero-billing-platform-logos.js +77 -51
- package/dist/hero-conversion-video-play.cjs +240 -78
- package/dist/hero-conversion-video-play.js +233 -75
- package/dist/hero-customer-support-layered.cjs +1 -1
- package/dist/hero-customer-support-layered.js +1 -1
- package/dist/hero-dashed-border-features.cjs +33 -24
- package/dist/hero-dashed-border-features.js +33 -24
- package/dist/hero-design-showcase-logos.cjs +102 -38
- package/dist/hero-design-showcase-logos.js +102 -38
- package/dist/hero-grid-pattern-solutions.cjs +187 -49
- package/dist/hero-grid-pattern-solutions.d.cts +1 -4
- package/dist/hero-grid-pattern-solutions.d.ts +1 -4
- package/dist/hero-grid-pattern-solutions.js +188 -50
- package/dist/hero-marketplace-scattered-images.cjs +120 -79
- package/dist/hero-marketplace-scattered-images.js +120 -79
- package/dist/hero-mentorship-video-split.cjs +32 -13
- package/dist/hero-mentorship-video-split.js +32 -13
- package/dist/hero-premium-split-avatars.cjs +2 -2
- package/dist/hero-premium-split-avatars.js +2 -2
- package/dist/hero-productivity-launcher-video.cjs +45 -143
- package/dist/hero-productivity-launcher-video.d.cts +5 -23
- package/dist/hero-productivity-launcher-video.d.ts +5 -23
- package/dist/hero-productivity-launcher-video.js +45 -143
- package/dist/hero-split-spiral-shapes.cjs +47 -38
- package/dist/hero-split-spiral-shapes.js +47 -38
- package/dist/hero-task-timer-animated.cjs +59 -59
- package/dist/hero-task-timer-animated.js +59 -59
- package/dist/registry.cjs +772 -439
- package/dist/registry.js +772 -439
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React4 = require('react');
|
|
5
|
+
var AutoScroll = require('embla-carousel-auto-scroll');
|
|
5
6
|
var clsx = require('clsx');
|
|
6
7
|
var tailwindMerge = require('tailwind-merge');
|
|
7
8
|
var classVarianceAuthority = require('class-variance-authority');
|
|
@@ -9,6 +10,9 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
9
10
|
var img = require('@page-speed/img');
|
|
10
11
|
var AspectRatioPrimitive = require('@radix-ui/react-aspect-ratio');
|
|
11
12
|
var DialogPrimitive = require('@radix-ui/react-dialog');
|
|
13
|
+
var useEmblaCarousel = require('embla-carousel-react');
|
|
14
|
+
|
|
15
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
16
|
|
|
13
17
|
function _interopNamespace(e) {
|
|
14
18
|
if (e && e.__esModule) return e;
|
|
@@ -28,9 +32,11 @@ function _interopNamespace(e) {
|
|
|
28
32
|
return Object.freeze(n);
|
|
29
33
|
}
|
|
30
34
|
|
|
31
|
-
var
|
|
35
|
+
var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
|
|
36
|
+
var AutoScroll__default = /*#__PURE__*/_interopDefault(AutoScroll);
|
|
32
37
|
var AspectRatioPrimitive__namespace = /*#__PURE__*/_interopNamespace(AspectRatioPrimitive);
|
|
33
38
|
var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
|
|
39
|
+
var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
|
|
34
40
|
|
|
35
41
|
// components/blocks/hero/hero-conversion-video-play.tsx
|
|
36
42
|
function cn(...inputs) {
|
|
@@ -111,7 +117,7 @@ function useNavigation({
|
|
|
111
117
|
href,
|
|
112
118
|
onClick
|
|
113
119
|
} = {}) {
|
|
114
|
-
const linkType =
|
|
120
|
+
const linkType = React4__namespace.useMemo(() => {
|
|
115
121
|
if (!href || href.trim() === "") {
|
|
116
122
|
return onClick ? "none" : "none";
|
|
117
123
|
}
|
|
@@ -132,7 +138,7 @@ function useNavigation({
|
|
|
132
138
|
return "internal";
|
|
133
139
|
}
|
|
134
140
|
}, [href, onClick]);
|
|
135
|
-
const normalizedHref =
|
|
141
|
+
const normalizedHref = React4__namespace.useMemo(() => {
|
|
136
142
|
if (!href || href.trim() === "") {
|
|
137
143
|
return void 0;
|
|
138
144
|
}
|
|
@@ -150,7 +156,7 @@ function useNavigation({
|
|
|
150
156
|
return trimmed;
|
|
151
157
|
}
|
|
152
158
|
}, [href, linkType]);
|
|
153
|
-
const target =
|
|
159
|
+
const target = React4__namespace.useMemo(() => {
|
|
154
160
|
switch (linkType) {
|
|
155
161
|
case "external":
|
|
156
162
|
return "_blank";
|
|
@@ -163,7 +169,7 @@ function useNavigation({
|
|
|
163
169
|
return void 0;
|
|
164
170
|
}
|
|
165
171
|
}, [linkType]);
|
|
166
|
-
const rel =
|
|
172
|
+
const rel = React4__namespace.useMemo(() => {
|
|
167
173
|
if (linkType === "external") {
|
|
168
174
|
return "noopener noreferrer";
|
|
169
175
|
}
|
|
@@ -172,7 +178,7 @@ function useNavigation({
|
|
|
172
178
|
const isExternal = linkType === "external";
|
|
173
179
|
const isInternal = linkType === "internal";
|
|
174
180
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
175
|
-
const handleClick =
|
|
181
|
+
const handleClick = React4__namespace.useCallback(
|
|
176
182
|
(event) => {
|
|
177
183
|
if (onClick) {
|
|
178
184
|
try {
|
|
@@ -356,7 +362,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
|
356
362
|
size: "default"
|
|
357
363
|
}
|
|
358
364
|
});
|
|
359
|
-
var Pressable =
|
|
365
|
+
var Pressable = React4__namespace.forwardRef(
|
|
360
366
|
({
|
|
361
367
|
children,
|
|
362
368
|
className,
|
|
@@ -462,10 +468,10 @@ function DynamicIcon({
|
|
|
462
468
|
className,
|
|
463
469
|
alt
|
|
464
470
|
}) {
|
|
465
|
-
const [svgContent, setSvgContent] =
|
|
466
|
-
const [isLoading, setIsLoading] =
|
|
467
|
-
const [error, setError] =
|
|
468
|
-
const { url, iconName } =
|
|
471
|
+
const [svgContent, setSvgContent] = React4__namespace.useState(null);
|
|
472
|
+
const [isLoading, setIsLoading] = React4__namespace.useState(true);
|
|
473
|
+
const [error, setError] = React4__namespace.useState(null);
|
|
474
|
+
const { url, iconName } = React4__namespace.useMemo(() => {
|
|
469
475
|
const separator = name.includes("/") ? "/" : ":";
|
|
470
476
|
const [prefix, iconName2] = name.split(separator);
|
|
471
477
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}&key=au382bi7fsh96w9h9xlrnat2jglx`;
|
|
@@ -474,7 +480,7 @@ function DynamicIcon({
|
|
|
474
480
|
iconName: iconName2
|
|
475
481
|
};
|
|
476
482
|
}, [name, size]);
|
|
477
|
-
|
|
483
|
+
React4__namespace.useEffect(() => {
|
|
478
484
|
let isMounted = true;
|
|
479
485
|
const fetchSvg = async () => {
|
|
480
486
|
const cached = svgCache.get(url);
|
|
@@ -648,6 +654,135 @@ function DialogTitle({
|
|
|
648
654
|
}
|
|
649
655
|
);
|
|
650
656
|
}
|
|
657
|
+
var CarouselContext = React4__namespace.createContext(null);
|
|
658
|
+
function useCarousel() {
|
|
659
|
+
const context = React4__namespace.useContext(CarouselContext);
|
|
660
|
+
if (!context) {
|
|
661
|
+
throw new Error("useCarousel must be used within a <Carousel />");
|
|
662
|
+
}
|
|
663
|
+
return context;
|
|
664
|
+
}
|
|
665
|
+
function Carousel({
|
|
666
|
+
orientation = "horizontal",
|
|
667
|
+
opts,
|
|
668
|
+
setApi,
|
|
669
|
+
plugins,
|
|
670
|
+
className,
|
|
671
|
+
children,
|
|
672
|
+
...props
|
|
673
|
+
}) {
|
|
674
|
+
const [carouselRef, api] = useEmblaCarousel__default.default(
|
|
675
|
+
{
|
|
676
|
+
...opts,
|
|
677
|
+
axis: orientation === "horizontal" ? "x" : "y"
|
|
678
|
+
},
|
|
679
|
+
plugins
|
|
680
|
+
);
|
|
681
|
+
const [canScrollPrev, setCanScrollPrev] = React4__namespace.useState(false);
|
|
682
|
+
const [canScrollNext, setCanScrollNext] = React4__namespace.useState(false);
|
|
683
|
+
const onSelect = React4__namespace.useCallback((api2) => {
|
|
684
|
+
if (!api2) return;
|
|
685
|
+
setCanScrollPrev(api2.canScrollPrev());
|
|
686
|
+
setCanScrollNext(api2.canScrollNext());
|
|
687
|
+
}, []);
|
|
688
|
+
const scrollPrev = React4__namespace.useCallback(() => {
|
|
689
|
+
api?.scrollPrev();
|
|
690
|
+
}, [api]);
|
|
691
|
+
const scrollNext = React4__namespace.useCallback(() => {
|
|
692
|
+
api?.scrollNext();
|
|
693
|
+
}, [api]);
|
|
694
|
+
const handleKeyDown = React4__namespace.useCallback(
|
|
695
|
+
(event) => {
|
|
696
|
+
if (event.key === "ArrowLeft") {
|
|
697
|
+
event.preventDefault();
|
|
698
|
+
scrollPrev();
|
|
699
|
+
} else if (event.key === "ArrowRight") {
|
|
700
|
+
event.preventDefault();
|
|
701
|
+
scrollNext();
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
[scrollPrev, scrollNext]
|
|
705
|
+
);
|
|
706
|
+
React4__namespace.useEffect(() => {
|
|
707
|
+
if (!api || !setApi) return;
|
|
708
|
+
setApi(api);
|
|
709
|
+
}, [api, setApi]);
|
|
710
|
+
React4__namespace.useEffect(() => {
|
|
711
|
+
if (!api) return;
|
|
712
|
+
onSelect(api);
|
|
713
|
+
api.on("reInit", onSelect);
|
|
714
|
+
api.on("select", onSelect);
|
|
715
|
+
return () => {
|
|
716
|
+
api?.off("select", onSelect);
|
|
717
|
+
};
|
|
718
|
+
}, [api, onSelect]);
|
|
719
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
720
|
+
CarouselContext.Provider,
|
|
721
|
+
{
|
|
722
|
+
value: {
|
|
723
|
+
carouselRef,
|
|
724
|
+
api,
|
|
725
|
+
opts,
|
|
726
|
+
orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
|
|
727
|
+
scrollPrev,
|
|
728
|
+
scrollNext,
|
|
729
|
+
canScrollPrev,
|
|
730
|
+
canScrollNext
|
|
731
|
+
},
|
|
732
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
733
|
+
"div",
|
|
734
|
+
{
|
|
735
|
+
onKeyDownCapture: handleKeyDown,
|
|
736
|
+
className: cn("relative", className),
|
|
737
|
+
role: "region",
|
|
738
|
+
"aria-roledescription": "carousel",
|
|
739
|
+
"data-slot": "carousel",
|
|
740
|
+
...props,
|
|
741
|
+
children
|
|
742
|
+
}
|
|
743
|
+
)
|
|
744
|
+
}
|
|
745
|
+
);
|
|
746
|
+
}
|
|
747
|
+
function CarouselContent({ className, ...props }) {
|
|
748
|
+
const { carouselRef, orientation } = useCarousel();
|
|
749
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
750
|
+
"div",
|
|
751
|
+
{
|
|
752
|
+
ref: carouselRef,
|
|
753
|
+
className: "overflow-hidden",
|
|
754
|
+
"data-slot": "carousel-content",
|
|
755
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
756
|
+
"div",
|
|
757
|
+
{
|
|
758
|
+
className: cn(
|
|
759
|
+
"flex",
|
|
760
|
+
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
761
|
+
className
|
|
762
|
+
),
|
|
763
|
+
...props
|
|
764
|
+
}
|
|
765
|
+
)
|
|
766
|
+
}
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
function CarouselItem({ className, ...props }) {
|
|
770
|
+
const { orientation } = useCarousel();
|
|
771
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
772
|
+
"div",
|
|
773
|
+
{
|
|
774
|
+
role: "group",
|
|
775
|
+
"aria-roledescription": "slide",
|
|
776
|
+
"data-slot": "carousel-item",
|
|
777
|
+
className: cn(
|
|
778
|
+
"min-w-0 shrink-0 grow-0 basis-full",
|
|
779
|
+
orientation === "horizontal" ? "pl-4" : "pt-4",
|
|
780
|
+
className
|
|
781
|
+
),
|
|
782
|
+
...props
|
|
783
|
+
}
|
|
784
|
+
);
|
|
785
|
+
}
|
|
651
786
|
var maxWidthStyles = {
|
|
652
787
|
sm: "max-w-screen-sm",
|
|
653
788
|
md: "max-w-screen-md",
|
|
@@ -657,7 +792,7 @@ var maxWidthStyles = {
|
|
|
657
792
|
"4xl": "max-w-[1536px]",
|
|
658
793
|
full: "max-w-full"
|
|
659
794
|
};
|
|
660
|
-
var Container =
|
|
795
|
+
var Container = React4__namespace.default.forwardRef(
|
|
661
796
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
662
797
|
const Component = as;
|
|
663
798
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -962,7 +1097,7 @@ var spacingStyles = {
|
|
|
962
1097
|
};
|
|
963
1098
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
|
|
964
1099
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
965
|
-
var Section =
|
|
1100
|
+
var Section = React4__namespace.default.forwardRef(
|
|
966
1101
|
({
|
|
967
1102
|
id,
|
|
968
1103
|
title,
|
|
@@ -1050,70 +1185,48 @@ function HeroConversionVideoPlay({
|
|
|
1050
1185
|
logosClassName,
|
|
1051
1186
|
optixFlowConfig
|
|
1052
1187
|
}) {
|
|
1053
|
-
const [isVideoOpen, setIsVideoOpen] =
|
|
1054
|
-
const renderActions =
|
|
1188
|
+
const [isVideoOpen, setIsVideoOpen] = React4.useState(false);
|
|
1189
|
+
const renderActions = React4.useMemo(() => {
|
|
1055
1190
|
if (actionsSlot) return actionsSlot;
|
|
1056
1191
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1057
1192
|
primaryAction && (() => {
|
|
1058
|
-
const {
|
|
1059
|
-
|
|
1193
|
+
const {
|
|
1194
|
+
label,
|
|
1195
|
+
icon,
|
|
1196
|
+
iconAfter,
|
|
1197
|
+
children,
|
|
1198
|
+
className: actionClassName,
|
|
1199
|
+
...pressableProps
|
|
1200
|
+
} = primaryAction;
|
|
1201
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1060
1202
|
Pressable,
|
|
1061
1203
|
{
|
|
1062
1204
|
asButton: true,
|
|
1063
1205
|
className: actionClassName,
|
|
1064
1206
|
...pressableProps,
|
|
1065
|
-
children: [
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
] }) }),
|
|
1071
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-16 -left-16 aspect-square w-16 rounded-full bg-pink-400 transition-all duration-300 group-hover:bottom-1/2 group-hover:-left-5 group-hover:w-[110%] group-hover:translate-y-1/2" })
|
|
1072
|
-
]
|
|
1207
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1208
|
+
icon,
|
|
1209
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
|
|
1210
|
+
iconAfter
|
|
1211
|
+
] })
|
|
1073
1212
|
}
|
|
1074
1213
|
);
|
|
1075
1214
|
})(),
|
|
1076
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1215
|
+
videoUrl && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1077
1216
|
Pressable,
|
|
1078
1217
|
{
|
|
1079
|
-
href: "#",
|
|
1080
1218
|
onClick: () => setIsVideoOpen(true),
|
|
1081
1219
|
asButton: true,
|
|
1082
|
-
variant: "
|
|
1083
|
-
className: "flex h-fit w-fit items-center gap-2 text-lg font-semibold uppercase hover:bg-transparent",
|
|
1220
|
+
variant: "link",
|
|
1084
1221
|
children: [
|
|
1085
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 rounded-full bg-primary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1086
|
-
DynamicIcon,
|
|
1087
|
-
{
|
|
1088
|
-
name: "lucide/play",
|
|
1089
|
-
size: 16,
|
|
1090
|
-
className: "m-auto fill-white stroke-white"
|
|
1091
|
-
}
|
|
1092
|
-
) }),
|
|
1222
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 rounded-full bg-primary text-primary-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/play" }) }),
|
|
1093
1223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: videoButtonLabel })
|
|
1094
1224
|
]
|
|
1095
1225
|
}
|
|
1096
1226
|
)
|
|
1097
1227
|
] });
|
|
1098
1228
|
}, [actionsSlot, primaryAction, videoButtonLabel, setIsVideoOpen]);
|
|
1099
|
-
|
|
1100
|
-
if (logosSlot) return logosSlot;
|
|
1101
|
-
if (!logos || logos.length === 0) return null;
|
|
1102
|
-
return logos.map((logo, index) => {
|
|
1103
|
-
const src = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
1104
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1105
|
-
img.Img,
|
|
1106
|
-
{
|
|
1107
|
-
src,
|
|
1108
|
-
alt: logo.alt,
|
|
1109
|
-
className: logo.className,
|
|
1110
|
-
optixFlowConfig
|
|
1111
|
-
},
|
|
1112
|
-
index
|
|
1113
|
-
);
|
|
1114
|
-
});
|
|
1115
|
-
}, [logosSlot, logos, optixFlowConfig]);
|
|
1116
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
|
|
1229
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React4.Fragment, { children: [
|
|
1117
1230
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1118
1231
|
Section,
|
|
1119
1232
|
{
|
|
@@ -1125,42 +1238,91 @@ function HeroConversionVideoPlay({
|
|
|
1125
1238
|
containerClassName,
|
|
1126
1239
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1127
1240
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-16 md:gap-24", children: [
|
|
1128
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1241
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1242
|
+
"div",
|
|
1243
|
+
{
|
|
1244
|
+
className: cn(
|
|
1245
|
+
"flex flex-col items-center gap-8",
|
|
1246
|
+
contentClassName
|
|
1247
|
+
),
|
|
1248
|
+
children: [
|
|
1249
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-7", children: [
|
|
1250
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1251
|
+
"h1",
|
|
1252
|
+
{
|
|
1253
|
+
className: cn(
|
|
1254
|
+
"max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
|
|
1255
|
+
headingClassName
|
|
1256
|
+
),
|
|
1257
|
+
children: heading
|
|
1258
|
+
}
|
|
1259
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
1260
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1261
|
+
"p",
|
|
1262
|
+
{
|
|
1263
|
+
className: cn(
|
|
1264
|
+
"max-w-[750px] text-center text-base leading-relaxed font-normal md:text-xl text-balance",
|
|
1265
|
+
descriptionClassName
|
|
1266
|
+
),
|
|
1267
|
+
children: description
|
|
1268
|
+
}
|
|
1269
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
1270
|
+
] }),
|
|
1271
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1272
|
+
"div",
|
|
1273
|
+
{
|
|
1274
|
+
className: cn(
|
|
1275
|
+
"flex flex-wrap items-center justify-center gap-8",
|
|
1276
|
+
actionsClassName
|
|
1277
|
+
),
|
|
1278
|
+
children: renderActions
|
|
1279
|
+
}
|
|
1280
|
+
)
|
|
1281
|
+
]
|
|
1282
|
+
}
|
|
1283
|
+
),
|
|
1135
1284
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", children: imageSlot ? imageSlot : image ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative h-fit w-full", imageClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-20 w-full max-w-330 overflow-hidden rounded-t-xl md:rounded-t-3xl", children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 2.095238095 / 1, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1136
1285
|
img.Img,
|
|
1137
1286
|
{
|
|
1138
1287
|
src: image.src,
|
|
1139
1288
|
alt: image.alt,
|
|
1140
|
-
className: cn(
|
|
1289
|
+
className: cn(
|
|
1290
|
+
"size-full object-cover object-center",
|
|
1291
|
+
image.className
|
|
1292
|
+
),
|
|
1141
1293
|
optixFlowConfig
|
|
1142
1294
|
}
|
|
1143
1295
|
) }) }) }) : null })
|
|
1144
1296
|
] }) }),
|
|
1145
1297
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-16 py-20", children: [
|
|
1146
|
-
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-xl font-medium
|
|
1147
|
-
|
|
1298
|
+
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-xl font-medium "), children: logosTagline }) : logosTagline),
|
|
1299
|
+
logosSlot ? logosSlot : logos && logos.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1300
|
+
Carousel,
|
|
1301
|
+
{
|
|
1302
|
+
opts: { loop: true },
|
|
1303
|
+
plugins: [AutoScroll__default.default({ playOnInit: true, speed: 1 })],
|
|
1304
|
+
className: "relative w-full max-w-(--breakpoint-2xl) overflow-hidden",
|
|
1305
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "items-center", children: [...logos, ...logos].map((logo, index) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { className: "w-fit basis-auto px-7", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1306
|
+
img.Img,
|
|
1307
|
+
{
|
|
1308
|
+
src: typeof logo.src === "string" ? logo.src : logo.src.light,
|
|
1309
|
+
alt: logo.alt,
|
|
1310
|
+
className: cn(
|
|
1311
|
+
"h-8 w-full object-fill",
|
|
1312
|
+
logo.imgClassName
|
|
1313
|
+
),
|
|
1314
|
+
optixFlowConfig
|
|
1315
|
+
}
|
|
1316
|
+
) }, index)) })
|
|
1317
|
+
}
|
|
1318
|
+
) : null
|
|
1148
1319
|
] })
|
|
1149
1320
|
] })
|
|
1150
1321
|
}
|
|
1151
1322
|
),
|
|
1152
|
-
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-
|
|
1323
|
+
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isVideoOpen, onOpenChange: setIsVideoOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-200", children: [
|
|
1153
1324
|
/* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: videoDialogTitle }) }),
|
|
1154
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1155
|
-
"iframe",
|
|
1156
|
-
{
|
|
1157
|
-
className: "h-full w-full",
|
|
1158
|
-
src: videoUrl,
|
|
1159
|
-
title: videoDialogTitle,
|
|
1160
|
-
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
1161
|
-
allowFullScreen: true
|
|
1162
|
-
}
|
|
1163
|
-
) })
|
|
1325
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video", children: /* @__PURE__ */ jsxRuntime.jsx("video", { controls: true, autoPlay: true, className: "h-full w-full rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: videoUrl, type: "video/mp4" }) }) })
|
|
1164
1326
|
] }) })
|
|
1165
1327
|
] });
|
|
1166
1328
|
}
|