@opensite/ui 1.8.2 → 1.8.4
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/about-story-gallery.cjs +3 -30
- package/dist/about-story-gallery.d.cts +1 -1
- package/dist/about-story-gallery.d.ts +1 -1
- package/dist/about-story-gallery.js +3 -30
- package/dist/components.d.cts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/contact-callback.cjs +526 -273
- package/dist/contact-callback.d.cts +39 -59
- package/dist/contact-callback.d.ts +39 -59
- package/dist/contact-callback.js +528 -274
- package/dist/contact-card.cjs +459 -183
- package/dist/contact-card.d.cts +26 -49
- package/dist/contact-card.d.ts +26 -49
- package/dist/contact-card.js +461 -183
- package/dist/contact-careers.cjs +614 -510
- package/dist/contact-careers.d.cts +32 -55
- package/dist/contact-careers.d.ts +32 -55
- package/dist/contact-careers.js +616 -510
- package/dist/contact-catering.cjs +507 -501
- package/dist/contact-catering.d.cts +27 -61
- package/dist/contact-catering.d.ts +27 -61
- package/dist/contact-catering.js +509 -500
- package/dist/contact-consultation.cjs +484 -253
- package/dist/contact-consultation.d.cts +29 -56
- package/dist/contact-consultation.d.ts +29 -56
- package/dist/contact-consultation.js +486 -253
- package/dist/contact-dark.cjs +296 -296
- package/dist/contact-dark.d.cts +1 -1
- package/dist/contact-dark.d.ts +1 -1
- package/dist/contact-dark.js +297 -296
- package/dist/contact-demo.d.cts +1 -1
- package/dist/contact-demo.d.ts +1 -1
- package/dist/contact-emergency.d.cts +1 -1
- package/dist/contact-emergency.d.ts +1 -1
- package/dist/contact-event.d.cts +1 -1
- package/dist/contact-event.d.ts +1 -1
- package/dist/contact-faq.cjs +247 -250
- package/dist/contact-faq.d.cts +1 -1
- package/dist/contact-faq.d.ts +1 -1
- package/dist/contact-faq.js +248 -250
- package/dist/contact-feedback.d.cts +1 -1
- package/dist/contact-feedback.d.ts +1 -1
- package/dist/contact-fitness.d.cts +1 -1
- package/dist/contact-fitness.d.ts +1 -1
- package/dist/contact-guest.d.cts +1 -1
- package/dist/contact-guest.d.ts +1 -1
- package/dist/contact-image.d.cts +1 -1
- package/dist/contact-image.d.ts +1 -1
- package/dist/contact-insurance.d.cts +1 -1
- package/dist/contact-insurance.d.ts +1 -1
- package/dist/contact-interview.d.cts +1 -1
- package/dist/contact-interview.d.ts +1 -1
- package/dist/contact-locations.d.cts +1 -1
- package/dist/contact-locations.d.ts +1 -1
- package/dist/contact-maintenance.d.cts +1 -1
- package/dist/contact-maintenance.d.ts +1 -1
- package/dist/contact-map.d.cts +1 -1
- package/dist/contact-map.d.ts +1 -1
- package/dist/contact-minimal.d.cts +1 -1
- package/dist/contact-minimal.d.ts +1 -1
- package/dist/contact-moving.d.cts +1 -1
- package/dist/contact-moving.d.ts +1 -1
- package/dist/contact-multistep.d.cts +1 -1
- package/dist/contact-multistep.d.ts +1 -1
- package/dist/contact-partnership.d.cts +1 -1
- package/dist/contact-partnership.d.ts +1 -1
- package/dist/contact-photography.cjs +247 -250
- package/dist/contact-photography.d.cts +1 -1
- package/dist/contact-photography.d.ts +1 -1
- package/dist/contact-photography.js +248 -250
- package/dist/contact-press.d.cts +1 -1
- package/dist/contact-press.d.ts +1 -1
- package/dist/contact-quote.d.cts +1 -1
- package/dist/contact-quote.d.ts +1 -1
- package/dist/contact-referral.d.cts +1 -1
- package/dist/contact-referral.d.ts +1 -1
- package/dist/contact-report.d.cts +1 -1
- package/dist/contact-report.d.ts +1 -1
- package/dist/contact-reservation.d.cts +1 -1
- package/dist/contact-reservation.d.ts +1 -1
- package/dist/contact-retreat.d.cts +1 -1
- package/dist/contact-retreat.d.ts +1 -1
- package/dist/contact-rsvp.d.cts +1 -1
- package/dist/contact-rsvp.d.ts +1 -1
- package/dist/contact-sales.d.cts +1 -1
- package/dist/contact-sales.d.ts +1 -1
- package/dist/contact-schedule.d.cts +1 -1
- package/dist/contact-schedule.d.ts +1 -1
- package/dist/contact-sponsorship.d.cts +1 -1
- package/dist/contact-sponsorship.d.ts +1 -1
- package/dist/contact-support.d.cts +1 -1
- package/dist/contact-support.d.ts +1 -1
- package/dist/contact-tenant.d.cts +1 -1
- package/dist/contact-tenant.d.ts +1 -1
- package/dist/contact-vendor.d.cts +1 -1
- package/dist/contact-vendor.d.ts +1 -1
- package/dist/contact-volunteer.d.cts +1 -1
- package/dist/contact-volunteer.d.ts +1 -1
- package/dist/contact-warranty.d.cts +1 -1
- package/dist/contact-warranty.d.ts +1 -1
- package/dist/contact-wedding.d.cts +1 -1
- package/dist/contact-wedding.d.ts +1 -1
- package/dist/cta-app-download-newsletter.d.cts +1 -1
- package/dist/cta-app-download-newsletter.d.ts +1 -1
- package/dist/cta-newsletter-features.d.cts +1 -1
- package/dist/cta-newsletter-features.d.ts +1 -1
- package/dist/footer-accordion-social.d.cts +1 -1
- package/dist/footer-accordion-social.d.ts +1 -1
- package/dist/footer-newsletter-contact.d.cts +1 -1
- package/dist/footer-newsletter-contact.d.ts +1 -1
- package/dist/footer-newsletter-minimal.d.cts +1 -1
- package/dist/footer-newsletter-minimal.d.ts +1 -1
- package/dist/footer-split-image-accordion.d.cts +1 -1
- package/dist/footer-split-image-accordion.d.ts +1 -1
- package/dist/{forms-nGgHUTBw.d.cts → forms-CStlFhnh.d.cts} +41 -0
- package/dist/{forms-nGgHUTBw.d.ts → forms-CStlFhnh.d.ts} +41 -0
- package/dist/hero-conversation-intelligence.cjs +1 -2
- package/dist/hero-conversation-intelligence.d.cts +1 -5
- package/dist/hero-conversation-intelligence.d.ts +1 -5
- package/dist/hero-conversation-intelligence.js +1 -2
- package/dist/hero-conversion-video-play.cjs +2 -2
- package/dist/hero-conversion-video-play.js +2 -2
- package/dist/hero-design-system-3d.cjs +162 -82
- package/dist/hero-design-system-3d.js +162 -82
- package/dist/hero-ecommerce-product-showcase.cjs +103 -81
- package/dist/hero-ecommerce-product-showcase.d.cts +5 -1
- package/dist/hero-ecommerce-product-showcase.d.ts +5 -1
- package/dist/hero-ecommerce-product-showcase.js +103 -81
- package/dist/hero-floating-images.cjs +1 -1
- package/dist/hero-floating-images.js +1 -1
- package/dist/hero-hiring-animated-text.cjs +4 -4
- package/dist/hero-hiring-animated-text.js +4 -4
- package/dist/hero-minimal-centered-dark.cjs +111 -82
- package/dist/hero-minimal-centered-dark.d.cts +1 -1
- package/dist/hero-minimal-centered-dark.d.ts +1 -1
- package/dist/hero-minimal-centered-dark.js +111 -82
- package/dist/hero-mobile-app-download.cjs +1 -1
- package/dist/hero-mobile-app-download.js +1 -1
- package/dist/hero-overlay-cta-grid.cjs +1 -1
- package/dist/hero-overlay-cta-grid.js +1 -1
- package/dist/hero-spiral-pattern-cards.cjs +1 -1
- package/dist/hero-spiral-pattern-cards.js +1 -1
- package/dist/hero-startup-launch-cta.cjs +1 -1
- package/dist/hero-startup-launch-cta.js +1 -1
- package/dist/hero-stats-social-proof.cjs +106 -90
- package/dist/hero-stats-social-proof.js +106 -90
- package/dist/hero-testimonial-image-grid.cjs +1 -1
- package/dist/hero-testimonial-image-grid.js +1 -1
- package/dist/hero-therapy-testimonial-grid.cjs +1 -1
- package/dist/hero-therapy-testimonial-grid.js +1 -1
- package/dist/hero-ui-library-showcase.cjs +63 -15
- package/dist/hero-ui-library-showcase.d.cts +5 -1
- package/dist/hero-ui-library-showcase.d.ts +5 -1
- package/dist/hero-ui-library-showcase.js +63 -15
- package/dist/index.cjs +44 -6
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +44 -6
- package/dist/link-page-newsletter-social.d.cts +1 -1
- package/dist/link-page-newsletter-social.d.ts +1 -1
- package/dist/offer-modal-membership-image.d.cts +1 -1
- package/dist/offer-modal-membership-image.d.ts +1 -1
- package/dist/offer-modal-newsletter-discount.d.cts +1 -1
- package/dist/offer-modal-newsletter-discount.d.ts +1 -1
- package/dist/offer-modal-sheet-newsletter.d.cts +1 -1
- package/dist/offer-modal-sheet-newsletter.d.ts +1 -1
- package/dist/registry.cjs +14465 -14767
- package/dist/registry.js +12664 -12966
- package/dist/resource-list-hero-filter.d.cts +1 -1
- package/dist/resource-list-hero-filter.d.ts +1 -1
- package/package.json +3 -3
|
@@ -814,11 +814,11 @@ function HeroHiringAnimatedText({
|
|
|
814
814
|
scrollActionSlot,
|
|
815
815
|
backgroundImage,
|
|
816
816
|
background,
|
|
817
|
-
spacing = "
|
|
817
|
+
spacing = "py-0 md:py-0",
|
|
818
818
|
pattern,
|
|
819
819
|
patternOpacity,
|
|
820
820
|
className,
|
|
821
|
-
containerClassName = "
|
|
821
|
+
containerClassName = "mx-auto h-screen w-full max-w-7xl relative z-10 px-6 md:px-16 lg:px-32 pb-12 md:pb-18",
|
|
822
822
|
contentClassName,
|
|
823
823
|
headingClassName,
|
|
824
824
|
descriptionClassName,
|
|
@@ -924,11 +924,11 @@ function HeroHiringAnimatedText({
|
|
|
924
924
|
),
|
|
925
925
|
containerClassName,
|
|
926
926
|
style: { backgroundImage: `url('${backgroundImage}')` },
|
|
927
|
-
children: /* @__PURE__ */ jsx("div", { className: "relative z-10 flex size-full max-w-
|
|
927
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative z-10 flex size-full max-w-md flex-col justify-between md:justify-end", children: /* @__PURE__ */ jsxs(
|
|
928
928
|
"div",
|
|
929
929
|
{
|
|
930
930
|
className: cn(
|
|
931
|
-
"flex h-full flex-col
|
|
931
|
+
"flex h-full flex-col gap-6 justify-end max-w-full md:max-w-md",
|
|
932
932
|
contentClassName
|
|
933
933
|
),
|
|
934
934
|
children: [
|
|
@@ -6,6 +6,7 @@ var clsx = require('clsx');
|
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var classVarianceAuthority = require('class-variance-authority');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var reactSlot = require('@radix-ui/react-slot');
|
|
9
10
|
|
|
10
11
|
function _interopNamespace(e) {
|
|
11
12
|
if (e && e.__esModule) return e;
|
|
@@ -31,58 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
32
|
function cn(...inputs) {
|
|
32
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
34
|
}
|
|
34
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
35
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
36
|
-
if (isDark) {
|
|
37
|
-
switch (variant) {
|
|
38
|
-
case "muted":
|
|
39
|
-
return "bg-background";
|
|
40
|
-
case "card":
|
|
41
|
-
return "bg-card";
|
|
42
|
-
case "accent":
|
|
43
|
-
return "bg-accent";
|
|
44
|
-
case "subtle":
|
|
45
|
-
return "bg-background/50";
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
switch (variant) {
|
|
49
|
-
case "muted":
|
|
50
|
-
return "bg-muted";
|
|
51
|
-
case "card":
|
|
52
|
-
return "bg-card";
|
|
53
|
-
case "accent":
|
|
54
|
-
return "bg-accent";
|
|
55
|
-
case "subtle":
|
|
56
|
-
return "bg-muted/50";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
61
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
62
|
-
if (isDark) {
|
|
63
|
-
switch (variant) {
|
|
64
|
-
case "default":
|
|
65
|
-
return "text-foreground";
|
|
66
|
-
case "muted":
|
|
67
|
-
return "text-foreground/80";
|
|
68
|
-
case "subtle":
|
|
69
|
-
return "text-foreground/60";
|
|
70
|
-
case "accent":
|
|
71
|
-
return "text-accent-foreground";
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
switch (variant) {
|
|
75
|
-
case "default":
|
|
76
|
-
return "text-foreground";
|
|
77
|
-
case "muted":
|
|
78
|
-
return "text-muted-foreground";
|
|
79
|
-
case "subtle":
|
|
80
|
-
return "text-muted-foreground/70";
|
|
81
|
-
case "accent":
|
|
82
|
-
return "text-primary";
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
35
|
function normalizePhoneNumber(input) {
|
|
87
36
|
const trimmed = input.trim();
|
|
88
37
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -876,9 +825,40 @@ var Section = React__namespace.default.forwardRef(
|
|
|
876
825
|
}
|
|
877
826
|
);
|
|
878
827
|
Section.displayName = "Section";
|
|
828
|
+
var badgeVariants = classVarianceAuthority.cva(
|
|
829
|
+
"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",
|
|
830
|
+
{
|
|
831
|
+
variants: {
|
|
832
|
+
variant: {
|
|
833
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
834
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
835
|
+
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",
|
|
836
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
837
|
+
}
|
|
838
|
+
},
|
|
839
|
+
defaultVariants: {
|
|
840
|
+
variant: "default"
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
);
|
|
844
|
+
function Badge({
|
|
845
|
+
className,
|
|
846
|
+
variant,
|
|
847
|
+
asChild = false,
|
|
848
|
+
...props
|
|
849
|
+
}) {
|
|
850
|
+
const Comp = asChild ? reactSlot.Slot : "span";
|
|
851
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
852
|
+
Comp,
|
|
853
|
+
{
|
|
854
|
+
"data-slot": "badge",
|
|
855
|
+
className: cn(badgeVariants({ variant }), className),
|
|
856
|
+
...props
|
|
857
|
+
}
|
|
858
|
+
);
|
|
859
|
+
}
|
|
879
860
|
function HeroMinimalCenteredDark({
|
|
880
861
|
badge,
|
|
881
|
-
showStatusDot = true,
|
|
882
862
|
heading,
|
|
883
863
|
headingHighlight,
|
|
884
864
|
description,
|
|
@@ -887,11 +867,11 @@ function HeroMinimalCenteredDark({
|
|
|
887
867
|
stats,
|
|
888
868
|
statsSlot,
|
|
889
869
|
background,
|
|
890
|
-
spacing,
|
|
870
|
+
spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
|
|
891
871
|
pattern,
|
|
892
872
|
patternOpacity,
|
|
893
873
|
className,
|
|
894
|
-
containerClassName,
|
|
874
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
895
875
|
badgeClassName,
|
|
896
876
|
headingClassName,
|
|
897
877
|
descriptionClassName,
|
|
@@ -902,7 +882,14 @@ function HeroMinimalCenteredDark({
|
|
|
902
882
|
if (actionsSlot) return actionsSlot;
|
|
903
883
|
if (!actions || actions.length === 0) return null;
|
|
904
884
|
return actions.map((action, index) => {
|
|
905
|
-
const {
|
|
885
|
+
const {
|
|
886
|
+
label,
|
|
887
|
+
icon,
|
|
888
|
+
iconAfter,
|
|
889
|
+
children,
|
|
890
|
+
className: actionClassName,
|
|
891
|
+
...pressableProps
|
|
892
|
+
} = action;
|
|
906
893
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
907
894
|
Pressable,
|
|
908
895
|
{
|
|
@@ -922,36 +909,78 @@ function HeroMinimalCenteredDark({
|
|
|
922
909
|
const renderStats = React.useMemo(() => {
|
|
923
910
|
if (statsSlot) return statsSlot;
|
|
924
911
|
if (!stats || stats.length === 0) return null;
|
|
925
|
-
return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
912
|
+
return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
913
|
+
"div",
|
|
914
|
+
{
|
|
915
|
+
className: cn("flex items-center gap-2", stat.className),
|
|
916
|
+
children: [
|
|
917
|
+
stat.icon,
|
|
918
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.value })
|
|
919
|
+
]
|
|
920
|
+
},
|
|
921
|
+
index
|
|
922
|
+
));
|
|
929
923
|
}, [statsSlot, stats]);
|
|
930
924
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
931
925
|
Section,
|
|
932
926
|
{
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
927
|
+
background,
|
|
928
|
+
spacing,
|
|
929
|
+
pattern,
|
|
930
|
+
patternOpacity,
|
|
931
|
+
className,
|
|
932
|
+
containerClassName,
|
|
933
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
934
|
+
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-3 py-2", badgeClassName), children: typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge }) : badge }),
|
|
935
|
+
(heading || headingHighlight) && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
936
|
+
"h1",
|
|
937
|
+
{
|
|
938
|
+
className: cn(
|
|
939
|
+
"mt-8 max-w-4xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
940
|
+
headingClassName
|
|
941
|
+
),
|
|
942
|
+
children: heading
|
|
943
|
+
}
|
|
944
|
+
) : heading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading }) : headingHighlight ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
945
|
+
"h1",
|
|
946
|
+
{
|
|
947
|
+
className: cn(
|
|
948
|
+
"mt-8 max-w-4xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
949
|
+
headingClassName
|
|
950
|
+
),
|
|
951
|
+
children: headingHighlight
|
|
952
|
+
}
|
|
953
|
+
) : null),
|
|
954
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
955
|
+
"p",
|
|
956
|
+
{
|
|
957
|
+
className: cn(
|
|
958
|
+
"mt-6 max-w-2xl text-lg md:text-xl text-balance",
|
|
959
|
+
descriptionClassName
|
|
960
|
+
),
|
|
961
|
+
children: description
|
|
962
|
+
}
|
|
963
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
964
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
965
|
+
"div",
|
|
966
|
+
{
|
|
967
|
+
className: cn(
|
|
968
|
+
"mt-6 md:mt-10 flex flex-col gap-4 md:flex-row",
|
|
969
|
+
actionsClassName
|
|
970
|
+
),
|
|
971
|
+
children: renderActions
|
|
972
|
+
}
|
|
973
|
+
),
|
|
974
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
975
|
+
"div",
|
|
976
|
+
{
|
|
977
|
+
className: cn(
|
|
978
|
+
"mt-16 flex items-center gap-8 text-sm",
|
|
979
|
+
statsClassName
|
|
980
|
+
),
|
|
981
|
+
children: renderStats
|
|
982
|
+
}
|
|
983
|
+
)
|
|
955
984
|
] })
|
|
956
985
|
}
|
|
957
986
|
);
|
|
@@ -87,6 +87,6 @@ interface HeroMinimalCenteredDarkProps {
|
|
|
87
87
|
*/
|
|
88
88
|
statsClassName?: string;
|
|
89
89
|
}
|
|
90
|
-
declare function HeroMinimalCenteredDark({ badge,
|
|
90
|
+
declare function HeroMinimalCenteredDark({ badge, heading, headingHighlight, description, actions, actionsSlot, stats, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, statsClassName, }: HeroMinimalCenteredDarkProps): React.JSX.Element;
|
|
91
91
|
|
|
92
92
|
export { HeroMinimalCenteredDark, type HeroMinimalCenteredDarkProps };
|
|
@@ -87,6 +87,6 @@ interface HeroMinimalCenteredDarkProps {
|
|
|
87
87
|
*/
|
|
88
88
|
statsClassName?: string;
|
|
89
89
|
}
|
|
90
|
-
declare function HeroMinimalCenteredDark({ badge,
|
|
90
|
+
declare function HeroMinimalCenteredDark({ badge, heading, headingHighlight, description, actions, actionsSlot, stats, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, statsClassName, }: HeroMinimalCenteredDarkProps): React.JSX.Element;
|
|
91
91
|
|
|
92
92
|
export { HeroMinimalCenteredDark, type HeroMinimalCenteredDarkProps };
|
|
@@ -5,63 +5,12 @@ import { clsx } from 'clsx';
|
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
8
9
|
|
|
9
10
|
// components/blocks/hero/hero-minimal-centered-dark.tsx
|
|
10
11
|
function cn(...inputs) {
|
|
11
12
|
return twMerge(clsx(inputs));
|
|
12
13
|
}
|
|
13
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
14
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
15
|
-
if (isDark) {
|
|
16
|
-
switch (variant) {
|
|
17
|
-
case "muted":
|
|
18
|
-
return "bg-background";
|
|
19
|
-
case "card":
|
|
20
|
-
return "bg-card";
|
|
21
|
-
case "accent":
|
|
22
|
-
return "bg-accent";
|
|
23
|
-
case "subtle":
|
|
24
|
-
return "bg-background/50";
|
|
25
|
-
}
|
|
26
|
-
} else {
|
|
27
|
-
switch (variant) {
|
|
28
|
-
case "muted":
|
|
29
|
-
return "bg-muted";
|
|
30
|
-
case "card":
|
|
31
|
-
return "bg-card";
|
|
32
|
-
case "accent":
|
|
33
|
-
return "bg-accent";
|
|
34
|
-
case "subtle":
|
|
35
|
-
return "bg-muted/50";
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
40
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
41
|
-
if (isDark) {
|
|
42
|
-
switch (variant) {
|
|
43
|
-
case "default":
|
|
44
|
-
return "text-foreground";
|
|
45
|
-
case "muted":
|
|
46
|
-
return "text-foreground/80";
|
|
47
|
-
case "subtle":
|
|
48
|
-
return "text-foreground/60";
|
|
49
|
-
case "accent":
|
|
50
|
-
return "text-accent-foreground";
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
switch (variant) {
|
|
54
|
-
case "default":
|
|
55
|
-
return "text-foreground";
|
|
56
|
-
case "muted":
|
|
57
|
-
return "text-muted-foreground";
|
|
58
|
-
case "subtle":
|
|
59
|
-
return "text-muted-foreground/70";
|
|
60
|
-
case "accent":
|
|
61
|
-
return "text-primary";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
14
|
function normalizePhoneNumber(input) {
|
|
66
15
|
const trimmed = input.trim();
|
|
67
16
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -855,9 +804,40 @@ var Section = React__default.forwardRef(
|
|
|
855
804
|
}
|
|
856
805
|
);
|
|
857
806
|
Section.displayName = "Section";
|
|
807
|
+
var badgeVariants = cva(
|
|
808
|
+
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
809
|
+
{
|
|
810
|
+
variants: {
|
|
811
|
+
variant: {
|
|
812
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
813
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
814
|
+
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
815
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
defaultVariants: {
|
|
819
|
+
variant: "default"
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
);
|
|
823
|
+
function Badge({
|
|
824
|
+
className,
|
|
825
|
+
variant,
|
|
826
|
+
asChild = false,
|
|
827
|
+
...props
|
|
828
|
+
}) {
|
|
829
|
+
const Comp = asChild ? Slot : "span";
|
|
830
|
+
return /* @__PURE__ */ jsx(
|
|
831
|
+
Comp,
|
|
832
|
+
{
|
|
833
|
+
"data-slot": "badge",
|
|
834
|
+
className: cn(badgeVariants({ variant }), className),
|
|
835
|
+
...props
|
|
836
|
+
}
|
|
837
|
+
);
|
|
838
|
+
}
|
|
858
839
|
function HeroMinimalCenteredDark({
|
|
859
840
|
badge,
|
|
860
|
-
showStatusDot = true,
|
|
861
841
|
heading,
|
|
862
842
|
headingHighlight,
|
|
863
843
|
description,
|
|
@@ -866,11 +846,11 @@ function HeroMinimalCenteredDark({
|
|
|
866
846
|
stats,
|
|
867
847
|
statsSlot,
|
|
868
848
|
background,
|
|
869
|
-
spacing,
|
|
849
|
+
spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
|
|
870
850
|
pattern,
|
|
871
851
|
patternOpacity,
|
|
872
852
|
className,
|
|
873
|
-
containerClassName,
|
|
853
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
874
854
|
badgeClassName,
|
|
875
855
|
headingClassName,
|
|
876
856
|
descriptionClassName,
|
|
@@ -881,7 +861,14 @@ function HeroMinimalCenteredDark({
|
|
|
881
861
|
if (actionsSlot) return actionsSlot;
|
|
882
862
|
if (!actions || actions.length === 0) return null;
|
|
883
863
|
return actions.map((action, index) => {
|
|
884
|
-
const {
|
|
864
|
+
const {
|
|
865
|
+
label,
|
|
866
|
+
icon,
|
|
867
|
+
iconAfter,
|
|
868
|
+
children,
|
|
869
|
+
className: actionClassName,
|
|
870
|
+
...pressableProps
|
|
871
|
+
} = action;
|
|
885
872
|
return /* @__PURE__ */ jsx(
|
|
886
873
|
Pressable,
|
|
887
874
|
{
|
|
@@ -901,36 +888,78 @@ function HeroMinimalCenteredDark({
|
|
|
901
888
|
const renderStats = useMemo(() => {
|
|
902
889
|
if (statsSlot) return statsSlot;
|
|
903
890
|
if (!stats || stats.length === 0) return null;
|
|
904
|
-
return stats.map((stat, index) => /* @__PURE__ */ jsxs(
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
891
|
+
return stats.map((stat, index) => /* @__PURE__ */ jsxs(
|
|
892
|
+
"div",
|
|
893
|
+
{
|
|
894
|
+
className: cn("flex items-center gap-2", stat.className),
|
|
895
|
+
children: [
|
|
896
|
+
stat.icon,
|
|
897
|
+
/* @__PURE__ */ jsx("span", { children: stat.value })
|
|
898
|
+
]
|
|
899
|
+
},
|
|
900
|
+
index
|
|
901
|
+
));
|
|
908
902
|
}, [statsSlot, stats]);
|
|
909
903
|
return /* @__PURE__ */ jsx(
|
|
910
904
|
Section,
|
|
911
905
|
{
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
906
|
+
background,
|
|
907
|
+
spacing,
|
|
908
|
+
pattern,
|
|
909
|
+
patternOpacity,
|
|
910
|
+
className,
|
|
911
|
+
containerClassName,
|
|
912
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
913
|
+
badge && /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-2", badgeClassName), children: typeof badge === "string" ? /* @__PURE__ */ jsx("span", { children: badge }) : badge }),
|
|
914
|
+
(heading || headingHighlight) && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
915
|
+
"h1",
|
|
916
|
+
{
|
|
917
|
+
className: cn(
|
|
918
|
+
"mt-8 max-w-4xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
919
|
+
headingClassName
|
|
920
|
+
),
|
|
921
|
+
children: heading
|
|
922
|
+
}
|
|
923
|
+
) : heading ? /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading }) : headingHighlight ? /* @__PURE__ */ jsx(
|
|
924
|
+
"h1",
|
|
925
|
+
{
|
|
926
|
+
className: cn(
|
|
927
|
+
"mt-8 max-w-4xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
|
|
928
|
+
headingClassName
|
|
929
|
+
),
|
|
930
|
+
children: headingHighlight
|
|
931
|
+
}
|
|
932
|
+
) : null),
|
|
933
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
934
|
+
"p",
|
|
935
|
+
{
|
|
936
|
+
className: cn(
|
|
937
|
+
"mt-6 max-w-2xl text-lg md:text-xl text-balance",
|
|
938
|
+
descriptionClassName
|
|
939
|
+
),
|
|
940
|
+
children: description
|
|
941
|
+
}
|
|
942
|
+
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
943
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
|
|
944
|
+
"div",
|
|
945
|
+
{
|
|
946
|
+
className: cn(
|
|
947
|
+
"mt-6 md:mt-10 flex flex-col gap-4 md:flex-row",
|
|
948
|
+
actionsClassName
|
|
949
|
+
),
|
|
950
|
+
children: renderActions
|
|
951
|
+
}
|
|
952
|
+
),
|
|
953
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx(
|
|
954
|
+
"div",
|
|
955
|
+
{
|
|
956
|
+
className: cn(
|
|
957
|
+
"mt-16 flex items-center gap-8 text-sm",
|
|
958
|
+
statsClassName
|
|
959
|
+
),
|
|
960
|
+
children: renderStats
|
|
961
|
+
}
|
|
962
|
+
)
|
|
934
963
|
] })
|
|
935
964
|
}
|
|
936
965
|
);
|
|
@@ -980,7 +980,7 @@ function HeroMobileAppDownload({
|
|
|
980
980
|
notificationSlot,
|
|
981
981
|
background,
|
|
982
982
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
983
|
-
spacing = "
|
|
983
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
984
984
|
pattern,
|
|
985
985
|
patternOpacity,
|
|
986
986
|
className,
|
|
@@ -959,7 +959,7 @@ function HeroMobileAppDownload({
|
|
|
959
959
|
notificationSlot,
|
|
960
960
|
background,
|
|
961
961
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
962
|
-
spacing = "
|
|
962
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
963
963
|
pattern,
|
|
964
964
|
patternOpacity,
|
|
965
965
|
className,
|
|
@@ -878,7 +878,7 @@ function HeroStartupLaunchCta({
|
|
|
878
878
|
patternClassName,
|
|
879
879
|
className,
|
|
880
880
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
881
|
-
spacing = "
|
|
881
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
882
882
|
contentClassName,
|
|
883
883
|
badgeClassName,
|
|
884
884
|
headingClassName,
|
|
@@ -857,7 +857,7 @@ function HeroStartupLaunchCta({
|
|
|
857
857
|
patternClassName,
|
|
858
858
|
className,
|
|
859
859
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
860
|
-
spacing = "
|
|
860
|
+
spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
|
|
861
861
|
contentClassName,
|
|
862
862
|
badgeClassName,
|
|
863
863
|
headingClassName,
|