@opensite/ui 1.6.7 → 1.6.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/hero-architecture-fullscreen.cjs +7 -54
- package/dist/hero-architecture-fullscreen.js +7 -54
- package/dist/hero-badge-shadow-overlay.cjs +42 -45
- package/dist/hero-badge-shadow-overlay.d.cts +14 -2
- package/dist/hero-badge-shadow-overlay.d.ts +14 -2
- package/dist/hero-badge-shadow-overlay.js +42 -45
- package/dist/hero-billing-platform-logos.cjs +5 -9
- package/dist/hero-billing-platform-logos.d.cts +1 -5
- package/dist/hero-billing-platform-logos.d.ts +1 -5
- package/dist/hero-billing-platform-logos.js +5 -9
- package/dist/hero-centered-gradient-cta.cjs +12 -68
- package/dist/hero-centered-gradient-cta.js +12 -68
- package/dist/hero-conversion-video-play.cjs +13 -64
- package/dist/hero-conversion-video-play.js +13 -64
- 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 +8 -71
- package/dist/hero-dashed-border-features.js +8 -71
- package/dist/hero-design-showcase-logos.cjs +7 -32
- package/dist/hero-design-showcase-logos.js +7 -32
- package/dist/hero-floating-images.cjs +1 -1
- package/dist/hero-floating-images.js +1 -1
- package/dist/hero-grid-pattern-solutions.cjs +7 -66
- package/dist/hero-grid-pattern-solutions.js +7 -66
- package/dist/hero-hiring-animated-text.cjs +10 -5
- package/dist/hero-hiring-animated-text.js +10 -5
- package/dist/hero-marketplace-scattered-images.cjs +7 -32
- package/dist/hero-marketplace-scattered-images.js +7 -32
- package/dist/hero-mentorship-video-split.cjs +11 -14
- package/dist/hero-mentorship-video-split.js +11 -14
- package/dist/hero-mobile-app-download.cjs +2 -2
- package/dist/hero-mobile-app-download.d.cts +1 -1
- package/dist/hero-mobile-app-download.d.ts +1 -1
- package/dist/hero-mobile-app-download.js +2 -2
- package/dist/hero-premium-split-avatars.cjs +11 -9
- package/dist/hero-premium-split-avatars.d.cts +5 -1
- package/dist/hero-premium-split-avatars.d.ts +5 -1
- package/dist/hero-premium-split-avatars.js +11 -9
- package/dist/hero-presentation-platform-video.cjs +12 -9
- package/dist/hero-presentation-platform-video.d.cts +5 -1
- package/dist/hero-presentation-platform-video.d.ts +5 -1
- package/dist/hero-presentation-platform-video.js +12 -9
- package/dist/hero-productivity-launcher-video.cjs +11 -35
- package/dist/hero-productivity-launcher-video.js +11 -35
- package/dist/hero-spiral-pattern-cards.cjs +49 -92
- package/dist/hero-spiral-pattern-cards.d.cts +20 -3
- package/dist/hero-spiral-pattern-cards.d.ts +20 -3
- package/dist/hero-spiral-pattern-cards.js +49 -92
- package/dist/hero-split-spiral-shapes.cjs +43 -90
- package/dist/hero-split-spiral-shapes.d.cts +17 -4
- package/dist/hero-split-spiral-shapes.d.ts +17 -4
- package/dist/hero-split-spiral-shapes.js +43 -90
- package/dist/hero-startup-launch-cta.cjs +2 -2
- package/dist/hero-startup-launch-cta.js +2 -2
- package/dist/hero-task-timer-animated.cjs +64 -156
- package/dist/hero-task-timer-animated.d.cts +13 -1
- package/dist/hero-task-timer-animated.d.ts +13 -1
- package/dist/hero-task-timer-animated.js +64 -156
- package/dist/hero-testimonial-image-grid.cjs +10 -38
- package/dist/hero-testimonial-image-grid.js +10 -38
- package/dist/hero-therapy-testimonial-grid.cjs +11 -40
- package/dist/hero-therapy-testimonial-grid.js +11 -40
- package/dist/hero-video-background-dark.cjs +10 -34
- package/dist/hero-video-background-dark.d.cts +5 -1
- package/dist/hero-video-background-dark.d.ts +5 -1
- package/dist/hero-video-background-dark.js +10 -34
- package/dist/registry.cjs +353 -302
- package/dist/registry.js +353 -302
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ var clsx = require('clsx');
|
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var classVarianceAuthority = require('class-variance-authority');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var img = require('@page-speed/img');
|
|
9
10
|
|
|
10
11
|
function _interopNamespace(e) {
|
|
11
12
|
if (e && e.__esModule) return e;
|
|
@@ -31,58 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
32
|
function cn(...inputs) {
|
|
32
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
34
|
}
|
|
34
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
35
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
36
|
-
if (isDark) {
|
|
37
|
-
switch (variant) {
|
|
38
|
-
case "muted":
|
|
39
|
-
return "bg-background";
|
|
40
|
-
case "card":
|
|
41
|
-
return "bg-card";
|
|
42
|
-
case "accent":
|
|
43
|
-
return "bg-accent";
|
|
44
|
-
case "subtle":
|
|
45
|
-
return "bg-background/50";
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
switch (variant) {
|
|
49
|
-
case "muted":
|
|
50
|
-
return "bg-muted";
|
|
51
|
-
case "card":
|
|
52
|
-
return "bg-card";
|
|
53
|
-
case "accent":
|
|
54
|
-
return "bg-accent";
|
|
55
|
-
case "subtle":
|
|
56
|
-
return "bg-muted/50";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
61
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
62
|
-
if (isDark) {
|
|
63
|
-
switch (variant) {
|
|
64
|
-
case "default":
|
|
65
|
-
return "text-foreground";
|
|
66
|
-
case "muted":
|
|
67
|
-
return "text-foreground/80";
|
|
68
|
-
case "subtle":
|
|
69
|
-
return "text-foreground/60";
|
|
70
|
-
case "accent":
|
|
71
|
-
return "text-accent-foreground";
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
switch (variant) {
|
|
75
|
-
case "default":
|
|
76
|
-
return "text-foreground";
|
|
77
|
-
case "muted":
|
|
78
|
-
return "text-muted-foreground";
|
|
79
|
-
case "subtle":
|
|
80
|
-
return "text-muted-foreground/70";
|
|
81
|
-
case "accent":
|
|
82
|
-
return "text-primary";
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
35
|
function normalizePhoneNumber(input) {
|
|
87
36
|
const trimmed = input.trim();
|
|
88
37
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -882,16 +831,19 @@ function HeroSplitSpiralShapes({
|
|
|
882
831
|
description,
|
|
883
832
|
actions,
|
|
884
833
|
actionsSlot,
|
|
885
|
-
|
|
834
|
+
images,
|
|
835
|
+
imagesSlot,
|
|
836
|
+
optixFlowConfig,
|
|
886
837
|
background,
|
|
887
|
-
spacing,
|
|
838
|
+
spacing = "py-32 md:py-32",
|
|
888
839
|
pattern,
|
|
889
840
|
patternOpacity,
|
|
890
841
|
className,
|
|
891
|
-
containerClassName,
|
|
842
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
892
843
|
contentClassName,
|
|
893
844
|
headingClassName,
|
|
894
|
-
descriptionClassName
|
|
845
|
+
descriptionClassName,
|
|
846
|
+
imagesClassName
|
|
895
847
|
}) {
|
|
896
848
|
const renderActions = React.useMemo(() => {
|
|
897
849
|
if (actionsSlot) return actionsSlot;
|
|
@@ -914,39 +866,39 @@ function HeroSplitSpiralShapes({
|
|
|
914
866
|
);
|
|
915
867
|
}) });
|
|
916
868
|
}, [actionsSlot, actions]);
|
|
917
|
-
const
|
|
918
|
-
if (
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
869
|
+
const renderImages = React.useMemo(() => {
|
|
870
|
+
if (imagesSlot) return imagesSlot;
|
|
871
|
+
if (!images || images.length === 0) return null;
|
|
872
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative aspect-3/4", imagesClassName), children: [
|
|
873
|
+
images[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-[10%] left-[8%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
874
|
+
img.Img,
|
|
922
875
|
{
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
children: Array.from(Array(720).keys()).map((dot, index, array) => {
|
|
928
|
-
const angle = 0.2 * index;
|
|
929
|
-
const scalar = 40 + index * (360 / array.length);
|
|
930
|
-
const x = Math.round(Math.cos(angle) * scalar);
|
|
931
|
-
const y = Math.round(Math.sin(angle) * scalar);
|
|
932
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
933
|
-
"circle",
|
|
934
|
-
{
|
|
935
|
-
r: 3 * index / array.length,
|
|
936
|
-
cx: 400 + x,
|
|
937
|
-
cy: 400 + y,
|
|
938
|
-
opacity: 1 - Math.sin(angle)
|
|
939
|
-
},
|
|
940
|
-
index
|
|
941
|
-
);
|
|
942
|
-
})
|
|
876
|
+
src: images[0].src,
|
|
877
|
+
alt: images[0].alt,
|
|
878
|
+
className: cn("h-full w-full object-cover", images[0].className),
|
|
879
|
+
optixFlowConfig
|
|
943
880
|
}
|
|
944
|
-
) }),
|
|
945
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
946
|
-
|
|
947
|
-
|
|
881
|
+
) }) }),
|
|
882
|
+
images[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-[20%] right-[12%] w-[20%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-square", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
883
|
+
img.Img,
|
|
884
|
+
{
|
|
885
|
+
src: images[1].src,
|
|
886
|
+
alt: images[1].alt,
|
|
887
|
+
className: cn("h-full w-full object-cover", images[1].className),
|
|
888
|
+
optixFlowConfig
|
|
889
|
+
}
|
|
890
|
+
) }) }),
|
|
891
|
+
images[2] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-[24%] bottom-[24%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
892
|
+
img.Img,
|
|
893
|
+
{
|
|
894
|
+
src: images[2].src,
|
|
895
|
+
alt: images[2].alt,
|
|
896
|
+
className: cn("h-full w-full object-cover", images[2].className),
|
|
897
|
+
optixFlowConfig
|
|
898
|
+
}
|
|
899
|
+
) }) })
|
|
948
900
|
] });
|
|
949
|
-
}, [
|
|
901
|
+
}, [imagesSlot, images, imagesClassName, optixFlowConfig]);
|
|
950
902
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
951
903
|
Section,
|
|
952
904
|
{
|
|
@@ -954,15 +906,16 @@ function HeroSplitSpiralShapes({
|
|
|
954
906
|
spacing,
|
|
955
907
|
pattern,
|
|
956
908
|
patternOpacity,
|
|
957
|
-
className: cn(className),
|
|
958
|
-
|
|
909
|
+
className: cn("relative flex items-center justify-center", className),
|
|
910
|
+
containerClassName,
|
|
911
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
|
|
959
912
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
|
|
960
913
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: badgeText }) : badgeText),
|
|
961
914
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
|
|
962
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl
|
|
915
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
963
916
|
renderActions
|
|
964
917
|
] }),
|
|
965
|
-
|
|
918
|
+
renderImages
|
|
966
919
|
] }) })
|
|
967
920
|
}
|
|
968
921
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-r_NhxVet.cjs';
|
|
3
|
-
import { A as ActionConfig } from './blocks-DP3Vofl4.cjs';
|
|
3
|
+
import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig } from './blocks-DP3Vofl4.cjs';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'class-variance-authority';
|
|
6
6
|
import './button-variants-CdNtNOuP.cjs';
|
|
@@ -28,9 +28,18 @@ interface HeroSplitSpiralShapesProps {
|
|
|
28
28
|
*/
|
|
29
29
|
actionsSlot?: React.ReactNode;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Array of images to display (expects 3 images for scattered layout)
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
images?: ImageItem[];
|
|
34
|
+
/**
|
|
35
|
+
* Custom slot for rendering images (overrides images array)
|
|
36
|
+
*/
|
|
37
|
+
imagesSlot?: React.ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* OptixFlow image optimization configuration
|
|
40
|
+
*/
|
|
41
|
+
optixFlowConfig?: OptixFlowConfig;
|
|
42
|
+
/**
|
|
34
43
|
* Background style for the section
|
|
35
44
|
*/
|
|
36
45
|
background?: SectionBackground;
|
|
@@ -66,7 +75,11 @@ interface HeroSplitSpiralShapesProps {
|
|
|
66
75
|
* Additional CSS classes for the description
|
|
67
76
|
*/
|
|
68
77
|
descriptionClassName?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Additional CSS classes for the images container
|
|
80
|
+
*/
|
|
81
|
+
imagesClassName?: string;
|
|
69
82
|
}
|
|
70
|
-
declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot,
|
|
83
|
+
declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
|
|
71
84
|
|
|
72
85
|
export { HeroSplitSpiralShapes, type HeroSplitSpiralShapesProps };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-DmVsuoHE.js';
|
|
3
|
-
import { A as ActionConfig } from './blocks-XLPGq8A5.js';
|
|
3
|
+
import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig } from './blocks-XLPGq8A5.js';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'class-variance-authority';
|
|
6
6
|
import './button-variants-CdNtNOuP.js';
|
|
@@ -28,9 +28,18 @@ interface HeroSplitSpiralShapesProps {
|
|
|
28
28
|
*/
|
|
29
29
|
actionsSlot?: React.ReactNode;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Array of images to display (expects 3 images for scattered layout)
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
images?: ImageItem[];
|
|
34
|
+
/**
|
|
35
|
+
* Custom slot for rendering images (overrides images array)
|
|
36
|
+
*/
|
|
37
|
+
imagesSlot?: React.ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* OptixFlow image optimization configuration
|
|
40
|
+
*/
|
|
41
|
+
optixFlowConfig?: OptixFlowConfig;
|
|
42
|
+
/**
|
|
34
43
|
* Background style for the section
|
|
35
44
|
*/
|
|
36
45
|
background?: SectionBackground;
|
|
@@ -66,7 +75,11 @@ interface HeroSplitSpiralShapesProps {
|
|
|
66
75
|
* Additional CSS classes for the description
|
|
67
76
|
*/
|
|
68
77
|
descriptionClassName?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Additional CSS classes for the images container
|
|
80
|
+
*/
|
|
81
|
+
imagesClassName?: string;
|
|
69
82
|
}
|
|
70
|
-
declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot,
|
|
83
|
+
declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
|
|
71
84
|
|
|
72
85
|
export { HeroSplitSpiralShapes, type HeroSplitSpiralShapesProps };
|
|
@@ -5,63 +5,12 @@ import { clsx } from 'clsx';
|
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
import { Img } from '@page-speed/img';
|
|
8
9
|
|
|
9
10
|
// components/blocks/hero/hero-split-spiral-shapes.tsx
|
|
10
11
|
function cn(...inputs) {
|
|
11
12
|
return twMerge(clsx(inputs));
|
|
12
13
|
}
|
|
13
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
14
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
15
|
-
if (isDark) {
|
|
16
|
-
switch (variant) {
|
|
17
|
-
case "muted":
|
|
18
|
-
return "bg-background";
|
|
19
|
-
case "card":
|
|
20
|
-
return "bg-card";
|
|
21
|
-
case "accent":
|
|
22
|
-
return "bg-accent";
|
|
23
|
-
case "subtle":
|
|
24
|
-
return "bg-background/50";
|
|
25
|
-
}
|
|
26
|
-
} else {
|
|
27
|
-
switch (variant) {
|
|
28
|
-
case "muted":
|
|
29
|
-
return "bg-muted";
|
|
30
|
-
case "card":
|
|
31
|
-
return "bg-card";
|
|
32
|
-
case "accent":
|
|
33
|
-
return "bg-accent";
|
|
34
|
-
case "subtle":
|
|
35
|
-
return "bg-muted/50";
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
40
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
41
|
-
if (isDark) {
|
|
42
|
-
switch (variant) {
|
|
43
|
-
case "default":
|
|
44
|
-
return "text-foreground";
|
|
45
|
-
case "muted":
|
|
46
|
-
return "text-foreground/80";
|
|
47
|
-
case "subtle":
|
|
48
|
-
return "text-foreground/60";
|
|
49
|
-
case "accent":
|
|
50
|
-
return "text-accent-foreground";
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
switch (variant) {
|
|
54
|
-
case "default":
|
|
55
|
-
return "text-foreground";
|
|
56
|
-
case "muted":
|
|
57
|
-
return "text-muted-foreground";
|
|
58
|
-
case "subtle":
|
|
59
|
-
return "text-muted-foreground/70";
|
|
60
|
-
case "accent":
|
|
61
|
-
return "text-primary";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
14
|
function normalizePhoneNumber(input) {
|
|
66
15
|
const trimmed = input.trim();
|
|
67
16
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -861,16 +810,19 @@ function HeroSplitSpiralShapes({
|
|
|
861
810
|
description,
|
|
862
811
|
actions,
|
|
863
812
|
actionsSlot,
|
|
864
|
-
|
|
813
|
+
images,
|
|
814
|
+
imagesSlot,
|
|
815
|
+
optixFlowConfig,
|
|
865
816
|
background,
|
|
866
|
-
spacing,
|
|
817
|
+
spacing = "py-32 md:py-32",
|
|
867
818
|
pattern,
|
|
868
819
|
patternOpacity,
|
|
869
820
|
className,
|
|
870
|
-
containerClassName,
|
|
821
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
871
822
|
contentClassName,
|
|
872
823
|
headingClassName,
|
|
873
|
-
descriptionClassName
|
|
824
|
+
descriptionClassName,
|
|
825
|
+
imagesClassName
|
|
874
826
|
}) {
|
|
875
827
|
const renderActions = useMemo(() => {
|
|
876
828
|
if (actionsSlot) return actionsSlot;
|
|
@@ -893,39 +845,39 @@ function HeroSplitSpiralShapes({
|
|
|
893
845
|
);
|
|
894
846
|
}) });
|
|
895
847
|
}, [actionsSlot, actions]);
|
|
896
|
-
const
|
|
897
|
-
if (
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
848
|
+
const renderImages = useMemo(() => {
|
|
849
|
+
if (imagesSlot) return imagesSlot;
|
|
850
|
+
if (!images || images.length === 0) return null;
|
|
851
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("relative aspect-3/4", imagesClassName), children: [
|
|
852
|
+
images[0] && /* @__PURE__ */ jsx("div", { className: "absolute top-[10%] left-[8%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsx(
|
|
853
|
+
Img,
|
|
901
854
|
{
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
children: Array.from(Array(720).keys()).map((dot, index, array) => {
|
|
907
|
-
const angle = 0.2 * index;
|
|
908
|
-
const scalar = 40 + index * (360 / array.length);
|
|
909
|
-
const x = Math.round(Math.cos(angle) * scalar);
|
|
910
|
-
const y = Math.round(Math.sin(angle) * scalar);
|
|
911
|
-
return /* @__PURE__ */ jsx(
|
|
912
|
-
"circle",
|
|
913
|
-
{
|
|
914
|
-
r: 3 * index / array.length,
|
|
915
|
-
cx: 400 + x,
|
|
916
|
-
cy: 400 + y,
|
|
917
|
-
opacity: 1 - Math.sin(angle)
|
|
918
|
-
},
|
|
919
|
-
index
|
|
920
|
-
);
|
|
921
|
-
})
|
|
855
|
+
src: images[0].src,
|
|
856
|
+
alt: images[0].alt,
|
|
857
|
+
className: cn("h-full w-full object-cover", images[0].className),
|
|
858
|
+
optixFlowConfig
|
|
922
859
|
}
|
|
923
|
-
) }),
|
|
924
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
925
|
-
|
|
926
|
-
|
|
860
|
+
) }) }),
|
|
861
|
+
images[1] && /* @__PURE__ */ jsx("div", { className: "absolute top-[20%] right-[12%] w-[20%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-square", children: /* @__PURE__ */ jsx(
|
|
862
|
+
Img,
|
|
863
|
+
{
|
|
864
|
+
src: images[1].src,
|
|
865
|
+
alt: images[1].alt,
|
|
866
|
+
className: cn("h-full w-full object-cover", images[1].className),
|
|
867
|
+
optixFlowConfig
|
|
868
|
+
}
|
|
869
|
+
) }) }),
|
|
870
|
+
images[2] && /* @__PURE__ */ jsx("div", { className: "absolute right-[24%] bottom-[24%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsx(
|
|
871
|
+
Img,
|
|
872
|
+
{
|
|
873
|
+
src: images[2].src,
|
|
874
|
+
alt: images[2].alt,
|
|
875
|
+
className: cn("h-full w-full object-cover", images[2].className),
|
|
876
|
+
optixFlowConfig
|
|
877
|
+
}
|
|
878
|
+
) }) })
|
|
927
879
|
] });
|
|
928
|
-
}, [
|
|
880
|
+
}, [imagesSlot, images, imagesClassName, optixFlowConfig]);
|
|
929
881
|
return /* @__PURE__ */ jsx(
|
|
930
882
|
Section,
|
|
931
883
|
{
|
|
@@ -933,15 +885,16 @@ function HeroSplitSpiralShapes({
|
|
|
933
885
|
spacing,
|
|
934
886
|
pattern,
|
|
935
887
|
patternOpacity,
|
|
936
|
-
className: cn(className),
|
|
937
|
-
|
|
888
|
+
className: cn("relative flex items-center justify-center", className),
|
|
889
|
+
containerClassName,
|
|
890
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
|
|
938
891
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
|
|
939
892
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("p", { children: badgeText }) : badgeText),
|
|
940
893
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
|
|
941
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl
|
|
894
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
942
895
|
renderActions
|
|
943
896
|
] }),
|
|
944
|
-
|
|
897
|
+
renderImages
|
|
945
898
|
] }) })
|
|
946
899
|
}
|
|
947
900
|
);
|
|
@@ -936,7 +936,7 @@ function HeroStartupLaunchCta({
|
|
|
936
936
|
const renderBadgeCard = React.useMemo(() => {
|
|
937
937
|
if (badgeCardSlot) return badgeCardSlot;
|
|
938
938
|
if (!badgeCard) return null;
|
|
939
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-
|
|
939
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-card text-card-foreground p-4 shadow-lg", children: [
|
|
940
940
|
badgeCard.logoSrc && /* @__PURE__ */ jsxRuntime.jsx(
|
|
941
941
|
img.Img,
|
|
942
942
|
{
|
|
@@ -947,7 +947,7 @@ function HeroStartupLaunchCta({
|
|
|
947
947
|
}
|
|
948
948
|
),
|
|
949
949
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
950
|
-
badgeCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold
|
|
950
|
+
badgeCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: badgeCard.title }),
|
|
951
951
|
badgeCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: badgeCard.subtitle })
|
|
952
952
|
] })
|
|
953
953
|
] });
|
|
@@ -915,7 +915,7 @@ function HeroStartupLaunchCta({
|
|
|
915
915
|
const renderBadgeCard = useMemo(() => {
|
|
916
916
|
if (badgeCardSlot) return badgeCardSlot;
|
|
917
917
|
if (!badgeCard) return null;
|
|
918
|
-
return /* @__PURE__ */ jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-
|
|
918
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-card text-card-foreground p-4 shadow-lg", children: [
|
|
919
919
|
badgeCard.logoSrc && /* @__PURE__ */ jsx(
|
|
920
920
|
Img,
|
|
921
921
|
{
|
|
@@ -926,7 +926,7 @@ function HeroStartupLaunchCta({
|
|
|
926
926
|
}
|
|
927
927
|
),
|
|
928
928
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
929
|
-
badgeCard.title && /* @__PURE__ */ jsx("div", { className: "font-semibold
|
|
929
|
+
badgeCard.title && /* @__PURE__ */ jsx("div", { className: "font-semibold", children: badgeCard.title }),
|
|
930
930
|
badgeCard.subtitle && /* @__PURE__ */ jsx("div", { className: "text-sm", children: badgeCard.subtitle })
|
|
931
931
|
] })
|
|
932
932
|
] });
|