@opensite/ui 1.7.0 → 1.7.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/hero-architecture-fullscreen.cjs +65 -29
- package/dist/hero-architecture-fullscreen.d.cts +8 -1
- package/dist/hero-architecture-fullscreen.d.ts +8 -1
- package/dist/hero-architecture-fullscreen.js +65 -29
- package/dist/hero-billing-platform-logos.cjs +5 -5
- package/dist/hero-billing-platform-logos.js +5 -5
- package/dist/hero-centered-gradient-cta.cjs +114 -31
- package/dist/hero-centered-gradient-cta.js +114 -31
- package/dist/hero-conversion-video-play.cjs +5 -5
- package/dist/hero-conversion-video-play.js +5 -5
- package/dist/hero-design-showcase-logos.cjs +4 -4
- package/dist/hero-design-showcase-logos.js +4 -4
- package/dist/hero-grid-pattern-solutions.cjs +4 -4
- package/dist/hero-grid-pattern-solutions.js +4 -4
- package/dist/hero-hiring-animated-text.cjs +87 -34
- package/dist/hero-hiring-animated-text.js +88 -35
- package/dist/hero-premium-split-avatars.cjs +1 -1
- package/dist/hero-premium-split-avatars.js +1 -1
- package/dist/hero-productivity-launcher-video.cjs +3 -3
- package/dist/hero-productivity-launcher-video.js +3 -3
- package/dist/hero-split-spiral-shapes.cjs +2 -2
- package/dist/hero-split-spiral-shapes.js +2 -2
- package/dist/hero-task-timer-animated.cjs +1 -1
- package/dist/hero-task-timer-animated.js +1 -1
- package/dist/hero-testimonial-image-grid.cjs +62 -56
- package/dist/hero-testimonial-image-grid.js +62 -56
- package/dist/hero-therapy-testimonial-grid.cjs +72 -17
- package/dist/hero-therapy-testimonial-grid.js +72 -17
- package/dist/process-roadmap-timeline.cjs +12 -8
- package/dist/process-roadmap-timeline.js +12 -8
- package/dist/registry.cjs +403 -200
- package/dist/registry.js +403 -200
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ 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 { Slot } from '@radix-ui/react-slot';
|
|
8
9
|
|
|
9
10
|
// components/blocks/hero/hero-centered-gradient-cta.tsx
|
|
10
11
|
function cn(...inputs) {
|
|
@@ -803,6 +804,38 @@ var Section = React__default.forwardRef(
|
|
|
803
804
|
}
|
|
804
805
|
);
|
|
805
806
|
Section.displayName = "Section";
|
|
807
|
+
var badgeVariants = cva(
|
|
808
|
+
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
809
|
+
{
|
|
810
|
+
variants: {
|
|
811
|
+
variant: {
|
|
812
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
813
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
814
|
+
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
815
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
defaultVariants: {
|
|
819
|
+
variant: "default"
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
);
|
|
823
|
+
function Badge({
|
|
824
|
+
className,
|
|
825
|
+
variant,
|
|
826
|
+
asChild = false,
|
|
827
|
+
...props
|
|
828
|
+
}) {
|
|
829
|
+
const Comp = asChild ? Slot : "span";
|
|
830
|
+
return /* @__PURE__ */ jsx(
|
|
831
|
+
Comp,
|
|
832
|
+
{
|
|
833
|
+
"data-slot": "badge",
|
|
834
|
+
className: cn(badgeVariants({ variant }), className),
|
|
835
|
+
...props
|
|
836
|
+
}
|
|
837
|
+
);
|
|
838
|
+
}
|
|
806
839
|
function HeroCenteredGradientCta({
|
|
807
840
|
badge,
|
|
808
841
|
badgeIcon,
|
|
@@ -814,7 +847,7 @@ function HeroCenteredGradientCta({
|
|
|
814
847
|
features,
|
|
815
848
|
featuresSlot,
|
|
816
849
|
background,
|
|
817
|
-
spacing = "
|
|
850
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
818
851
|
pattern,
|
|
819
852
|
patternOpacity,
|
|
820
853
|
className,
|
|
@@ -829,8 +862,15 @@ function HeroCenteredGradientCta({
|
|
|
829
862
|
const renderActions = useMemo(() => {
|
|
830
863
|
if (actionsSlot) return actionsSlot;
|
|
831
864
|
if (!actions || actions.length === 0) return null;
|
|
832
|
-
return actions.map((action, index) => {
|
|
833
|
-
const {
|
|
865
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col items-start mt-6 md:mt-8 gap-4 sm:flex-row sm:items-center", children: actions.map((action, index) => {
|
|
866
|
+
const {
|
|
867
|
+
label,
|
|
868
|
+
icon,
|
|
869
|
+
iconAfter,
|
|
870
|
+
children,
|
|
871
|
+
className: actionClassName,
|
|
872
|
+
...pressableProps
|
|
873
|
+
} = action;
|
|
834
874
|
return /* @__PURE__ */ jsx(
|
|
835
875
|
Pressable,
|
|
836
876
|
{
|
|
@@ -839,51 +879,94 @@ function HeroCenteredGradientCta({
|
|
|
839
879
|
...pressableProps,
|
|
840
880
|
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
841
881
|
icon,
|
|
842
|
-
label,
|
|
882
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
843
883
|
iconAfter
|
|
844
884
|
] })
|
|
845
885
|
},
|
|
846
886
|
index
|
|
847
887
|
);
|
|
848
|
-
});
|
|
888
|
+
}) });
|
|
849
889
|
}, [actionsSlot, actions]);
|
|
850
890
|
const renderFeatures = useMemo(() => {
|
|
851
891
|
if (featuresSlot) return featuresSlot;
|
|
852
892
|
if (!features || features.length === 0) return null;
|
|
853
|
-
return features.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
893
|
+
return features.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
894
|
+
Pressable,
|
|
895
|
+
{
|
|
896
|
+
href: feature.href,
|
|
897
|
+
className: cn("flex items-center gap-2", feature.className),
|
|
898
|
+
children: [
|
|
899
|
+
feature.icon,
|
|
900
|
+
/* @__PURE__ */ jsx("span", { children: feature.title })
|
|
901
|
+
]
|
|
902
|
+
},
|
|
903
|
+
index
|
|
904
|
+
));
|
|
857
905
|
}, [featuresSlot, features]);
|
|
858
|
-
return /* @__PURE__ */
|
|
906
|
+
return /* @__PURE__ */ jsx(
|
|
859
907
|
Section,
|
|
860
908
|
{
|
|
861
909
|
background,
|
|
862
910
|
spacing,
|
|
863
911
|
pattern,
|
|
864
912
|
patternOpacity,
|
|
865
|
-
className
|
|
913
|
+
className,
|
|
866
914
|
containerClassName,
|
|
867
|
-
children: [
|
|
868
|
-
/* @__PURE__ */
|
|
869
|
-
|
|
870
|
-
badge
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
915
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative gap-6 z-10 flex flex-col items-center text-center", children: [
|
|
916
|
+
badge && /* @__PURE__ */ jsxs(Badge, { className: "px-3", children: [
|
|
917
|
+
badgeIcon,
|
|
918
|
+
typeof badge === "string" ? /* @__PURE__ */ jsx("span", { children: badge }) : badge
|
|
919
|
+
] }),
|
|
920
|
+
(heading || headingHighlight) && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
921
|
+
"h1",
|
|
922
|
+
{
|
|
923
|
+
className: cn(
|
|
924
|
+
"max-w-full md:max-w-md text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
925
|
+
headingClassName
|
|
926
|
+
),
|
|
927
|
+
children: heading
|
|
928
|
+
}
|
|
929
|
+
) : heading ? /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading }) : headingHighlight ? /* @__PURE__ */ jsx(
|
|
930
|
+
"h1",
|
|
931
|
+
{
|
|
932
|
+
className: cn(
|
|
933
|
+
"max-w-full md:max-w-md text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
934
|
+
headingClassName
|
|
935
|
+
),
|
|
936
|
+
children: /* @__PURE__ */ jsx("span", { className: "bg-linear-to-r from-primary to-purple-600 bg-clip-text text-transparent", children: headingHighlight })
|
|
937
|
+
}
|
|
938
|
+
) : null),
|
|
939
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
940
|
+
"p",
|
|
941
|
+
{
|
|
942
|
+
className: cn(
|
|
943
|
+
"max-w-full md:max-w-md text-md md:text-xl text-balance",
|
|
944
|
+
descriptionClassName
|
|
945
|
+
),
|
|
946
|
+
children: description
|
|
947
|
+
}
|
|
948
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
949
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
|
|
950
|
+
"div",
|
|
951
|
+
{
|
|
952
|
+
className: cn(
|
|
953
|
+
"mt-0 md:mt-6 flex flex-col gap-4 sm:flex-row",
|
|
954
|
+
actionsClassName
|
|
955
|
+
),
|
|
956
|
+
children: renderActions
|
|
957
|
+
}
|
|
958
|
+
),
|
|
959
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx(
|
|
960
|
+
"div",
|
|
961
|
+
{
|
|
962
|
+
className: cn(
|
|
963
|
+
"mt-4 md:mt-6 flex flex-col md:flex-row items-center gap-4 md:gap-8 text-sm",
|
|
964
|
+
featuresClassName
|
|
965
|
+
),
|
|
966
|
+
children: renderFeatures
|
|
967
|
+
}
|
|
968
|
+
)
|
|
969
|
+
] })
|
|
887
970
|
}
|
|
888
971
|
);
|
|
889
972
|
}
|
|
@@ -1163,7 +1163,7 @@ function HeroConversionVideoPlay({
|
|
|
1163
1163
|
description,
|
|
1164
1164
|
primaryAction,
|
|
1165
1165
|
videoButtonLabel = "Play Video",
|
|
1166
|
-
videoUrl
|
|
1166
|
+
videoUrl,
|
|
1167
1167
|
videoDialogTitle = "Presentation Video",
|
|
1168
1168
|
actionsSlot,
|
|
1169
1169
|
image,
|
|
@@ -1172,7 +1172,7 @@ function HeroConversionVideoPlay({
|
|
|
1172
1172
|
logos,
|
|
1173
1173
|
logosSlot,
|
|
1174
1174
|
background,
|
|
1175
|
-
spacing = "
|
|
1175
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
1176
1176
|
pattern,
|
|
1177
1177
|
patternOpacity,
|
|
1178
1178
|
className,
|
|
@@ -1219,7 +1219,7 @@ function HeroConversionVideoPlay({
|
|
|
1219
1219
|
asButton: true,
|
|
1220
1220
|
variant: "link",
|
|
1221
1221
|
children: [
|
|
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" }) }),
|
|
1222
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 rounded-full bg-primary text-primary-foreground justify-center items-center", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/play" }) }),
|
|
1223
1223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: videoButtonLabel })
|
|
1224
1224
|
]
|
|
1225
1225
|
}
|
|
@@ -1272,7 +1272,7 @@ function HeroConversionVideoPlay({
|
|
|
1272
1272
|
"div",
|
|
1273
1273
|
{
|
|
1274
1274
|
className: cn(
|
|
1275
|
-
"flex flex-wrap items-center justify-center gap-
|
|
1275
|
+
"flex flex-wrap items-center justify-center gap-4",
|
|
1276
1276
|
actionsClassName
|
|
1277
1277
|
),
|
|
1278
1278
|
children: renderActions
|
|
@@ -1295,7 +1295,7 @@ function HeroConversionVideoPlay({
|
|
|
1295
1295
|
) }) }) }) : null })
|
|
1296
1296
|
] }) }),
|
|
1297
1297
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-16 py-20", children: [
|
|
1298
|
-
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center
|
|
1298
|
+
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center font-medium "), children: logosTagline }) : logosTagline),
|
|
1299
1299
|
logosSlot ? logosSlot : logos && logos.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1300
1300
|
Carousel,
|
|
1301
1301
|
{
|
|
@@ -1136,7 +1136,7 @@ function HeroConversionVideoPlay({
|
|
|
1136
1136
|
description,
|
|
1137
1137
|
primaryAction,
|
|
1138
1138
|
videoButtonLabel = "Play Video",
|
|
1139
|
-
videoUrl
|
|
1139
|
+
videoUrl,
|
|
1140
1140
|
videoDialogTitle = "Presentation Video",
|
|
1141
1141
|
actionsSlot,
|
|
1142
1142
|
image,
|
|
@@ -1145,7 +1145,7 @@ function HeroConversionVideoPlay({
|
|
|
1145
1145
|
logos,
|
|
1146
1146
|
logosSlot,
|
|
1147
1147
|
background,
|
|
1148
|
-
spacing = "
|
|
1148
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
1149
1149
|
pattern,
|
|
1150
1150
|
patternOpacity,
|
|
1151
1151
|
className,
|
|
@@ -1192,7 +1192,7 @@ function HeroConversionVideoPlay({
|
|
|
1192
1192
|
asButton: true,
|
|
1193
1193
|
variant: "link",
|
|
1194
1194
|
children: [
|
|
1195
|
-
/* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 rounded-full bg-primary text-primary-foreground", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/play" }) }),
|
|
1195
|
+
/* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 rounded-full bg-primary text-primary-foreground justify-center items-center", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/play" }) }),
|
|
1196
1196
|
/* @__PURE__ */ jsx("div", { children: videoButtonLabel })
|
|
1197
1197
|
]
|
|
1198
1198
|
}
|
|
@@ -1245,7 +1245,7 @@ function HeroConversionVideoPlay({
|
|
|
1245
1245
|
"div",
|
|
1246
1246
|
{
|
|
1247
1247
|
className: cn(
|
|
1248
|
-
"flex flex-wrap items-center justify-center gap-
|
|
1248
|
+
"flex flex-wrap items-center justify-center gap-4",
|
|
1249
1249
|
actionsClassName
|
|
1250
1250
|
),
|
|
1251
1251
|
children: renderActions
|
|
@@ -1268,7 +1268,7 @@ function HeroConversionVideoPlay({
|
|
|
1268
1268
|
) }) }) }) : null })
|
|
1269
1269
|
] }) }),
|
|
1270
1270
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-16 py-20", children: [
|
|
1271
|
-
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center
|
|
1271
|
+
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center font-medium "), children: logosTagline }) : logosTagline),
|
|
1272
1272
|
logosSlot ? logosSlot : logos && logos.length > 0 ? /* @__PURE__ */ jsx(
|
|
1273
1273
|
Carousel,
|
|
1274
1274
|
{
|
|
@@ -836,7 +836,7 @@ function HeroDesignShowcaseLogos({
|
|
|
836
836
|
showcaseImage,
|
|
837
837
|
showcaseSlot,
|
|
838
838
|
background,
|
|
839
|
-
spacing = "
|
|
839
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
840
840
|
pattern,
|
|
841
841
|
patternOpacity,
|
|
842
842
|
className,
|
|
@@ -856,7 +856,7 @@ function HeroDesignShowcaseLogos({
|
|
|
856
856
|
"div",
|
|
857
857
|
{
|
|
858
858
|
className: cn(
|
|
859
|
-
"mt-6 md:mt-12 flex items-center justify-center gap-
|
|
859
|
+
"mt-6 md:mt-12 flex flex-col md:flex-row items-center justify-center gap-4",
|
|
860
860
|
actionsClassName
|
|
861
861
|
),
|
|
862
862
|
children: actions.map((action, index) => {
|
|
@@ -889,7 +889,7 @@ function HeroDesignShowcaseLogos({
|
|
|
889
889
|
const renderLogos = React.useMemo(() => {
|
|
890
890
|
if (logosSlot) return logosSlot;
|
|
891
891
|
if (!logos || logos.length === 0) return null;
|
|
892
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-
|
|
892
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-0 md:py-16", children: [
|
|
893
893
|
logosLabel && (typeof logosLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm text-foreground/60", children: logosLabel }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-sm text-foreground/60", children: logosLabel })),
|
|
894
894
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
895
895
|
"div",
|
|
@@ -906,7 +906,7 @@ function HeroDesignShowcaseLogos({
|
|
|
906
906
|
src: logoSrc,
|
|
907
907
|
alt: logo.alt,
|
|
908
908
|
className: cn(
|
|
909
|
-
"block
|
|
909
|
+
"block w-auto opacity-50 h-5 object-contain",
|
|
910
910
|
logo.className
|
|
911
911
|
),
|
|
912
912
|
optixFlowConfig
|
|
@@ -815,7 +815,7 @@ function HeroDesignShowcaseLogos({
|
|
|
815
815
|
showcaseImage,
|
|
816
816
|
showcaseSlot,
|
|
817
817
|
background,
|
|
818
|
-
spacing = "
|
|
818
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
819
819
|
pattern,
|
|
820
820
|
patternOpacity,
|
|
821
821
|
className,
|
|
@@ -835,7 +835,7 @@ function HeroDesignShowcaseLogos({
|
|
|
835
835
|
"div",
|
|
836
836
|
{
|
|
837
837
|
className: cn(
|
|
838
|
-
"mt-6 md:mt-12 flex items-center justify-center gap-
|
|
838
|
+
"mt-6 md:mt-12 flex flex-col md:flex-row items-center justify-center gap-4",
|
|
839
839
|
actionsClassName
|
|
840
840
|
),
|
|
841
841
|
children: actions.map((action, index) => {
|
|
@@ -868,7 +868,7 @@ function HeroDesignShowcaseLogos({
|
|
|
868
868
|
const renderLogos = useMemo(() => {
|
|
869
869
|
if (logosSlot) return logosSlot;
|
|
870
870
|
if (!logos || logos.length === 0) return null;
|
|
871
|
-
return /* @__PURE__ */ jsxs("div", { className: "py-
|
|
871
|
+
return /* @__PURE__ */ jsxs("div", { className: "py-0 md:py-16", children: [
|
|
872
872
|
logosLabel && (typeof logosLabel === "string" ? /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-foreground/60", children: logosLabel }) : /* @__PURE__ */ jsx("div", { className: "text-center text-sm text-foreground/60", children: logosLabel })),
|
|
873
873
|
/* @__PURE__ */ jsx(
|
|
874
874
|
"div",
|
|
@@ -885,7 +885,7 @@ function HeroDesignShowcaseLogos({
|
|
|
885
885
|
src: logoSrc,
|
|
886
886
|
alt: logo.alt,
|
|
887
887
|
className: cn(
|
|
888
|
-
"block
|
|
888
|
+
"block w-auto opacity-50 h-5 object-contain",
|
|
889
889
|
logo.className
|
|
890
890
|
),
|
|
891
891
|
optixFlowConfig
|
|
@@ -975,7 +975,7 @@ function HeroGridPatternSolutions({
|
|
|
975
975
|
images,
|
|
976
976
|
imagesSlot,
|
|
977
977
|
background,
|
|
978
|
-
spacing = "
|
|
978
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
979
979
|
pattern,
|
|
980
980
|
patternOpacity,
|
|
981
981
|
className,
|
|
@@ -1010,9 +1010,9 @@ function HeroGridPatternSolutions({
|
|
|
1010
1010
|
const renderBadge = React.useMemo(() => {
|
|
1011
1011
|
if (badgeSlot) return badgeSlot;
|
|
1012
1012
|
if (!badgeText) return null;
|
|
1013
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "px-
|
|
1013
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "px-4", children: [
|
|
1014
1014
|
badgeText,
|
|
1015
|
-
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right" })
|
|
1015
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 16 })
|
|
1016
1016
|
] }) });
|
|
1017
1017
|
}, [badgeSlot, badgeHref, badgeText]);
|
|
1018
1018
|
const renderActions = React.useMemo(() => {
|
|
@@ -1105,7 +1105,7 @@ function HeroGridPatternSolutions({
|
|
|
1105
1105
|
containerClassName,
|
|
1106
1106
|
children: [
|
|
1107
1107
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1108
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("
|
|
1108
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center", contentClassName), children: [
|
|
1109
1109
|
renderBadge,
|
|
1110
1110
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
1111
|
"h1",
|
|
@@ -954,7 +954,7 @@ function HeroGridPatternSolutions({
|
|
|
954
954
|
images,
|
|
955
955
|
imagesSlot,
|
|
956
956
|
background,
|
|
957
|
-
spacing = "
|
|
957
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
958
958
|
pattern,
|
|
959
959
|
patternOpacity,
|
|
960
960
|
className,
|
|
@@ -989,9 +989,9 @@ function HeroGridPatternSolutions({
|
|
|
989
989
|
const renderBadge = useMemo(() => {
|
|
990
990
|
if (badgeSlot) return badgeSlot;
|
|
991
991
|
if (!badgeText) return null;
|
|
992
|
-
return /* @__PURE__ */ jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxs(Badge, { className: "px-
|
|
992
|
+
return /* @__PURE__ */ jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxs(Badge, { className: "px-4", children: [
|
|
993
993
|
badgeText,
|
|
994
|
-
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right" })
|
|
994
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 16 })
|
|
995
995
|
] }) });
|
|
996
996
|
}, [badgeSlot, badgeHref, badgeText]);
|
|
997
997
|
const renderActions = useMemo(() => {
|
|
@@ -1084,7 +1084,7 @@ function HeroGridPatternSolutions({
|
|
|
1084
1084
|
containerClassName,
|
|
1085
1085
|
children: [
|
|
1086
1086
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1087
|
-
/* @__PURE__ */ jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: cn("
|
|
1087
|
+
/* @__PURE__ */ jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center", contentClassName), children: [
|
|
1088
1088
|
renderBadge,
|
|
1089
1089
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
1090
1090
|
"h1",
|
|
@@ -835,7 +835,7 @@ function HeroHiringAnimatedText({
|
|
|
835
835
|
scrollActionSlot,
|
|
836
836
|
backgroundImage,
|
|
837
837
|
background,
|
|
838
|
-
spacing = "
|
|
838
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
839
839
|
pattern,
|
|
840
840
|
patternOpacity,
|
|
841
841
|
className,
|
|
@@ -845,32 +845,60 @@ function HeroHiringAnimatedText({
|
|
|
845
845
|
descriptionClassName,
|
|
846
846
|
actionsClassName
|
|
847
847
|
}) {
|
|
848
|
+
const [activeIndex, setActiveIndex] = React.useState(0);
|
|
849
|
+
const cycleText = React.useCallback(() => {
|
|
850
|
+
if (!animatedTexts || animatedTexts.length <= 1) return;
|
|
851
|
+
setActiveIndex((prev) => (prev + 1) % animatedTexts.length);
|
|
852
|
+
}, [animatedTexts]);
|
|
853
|
+
React.useEffect(() => {
|
|
854
|
+
if (!animatedTexts || animatedTexts.length <= 1) return;
|
|
855
|
+
const interval = setInterval(cycleText, 2e3);
|
|
856
|
+
return () => clearInterval(interval);
|
|
857
|
+
}, [animatedTexts, cycleText]);
|
|
848
858
|
const renderHeading = React.useMemo(() => {
|
|
849
859
|
if (headingSlot) return headingSlot;
|
|
850
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
),
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
860
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
861
|
+
"h1",
|
|
862
|
+
{
|
|
863
|
+
className: cn(
|
|
864
|
+
"text-4xl leading-9 font-bold lg:text-5xl lg:leading-12! xl:text-7xl xl:leading-22! text-white text-shadow-xl",
|
|
865
|
+
headingClassName
|
|
866
|
+
),
|
|
867
|
+
children: [
|
|
868
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2", children: headingPrefix }),
|
|
869
|
+
animatedTexts && animatedTexts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-9 lg:h-12 xl:h-22", children: animatedTexts.map((text, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
870
|
+
"div",
|
|
871
|
+
{
|
|
872
|
+
className: "absolute top-0 left-0 text-white transition-opacity duration-1000 ease-in-out",
|
|
873
|
+
style: {
|
|
874
|
+
opacity: index === activeIndex ? 1 : 0
|
|
875
|
+
},
|
|
876
|
+
children: text
|
|
877
|
+
},
|
|
878
|
+
index
|
|
879
|
+
)) })
|
|
880
|
+
]
|
|
881
|
+
}
|
|
882
|
+
);
|
|
883
|
+
}, [
|
|
884
|
+
headingSlot,
|
|
885
|
+
headingPrefix,
|
|
886
|
+
animatedTexts,
|
|
887
|
+
headingClassName,
|
|
888
|
+
activeIndex
|
|
889
|
+
]);
|
|
869
890
|
const renderActions = React.useMemo(() => {
|
|
870
891
|
if (actionsSlot) return actionsSlot;
|
|
871
892
|
if (!actions || actions.length === 0) return null;
|
|
872
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-
|
|
873
|
-
const {
|
|
893
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col md:flex-row gap-4", actionsClassName), children: actions.map((action, index) => {
|
|
894
|
+
const {
|
|
895
|
+
label,
|
|
896
|
+
icon,
|
|
897
|
+
iconAfter,
|
|
898
|
+
children,
|
|
899
|
+
className: actionClassName,
|
|
900
|
+
...pressableProps
|
|
901
|
+
} = action;
|
|
874
902
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
875
903
|
Pressable,
|
|
876
904
|
{
|
|
@@ -890,7 +918,14 @@ function HeroHiringAnimatedText({
|
|
|
890
918
|
const renderScrollAction = React.useMemo(() => {
|
|
891
919
|
if (scrollActionSlot) return scrollActionSlot;
|
|
892
920
|
if (!scrollAction) return null;
|
|
893
|
-
const {
|
|
921
|
+
const {
|
|
922
|
+
label,
|
|
923
|
+
icon,
|
|
924
|
+
iconAfter,
|
|
925
|
+
children,
|
|
926
|
+
className: actionClassName,
|
|
927
|
+
...pressableProps
|
|
928
|
+
} = scrollAction;
|
|
894
929
|
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
895
930
|
icon,
|
|
896
931
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: label }),
|
|
@@ -905,21 +940,39 @@ function HeroHiringAnimatedText({
|
|
|
905
940
|
pattern,
|
|
906
941
|
patternOpacity,
|
|
907
942
|
className: cn(
|
|
908
|
-
"relative flex items-center justify-center
|
|
943
|
+
"relative flex items-center justify-center h-svh max-h-[1400px] w-full bg-cover bg-position-[100%] bg-no-repeat before:absolute before:top-0 before:left-0 before:size-full before:bg-[radial-gradient(circle_at_100%_-100%,transparent_40%,rgba(0,0,0,.75)_85%)] before:content-['']",
|
|
909
944
|
className
|
|
910
945
|
),
|
|
911
946
|
containerClassName,
|
|
912
947
|
style: { backgroundImage: `url('${backgroundImage}')` },
|
|
913
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 flex size-full max-w-412.5 flex-col justify-between pt-24 pb-14 md:justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
948
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 flex size-full max-w-412.5 flex-col justify-between pt-24 pb-14 md:justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
949
|
+
"div",
|
|
950
|
+
{
|
|
951
|
+
className: cn(
|
|
952
|
+
"flex h-full flex-col justify-between gap-6 md:justify-end max-w-full md:max-w-md",
|
|
953
|
+
contentClassName
|
|
954
|
+
),
|
|
955
|
+
children: [
|
|
956
|
+
renderHeading,
|
|
957
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-8", children: [
|
|
958
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
+
"p",
|
|
960
|
+
{
|
|
961
|
+
className: cn(
|
|
962
|
+
"text-lg lg:text-2xl text-white text-balance",
|
|
963
|
+
descriptionClassName
|
|
964
|
+
),
|
|
965
|
+
children: description
|
|
966
|
+
}
|
|
967
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
968
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
969
|
+
renderActions,
|
|
970
|
+
renderScrollAction
|
|
971
|
+
] })
|
|
972
|
+
] })
|
|
973
|
+
]
|
|
974
|
+
}
|
|
975
|
+
) })
|
|
923
976
|
}
|
|
924
977
|
);
|
|
925
978
|
}
|