@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
|
@@ -852,42 +852,70 @@ function HeroDesignShowcaseLogos({
|
|
|
852
852
|
const renderActions = React.useMemo(() => {
|
|
853
853
|
if (actionsSlot) return actionsSlot;
|
|
854
854
|
if (!actions || actions.length === 0) return null;
|
|
855
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
855
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
856
|
+
"div",
|
|
857
|
+
{
|
|
858
|
+
className: cn(
|
|
859
|
+
"mt-6 md:mt-12 flex items-center justify-center gap-3",
|
|
860
|
+
actionsClassName
|
|
861
|
+
),
|
|
862
|
+
children: actions.map((action, index) => {
|
|
863
|
+
const {
|
|
864
|
+
label,
|
|
864
865
|
icon,
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
866
|
+
iconAfter,
|
|
867
|
+
children,
|
|
868
|
+
className: actionClassName,
|
|
869
|
+
...pressableProps
|
|
870
|
+
} = action;
|
|
871
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
872
|
+
Pressable,
|
|
873
|
+
{
|
|
874
|
+
asButton: true,
|
|
875
|
+
className: actionClassName,
|
|
876
|
+
...pressableProps,
|
|
877
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
878
|
+
icon,
|
|
879
|
+
label && /* @__PURE__ */ jsxRuntime.jsx("div", { children: label }),
|
|
880
|
+
iconAfter
|
|
881
|
+
] })
|
|
882
|
+
},
|
|
883
|
+
index
|
|
884
|
+
);
|
|
885
|
+
})
|
|
886
|
+
}
|
|
887
|
+
);
|
|
872
888
|
}, [actionsSlot, actions, actionsClassName]);
|
|
873
889
|
const renderLogos = React.useMemo(() => {
|
|
874
890
|
if (logosSlot) return logosSlot;
|
|
875
891
|
if (!logos || logos.length === 0) return null;
|
|
876
892
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-10 md:py-16", children: [
|
|
877
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 })),
|
|
878
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
894
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
895
|
+
"div",
|
|
896
|
+
{
|
|
897
|
+
className: cn(
|
|
898
|
+
"mt-8 flex flex-wrap items-center justify-center gap-5 sm:flex-nowrap",
|
|
899
|
+
logosClassName
|
|
900
|
+
),
|
|
901
|
+
children: logos.map((logo, index) => {
|
|
902
|
+
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
903
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
904
|
+
img.Img,
|
|
905
|
+
{
|
|
906
|
+
src: logoSrc,
|
|
907
|
+
alt: logo.alt,
|
|
908
|
+
className: cn(
|
|
909
|
+
"block h-3.5 w-auto opacity-50 md:h-5",
|
|
910
|
+
logo.className
|
|
911
|
+
),
|
|
912
|
+
optixFlowConfig
|
|
913
|
+
},
|
|
914
|
+
index
|
|
915
|
+
);
|
|
916
|
+
})
|
|
917
|
+
}
|
|
918
|
+
)
|
|
891
919
|
] });
|
|
892
920
|
}, [logosSlot, logos, logosLabel, logosClassName, optixFlowConfig]);
|
|
893
921
|
const renderShowcase = React.useMemo(() => {
|
|
@@ -898,7 +926,10 @@ function HeroDesignShowcaseLogos({
|
|
|
898
926
|
{
|
|
899
927
|
src: showcaseImage.src,
|
|
900
928
|
alt: showcaseImage.alt,
|
|
901
|
-
className: cn(
|
|
929
|
+
className: cn(
|
|
930
|
+
"w-full object-cover object-top-left",
|
|
931
|
+
showcaseImage.className
|
|
932
|
+
),
|
|
902
933
|
optixFlowConfig
|
|
903
934
|
}
|
|
904
935
|
) }) }) });
|
|
@@ -913,14 +944,47 @@ function HeroDesignShowcaseLogos({
|
|
|
913
944
|
className: cn("relative flex items-center justify-center", className),
|
|
914
945
|
containerClassName,
|
|
915
946
|
children: [
|
|
916
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
947
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
948
|
+
"div",
|
|
949
|
+
{
|
|
950
|
+
className: cn("flex flex-col items-center gap-8", contentClassName),
|
|
951
|
+
children: [
|
|
952
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-[920px] flex-col items-center gap-6", children: [
|
|
953
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
954
|
+
"h1",
|
|
955
|
+
{
|
|
956
|
+
className: cn(
|
|
957
|
+
"mb-6 text-center text-[2.75rem] leading-tight font-semibold md:text-[3.5rem] lg:text-[4.375rem] text-balance",
|
|
958
|
+
headingClassName
|
|
959
|
+
),
|
|
960
|
+
children: heading
|
|
961
|
+
}
|
|
962
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
963
|
+
"h1",
|
|
964
|
+
{
|
|
965
|
+
className: cn(
|
|
966
|
+
"mb-6 text-center text-[2.75rem] leading-tight font-semibold md:text-[3.5rem] lg:text-[4.375rem] text-balance",
|
|
967
|
+
headingClassName
|
|
968
|
+
),
|
|
969
|
+
children: heading
|
|
970
|
+
}
|
|
971
|
+
)),
|
|
972
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
973
|
+
"p",
|
|
974
|
+
{
|
|
975
|
+
className: cn(
|
|
976
|
+
"text-center text-xl text-balance",
|
|
977
|
+
descriptionClassName
|
|
978
|
+
),
|
|
979
|
+
children: description
|
|
980
|
+
}
|
|
981
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
982
|
+
] }),
|
|
983
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: renderActions }),
|
|
984
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: renderLogos })
|
|
985
|
+
]
|
|
986
|
+
}
|
|
987
|
+
) }),
|
|
924
988
|
renderShowcase
|
|
925
989
|
]
|
|
926
990
|
}
|
|
@@ -831,42 +831,70 @@ function HeroDesignShowcaseLogos({
|
|
|
831
831
|
const renderActions = useMemo(() => {
|
|
832
832
|
if (actionsSlot) return actionsSlot;
|
|
833
833
|
if (!actions || actions.length === 0) return null;
|
|
834
|
-
return /* @__PURE__ */ jsx(
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
834
|
+
return /* @__PURE__ */ jsx(
|
|
835
|
+
"div",
|
|
836
|
+
{
|
|
837
|
+
className: cn(
|
|
838
|
+
"mt-6 md:mt-12 flex items-center justify-center gap-3",
|
|
839
|
+
actionsClassName
|
|
840
|
+
),
|
|
841
|
+
children: actions.map((action, index) => {
|
|
842
|
+
const {
|
|
843
|
+
label,
|
|
843
844
|
icon,
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
845
|
+
iconAfter,
|
|
846
|
+
children,
|
|
847
|
+
className: actionClassName,
|
|
848
|
+
...pressableProps
|
|
849
|
+
} = action;
|
|
850
|
+
return /* @__PURE__ */ jsx(
|
|
851
|
+
Pressable,
|
|
852
|
+
{
|
|
853
|
+
asButton: true,
|
|
854
|
+
className: actionClassName,
|
|
855
|
+
...pressableProps,
|
|
856
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
857
|
+
icon,
|
|
858
|
+
label && /* @__PURE__ */ jsx("div", { children: label }),
|
|
859
|
+
iconAfter
|
|
860
|
+
] })
|
|
861
|
+
},
|
|
862
|
+
index
|
|
863
|
+
);
|
|
864
|
+
})
|
|
865
|
+
}
|
|
866
|
+
);
|
|
851
867
|
}, [actionsSlot, actions, actionsClassName]);
|
|
852
868
|
const renderLogos = useMemo(() => {
|
|
853
869
|
if (logosSlot) return logosSlot;
|
|
854
870
|
if (!logos || logos.length === 0) return null;
|
|
855
871
|
return /* @__PURE__ */ jsxs("div", { className: "py-10 md:py-16", children: [
|
|
856
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 })),
|
|
857
|
-
/* @__PURE__ */ jsx(
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
873
|
+
/* @__PURE__ */ jsx(
|
|
874
|
+
"div",
|
|
875
|
+
{
|
|
876
|
+
className: cn(
|
|
877
|
+
"mt-8 flex flex-wrap items-center justify-center gap-5 sm:flex-nowrap",
|
|
878
|
+
logosClassName
|
|
879
|
+
),
|
|
880
|
+
children: logos.map((logo, index) => {
|
|
881
|
+
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
882
|
+
return /* @__PURE__ */ jsx(
|
|
883
|
+
Img,
|
|
884
|
+
{
|
|
885
|
+
src: logoSrc,
|
|
886
|
+
alt: logo.alt,
|
|
887
|
+
className: cn(
|
|
888
|
+
"block h-3.5 w-auto opacity-50 md:h-5",
|
|
889
|
+
logo.className
|
|
890
|
+
),
|
|
891
|
+
optixFlowConfig
|
|
892
|
+
},
|
|
893
|
+
index
|
|
894
|
+
);
|
|
895
|
+
})
|
|
896
|
+
}
|
|
897
|
+
)
|
|
870
898
|
] });
|
|
871
899
|
}, [logosSlot, logos, logosLabel, logosClassName, optixFlowConfig]);
|
|
872
900
|
const renderShowcase = useMemo(() => {
|
|
@@ -877,7 +905,10 @@ function HeroDesignShowcaseLogos({
|
|
|
877
905
|
{
|
|
878
906
|
src: showcaseImage.src,
|
|
879
907
|
alt: showcaseImage.alt,
|
|
880
|
-
className: cn(
|
|
908
|
+
className: cn(
|
|
909
|
+
"w-full object-cover object-top-left",
|
|
910
|
+
showcaseImage.className
|
|
911
|
+
),
|
|
881
912
|
optixFlowConfig
|
|
882
913
|
}
|
|
883
914
|
) }) }) });
|
|
@@ -892,14 +923,47 @@ function HeroDesignShowcaseLogos({
|
|
|
892
923
|
className: cn("relative flex items-center justify-center", className),
|
|
893
924
|
containerClassName,
|
|
894
925
|
children: [
|
|
895
|
-
/* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
926
|
+
/* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
|
|
927
|
+
"div",
|
|
928
|
+
{
|
|
929
|
+
className: cn("flex flex-col items-center gap-8", contentClassName),
|
|
930
|
+
children: [
|
|
931
|
+
/* @__PURE__ */ jsxs("div", { className: "flex max-w-[920px] flex-col items-center gap-6", children: [
|
|
932
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
933
|
+
"h1",
|
|
934
|
+
{
|
|
935
|
+
className: cn(
|
|
936
|
+
"mb-6 text-center text-[2.75rem] leading-tight font-semibold md:text-[3.5rem] lg:text-[4.375rem] text-balance",
|
|
937
|
+
headingClassName
|
|
938
|
+
),
|
|
939
|
+
children: heading
|
|
940
|
+
}
|
|
941
|
+
) : /* @__PURE__ */ jsx(
|
|
942
|
+
"h1",
|
|
943
|
+
{
|
|
944
|
+
className: cn(
|
|
945
|
+
"mb-6 text-center text-[2.75rem] leading-tight font-semibold md:text-[3.5rem] lg:text-[4.375rem] text-balance",
|
|
946
|
+
headingClassName
|
|
947
|
+
),
|
|
948
|
+
children: heading
|
|
949
|
+
}
|
|
950
|
+
)),
|
|
951
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
952
|
+
"p",
|
|
953
|
+
{
|
|
954
|
+
className: cn(
|
|
955
|
+
"text-center text-xl text-balance",
|
|
956
|
+
descriptionClassName
|
|
957
|
+
),
|
|
958
|
+
children: description
|
|
959
|
+
}
|
|
960
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
961
|
+
] }),
|
|
962
|
+
/* @__PURE__ */ jsx("div", { children: renderActions }),
|
|
963
|
+
/* @__PURE__ */ jsx("div", { children: renderLogos })
|
|
964
|
+
]
|
|
965
|
+
}
|
|
966
|
+
) }),
|
|
903
967
|
renderShowcase
|
|
904
968
|
]
|
|
905
969
|
}
|
|
@@ -7,6 +7,8 @@ var tailwindMerge = require('tailwind-merge');
|
|
|
7
7
|
var classVarianceAuthority = require('class-variance-authority');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var img = require('@page-speed/img');
|
|
10
|
+
var lightbox = require('@page-speed/lightbox');
|
|
11
|
+
var reactSlot = require('@radix-ui/react-slot');
|
|
10
12
|
|
|
11
13
|
function _interopNamespace(e) {
|
|
12
14
|
if (e && e.__esModule) return e;
|
|
@@ -930,9 +932,41 @@ var Section = React__namespace.default.forwardRef(
|
|
|
930
932
|
}
|
|
931
933
|
);
|
|
932
934
|
Section.displayName = "Section";
|
|
935
|
+
var badgeVariants = classVarianceAuthority.cva(
|
|
936
|
+
"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",
|
|
937
|
+
{
|
|
938
|
+
variants: {
|
|
939
|
+
variant: {
|
|
940
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
941
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
942
|
+
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",
|
|
943
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
944
|
+
}
|
|
945
|
+
},
|
|
946
|
+
defaultVariants: {
|
|
947
|
+
variant: "default"
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
);
|
|
951
|
+
function Badge({
|
|
952
|
+
className,
|
|
953
|
+
variant,
|
|
954
|
+
asChild = false,
|
|
955
|
+
...props
|
|
956
|
+
}) {
|
|
957
|
+
const Comp = asChild ? reactSlot.Slot : "span";
|
|
958
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
+
Comp,
|
|
960
|
+
{
|
|
961
|
+
"data-slot": "badge",
|
|
962
|
+
className: cn(badgeVariants({ variant }), className),
|
|
963
|
+
...props
|
|
964
|
+
}
|
|
965
|
+
);
|
|
966
|
+
}
|
|
933
967
|
function HeroGridPatternSolutions({
|
|
934
968
|
badgeText,
|
|
935
|
-
badgeHref
|
|
969
|
+
badgeHref,
|
|
936
970
|
badgeSlot,
|
|
937
971
|
heading,
|
|
938
972
|
description,
|
|
@@ -940,7 +974,6 @@ function HeroGridPatternSolutions({
|
|
|
940
974
|
actionsSlot,
|
|
941
975
|
images,
|
|
942
976
|
imagesSlot,
|
|
943
|
-
showGridPattern = true,
|
|
944
977
|
background,
|
|
945
978
|
spacing = "py-32 md:py-32",
|
|
946
979
|
pattern,
|
|
@@ -954,56 +987,114 @@ function HeroGridPatternSolutions({
|
|
|
954
987
|
imagesClassName,
|
|
955
988
|
optixFlowConfig
|
|
956
989
|
}) {
|
|
990
|
+
const [lightboxOpen, setLightboxOpen] = React.useState(false);
|
|
991
|
+
const [lightboxIndex, setLightboxIndex] = React.useState(0);
|
|
992
|
+
const lightboxItems = React.useMemo(
|
|
993
|
+
() => (images ?? []).map((img, index) => ({
|
|
994
|
+
id: `hero-grid-image-${index}`,
|
|
995
|
+
type: "image",
|
|
996
|
+
src: img.src,
|
|
997
|
+
alt: img.alt,
|
|
998
|
+
download: true,
|
|
999
|
+
share: true
|
|
1000
|
+
})),
|
|
1001
|
+
[images]
|
|
1002
|
+
);
|
|
1003
|
+
const handleImageClick = React.useCallback((index) => {
|
|
1004
|
+
setLightboxIndex(index);
|
|
1005
|
+
setLightboxOpen(true);
|
|
1006
|
+
}, []);
|
|
1007
|
+
const handleLightboxClose = React.useCallback(() => {
|
|
1008
|
+
setLightboxOpen(false);
|
|
1009
|
+
}, []);
|
|
957
1010
|
const renderBadge = React.useMemo(() => {
|
|
958
1011
|
if (badgeSlot) return badgeSlot;
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
children: [
|
|
965
|
-
badgeText,
|
|
966
|
-
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
967
|
-
]
|
|
968
|
-
}
|
|
969
|
-
);
|
|
1012
|
+
if (!badgeText) return null;
|
|
1013
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "px-2", children: [
|
|
1014
|
+
badgeText,
|
|
1015
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right" })
|
|
1016
|
+
] }) });
|
|
970
1017
|
}, [badgeSlot, badgeHref, badgeText]);
|
|
971
1018
|
const renderActions = React.useMemo(() => {
|
|
972
1019
|
if (actionsSlot) return actionsSlot;
|
|
973
1020
|
if (!actions || actions.length === 0) return null;
|
|
974
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
icon,
|
|
1021
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1022
|
+
"div",
|
|
1023
|
+
{
|
|
1024
|
+
className: cn(
|
|
1025
|
+
"flex flex-col justify-center gap-x-2 gap-y-3 sm:flex-row",
|
|
1026
|
+
actionsClassName
|
|
1027
|
+
),
|
|
1028
|
+
children: actions.map((action, index) => {
|
|
1029
|
+
const {
|
|
984
1030
|
label,
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
1031
|
+
icon,
|
|
1032
|
+
iconAfter,
|
|
1033
|
+
children,
|
|
1034
|
+
className: actionClassName,
|
|
1035
|
+
...pressableProps
|
|
1036
|
+
} = action;
|
|
1037
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1038
|
+
Pressable,
|
|
1039
|
+
{
|
|
1040
|
+
asButton: true,
|
|
1041
|
+
className: actionClassName,
|
|
1042
|
+
...pressableProps,
|
|
1043
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1044
|
+
icon,
|
|
1045
|
+
label,
|
|
1046
|
+
iconAfter
|
|
1047
|
+
] })
|
|
1048
|
+
},
|
|
1049
|
+
index
|
|
1050
|
+
);
|
|
1051
|
+
})
|
|
1052
|
+
}
|
|
1053
|
+
);
|
|
991
1054
|
}, [actionsSlot, actions, actionsClassName]);
|
|
992
1055
|
const renderImages = React.useMemo(() => {
|
|
993
1056
|
if (imagesSlot) return imagesSlot;
|
|
994
1057
|
if (!images || images.length === 0) return null;
|
|
995
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
996
|
-
|
|
1058
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1059
|
+
"div",
|
|
997
1060
|
{
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1061
|
+
className: cn(
|
|
1062
|
+
"mt-8 md:mt-20 grid grid-cols-2 gap-4 md:flex md:flex-row md:items-center md:justify-center md:gap-6",
|
|
1063
|
+
imagesClassName
|
|
1064
|
+
),
|
|
1065
|
+
children: images.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1066
|
+
"div",
|
|
1067
|
+
{
|
|
1068
|
+
className: "cursor-pointer overflow-hidden rounded-xl transition-transform hover:scale-[1.02] hover:shadow-lg",
|
|
1069
|
+
onClick: () => handleImageClick(index),
|
|
1070
|
+
role: "button",
|
|
1071
|
+
tabIndex: 0,
|
|
1072
|
+
onKeyDown: (e) => {
|
|
1073
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
1074
|
+
e.preventDefault();
|
|
1075
|
+
handleImageClick(index);
|
|
1076
|
+
}
|
|
1077
|
+
},
|
|
1078
|
+
"aria-label": `View ${image.alt} in lightbox`,
|
|
1079
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1080
|
+
img.Img,
|
|
1081
|
+
{
|
|
1082
|
+
src: image.src,
|
|
1083
|
+
alt: image.alt,
|
|
1084
|
+
className: cn(
|
|
1085
|
+
"h-full max-h-[200px] max-w-[200px] w-full rounded-xl object-cover shadow-xl",
|
|
1086
|
+
image.className
|
|
1087
|
+
),
|
|
1088
|
+
optixFlowConfig
|
|
1089
|
+
}
|
|
1090
|
+
)
|
|
1091
|
+
},
|
|
1092
|
+
index
|
|
1093
|
+
))
|
|
1094
|
+
}
|
|
1095
|
+
);
|
|
1096
|
+
}, [imagesSlot, images, imagesClassName, optixFlowConfig, handleImageClick]);
|
|
1097
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1007
1098
|
Section,
|
|
1008
1099
|
{
|
|
1009
1100
|
background,
|
|
@@ -1012,18 +1103,65 @@ function HeroGridPatternSolutions({
|
|
|
1012
1103
|
patternOpacity,
|
|
1013
1104
|
className: cn("relative flex items-center justify-center", className),
|
|
1014
1105
|
containerClassName,
|
|
1015
|
-
children:
|
|
1016
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative
|
|
1017
|
-
|
|
1018
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
|
|
1106
|
+
children: [
|
|
1107
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1108
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
|
|
1019
1109
|
renderBadge,
|
|
1020
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1021
|
-
|
|
1110
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
|
+
"h1",
|
|
1112
|
+
{
|
|
1113
|
+
className: cn(
|
|
1114
|
+
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl text-balance",
|
|
1115
|
+
headingClassName
|
|
1116
|
+
),
|
|
1117
|
+
children: heading
|
|
1118
|
+
}
|
|
1119
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1120
|
+
"h1",
|
|
1121
|
+
{
|
|
1122
|
+
className: cn(
|
|
1123
|
+
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl text-balance",
|
|
1124
|
+
headingClassName
|
|
1125
|
+
),
|
|
1126
|
+
children: heading
|
|
1127
|
+
}
|
|
1128
|
+
)),
|
|
1129
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1130
|
+
"p",
|
|
1131
|
+
{
|
|
1132
|
+
className: cn(
|
|
1133
|
+
"mx-auto mb-8 max-w-2xl text-center lg:text-xl text-balance",
|
|
1134
|
+
descriptionClassName
|
|
1135
|
+
),
|
|
1136
|
+
children: description
|
|
1137
|
+
}
|
|
1138
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
1022
1139
|
renderActions
|
|
1023
|
-
] })
|
|
1140
|
+
] }) }),
|
|
1141
|
+
renderImages
|
|
1024
1142
|
] }),
|
|
1025
|
-
|
|
1026
|
-
|
|
1143
|
+
lightboxOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1144
|
+
lightbox.Lightbox,
|
|
1145
|
+
{
|
|
1146
|
+
items: lightboxItems,
|
|
1147
|
+
initialIndex: lightboxIndex,
|
|
1148
|
+
layout: "horizontal",
|
|
1149
|
+
controls: {
|
|
1150
|
+
navigation: true,
|
|
1151
|
+
thumbnails: true,
|
|
1152
|
+
download: true,
|
|
1153
|
+
share: true,
|
|
1154
|
+
fullscreen: true,
|
|
1155
|
+
captions: true,
|
|
1156
|
+
counter: true
|
|
1157
|
+
},
|
|
1158
|
+
onClose: handleLightboxClose,
|
|
1159
|
+
enableKeyboardShortcuts: true,
|
|
1160
|
+
closeOnEscape: true,
|
|
1161
|
+
closeOnBackdropClick: true
|
|
1162
|
+
}
|
|
1163
|
+
)
|
|
1164
|
+
]
|
|
1027
1165
|
}
|
|
1028
1166
|
);
|
|
1029
1167
|
}
|
|
@@ -44,9 +44,6 @@ interface HeroGridPatternSolutionsProps {
|
|
|
44
44
|
*/
|
|
45
45
|
imagesSlot?: React.ReactNode;
|
|
46
46
|
/**
|
|
47
|
-
* Whether to show the grid pattern background
|
|
48
|
-
*/
|
|
49
|
-
showGridPattern?: boolean; /**
|
|
50
47
|
* Background style for the section
|
|
51
48
|
*/
|
|
52
49
|
background?: SectionBackground;
|
|
@@ -95,6 +92,6 @@ interface HeroGridPatternSolutionsProps {
|
|
|
95
92
|
*/
|
|
96
93
|
optixFlowConfig?: OptixFlowConfig;
|
|
97
94
|
}
|
|
98
|
-
declare function HeroGridPatternSolutions({ badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot,
|
|
95
|
+
declare function HeroGridPatternSolutions({ badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGridPatternSolutionsProps): React.JSX.Element;
|
|
99
96
|
|
|
100
97
|
export { HeroGridPatternSolutions, type HeroGridPatternSolutionsProps };
|
|
@@ -44,9 +44,6 @@ interface HeroGridPatternSolutionsProps {
|
|
|
44
44
|
*/
|
|
45
45
|
imagesSlot?: React.ReactNode;
|
|
46
46
|
/**
|
|
47
|
-
* Whether to show the grid pattern background
|
|
48
|
-
*/
|
|
49
|
-
showGridPattern?: boolean; /**
|
|
50
47
|
* Background style for the section
|
|
51
48
|
*/
|
|
52
49
|
background?: SectionBackground;
|
|
@@ -95,6 +92,6 @@ interface HeroGridPatternSolutionsProps {
|
|
|
95
92
|
*/
|
|
96
93
|
optixFlowConfig?: OptixFlowConfig;
|
|
97
94
|
}
|
|
98
|
-
declare function HeroGridPatternSolutions({ badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot,
|
|
95
|
+
declare function HeroGridPatternSolutions({ badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGridPatternSolutionsProps): React.JSX.Element;
|
|
99
96
|
|
|
100
97
|
export { HeroGridPatternSolutions, type HeroGridPatternSolutionsProps };
|