@opensite/ui 1.6.3 → 1.6.5
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/components.cjs +155 -75
- package/dist/components.js +155 -75
- package/dist/feature-utility-cards-grid.cjs +1 -1
- package/dist/feature-utility-cards-grid.js +1 -1
- package/dist/footer-cta-banner.cjs +155 -75
- package/dist/footer-cta-banner.d.cts +5 -1
- package/dist/footer-cta-banner.d.ts +5 -1
- package/dist/footer-cta-banner.js +155 -75
- package/dist/hero-overlay-cta-grid.cjs +85 -90
- package/dist/hero-overlay-cta-grid.js +85 -90
- package/dist/hero-pattern-badge-logos.cjs +28 -9
- package/dist/hero-pattern-badge-logos.js +28 -9
- package/dist/hero-pattern-logo-tech-stack.cjs +133 -105
- package/dist/hero-pattern-logo-tech-stack.d.cts +1 -4
- package/dist/hero-pattern-logo-tech-stack.d.ts +1 -4
- package/dist/hero-pattern-logo-tech-stack.js +133 -105
- package/dist/index.cjs +155 -75
- package/dist/index.js +155 -75
- package/dist/link-page-newsletter-social.cjs +75 -137
- package/dist/link-page-newsletter-social.d.cts +1 -1
- package/dist/link-page-newsletter-social.d.ts +1 -1
- package/dist/link-page-newsletter-social.js +75 -137
- package/dist/link-tree-block.cjs +31 -32
- package/dist/link-tree-block.d.cts +1 -5
- package/dist/link-tree-block.d.ts +1 -5
- package/dist/link-tree-block.js +31 -32
- package/dist/registry.cjs +465 -317
- package/dist/registry.js +465 -317
- package/package.json +1 -1
|
@@ -32,36 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
32
32
|
function cn(...inputs) {
|
|
33
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
34
34
|
}
|
|
35
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
36
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
37
|
-
if (isDark) {
|
|
38
|
-
switch (variant) {
|
|
39
|
-
case "default":
|
|
40
|
-
return "text-foreground";
|
|
41
|
-
case "muted":
|
|
42
|
-
return "text-foreground/80";
|
|
43
|
-
case "subtle":
|
|
44
|
-
return "text-foreground/60";
|
|
45
|
-
case "accent":
|
|
46
|
-
return "text-accent-foreground";
|
|
47
|
-
}
|
|
48
|
-
} else {
|
|
49
|
-
switch (variant) {
|
|
50
|
-
case "default":
|
|
51
|
-
return "text-foreground";
|
|
52
|
-
case "muted":
|
|
53
|
-
return "text-muted-foreground";
|
|
54
|
-
case "subtle":
|
|
55
|
-
return "text-muted-foreground/70";
|
|
56
|
-
case "accent":
|
|
57
|
-
return "text-primary";
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function getAccentColor(parentBg, options) {
|
|
62
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
63
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
64
|
-
}
|
|
65
35
|
function normalizePhoneNumber(input) {
|
|
66
36
|
const trimmed = input.trim();
|
|
67
37
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -859,20 +829,19 @@ function HeroPatternLogoTechStack({
|
|
|
859
829
|
logo,
|
|
860
830
|
logoSlot,
|
|
861
831
|
heading,
|
|
862
|
-
highlightedWord
|
|
832
|
+
highlightedWord,
|
|
863
833
|
description,
|
|
864
834
|
actions,
|
|
865
835
|
actionsSlot,
|
|
866
|
-
techStackLabel
|
|
836
|
+
techStackLabel,
|
|
867
837
|
techLogos,
|
|
868
838
|
techLogosSlot,
|
|
869
|
-
backgroundImage = "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
870
839
|
background,
|
|
871
|
-
|
|
840
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
841
|
+
spacing = "py-12 md:py-32",
|
|
872
842
|
pattern,
|
|
873
843
|
patternOpacity,
|
|
874
844
|
className,
|
|
875
|
-
containerClassName,
|
|
876
845
|
contentClassName,
|
|
877
846
|
headingClassName,
|
|
878
847
|
descriptionClassName,
|
|
@@ -884,12 +853,12 @@ function HeroPatternLogoTechStack({
|
|
|
884
853
|
if (logoSlot) return logoSlot;
|
|
885
854
|
if (!logo) return null;
|
|
886
855
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
887
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
856
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
888
857
|
img.Img,
|
|
889
858
|
{
|
|
890
859
|
src: logoSrc,
|
|
891
860
|
alt: logo.alt,
|
|
892
|
-
className: cn("h-16", logo.imgClassName),
|
|
861
|
+
className: cn("h-16 w-auto object-contain", logo.imgClassName),
|
|
893
862
|
optixFlowConfig
|
|
894
863
|
}
|
|
895
864
|
) });
|
|
@@ -897,56 +866,89 @@ function HeroPatternLogoTechStack({
|
|
|
897
866
|
const renderActions = React.useMemo(() => {
|
|
898
867
|
if (actionsSlot) return actionsSlot;
|
|
899
868
|
if (!actions || actions.length === 0) return null;
|
|
900
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
icon,
|
|
869
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
870
|
+
"div",
|
|
871
|
+
{
|
|
872
|
+
className: cn(
|
|
873
|
+
"mt-6 flex justify-center flex-col md:flex-row gap-3",
|
|
874
|
+
actionsClassName
|
|
875
|
+
),
|
|
876
|
+
children: actions.map((action, index) => {
|
|
877
|
+
const {
|
|
910
878
|
label,
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
879
|
+
icon,
|
|
880
|
+
iconAfter,
|
|
881
|
+
children,
|
|
882
|
+
className: actionClassName,
|
|
883
|
+
...pressableProps
|
|
884
|
+
} = action;
|
|
885
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
886
|
+
Pressable,
|
|
887
|
+
{
|
|
888
|
+
asButton: true,
|
|
889
|
+
className: actionClassName,
|
|
890
|
+
...pressableProps,
|
|
891
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
892
|
+
icon,
|
|
893
|
+
label,
|
|
894
|
+
iconAfter
|
|
895
|
+
] })
|
|
896
|
+
},
|
|
897
|
+
index
|
|
898
|
+
);
|
|
899
|
+
})
|
|
900
|
+
}
|
|
901
|
+
);
|
|
917
902
|
}, [actionsSlot, actions, actionsClassName]);
|
|
918
903
|
const renderTechLogos = React.useMemo(() => {
|
|
919
904
|
if (techLogosSlot) return techLogosSlot;
|
|
920
905
|
if (!techLogos || techLogos.length === 0) return null;
|
|
921
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
935
|
-
img.Img,
|
|
906
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
907
|
+
"div",
|
|
908
|
+
{
|
|
909
|
+
className: cn(
|
|
910
|
+
"mt-8 md:mt-20 flex flex-col items-center gap-5",
|
|
911
|
+
techLogosClassName
|
|
912
|
+
),
|
|
913
|
+
children: [
|
|
914
|
+
techStackLabel && (typeof techStackLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("font-medium lg:text-left"), children: techStackLabel }) : techStackLabel),
|
|
915
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-4", children: techLogos.map((techLogo, index) => {
|
|
916
|
+
const techLogoSrc = typeof techLogo.src === "string" ? techLogo.src : techLogo.src.light;
|
|
917
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
918
|
+
Pressable,
|
|
936
919
|
{
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
920
|
+
href: techLogo.href,
|
|
921
|
+
className: cn(
|
|
922
|
+
"group flex w-auto h-10 items-center justify-center max-w-12 max-h-10 min-h-10 p-1",
|
|
923
|
+
techLogo.className
|
|
924
|
+
),
|
|
925
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
926
|
+
img.Img,
|
|
927
|
+
{
|
|
928
|
+
src: techLogoSrc,
|
|
929
|
+
alt: techLogo.alt,
|
|
930
|
+
className: cn(
|
|
931
|
+
"h-full w-auto object-contain",
|
|
932
|
+
techLogo.imgClassName
|
|
933
|
+
),
|
|
934
|
+
optixFlowConfig
|
|
935
|
+
}
|
|
936
|
+
)
|
|
937
|
+
},
|
|
938
|
+
index
|
|
939
|
+
);
|
|
940
|
+
}) })
|
|
941
|
+
]
|
|
942
|
+
}
|
|
943
|
+
);
|
|
944
|
+
}, [
|
|
945
|
+
techLogosSlot,
|
|
946
|
+
techLogos,
|
|
947
|
+
techStackLabel,
|
|
948
|
+
techLogosClassName,
|
|
949
|
+
optixFlowConfig
|
|
950
|
+
]);
|
|
951
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
950
952
|
Section,
|
|
951
953
|
{
|
|
952
954
|
background,
|
|
@@ -954,30 +956,56 @@ function HeroPatternLogoTechStack({
|
|
|
954
956
|
pattern,
|
|
955
957
|
patternOpacity,
|
|
956
958
|
className: cn(className),
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
959
|
+
containerClassName,
|
|
960
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex max-w-5xl flex-col items-center", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
961
|
+
"div",
|
|
962
|
+
{
|
|
963
|
+
className: cn(
|
|
964
|
+
"flex flex-col items-center gap-6 text-center",
|
|
965
|
+
contentClassName
|
|
966
|
+
),
|
|
967
|
+
children: [
|
|
968
|
+
renderLogo,
|
|
969
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
970
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
971
|
+
"h1",
|
|
972
|
+
{
|
|
973
|
+
className: cn(
|
|
974
|
+
"mb-6 text-2xl font-bold tracking-tight text-balance lg:text-5xl",
|
|
975
|
+
headingClassName
|
|
976
|
+
),
|
|
977
|
+
children: [
|
|
978
|
+
heading,
|
|
979
|
+
" ",
|
|
980
|
+
highlightedWord && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-75", children: highlightedWord })
|
|
981
|
+
]
|
|
982
|
+
}
|
|
983
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
984
|
+
"h1",
|
|
985
|
+
{
|
|
986
|
+
className: cn(
|
|
987
|
+
"mb-6 text-2xl font-bold tracking-tight text-balance lg:text-5xl",
|
|
988
|
+
headingClassName
|
|
989
|
+
),
|
|
990
|
+
children: heading
|
|
991
|
+
}
|
|
992
|
+
)),
|
|
993
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
994
|
+
"p",
|
|
995
|
+
{
|
|
996
|
+
className: cn(
|
|
997
|
+
"mx-auto max-w-3xl lg:text-xl text-balance",
|
|
998
|
+
descriptionClassName
|
|
999
|
+
),
|
|
1000
|
+
children: description
|
|
1001
|
+
}
|
|
1002
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
1003
|
+
] }),
|
|
1004
|
+
renderActions,
|
|
1005
|
+
renderTechLogos
|
|
1006
|
+
]
|
|
1007
|
+
}
|
|
1008
|
+
) }) })
|
|
981
1009
|
}
|
|
982
1010
|
);
|
|
983
1011
|
}
|
|
@@ -48,9 +48,6 @@ interface HeroPatternLogoTechStackProps {
|
|
|
48
48
|
*/
|
|
49
49
|
techLogosSlot?: React.ReactNode;
|
|
50
50
|
/**
|
|
51
|
-
* Background pattern image URL
|
|
52
|
-
*/
|
|
53
|
-
backgroundImage?: string; /**
|
|
54
51
|
* Background style for the section
|
|
55
52
|
*/
|
|
56
53
|
background?: SectionBackground;
|
|
@@ -99,6 +96,6 @@ interface HeroPatternLogoTechStackProps {
|
|
|
99
96
|
*/
|
|
100
97
|
optixFlowConfig?: OptixFlowConfig;
|
|
101
98
|
}
|
|
102
|
-
declare function HeroPatternLogoTechStack({ logo, logoSlot, heading, highlightedWord, description, actions, actionsSlot, techStackLabel, techLogos, techLogosSlot,
|
|
99
|
+
declare function HeroPatternLogoTechStack({ logo, logoSlot, heading, highlightedWord, description, actions, actionsSlot, techStackLabel, techLogos, techLogosSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, techLogosClassName, optixFlowConfig, }: HeroPatternLogoTechStackProps): React.JSX.Element;
|
|
103
100
|
|
|
104
101
|
export { HeroPatternLogoTechStack, type HeroPatternLogoTechStackProps };
|
|
@@ -48,9 +48,6 @@ interface HeroPatternLogoTechStackProps {
|
|
|
48
48
|
*/
|
|
49
49
|
techLogosSlot?: React.ReactNode;
|
|
50
50
|
/**
|
|
51
|
-
* Background pattern image URL
|
|
52
|
-
*/
|
|
53
|
-
backgroundImage?: string; /**
|
|
54
51
|
* Background style for the section
|
|
55
52
|
*/
|
|
56
53
|
background?: SectionBackground;
|
|
@@ -99,6 +96,6 @@ interface HeroPatternLogoTechStackProps {
|
|
|
99
96
|
*/
|
|
100
97
|
optixFlowConfig?: OptixFlowConfig;
|
|
101
98
|
}
|
|
102
|
-
declare function HeroPatternLogoTechStack({ logo, logoSlot, heading, highlightedWord, description, actions, actionsSlot, techStackLabel, techLogos, techLogosSlot,
|
|
99
|
+
declare function HeroPatternLogoTechStack({ logo, logoSlot, heading, highlightedWord, description, actions, actionsSlot, techStackLabel, techLogos, techLogosSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, techLogosClassName, optixFlowConfig, }: HeroPatternLogoTechStackProps): React.JSX.Element;
|
|
103
100
|
|
|
104
101
|
export { HeroPatternLogoTechStack, type HeroPatternLogoTechStackProps };
|
|
@@ -11,36 +11,6 @@ import { Img } from '@page-speed/img';
|
|
|
11
11
|
function cn(...inputs) {
|
|
12
12
|
return twMerge(clsx(inputs));
|
|
13
13
|
}
|
|
14
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
15
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
16
|
-
if (isDark) {
|
|
17
|
-
switch (variant) {
|
|
18
|
-
case "default":
|
|
19
|
-
return "text-foreground";
|
|
20
|
-
case "muted":
|
|
21
|
-
return "text-foreground/80";
|
|
22
|
-
case "subtle":
|
|
23
|
-
return "text-foreground/60";
|
|
24
|
-
case "accent":
|
|
25
|
-
return "text-accent-foreground";
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
switch (variant) {
|
|
29
|
-
case "default":
|
|
30
|
-
return "text-foreground";
|
|
31
|
-
case "muted":
|
|
32
|
-
return "text-muted-foreground";
|
|
33
|
-
case "subtle":
|
|
34
|
-
return "text-muted-foreground/70";
|
|
35
|
-
case "accent":
|
|
36
|
-
return "text-primary";
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function getAccentColor(parentBg, options) {
|
|
41
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
42
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
43
|
-
}
|
|
44
14
|
function normalizePhoneNumber(input) {
|
|
45
15
|
const trimmed = input.trim();
|
|
46
16
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -838,20 +808,19 @@ function HeroPatternLogoTechStack({
|
|
|
838
808
|
logo,
|
|
839
809
|
logoSlot,
|
|
840
810
|
heading,
|
|
841
|
-
highlightedWord
|
|
811
|
+
highlightedWord,
|
|
842
812
|
description,
|
|
843
813
|
actions,
|
|
844
814
|
actionsSlot,
|
|
845
|
-
techStackLabel
|
|
815
|
+
techStackLabel,
|
|
846
816
|
techLogos,
|
|
847
817
|
techLogosSlot,
|
|
848
|
-
backgroundImage = "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
849
818
|
background,
|
|
850
|
-
|
|
819
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
820
|
+
spacing = "py-12 md:py-32",
|
|
851
821
|
pattern,
|
|
852
822
|
patternOpacity,
|
|
853
823
|
className,
|
|
854
|
-
containerClassName,
|
|
855
824
|
contentClassName,
|
|
856
825
|
headingClassName,
|
|
857
826
|
descriptionClassName,
|
|
@@ -863,12 +832,12 @@ function HeroPatternLogoTechStack({
|
|
|
863
832
|
if (logoSlot) return logoSlot;
|
|
864
833
|
if (!logo) return null;
|
|
865
834
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
866
|
-
return /* @__PURE__ */ jsx("div", { className: "
|
|
835
|
+
return /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
|
|
867
836
|
Img,
|
|
868
837
|
{
|
|
869
838
|
src: logoSrc,
|
|
870
839
|
alt: logo.alt,
|
|
871
|
-
className: cn("h-16", logo.imgClassName),
|
|
840
|
+
className: cn("h-16 w-auto object-contain", logo.imgClassName),
|
|
872
841
|
optixFlowConfig
|
|
873
842
|
}
|
|
874
843
|
) });
|
|
@@ -876,56 +845,89 @@ function HeroPatternLogoTechStack({
|
|
|
876
845
|
const renderActions = useMemo(() => {
|
|
877
846
|
if (actionsSlot) return actionsSlot;
|
|
878
847
|
if (!actions || actions.length === 0) return null;
|
|
879
|
-
return /* @__PURE__ */ jsx(
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
icon,
|
|
848
|
+
return /* @__PURE__ */ jsx(
|
|
849
|
+
"div",
|
|
850
|
+
{
|
|
851
|
+
className: cn(
|
|
852
|
+
"mt-6 flex justify-center flex-col md:flex-row gap-3",
|
|
853
|
+
actionsClassName
|
|
854
|
+
),
|
|
855
|
+
children: actions.map((action, index) => {
|
|
856
|
+
const {
|
|
889
857
|
label,
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
858
|
+
icon,
|
|
859
|
+
iconAfter,
|
|
860
|
+
children,
|
|
861
|
+
className: actionClassName,
|
|
862
|
+
...pressableProps
|
|
863
|
+
} = action;
|
|
864
|
+
return /* @__PURE__ */ jsx(
|
|
865
|
+
Pressable,
|
|
866
|
+
{
|
|
867
|
+
asButton: true,
|
|
868
|
+
className: actionClassName,
|
|
869
|
+
...pressableProps,
|
|
870
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
871
|
+
icon,
|
|
872
|
+
label,
|
|
873
|
+
iconAfter
|
|
874
|
+
] })
|
|
875
|
+
},
|
|
876
|
+
index
|
|
877
|
+
);
|
|
878
|
+
})
|
|
879
|
+
}
|
|
880
|
+
);
|
|
896
881
|
}, [actionsSlot, actions, actionsClassName]);
|
|
897
882
|
const renderTechLogos = useMemo(() => {
|
|
898
883
|
if (techLogosSlot) return techLogosSlot;
|
|
899
884
|
if (!techLogos || techLogos.length === 0) return null;
|
|
900
|
-
return /* @__PURE__ */ jsxs(
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
children: /* @__PURE__ */ jsx(
|
|
914
|
-
Img,
|
|
885
|
+
return /* @__PURE__ */ jsxs(
|
|
886
|
+
"div",
|
|
887
|
+
{
|
|
888
|
+
className: cn(
|
|
889
|
+
"mt-8 md:mt-20 flex flex-col items-center gap-5",
|
|
890
|
+
techLogosClassName
|
|
891
|
+
),
|
|
892
|
+
children: [
|
|
893
|
+
techStackLabel && (typeof techStackLabel === "string" ? /* @__PURE__ */ jsx("p", { className: cn("font-medium lg:text-left"), children: techStackLabel }) : techStackLabel),
|
|
894
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center justify-center gap-4", children: techLogos.map((techLogo, index) => {
|
|
895
|
+
const techLogoSrc = typeof techLogo.src === "string" ? techLogo.src : techLogo.src.light;
|
|
896
|
+
return /* @__PURE__ */ jsx(
|
|
897
|
+
Pressable,
|
|
915
898
|
{
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
899
|
+
href: techLogo.href,
|
|
900
|
+
className: cn(
|
|
901
|
+
"group flex w-auto h-10 items-center justify-center max-w-12 max-h-10 min-h-10 p-1",
|
|
902
|
+
techLogo.className
|
|
903
|
+
),
|
|
904
|
+
children: /* @__PURE__ */ jsx(
|
|
905
|
+
Img,
|
|
906
|
+
{
|
|
907
|
+
src: techLogoSrc,
|
|
908
|
+
alt: techLogo.alt,
|
|
909
|
+
className: cn(
|
|
910
|
+
"h-full w-auto object-contain",
|
|
911
|
+
techLogo.imgClassName
|
|
912
|
+
),
|
|
913
|
+
optixFlowConfig
|
|
914
|
+
}
|
|
915
|
+
)
|
|
916
|
+
},
|
|
917
|
+
index
|
|
918
|
+
);
|
|
919
|
+
}) })
|
|
920
|
+
]
|
|
921
|
+
}
|
|
922
|
+
);
|
|
923
|
+
}, [
|
|
924
|
+
techLogosSlot,
|
|
925
|
+
techLogos,
|
|
926
|
+
techStackLabel,
|
|
927
|
+
techLogosClassName,
|
|
928
|
+
optixFlowConfig
|
|
929
|
+
]);
|
|
930
|
+
return /* @__PURE__ */ jsx(
|
|
929
931
|
Section,
|
|
930
932
|
{
|
|
931
933
|
background,
|
|
@@ -933,30 +935,56 @@ function HeroPatternLogoTechStack({
|
|
|
933
935
|
pattern,
|
|
934
936
|
patternOpacity,
|
|
935
937
|
className: cn(className),
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
938
|
+
containerClassName,
|
|
939
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex max-w-5xl flex-col items-center", children: /* @__PURE__ */ jsxs(
|
|
940
|
+
"div",
|
|
941
|
+
{
|
|
942
|
+
className: cn(
|
|
943
|
+
"flex flex-col items-center gap-6 text-center",
|
|
944
|
+
contentClassName
|
|
945
|
+
),
|
|
946
|
+
children: [
|
|
947
|
+
renderLogo,
|
|
948
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
949
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxs(
|
|
950
|
+
"h1",
|
|
951
|
+
{
|
|
952
|
+
className: cn(
|
|
953
|
+
"mb-6 text-2xl font-bold tracking-tight text-balance lg:text-5xl",
|
|
954
|
+
headingClassName
|
|
955
|
+
),
|
|
956
|
+
children: [
|
|
957
|
+
heading,
|
|
958
|
+
" ",
|
|
959
|
+
highlightedWord && /* @__PURE__ */ jsx("span", { className: "opacity-75", children: highlightedWord })
|
|
960
|
+
]
|
|
961
|
+
}
|
|
962
|
+
) : /* @__PURE__ */ jsx(
|
|
963
|
+
"h1",
|
|
964
|
+
{
|
|
965
|
+
className: cn(
|
|
966
|
+
"mb-6 text-2xl font-bold tracking-tight text-balance lg:text-5xl",
|
|
967
|
+
headingClassName
|
|
968
|
+
),
|
|
969
|
+
children: heading
|
|
970
|
+
}
|
|
971
|
+
)),
|
|
972
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
973
|
+
"p",
|
|
974
|
+
{
|
|
975
|
+
className: cn(
|
|
976
|
+
"mx-auto max-w-3xl lg:text-xl text-balance",
|
|
977
|
+
descriptionClassName
|
|
978
|
+
),
|
|
979
|
+
children: description
|
|
980
|
+
}
|
|
981
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
982
|
+
] }),
|
|
983
|
+
renderActions,
|
|
984
|
+
renderTechLogos
|
|
985
|
+
]
|
|
986
|
+
}
|
|
987
|
+
) }) })
|
|
960
988
|
}
|
|
961
989
|
);
|
|
962
990
|
}
|