@opensite/ui 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hero-adaptable-product-grid.cjs +1 -1
- package/dist/hero-adaptable-product-grid.js +1 -1
- package/dist/hero-agency-animated-images.cjs +795 -631
- package/dist/hero-agency-animated-images.d.cts +13 -9
- package/dist/hero-agency-animated-images.d.ts +13 -9
- package/dist/hero-agency-animated-images.js +794 -630
- package/dist/hero-business-carousel-dots.cjs +822 -911
- package/dist/hero-business-carousel-dots.d.cts +5 -1
- package/dist/hero-business-carousel-dots.d.ts +5 -1
- package/dist/hero-business-carousel-dots.js +824 -910
- package/dist/hero-coming-soon-countdown.cjs +267 -110
- package/dist/hero-coming-soon-countdown.d.cts +8 -11
- package/dist/hero-coming-soon-countdown.d.ts +8 -11
- package/dist/hero-coming-soon-countdown.js +268 -111
- package/dist/hero-conversation-intelligence.cjs +673 -639
- package/dist/hero-conversation-intelligence.js +663 -629
- package/dist/hero-creative-studio-stacked.cjs +899 -861
- package/dist/hero-creative-studio-stacked.d.cts +16 -15
- package/dist/hero-creative-studio-stacked.d.ts +16 -15
- package/dist/hero-creative-studio-stacked.js +897 -859
- package/dist/hero-customer-support-layered.cjs +89 -76
- package/dist/hero-customer-support-layered.js +89 -76
- package/dist/hero-developer-tools-code.cjs +721 -669
- package/dist/hero-developer-tools-code.d.cts +5 -1
- package/dist/hero-developer-tools-code.d.ts +5 -1
- package/dist/hero-developer-tools-code.js +719 -667
- package/dist/hero-digital-agency-fullscreen.cjs +722 -680
- package/dist/hero-digital-agency-fullscreen.d.cts +4 -20
- package/dist/hero-digital-agency-fullscreen.d.ts +4 -20
- package/dist/hero-digital-agency-fullscreen.js +722 -680
- package/dist/hero-ecommerce-product-showcase.cjs +892 -846
- package/dist/hero-ecommerce-product-showcase.js +889 -843
- package/dist/hero-enterprise-security.cjs +168 -132
- package/dist/hero-enterprise-security.d.cts +12 -19
- package/dist/hero-enterprise-security.d.ts +12 -19
- package/dist/hero-enterprise-security.js +168 -132
- package/dist/hero-event-registration.cjs +39 -39
- package/dist/hero-event-registration.js +39 -39
- package/dist/hero-fullscreen-background-image.cjs +3 -2
- package/dist/hero-fullscreen-background-image.js +3 -2
- package/dist/hero-fullscreen-logo-cta.cjs +4 -2
- package/dist/hero-fullscreen-logo-cta.js +4 -2
- package/dist/hero-innovation-image-grid.cjs +2 -2
- package/dist/hero-innovation-image-grid.js +2 -2
- package/dist/hero-mental-health-team.cjs +17 -17
- package/dist/hero-mental-health-team.d.cts +5 -5
- package/dist/hero-mental-health-team.d.ts +5 -5
- package/dist/hero-mental-health-team.js +17 -17
- package/dist/hero-mobile-app-download.cjs +2 -2
- package/dist/hero-mobile-app-download.js +2 -2
- package/dist/hero-newsletter-minimal.cjs +97 -57
- package/dist/hero-newsletter-minimal.d.cts +5 -1
- package/dist/hero-newsletter-minimal.d.ts +5 -1
- package/dist/hero-newsletter-minimal.js +97 -57
- package/dist/hero-shared-inbox-layered.cjs +522 -42
- package/dist/hero-shared-inbox-layered.d.cts +20 -4
- package/dist/hero-shared-inbox-layered.d.ts +20 -4
- package/dist/hero-shared-inbox-layered.js +505 -40
- package/dist/hero-startup-launch-cta.cjs +859 -816
- package/dist/hero-startup-launch-cta.d.cts +3 -2
- package/dist/hero-startup-launch-cta.d.ts +3 -2
- package/dist/hero-startup-launch-cta.js +858 -815
- package/dist/hero-therapy-testimonial-grid.cjs +1 -1
- package/dist/hero-therapy-testimonial-grid.js +1 -1
- package/dist/hero-video-dialog-gradient-BnCFFec0.d.ts +99 -0
- package/dist/hero-video-dialog-gradient-Dapebkzu.d.cts +99 -0
- package/dist/hero-video-dialog-gradient.cjs +24 -23
- package/dist/hero-video-dialog-gradient.d.cts +4 -94
- package/dist/hero-video-dialog-gradient.d.ts +4 -94
- package/dist/hero-video-dialog-gradient.js +24 -23
- package/dist/hero-welcome-asymmetric-images.cjs +652 -617
- package/dist/hero-welcome-asymmetric-images.d.cts +5 -1
- package/dist/hero-welcome-asymmetric-images.d.ts +5 -1
- package/dist/hero-welcome-asymmetric-images.js +651 -616
- package/dist/registry.cjs +1111 -848
- package/dist/registry.js +1111 -848
- package/package.json +1 -1
|
@@ -1,76 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useState, useCallback, useEffect, useMemo } from 'react';
|
|
4
|
+
import { AnimatePresence, motion } from 'framer-motion';
|
|
4
5
|
import { clsx } from 'clsx';
|
|
5
6
|
import { twMerge } from 'tailwind-merge';
|
|
6
7
|
import { cva } from 'class-variance-authority';
|
|
7
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
9
|
import { Icon } from '@page-speed/icon';
|
|
10
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
11
|
+
import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
|
|
9
12
|
|
|
10
13
|
// components/blocks/hero/hero-coming-soon-countdown.tsx
|
|
11
14
|
function cn(...inputs) {
|
|
12
15
|
return twMerge(clsx(inputs));
|
|
13
16
|
}
|
|
14
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
15
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
16
|
-
if (isDark) {
|
|
17
|
-
switch (variant) {
|
|
18
|
-
case "muted":
|
|
19
|
-
return "bg-background";
|
|
20
|
-
case "card":
|
|
21
|
-
return "bg-card";
|
|
22
|
-
case "accent":
|
|
23
|
-
return "bg-accent";
|
|
24
|
-
case "subtle":
|
|
25
|
-
return "bg-background/50";
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
switch (variant) {
|
|
29
|
-
case "muted":
|
|
30
|
-
return "bg-muted";
|
|
31
|
-
case "card":
|
|
32
|
-
return "bg-card";
|
|
33
|
-
case "accent":
|
|
34
|
-
return "bg-accent";
|
|
35
|
-
case "subtle":
|
|
36
|
-
return "bg-muted/50";
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function getNestedCardTextColor(parentBg, options) {
|
|
41
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
42
|
-
return isDark ? "text-foreground" : "";
|
|
43
|
-
}
|
|
44
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
45
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
46
|
-
if (isDark) {
|
|
47
|
-
switch (variant) {
|
|
48
|
-
case "default":
|
|
49
|
-
return "text-foreground";
|
|
50
|
-
case "muted":
|
|
51
|
-
return "text-foreground/80";
|
|
52
|
-
case "subtle":
|
|
53
|
-
return "text-foreground/60";
|
|
54
|
-
case "accent":
|
|
55
|
-
return "text-accent-foreground";
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
switch (variant) {
|
|
59
|
-
case "default":
|
|
60
|
-
return "text-foreground";
|
|
61
|
-
case "muted":
|
|
62
|
-
return "text-muted-foreground";
|
|
63
|
-
case "subtle":
|
|
64
|
-
return "text-muted-foreground/70";
|
|
65
|
-
case "accent":
|
|
66
|
-
return "text-primary";
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function getAccentColor(parentBg, options) {
|
|
71
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
72
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
73
|
-
}
|
|
74
17
|
function normalizePhoneNumber(input) {
|
|
75
18
|
const trimmed = input.trim();
|
|
76
19
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -884,12 +827,163 @@ var Section = React__default.forwardRef(
|
|
|
884
827
|
}
|
|
885
828
|
);
|
|
886
829
|
Section.displayName = "Section";
|
|
830
|
+
var badgeVariants = cva(
|
|
831
|
+
"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",
|
|
832
|
+
{
|
|
833
|
+
variants: {
|
|
834
|
+
variant: {
|
|
835
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
836
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
837
|
+
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",
|
|
838
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
defaultVariants: {
|
|
842
|
+
variant: "default"
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
);
|
|
846
|
+
function Badge({
|
|
847
|
+
className,
|
|
848
|
+
variant,
|
|
849
|
+
asChild = false,
|
|
850
|
+
...props
|
|
851
|
+
}) {
|
|
852
|
+
const Comp = asChild ? Slot : "span";
|
|
853
|
+
return /* @__PURE__ */ jsx(
|
|
854
|
+
Comp,
|
|
855
|
+
{
|
|
856
|
+
"data-slot": "badge",
|
|
857
|
+
className: cn(badgeVariants({ variant }), className),
|
|
858
|
+
...props
|
|
859
|
+
}
|
|
860
|
+
);
|
|
861
|
+
}
|
|
862
|
+
var platformIconMap = {
|
|
863
|
+
instagram: "cib/instagram",
|
|
864
|
+
linkedin: "cib/linkedin",
|
|
865
|
+
google: "cib/google",
|
|
866
|
+
facebook: "cib/facebook",
|
|
867
|
+
tiktok: "cib/tiktok",
|
|
868
|
+
youtube: "cib/youtube",
|
|
869
|
+
yelp: "cib/yelp",
|
|
870
|
+
spotify: "cib/spotify",
|
|
871
|
+
apple: "cib/apple",
|
|
872
|
+
x: "line-md/twitter-x-alt",
|
|
873
|
+
github: "cib/github",
|
|
874
|
+
snapchat: "cib/snapchat",
|
|
875
|
+
discord: "cib/discord",
|
|
876
|
+
dev: "simple-icons/devdotto",
|
|
877
|
+
substack: "simple-icons/substack",
|
|
878
|
+
reddit: "cib/reddit",
|
|
879
|
+
pinterest: "cib/pinterest",
|
|
880
|
+
threads: "simple-icons/threads",
|
|
881
|
+
twitch: "cib/twitch",
|
|
882
|
+
whatsapp: "cib/whatsapp",
|
|
883
|
+
telegram: "cib/telegram",
|
|
884
|
+
medium: "simple-icons/medium",
|
|
885
|
+
patreon: "cib/patreon",
|
|
886
|
+
onlyfans: "simple-icons/onlyfans",
|
|
887
|
+
eventbrite: "cib/eventbrite",
|
|
888
|
+
npmjs: "simple-icons/npm",
|
|
889
|
+
crates: "cib/rust",
|
|
890
|
+
rubygems: "cib/rubygems",
|
|
891
|
+
behance: "cib/behance",
|
|
892
|
+
dribbble: "cib/dribbble",
|
|
893
|
+
unknown: "icon-park-solid/circular-connection"
|
|
894
|
+
};
|
|
895
|
+
var SocialLinkIcon = React.forwardRef(
|
|
896
|
+
({
|
|
897
|
+
platformName,
|
|
898
|
+
label,
|
|
899
|
+
iconSize = 20,
|
|
900
|
+
iconColor,
|
|
901
|
+
href,
|
|
902
|
+
iconClassName,
|
|
903
|
+
className,
|
|
904
|
+
iconNameOverride,
|
|
905
|
+
...pressableProps
|
|
906
|
+
}, ref) => {
|
|
907
|
+
const platform = usePlatformFromUrl(href);
|
|
908
|
+
const smartPlatformName = React.useMemo(() => {
|
|
909
|
+
return platform || platformName;
|
|
910
|
+
}, [platform, platformName]);
|
|
911
|
+
const iconName = React.useMemo(() => {
|
|
912
|
+
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
913
|
+
}, [iconNameOverride, smartPlatformName]);
|
|
914
|
+
const accessibleLabel = React.useMemo(() => {
|
|
915
|
+
return label || platformName;
|
|
916
|
+
}, [label, platformName]);
|
|
917
|
+
return /* @__PURE__ */ jsx(
|
|
918
|
+
Pressable,
|
|
919
|
+
{
|
|
920
|
+
ref,
|
|
921
|
+
href,
|
|
922
|
+
"aria-label": accessibleLabel,
|
|
923
|
+
className: cn(
|
|
924
|
+
"inline-flex items-center justify-center transition-colors",
|
|
925
|
+
className
|
|
926
|
+
),
|
|
927
|
+
...pressableProps,
|
|
928
|
+
children: /* @__PURE__ */ jsx(
|
|
929
|
+
DynamicIcon,
|
|
930
|
+
{
|
|
931
|
+
name: iconName,
|
|
932
|
+
size: iconSize,
|
|
933
|
+
color: iconColor,
|
|
934
|
+
className: iconClassName,
|
|
935
|
+
alt: accessibleLabel
|
|
936
|
+
}
|
|
937
|
+
)
|
|
938
|
+
}
|
|
939
|
+
);
|
|
940
|
+
}
|
|
941
|
+
);
|
|
942
|
+
SocialLinkIcon.displayName = "SocialLinkIcon";
|
|
943
|
+
var digitVariants = {
|
|
944
|
+
initial: { y: -20, opacity: 0 },
|
|
945
|
+
animate: {
|
|
946
|
+
y: 0,
|
|
947
|
+
opacity: 1,
|
|
948
|
+
transition: { type: "spring", stiffness: 300, damping: 25 }
|
|
949
|
+
},
|
|
950
|
+
exit: {
|
|
951
|
+
y: 20,
|
|
952
|
+
opacity: 0,
|
|
953
|
+
transition: { duration: 0.15 }
|
|
954
|
+
}
|
|
955
|
+
};
|
|
956
|
+
function CountdownDigit({ value, label }) {
|
|
957
|
+
const display = value.toString().padStart(2, "0");
|
|
958
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
|
|
959
|
+
/* @__PURE__ */ jsx(
|
|
960
|
+
"div",
|
|
961
|
+
{
|
|
962
|
+
className: cn(
|
|
963
|
+
"flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl text-3xl font-bold md:h-24 md:w-24 md:text-5xl"
|
|
964
|
+
),
|
|
965
|
+
children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", initial: false, children: /* @__PURE__ */ jsx(
|
|
966
|
+
motion.span,
|
|
967
|
+
{
|
|
968
|
+
variants: digitVariants,
|
|
969
|
+
initial: "initial",
|
|
970
|
+
animate: "animate",
|
|
971
|
+
exit: "exit",
|
|
972
|
+
children: display
|
|
973
|
+
},
|
|
974
|
+
display
|
|
975
|
+
) })
|
|
976
|
+
}
|
|
977
|
+
),
|
|
978
|
+
/* @__PURE__ */ jsx("span", { className: cn("mt-2 text-sm"), children: label })
|
|
979
|
+
] });
|
|
980
|
+
}
|
|
887
981
|
function HeroComingSoonCountdown({
|
|
888
982
|
badgeIcon,
|
|
889
983
|
badgeText,
|
|
890
984
|
heading,
|
|
891
985
|
description,
|
|
892
|
-
|
|
986
|
+
countdownDate,
|
|
893
987
|
countdownSlot,
|
|
894
988
|
emailPlaceholder = "Enter your email",
|
|
895
989
|
submitAction,
|
|
@@ -897,11 +991,12 @@ function HeroComingSoonCountdown({
|
|
|
897
991
|
socialLinks,
|
|
898
992
|
socialLinksSlot,
|
|
899
993
|
background,
|
|
900
|
-
|
|
994
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
995
|
+
spacing = "xl",
|
|
901
996
|
pattern,
|
|
902
997
|
patternOpacity,
|
|
998
|
+
patternClassName,
|
|
903
999
|
className,
|
|
904
|
-
containerClassName,
|
|
905
1000
|
badgeClassName,
|
|
906
1001
|
headingClassName,
|
|
907
1002
|
descriptionClassName,
|
|
@@ -909,55 +1004,69 @@ function HeroComingSoonCountdown({
|
|
|
909
1004
|
formClassName,
|
|
910
1005
|
socialLinksClassName
|
|
911
1006
|
}) {
|
|
912
|
-
const
|
|
913
|
-
|
|
914
|
-
if (!
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
1007
|
+
const [timeLeft, setTimeLeft] = useState(null);
|
|
1008
|
+
const calculateTimeLeft = useCallback(() => {
|
|
1009
|
+
if (!countdownDate) return null;
|
|
1010
|
+
const now = Date.now();
|
|
1011
|
+
const target = countdownDate.getTime();
|
|
1012
|
+
const diff = target - now;
|
|
1013
|
+
if (diff <= 0) return null;
|
|
1014
|
+
return {
|
|
1015
|
+
days: Math.floor(diff / (1e3 * 60 * 60 * 24)),
|
|
1016
|
+
hours: Math.floor(diff % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60)),
|
|
1017
|
+
minutes: Math.floor(diff % (1e3 * 60 * 60) / (1e3 * 60)),
|
|
1018
|
+
seconds: Math.floor(diff % (1e3 * 60) / 1e3)
|
|
1019
|
+
};
|
|
1020
|
+
}, [countdownDate]);
|
|
1021
|
+
useEffect(() => {
|
|
1022
|
+
setTimeLeft(calculateTimeLeft());
|
|
1023
|
+
if (!countdownDate) return;
|
|
1024
|
+
const timer = setInterval(() => {
|
|
1025
|
+
const remaining = calculateTimeLeft();
|
|
1026
|
+
setTimeLeft(remaining);
|
|
1027
|
+
if (!remaining) clearInterval(timer);
|
|
1028
|
+
}, 1e3);
|
|
1029
|
+
return () => clearInterval(timer);
|
|
1030
|
+
}, [countdownDate, calculateTimeLeft]);
|
|
1031
|
+
const showCountdown = countdownSlot || timeLeft;
|
|
924
1032
|
const renderForm = useMemo(() => {
|
|
925
1033
|
if (formSlot) return formSlot;
|
|
926
1034
|
if (!submitAction) return null;
|
|
927
|
-
const {
|
|
1035
|
+
const {
|
|
1036
|
+
label,
|
|
1037
|
+
icon,
|
|
1038
|
+
iconAfter,
|
|
1039
|
+
children,
|
|
1040
|
+
className: actionClassName,
|
|
1041
|
+
...pressableProps
|
|
1042
|
+
} = submitAction;
|
|
928
1043
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
929
1044
|
/* @__PURE__ */ jsx(
|
|
930
1045
|
Input,
|
|
931
1046
|
{
|
|
932
1047
|
type: "email",
|
|
933
1048
|
placeholder: emailPlaceholder,
|
|
934
|
-
className: cn("h-12 flex-1 border-border/50"
|
|
1049
|
+
className: cn("h-12 flex-1 border-border/50")
|
|
935
1050
|
}
|
|
936
1051
|
),
|
|
937
|
-
/* @__PURE__ */ jsx(
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
...pressableProps,
|
|
943
|
-
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
944
|
-
icon,
|
|
945
|
-
label,
|
|
946
|
-
iconAfter
|
|
947
|
-
] })
|
|
948
|
-
}
|
|
949
|
-
)
|
|
1052
|
+
/* @__PURE__ */ jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1053
|
+
icon,
|
|
1054
|
+
label,
|
|
1055
|
+
iconAfter
|
|
1056
|
+
] }) })
|
|
950
1057
|
] });
|
|
951
1058
|
}, [formSlot, submitAction, emailPlaceholder]);
|
|
952
1059
|
const renderSocialLinks = useMemo(() => {
|
|
953
1060
|
if (socialLinksSlot) return socialLinksSlot;
|
|
954
1061
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
955
1062
|
return socialLinks.map((link, index) => /* @__PURE__ */ jsx(
|
|
956
|
-
|
|
1063
|
+
SocialLinkIcon,
|
|
957
1064
|
{
|
|
958
1065
|
href: link.href,
|
|
959
|
-
className: cn(
|
|
960
|
-
|
|
1066
|
+
className: cn("hover:opacity-80", link.className),
|
|
1067
|
+
asButton: true,
|
|
1068
|
+
variant: "outline",
|
|
1069
|
+
size: "icon"
|
|
961
1070
|
},
|
|
962
1071
|
index
|
|
963
1072
|
));
|
|
@@ -965,25 +1074,73 @@ function HeroComingSoonCountdown({
|
|
|
965
1074
|
return /* @__PURE__ */ jsx(
|
|
966
1075
|
Section,
|
|
967
1076
|
{
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
), children: [
|
|
979
|
-
badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16, className: getAccentColor(background) }),
|
|
1077
|
+
background,
|
|
1078
|
+
spacing,
|
|
1079
|
+
pattern,
|
|
1080
|
+
patternOpacity,
|
|
1081
|
+
patternClassName,
|
|
1082
|
+
className,
|
|
1083
|
+
containerClassName,
|
|
1084
|
+
children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
|
|
1085
|
+
(badgeText || badgeIcon) && /* @__PURE__ */ jsxs(Badge, { className: cn("gap-2 px-4 py-2", badgeClassName), children: [
|
|
1086
|
+
badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
|
|
980
1087
|
/* @__PURE__ */ jsx("span", { children: badgeText })
|
|
981
1088
|
] }),
|
|
982
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
1089
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
1090
|
+
"h1",
|
|
1091
|
+
{
|
|
1092
|
+
className: cn(
|
|
1093
|
+
"mt-8 max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
1094
|
+
headingClassName
|
|
1095
|
+
),
|
|
1096
|
+
children: heading
|
|
1097
|
+
}
|
|
1098
|
+
) : heading),
|
|
1099
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
1100
|
+
"p",
|
|
1101
|
+
{
|
|
1102
|
+
className: cn(
|
|
1103
|
+
"mt-6 max-w-xl text-lg md:text-xl text-balance",
|
|
1104
|
+
descriptionClassName
|
|
1105
|
+
),
|
|
1106
|
+
children: description
|
|
1107
|
+
}
|
|
1108
|
+
) : description),
|
|
1109
|
+
showCountdown && /* @__PURE__ */ jsx(
|
|
1110
|
+
"div",
|
|
1111
|
+
{
|
|
1112
|
+
className: cn(
|
|
1113
|
+
"mt-12 grid grid-cols-4 gap-4 md:gap-8",
|
|
1114
|
+
countdownClassName
|
|
1115
|
+
),
|
|
1116
|
+
children: countdownSlot ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1117
|
+
/* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.days, label: "Days" }),
|
|
1118
|
+
/* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.hours, label: "Hours" }),
|
|
1119
|
+
/* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.minutes, label: "Minutes" }),
|
|
1120
|
+
/* @__PURE__ */ jsx(CountdownDigit, { value: timeLeft.seconds, label: "Seconds" })
|
|
1121
|
+
] })
|
|
1122
|
+
}
|
|
1123
|
+
),
|
|
1124
|
+
/* @__PURE__ */ jsx(
|
|
1125
|
+
"div",
|
|
1126
|
+
{
|
|
1127
|
+
className: cn(
|
|
1128
|
+
"mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row",
|
|
1129
|
+
formClassName
|
|
1130
|
+
),
|
|
1131
|
+
children: renderForm
|
|
1132
|
+
}
|
|
1133
|
+
),
|
|
1134
|
+
(socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx(
|
|
1135
|
+
"div",
|
|
1136
|
+
{
|
|
1137
|
+
className: cn(
|
|
1138
|
+
"mt-16 flex items-center gap-6",
|
|
1139
|
+
socialLinksClassName
|
|
1140
|
+
),
|
|
1141
|
+
children: renderSocialLinks
|
|
1142
|
+
}
|
|
1143
|
+
)
|
|
987
1144
|
] })
|
|
988
1145
|
}
|
|
989
1146
|
);
|