@opensite/ui 1.4.4 → 1.4.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 +160 -54
- package/dist/components.js +160 -54
- package/dist/feature-bento-utilities.cjs +101 -87
- package/dist/feature-bento-utilities.js +101 -87
- package/dist/feature-checklist-three-column.cjs +75 -43
- package/dist/feature-checklist-three-column.js +75 -43
- package/dist/feature-image-overlay-badge.cjs +57 -10
- package/dist/feature-image-overlay-badge.js +57 -10
- package/dist/feature-integration-cards.cjs +105 -19
- package/dist/feature-integration-cards.js +105 -19
- package/dist/feature-utility-cards-grid.cjs +79 -9
- package/dist/feature-utility-cards-grid.js +79 -9
- package/dist/footer-animated-social.cjs +66 -10
- package/dist/footer-animated-social.d.cts +5 -1
- package/dist/footer-animated-social.d.ts +5 -1
- package/dist/footer-animated-social.js +66 -10
- package/dist/footer-contact-card.cjs +94 -44
- package/dist/footer-contact-card.d.cts +5 -1
- package/dist/footer-contact-card.d.ts +5 -1
- package/dist/footer-contact-card.js +94 -44
- package/dist/index.cjs +160 -54
- package/dist/index.js +160 -54
- package/dist/registry.cjs +486 -196
- package/dist/registry.js +486 -196
- package/package.json +1 -1
|
@@ -37,6 +37,32 @@ function getTextColor(parentBg, variant = "default", options) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
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
|
+
function getBorderColor(parentBg, variant = "default", options) {
|
|
45
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
46
|
+
if (isDark) {
|
|
47
|
+
switch (variant) {
|
|
48
|
+
case "default":
|
|
49
|
+
return "border-foreground/20";
|
|
50
|
+
case "muted":
|
|
51
|
+
return "border-foreground/10";
|
|
52
|
+
case "accent":
|
|
53
|
+
return "border-accent-foreground";
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
switch (variant) {
|
|
57
|
+
case "default":
|
|
58
|
+
return "border-border";
|
|
59
|
+
case "muted":
|
|
60
|
+
return "border-muted";
|
|
61
|
+
case "accent":
|
|
62
|
+
return "border-primary";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
40
66
|
var svgCache = /* @__PURE__ */ new Map();
|
|
41
67
|
function DynamicIcon({
|
|
42
68
|
name,
|
|
@@ -971,11 +997,22 @@ function FeatureIntegrationCards({
|
|
|
971
997
|
const renderLinkLabel = useCallback((integration) => {
|
|
972
998
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
973
999
|
if (!integration.linkLabel) return null;
|
|
974
|
-
return /* @__PURE__ */ jsxs(
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
1000
|
+
return /* @__PURE__ */ jsxs(
|
|
1001
|
+
"span",
|
|
1002
|
+
{
|
|
1003
|
+
className: cn(
|
|
1004
|
+
"flex items-center gap-1.5 rounded-full border px-3 py-2 text-sm font-medium transition-colors",
|
|
1005
|
+
getBorderColor(background),
|
|
1006
|
+
getAccentColor(background),
|
|
1007
|
+
integration.linkLabelClassName
|
|
1008
|
+
),
|
|
1009
|
+
children: [
|
|
1010
|
+
integration.linkLabel,
|
|
1011
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 14 })
|
|
1012
|
+
]
|
|
1013
|
+
}
|
|
1014
|
+
);
|
|
1015
|
+
}, [background]);
|
|
979
1016
|
const integrationsContent = useMemo(() => {
|
|
980
1017
|
if (integrationsSlot) return integrationsSlot;
|
|
981
1018
|
if (!integrations || integrations.length === 0) return null;
|
|
@@ -984,35 +1021,84 @@ function FeatureIntegrationCards({
|
|
|
984
1021
|
const linkLabelContent = renderLinkLabel(integration);
|
|
985
1022
|
const cardContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
986
1023
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
987
|
-
iconContent && /* @__PURE__ */ jsx(
|
|
1024
|
+
iconContent && /* @__PURE__ */ jsx(
|
|
1025
|
+
"span",
|
|
1026
|
+
{
|
|
1027
|
+
className: cn(
|
|
1028
|
+
"grid size-12 shrink-0 place-content-center rounded-lg border bg-background/50",
|
|
1029
|
+
getBorderColor(background)
|
|
1030
|
+
),
|
|
1031
|
+
children: iconContent
|
|
1032
|
+
}
|
|
1033
|
+
),
|
|
988
1034
|
linkLabelContent
|
|
989
1035
|
] }),
|
|
990
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
991
|
-
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsx(
|
|
992
|
-
|
|
1036
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
1037
|
+
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsx(
|
|
1038
|
+
"h3",
|
|
1039
|
+
{
|
|
1040
|
+
className: cn(
|
|
1041
|
+
"font-semibold md:text-lg",
|
|
1042
|
+
getTextColor(background),
|
|
1043
|
+
integration.titleClassName
|
|
1044
|
+
),
|
|
1045
|
+
children: integration.title
|
|
1046
|
+
}
|
|
1047
|
+
) : /* @__PURE__ */ jsx(
|
|
1048
|
+
"div",
|
|
1049
|
+
{
|
|
1050
|
+
className: cn(
|
|
1051
|
+
"font-semibold md:text-lg",
|
|
1052
|
+
getTextColor(background),
|
|
1053
|
+
integration.titleClassName
|
|
1054
|
+
),
|
|
1055
|
+
children: integration.title
|
|
1056
|
+
}
|
|
1057
|
+
)),
|
|
1058
|
+
integration.description && (typeof integration.description === "string" ? /* @__PURE__ */ jsx(
|
|
1059
|
+
"p",
|
|
1060
|
+
{
|
|
1061
|
+
className: cn(
|
|
1062
|
+
"text-sm leading-relaxed md:text-base",
|
|
1063
|
+
getTextColor(background, "muted"),
|
|
1064
|
+
integration.descriptionClassName
|
|
1065
|
+
),
|
|
1066
|
+
children: integration.description
|
|
1067
|
+
}
|
|
1068
|
+
) : /* @__PURE__ */ jsx(
|
|
1069
|
+
"div",
|
|
1070
|
+
{
|
|
1071
|
+
className: cn(
|
|
1072
|
+
"text-sm leading-relaxed md:text-base",
|
|
1073
|
+
getTextColor(background, "muted"),
|
|
1074
|
+
integration.descriptionClassName
|
|
1075
|
+
),
|
|
1076
|
+
children: integration.description
|
|
1077
|
+
}
|
|
1078
|
+
))
|
|
993
1079
|
] })
|
|
994
1080
|
] });
|
|
1081
|
+
const cardClasses = cn(
|
|
1082
|
+
"flex flex-col gap-5 rounded-xl border p-6 transition-all duration-300",
|
|
1083
|
+
getBorderColor(background),
|
|
1084
|
+
"hover:shadow-lg",
|
|
1085
|
+
cardClassName,
|
|
1086
|
+
integration.className
|
|
1087
|
+
);
|
|
995
1088
|
if (integration.link) {
|
|
996
1089
|
return /* @__PURE__ */ jsx(
|
|
997
1090
|
Pressable,
|
|
998
1091
|
{
|
|
999
1092
|
href: integration.link,
|
|
1000
|
-
className:
|
|
1093
|
+
className: cardClasses,
|
|
1001
1094
|
children: cardContent
|
|
1002
1095
|
},
|
|
1003
1096
|
index
|
|
1004
1097
|
);
|
|
1005
1098
|
}
|
|
1006
|
-
return /* @__PURE__ */ jsx(
|
|
1007
|
-
"div",
|
|
1008
|
-
{
|
|
1009
|
-
className: cn("flex flex-col gap-4 rounded-xl border p-6 transition-colors duration-300", cardClassName, integration.className),
|
|
1010
|
-
children: cardContent
|
|
1011
|
-
},
|
|
1012
|
-
index
|
|
1013
|
-
);
|
|
1099
|
+
return /* @__PURE__ */ jsx("div", { className: cardClasses, children: cardContent }, index);
|
|
1014
1100
|
});
|
|
1015
|
-
}, [integrationsSlot, integrations, cardClassName, renderIntegrationIcon, renderLinkLabel]);
|
|
1101
|
+
}, [integrationsSlot, integrations, cardClassName, renderIntegrationIcon, renderLinkLabel, background]);
|
|
1016
1102
|
return /* @__PURE__ */ jsxs(
|
|
1017
1103
|
Section,
|
|
1018
1104
|
{
|
|
@@ -34,6 +34,32 @@ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrim
|
|
|
34
34
|
function cn(...inputs) {
|
|
35
35
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
36
36
|
}
|
|
37
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
38
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
39
|
+
if (isDark) {
|
|
40
|
+
switch (variant) {
|
|
41
|
+
case "default":
|
|
42
|
+
return "text-foreground";
|
|
43
|
+
case "muted":
|
|
44
|
+
return "text-foreground/80";
|
|
45
|
+
case "subtle":
|
|
46
|
+
return "text-foreground/60";
|
|
47
|
+
case "accent":
|
|
48
|
+
return "text-accent-foreground";
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
switch (variant) {
|
|
52
|
+
case "default":
|
|
53
|
+
return "text-foreground";
|
|
54
|
+
case "muted":
|
|
55
|
+
return "text-muted-foreground";
|
|
56
|
+
case "subtle":
|
|
57
|
+
return "text-muted-foreground/70";
|
|
58
|
+
case "accent":
|
|
59
|
+
return "text-primary";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
37
63
|
function getAccentColor(parentBg, options) {
|
|
38
64
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
39
65
|
return isDark ? "text-accent-foreground" : "text-primary";
|
|
@@ -1017,8 +1043,7 @@ function FeatureUtilityCardsGrid({
|
|
|
1017
1043
|
href: learnMoreAction.href,
|
|
1018
1044
|
onClick: learnMoreAction.onClick,
|
|
1019
1045
|
className: cn(
|
|
1020
|
-
"hover:
|
|
1021
|
-
`hover:${getAccentColor(background)}`,
|
|
1046
|
+
"font-medium transition-opacity hover:opacity-80",
|
|
1022
1047
|
learnMoreAction.className
|
|
1023
1048
|
),
|
|
1024
1049
|
"aria-label": learnMoreAction["aria-label"],
|
|
@@ -1031,7 +1056,10 @@ function FeatureUtilityCardsGrid({
|
|
|
1031
1056
|
{
|
|
1032
1057
|
href: learnMoreAction.href,
|
|
1033
1058
|
onClick: learnMoreAction.onClick,
|
|
1034
|
-
className: cn(
|
|
1059
|
+
className: cn(
|
|
1060
|
+
"flex items-center gap-1 font-medium transition-opacity hover:opacity-80",
|
|
1061
|
+
learnMoreAction.className
|
|
1062
|
+
),
|
|
1035
1063
|
"aria-label": learnMoreAction["aria-label"],
|
|
1036
1064
|
children: [
|
|
1037
1065
|
learnMoreAction.icon,
|
|
@@ -1069,18 +1097,60 @@ function FeatureUtilityCardsGrid({
|
|
|
1069
1097
|
return utilities.map((utility, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1070
1098
|
Card,
|
|
1071
1099
|
{
|
|
1072
|
-
className: cn(
|
|
1100
|
+
className: cn(
|
|
1101
|
+
"overflow-hidden pt-0 transition-shadow duration-300 hover:shadow-lg",
|
|
1102
|
+
cardClassName,
|
|
1103
|
+
utility.className
|
|
1104
|
+
),
|
|
1073
1105
|
children: [
|
|
1074
|
-
renderUtilityImage(utility),
|
|
1075
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5", children: [
|
|
1076
|
-
utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1077
|
-
|
|
1106
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden", children: renderUtilityImage(utility) }),
|
|
1107
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 md:p-6", children: [
|
|
1108
|
+
utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1109
|
+
"h3",
|
|
1110
|
+
{
|
|
1111
|
+
className: cn(
|
|
1112
|
+
"mb-2 text-lg font-semibold",
|
|
1113
|
+
utility.titleClassName
|
|
1114
|
+
),
|
|
1115
|
+
children: utility.title
|
|
1116
|
+
}
|
|
1117
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1118
|
+
"div",
|
|
1119
|
+
{
|
|
1120
|
+
className: cn(
|
|
1121
|
+
"mb-2 text-lg font-semibold",
|
|
1122
|
+
utility.titleClassName
|
|
1123
|
+
),
|
|
1124
|
+
children: utility.title
|
|
1125
|
+
}
|
|
1126
|
+
)),
|
|
1127
|
+
utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1128
|
+
"p",
|
|
1129
|
+
{
|
|
1130
|
+
className: cn(
|
|
1131
|
+
"text-sm leading-relaxed",
|
|
1132
|
+
getTextColor(background, "muted"),
|
|
1133
|
+
utility.descriptionClassName
|
|
1134
|
+
),
|
|
1135
|
+
children: utility.description
|
|
1136
|
+
}
|
|
1137
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1138
|
+
"div",
|
|
1139
|
+
{
|
|
1140
|
+
className: cn(
|
|
1141
|
+
"text-sm leading-relaxed",
|
|
1142
|
+
getTextColor(background, "muted"),
|
|
1143
|
+
utility.descriptionClassName
|
|
1144
|
+
),
|
|
1145
|
+
children: utility.description
|
|
1146
|
+
}
|
|
1147
|
+
))
|
|
1078
1148
|
] })
|
|
1079
1149
|
]
|
|
1080
1150
|
},
|
|
1081
1151
|
index
|
|
1082
1152
|
));
|
|
1083
|
-
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
|
|
1153
|
+
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage, background]);
|
|
1084
1154
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1085
1155
|
Section,
|
|
1086
1156
|
{
|
|
@@ -12,6 +12,32 @@ import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
|
12
12
|
function cn(...inputs) {
|
|
13
13
|
return twMerge(clsx(inputs));
|
|
14
14
|
}
|
|
15
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
16
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
17
|
+
if (isDark) {
|
|
18
|
+
switch (variant) {
|
|
19
|
+
case "default":
|
|
20
|
+
return "text-foreground";
|
|
21
|
+
case "muted":
|
|
22
|
+
return "text-foreground/80";
|
|
23
|
+
case "subtle":
|
|
24
|
+
return "text-foreground/60";
|
|
25
|
+
case "accent":
|
|
26
|
+
return "text-accent-foreground";
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
switch (variant) {
|
|
30
|
+
case "default":
|
|
31
|
+
return "text-foreground";
|
|
32
|
+
case "muted":
|
|
33
|
+
return "text-muted-foreground";
|
|
34
|
+
case "subtle":
|
|
35
|
+
return "text-muted-foreground/70";
|
|
36
|
+
case "accent":
|
|
37
|
+
return "text-primary";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
15
41
|
function getAccentColor(parentBg, options) {
|
|
16
42
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
17
43
|
return isDark ? "text-accent-foreground" : "text-primary";
|
|
@@ -995,8 +1021,7 @@ function FeatureUtilityCardsGrid({
|
|
|
995
1021
|
href: learnMoreAction.href,
|
|
996
1022
|
onClick: learnMoreAction.onClick,
|
|
997
1023
|
className: cn(
|
|
998
|
-
"hover:
|
|
999
|
-
`hover:${getAccentColor(background)}`,
|
|
1024
|
+
"font-medium transition-opacity hover:opacity-80",
|
|
1000
1025
|
learnMoreAction.className
|
|
1001
1026
|
),
|
|
1002
1027
|
"aria-label": learnMoreAction["aria-label"],
|
|
@@ -1009,7 +1034,10 @@ function FeatureUtilityCardsGrid({
|
|
|
1009
1034
|
{
|
|
1010
1035
|
href: learnMoreAction.href,
|
|
1011
1036
|
onClick: learnMoreAction.onClick,
|
|
1012
|
-
className: cn(
|
|
1037
|
+
className: cn(
|
|
1038
|
+
"flex items-center gap-1 font-medium transition-opacity hover:opacity-80",
|
|
1039
|
+
learnMoreAction.className
|
|
1040
|
+
),
|
|
1013
1041
|
"aria-label": learnMoreAction["aria-label"],
|
|
1014
1042
|
children: [
|
|
1015
1043
|
learnMoreAction.icon,
|
|
@@ -1047,18 +1075,60 @@ function FeatureUtilityCardsGrid({
|
|
|
1047
1075
|
return utilities.map((utility, index) => /* @__PURE__ */ jsxs(
|
|
1048
1076
|
Card,
|
|
1049
1077
|
{
|
|
1050
|
-
className: cn(
|
|
1078
|
+
className: cn(
|
|
1079
|
+
"overflow-hidden pt-0 transition-shadow duration-300 hover:shadow-lg",
|
|
1080
|
+
cardClassName,
|
|
1081
|
+
utility.className
|
|
1082
|
+
),
|
|
1051
1083
|
children: [
|
|
1052
|
-
renderUtilityImage(utility),
|
|
1053
|
-
/* @__PURE__ */ jsxs("div", { className: "p-5", children: [
|
|
1054
|
-
utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsx(
|
|
1055
|
-
|
|
1084
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: renderUtilityImage(utility) }),
|
|
1085
|
+
/* @__PURE__ */ jsxs("div", { className: "p-5 md:p-6", children: [
|
|
1086
|
+
utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsx(
|
|
1087
|
+
"h3",
|
|
1088
|
+
{
|
|
1089
|
+
className: cn(
|
|
1090
|
+
"mb-2 text-lg font-semibold",
|
|
1091
|
+
utility.titleClassName
|
|
1092
|
+
),
|
|
1093
|
+
children: utility.title
|
|
1094
|
+
}
|
|
1095
|
+
) : /* @__PURE__ */ jsx(
|
|
1096
|
+
"div",
|
|
1097
|
+
{
|
|
1098
|
+
className: cn(
|
|
1099
|
+
"mb-2 text-lg font-semibold",
|
|
1100
|
+
utility.titleClassName
|
|
1101
|
+
),
|
|
1102
|
+
children: utility.title
|
|
1103
|
+
}
|
|
1104
|
+
)),
|
|
1105
|
+
utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsx(
|
|
1106
|
+
"p",
|
|
1107
|
+
{
|
|
1108
|
+
className: cn(
|
|
1109
|
+
"text-sm leading-relaxed",
|
|
1110
|
+
getTextColor(background, "muted"),
|
|
1111
|
+
utility.descriptionClassName
|
|
1112
|
+
),
|
|
1113
|
+
children: utility.description
|
|
1114
|
+
}
|
|
1115
|
+
) : /* @__PURE__ */ jsx(
|
|
1116
|
+
"div",
|
|
1117
|
+
{
|
|
1118
|
+
className: cn(
|
|
1119
|
+
"text-sm leading-relaxed",
|
|
1120
|
+
getTextColor(background, "muted"),
|
|
1121
|
+
utility.descriptionClassName
|
|
1122
|
+
),
|
|
1123
|
+
children: utility.description
|
|
1124
|
+
}
|
|
1125
|
+
))
|
|
1056
1126
|
] })
|
|
1057
1127
|
]
|
|
1058
1128
|
},
|
|
1059
1129
|
index
|
|
1060
1130
|
));
|
|
1061
|
-
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
|
|
1131
|
+
}, [utilitiesSlot, utilities, cardClassName, renderUtilityImage, background]);
|
|
1062
1132
|
return /* @__PURE__ */ jsxs(
|
|
1063
1133
|
Section,
|
|
1064
1134
|
{
|
|
@@ -1581,7 +1581,8 @@ function FooterAnimatedSocial({
|
|
|
1581
1581
|
separatorClassName,
|
|
1582
1582
|
copyrightClassName,
|
|
1583
1583
|
background,
|
|
1584
|
-
|
|
1584
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
1585
|
+
spacing = "py-6 md:py-32",
|
|
1585
1586
|
pattern,
|
|
1586
1587
|
patternOpacity
|
|
1587
1588
|
}) {
|
|
@@ -1604,7 +1605,10 @@ function FooterAnimatedSocial({
|
|
|
1604
1605
|
label: link.label,
|
|
1605
1606
|
iconNameOverride: link.iconNameOverride,
|
|
1606
1607
|
iconSize: 24,
|
|
1607
|
-
className: cn(
|
|
1608
|
+
className: cn(
|
|
1609
|
+
"group flex items-center gap-2 py-2 transition-colors hover:opacity-70",
|
|
1610
|
+
socialLinkClassName
|
|
1611
|
+
)
|
|
1608
1612
|
}
|
|
1609
1613
|
)
|
|
1610
1614
|
},
|
|
@@ -1619,6 +1623,7 @@ function FooterAnimatedSocial({
|
|
|
1619
1623
|
pattern,
|
|
1620
1624
|
patternOpacity,
|
|
1621
1625
|
className: cn(className),
|
|
1626
|
+
containerClassName,
|
|
1622
1627
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(contentClassName), children: /* @__PURE__ */ jsxRuntime.jsx("footer", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1623
1628
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1624
1629
|
framerMotion.motion.div,
|
|
@@ -1627,23 +1632,56 @@ function FooterAnimatedSocial({
|
|
|
1627
1632
|
initial: "hidden",
|
|
1628
1633
|
whileInView: "visible",
|
|
1629
1634
|
viewport: { once: true },
|
|
1630
|
-
className: cn(
|
|
1635
|
+
className: cn(
|
|
1636
|
+
"flex flex-col justify-between md:flex-row md:items-center",
|
|
1637
|
+
layoutClassName
|
|
1638
|
+
),
|
|
1631
1639
|
children: [
|
|
1632
1640
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-y-8", leftColumnClassName), children: [
|
|
1633
1641
|
/* @__PURE__ */ jsxRuntime.jsxs(framerMotion.motion.div, { variants: itemVariants, className: "space-y-6", children: [
|
|
1634
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1635
|
-
|
|
1642
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1643
|
+
"h2",
|
|
1644
|
+
{
|
|
1645
|
+
className: cn(
|
|
1646
|
+
"text-4xl leading-tight font-bold lg:text-5xl",
|
|
1647
|
+
headingClassName
|
|
1648
|
+
),
|
|
1649
|
+
children: heading
|
|
1650
|
+
}
|
|
1651
|
+
),
|
|
1652
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1653
|
+
"p",
|
|
1654
|
+
{
|
|
1655
|
+
className: cn(
|
|
1656
|
+
"max-w-md text-lg leading-relaxed opacity-80",
|
|
1657
|
+
descriptionClassName
|
|
1658
|
+
),
|
|
1659
|
+
children: description
|
|
1660
|
+
}
|
|
1661
|
+
)
|
|
1636
1662
|
] }),
|
|
1637
1663
|
ctaUrl && ctaText && /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1638
1664
|
Pressable,
|
|
1639
1665
|
{
|
|
1640
1666
|
href: ctaUrl,
|
|
1641
|
-
className: cn(
|
|
1667
|
+
className: cn(
|
|
1668
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border h-11 px-8 hover:opacity-80",
|
|
1669
|
+
ctaClassName
|
|
1670
|
+
),
|
|
1642
1671
|
children: ctaText
|
|
1643
1672
|
}
|
|
1644
1673
|
) })
|
|
1645
1674
|
] }),
|
|
1646
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1675
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1676
|
+
"div",
|
|
1677
|
+
{
|
|
1678
|
+
className: cn(
|
|
1679
|
+
"flex flex-row md:flex-col flex-wrap items-center justify-center gap-4 md:gap-2",
|
|
1680
|
+
rightColumnClassName
|
|
1681
|
+
),
|
|
1682
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-row md:flex-col items-center gap-4 md:gap-6", socialLinksClassName), children: socialLinksContent }) })
|
|
1683
|
+
}
|
|
1684
|
+
)
|
|
1647
1685
|
]
|
|
1648
1686
|
}
|
|
1649
1687
|
),
|
|
@@ -1656,14 +1694,32 @@ function FooterAnimatedSocial({
|
|
|
1656
1694
|
viewport: { once: true },
|
|
1657
1695
|
className: cn("mt-16", bottomClassName),
|
|
1658
1696
|
children: [
|
|
1659
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1697
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1698
|
+
"div",
|
|
1699
|
+
{
|
|
1700
|
+
className: cn(
|
|
1701
|
+
"mb-8 h-px w-full opacity-20",
|
|
1702
|
+
separatorClassName
|
|
1703
|
+
),
|
|
1704
|
+
style: { backgroundColor: "currentColor" }
|
|
1705
|
+
}
|
|
1706
|
+
) }),
|
|
1660
1707
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1661
1708
|
framerMotion.motion.div,
|
|
1662
1709
|
{
|
|
1663
1710
|
variants: itemVariants,
|
|
1664
|
-
className: cn(
|
|
1711
|
+
className: cn(
|
|
1712
|
+
"flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center",
|
|
1713
|
+
copyrightClassName
|
|
1714
|
+
),
|
|
1665
1715
|
children: [
|
|
1666
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1716
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1717
|
+
FooterCopyright,
|
|
1718
|
+
{
|
|
1719
|
+
copyright,
|
|
1720
|
+
className: "text-sm opacity-70"
|
|
1721
|
+
}
|
|
1722
|
+
),
|
|
1667
1723
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-6 text-sm opacity-70", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1668
1724
|
BrandAttribution,
|
|
1669
1725
|
{
|
|
@@ -51,6 +51,10 @@ interface FooterAnimatedSocialProps {
|
|
|
51
51
|
copyrightClassName?: string;
|
|
52
52
|
/** Section background variant */
|
|
53
53
|
background?: SectionBackground;
|
|
54
|
+
/**
|
|
55
|
+
* Additional CSS classes for the container
|
|
56
|
+
*/
|
|
57
|
+
containerClassName?: string;
|
|
54
58
|
/** Section spacing variant */
|
|
55
59
|
spacing?: SectionSpacing;
|
|
56
60
|
/** Optional background pattern */
|
|
@@ -66,6 +70,6 @@ interface FooterAnimatedSocialProps {
|
|
|
66
70
|
* modern websites, portfolios, and creative projects that want to add visual
|
|
67
71
|
* polish and interactivity to their footer.
|
|
68
72
|
*/
|
|
69
|
-
declare function FooterAnimatedSocial({ heading, description, ctaText, ctaUrl, socialLinks, copyright, className, contentClassName, layoutClassName, leftColumnClassName, headingClassName, descriptionClassName, ctaClassName, rightColumnClassName, socialLinksClassName, socialLinkClassName, bottomClassName, separatorClassName, copyrightClassName, background, spacing, pattern, patternOpacity, }: FooterAnimatedSocialProps): React.JSX.Element;
|
|
73
|
+
declare function FooterAnimatedSocial({ heading, description, ctaText, ctaUrl, socialLinks, copyright, className, contentClassName, layoutClassName, leftColumnClassName, headingClassName, descriptionClassName, ctaClassName, rightColumnClassName, socialLinksClassName, socialLinkClassName, bottomClassName, separatorClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, }: FooterAnimatedSocialProps): React.JSX.Element;
|
|
70
74
|
|
|
71
75
|
export { FooterAnimatedSocial, type FooterAnimatedSocialProps };
|
|
@@ -51,6 +51,10 @@ interface FooterAnimatedSocialProps {
|
|
|
51
51
|
copyrightClassName?: string;
|
|
52
52
|
/** Section background variant */
|
|
53
53
|
background?: SectionBackground;
|
|
54
|
+
/**
|
|
55
|
+
* Additional CSS classes for the container
|
|
56
|
+
*/
|
|
57
|
+
containerClassName?: string;
|
|
54
58
|
/** Section spacing variant */
|
|
55
59
|
spacing?: SectionSpacing;
|
|
56
60
|
/** Optional background pattern */
|
|
@@ -66,6 +70,6 @@ interface FooterAnimatedSocialProps {
|
|
|
66
70
|
* modern websites, portfolios, and creative projects that want to add visual
|
|
67
71
|
* polish and interactivity to their footer.
|
|
68
72
|
*/
|
|
69
|
-
declare function FooterAnimatedSocial({ heading, description, ctaText, ctaUrl, socialLinks, copyright, className, contentClassName, layoutClassName, leftColumnClassName, headingClassName, descriptionClassName, ctaClassName, rightColumnClassName, socialLinksClassName, socialLinkClassName, bottomClassName, separatorClassName, copyrightClassName, background, spacing, pattern, patternOpacity, }: FooterAnimatedSocialProps): React.JSX.Element;
|
|
73
|
+
declare function FooterAnimatedSocial({ heading, description, ctaText, ctaUrl, socialLinks, copyright, className, contentClassName, layoutClassName, leftColumnClassName, headingClassName, descriptionClassName, ctaClassName, rightColumnClassName, socialLinksClassName, socialLinkClassName, bottomClassName, separatorClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, }: FooterAnimatedSocialProps): React.JSX.Element;
|
|
70
74
|
|
|
71
75
|
export { FooterAnimatedSocial, type FooterAnimatedSocialProps };
|