@opensite/ui 1.6.9 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/hero-billing-platform-logos.cjs +77 -52
  2. package/dist/hero-billing-platform-logos.js +77 -51
  3. package/dist/hero-conversion-video-play.cjs +240 -78
  4. package/dist/hero-conversion-video-play.js +233 -75
  5. package/dist/hero-customer-support-layered.cjs +1 -1
  6. package/dist/hero-customer-support-layered.js +1 -1
  7. package/dist/hero-dashed-border-features.cjs +33 -24
  8. package/dist/hero-dashed-border-features.js +33 -24
  9. package/dist/hero-design-showcase-logos.cjs +102 -38
  10. package/dist/hero-design-showcase-logos.js +102 -38
  11. package/dist/hero-grid-pattern-solutions.cjs +187 -49
  12. package/dist/hero-grid-pattern-solutions.d.cts +1 -4
  13. package/dist/hero-grid-pattern-solutions.d.ts +1 -4
  14. package/dist/hero-grid-pattern-solutions.js +188 -50
  15. package/dist/hero-marketplace-scattered-images.cjs +120 -79
  16. package/dist/hero-marketplace-scattered-images.js +120 -79
  17. package/dist/hero-mentorship-video-split.cjs +32 -13
  18. package/dist/hero-mentorship-video-split.js +32 -13
  19. package/dist/hero-premium-split-avatars.cjs +2 -2
  20. package/dist/hero-premium-split-avatars.js +2 -2
  21. package/dist/hero-productivity-launcher-video.cjs +45 -143
  22. package/dist/hero-productivity-launcher-video.d.cts +5 -23
  23. package/dist/hero-productivity-launcher-video.d.ts +5 -23
  24. package/dist/hero-productivity-launcher-video.js +45 -143
  25. package/dist/hero-split-spiral-shapes.cjs +47 -38
  26. package/dist/hero-split-spiral-shapes.js +47 -38
  27. package/dist/hero-task-timer-animated.cjs +59 -59
  28. package/dist/hero-task-timer-animated.js +59 -59
  29. package/dist/registry.cjs +772 -439
  30. package/dist/registry.js +772 -439
  31. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
1
  "use client";
2
2
  import * as React from 'react';
3
- import React__default, { useMemo } from 'react';
3
+ import React__default, { useState, useMemo, useCallback } from 'react';
4
4
  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
8
  import { Img } from '@page-speed/img';
9
+ import { Lightbox } from '@page-speed/lightbox';
10
+ import { Slot } from '@radix-ui/react-slot';
9
11
 
10
12
  // components/blocks/hero/hero-grid-pattern-solutions.tsx
11
13
  function cn(...inputs) {
@@ -909,9 +911,41 @@ var Section = React__default.forwardRef(
909
911
  }
910
912
  );
911
913
  Section.displayName = "Section";
914
+ var badgeVariants = cva(
915
+ "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",
916
+ {
917
+ variants: {
918
+ variant: {
919
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
920
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
921
+ 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",
922
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
923
+ }
924
+ },
925
+ defaultVariants: {
926
+ variant: "default"
927
+ }
928
+ }
929
+ );
930
+ function Badge({
931
+ className,
932
+ variant,
933
+ asChild = false,
934
+ ...props
935
+ }) {
936
+ const Comp = asChild ? Slot : "span";
937
+ return /* @__PURE__ */ jsx(
938
+ Comp,
939
+ {
940
+ "data-slot": "badge",
941
+ className: cn(badgeVariants({ variant }), className),
942
+ ...props
943
+ }
944
+ );
945
+ }
912
946
  function HeroGridPatternSolutions({
913
947
  badgeText,
914
- badgeHref = "#",
948
+ badgeHref,
915
949
  badgeSlot,
916
950
  heading,
917
951
  description,
@@ -919,7 +953,6 @@ function HeroGridPatternSolutions({
919
953
  actionsSlot,
920
954
  images,
921
955
  imagesSlot,
922
- showGridPattern = true,
923
956
  background,
924
957
  spacing = "py-32 md:py-32",
925
958
  pattern,
@@ -933,56 +966,114 @@ function HeroGridPatternSolutions({
933
966
  imagesClassName,
934
967
  optixFlowConfig
935
968
  }) {
969
+ const [lightboxOpen, setLightboxOpen] = useState(false);
970
+ const [lightboxIndex, setLightboxIndex] = useState(0);
971
+ const lightboxItems = useMemo(
972
+ () => (images ?? []).map((img, index) => ({
973
+ id: `hero-grid-image-${index}`,
974
+ type: "image",
975
+ src: img.src,
976
+ alt: img.alt,
977
+ download: true,
978
+ share: true
979
+ })),
980
+ [images]
981
+ );
982
+ const handleImageClick = useCallback((index) => {
983
+ setLightboxIndex(index);
984
+ setLightboxOpen(true);
985
+ }, []);
986
+ const handleLightboxClose = useCallback(() => {
987
+ setLightboxOpen(false);
988
+ }, []);
936
989
  const renderBadge = useMemo(() => {
937
990
  if (badgeSlot) return badgeSlot;
938
- return /* @__PURE__ */ jsxs(
939
- Pressable,
940
- {
941
- href: badgeHref,
942
- className: "mx-auto mb-4 flex w-fit items-center gap-2 rounded-full px-4 py-2 text-sm bg-card",
943
- children: [
944
- badgeText,
945
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
946
- ]
947
- }
948
- );
991
+ if (!badgeText) return null;
992
+ return /* @__PURE__ */ jsx(Pressable, { href: badgeHref, children: /* @__PURE__ */ jsxs(Badge, { className: "px-2", children: [
993
+ badgeText,
994
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right" })
995
+ ] }) });
949
996
  }, [badgeSlot, badgeHref, badgeText]);
950
997
  const renderActions = useMemo(() => {
951
998
  if (actionsSlot) return actionsSlot;
952
999
  if (!actions || actions.length === 0) return null;
953
- return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col justify-center gap-x-2 gap-y-3 sm:flex-row", actionsClassName), children: actions.map((action, index) => {
954
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
955
- return /* @__PURE__ */ jsx(
956
- Pressable,
957
- {
958
- asButton: true,
959
- className: actionClassName,
960
- ...pressableProps,
961
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
962
- icon,
1000
+ return /* @__PURE__ */ jsx(
1001
+ "div",
1002
+ {
1003
+ className: cn(
1004
+ "flex flex-col justify-center gap-x-2 gap-y-3 sm:flex-row",
1005
+ actionsClassName
1006
+ ),
1007
+ children: actions.map((action, index) => {
1008
+ const {
963
1009
  label,
964
- iconAfter
965
- ] })
966
- },
967
- index
968
- );
969
- }) });
1010
+ icon,
1011
+ iconAfter,
1012
+ children,
1013
+ className: actionClassName,
1014
+ ...pressableProps
1015
+ } = action;
1016
+ return /* @__PURE__ */ jsx(
1017
+ Pressable,
1018
+ {
1019
+ asButton: true,
1020
+ className: actionClassName,
1021
+ ...pressableProps,
1022
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1023
+ icon,
1024
+ label,
1025
+ iconAfter
1026
+ ] })
1027
+ },
1028
+ index
1029
+ );
1030
+ })
1031
+ }
1032
+ );
970
1033
  }, [actionsSlot, actions, actionsClassName]);
971
1034
  const renderImages = useMemo(() => {
972
1035
  if (imagesSlot) return imagesSlot;
973
1036
  if (!images || images.length === 0) return null;
974
- return /* @__PURE__ */ jsx("div", { className: cn("mt-20 grid gap-6 md:grid-cols-10", imagesClassName), children: images.map((image, index) => /* @__PURE__ */ jsx(
975
- Img,
1037
+ return /* @__PURE__ */ jsx(
1038
+ "div",
976
1039
  {
977
- src: image.src,
978
- alt: image.alt,
979
- className: cn("h-full max-h-[500px] w-full rounded-xl object-cover", image.className),
980
- optixFlowConfig
981
- },
982
- index
983
- )) });
984
- }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
985
- return /* @__PURE__ */ jsx(
1040
+ className: cn(
1041
+ "mt-8 md:mt-20 grid grid-cols-2 gap-4 md:flex md:flex-row md:items-center md:justify-center md:gap-6",
1042
+ imagesClassName
1043
+ ),
1044
+ children: images.map((image, index) => /* @__PURE__ */ jsx(
1045
+ "div",
1046
+ {
1047
+ className: "cursor-pointer overflow-hidden rounded-xl transition-transform hover:scale-[1.02] hover:shadow-lg",
1048
+ onClick: () => handleImageClick(index),
1049
+ role: "button",
1050
+ tabIndex: 0,
1051
+ onKeyDown: (e) => {
1052
+ if (e.key === "Enter" || e.key === " ") {
1053
+ e.preventDefault();
1054
+ handleImageClick(index);
1055
+ }
1056
+ },
1057
+ "aria-label": `View ${image.alt} in lightbox`,
1058
+ children: /* @__PURE__ */ jsx(
1059
+ Img,
1060
+ {
1061
+ src: image.src,
1062
+ alt: image.alt,
1063
+ className: cn(
1064
+ "h-full max-h-[200px] max-w-[200px] w-full rounded-xl object-cover shadow-xl",
1065
+ image.className
1066
+ ),
1067
+ optixFlowConfig
1068
+ }
1069
+ )
1070
+ },
1071
+ index
1072
+ ))
1073
+ }
1074
+ );
1075
+ }, [imagesSlot, images, imagesClassName, optixFlowConfig, handleImageClick]);
1076
+ return /* @__PURE__ */ jsxs(
986
1077
  Section,
987
1078
  {
988
1079
  background,
@@ -991,18 +1082,65 @@ function HeroGridPatternSolutions({
991
1082
  patternOpacity,
992
1083
  className: cn("relative flex items-center justify-center", className),
993
1084
  containerClassName,
994
- children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
995
- /* @__PURE__ */ jsxs("div", { className: "relative overflow-hidden", children: [
996
- showGridPattern && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 -top-1 -left-1 -z-10 h-full w-full bg-[linear-gradient(to_right,hsl(var(--muted-foreground))_1px,transparent_1px),linear-gradient(to_bottom,hsl(var(--muted-foreground))_1px,transparent_1px)] mask-[radial-gradient(ellipse_50%_100%_at_50%_50%,transparent_60%,#000_100%)] bg-size-[92px_92px] opacity-15" }),
997
- /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
1085
+ children: [
1086
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
1087
+ /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
998
1088
  renderBadge,
999
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl", headingClassName), children: heading })),
1000
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto mb-8 max-w-2xl text-center lg:text-xl text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1089
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
1090
+ "h1",
1091
+ {
1092
+ className: cn(
1093
+ "my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl text-balance",
1094
+ headingClassName
1095
+ ),
1096
+ children: heading
1097
+ }
1098
+ ) : /* @__PURE__ */ jsx(
1099
+ "h1",
1100
+ {
1101
+ className: cn(
1102
+ "my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl text-balance",
1103
+ headingClassName
1104
+ ),
1105
+ children: heading
1106
+ }
1107
+ )),
1108
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
1109
+ "p",
1110
+ {
1111
+ className: cn(
1112
+ "mx-auto mb-8 max-w-2xl text-center lg:text-xl text-balance",
1113
+ descriptionClassName
1114
+ ),
1115
+ children: description
1116
+ }
1117
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1001
1118
  renderActions
1002
- ] })
1119
+ ] }) }),
1120
+ renderImages
1003
1121
  ] }),
1004
- renderImages
1005
- ] })
1122
+ lightboxOpen && /* @__PURE__ */ jsx(
1123
+ Lightbox,
1124
+ {
1125
+ items: lightboxItems,
1126
+ initialIndex: lightboxIndex,
1127
+ layout: "horizontal",
1128
+ controls: {
1129
+ navigation: true,
1130
+ thumbnails: true,
1131
+ download: true,
1132
+ share: true,
1133
+ fullscreen: true,
1134
+ captions: true,
1135
+ counter: true
1136
+ },
1137
+ onClose: handleLightboxClose,
1138
+ enableKeyboardShortcuts: true,
1139
+ closeOnEscape: true,
1140
+ closeOnBackdropClick: true
1141
+ }
1142
+ )
1143
+ ]
1006
1144
  }
1007
1145
  );
1008
1146
  }
@@ -33,32 +33,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
33
  function cn(...inputs) {
34
34
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
35
  }
36
- function getNestedCardBg(parentBg, variant = "muted", options) {
37
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
38
- if (isDark) {
39
- switch (variant) {
40
- case "muted":
41
- return "bg-background";
42
- case "card":
43
- return "bg-card";
44
- case "accent":
45
- return "bg-accent";
46
- case "subtle":
47
- return "bg-background/50";
48
- }
49
- } else {
50
- switch (variant) {
51
- case "muted":
52
- return "bg-muted";
53
- case "card":
54
- return "bg-card";
55
- case "accent":
56
- return "bg-accent";
57
- case "subtle":
58
- return "bg-muted/50";
59
- }
60
- }
61
- }
62
36
  function normalizePhoneNumber(input) {
63
37
  const trimmed = input.trim();
64
38
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -963,7 +937,7 @@ function HeroMarketplaceScatteredImages({
963
937
  action,
964
938
  actionSlot,
965
939
  tagline,
966
- taglineIcon = "lucide/globe",
940
+ taglineIcon,
967
941
  taglineSlot,
968
942
  images,
969
943
  imagesSlot,
@@ -983,7 +957,14 @@ function HeroMarketplaceScatteredImages({
983
957
  const renderAction = React.useMemo(() => {
984
958
  if (actionSlot) return actionSlot;
985
959
  if (!action) return null;
986
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
960
+ const {
961
+ label,
962
+ icon,
963
+ iconAfter,
964
+ children,
965
+ className: actionClassName,
966
+ ...pressableProps
967
+ } = action;
987
968
  return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
988
969
  icon,
989
970
  label,
@@ -992,6 +973,7 @@ function HeroMarketplaceScatteredImages({
992
973
  }, [actionSlot, action]);
993
974
  const renderTagline = React.useMemo(() => {
994
975
  if (taglineSlot) return taglineSlot;
976
+ if (!tagline || !taglineIcon) return null;
995
977
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-7 flex items-start justify-center gap-2 font-medium md:text-xl", children: [
996
978
  /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: taglineIcon, size: 20, className: "mt-0.5" }),
997
979
  tagline
@@ -1016,50 +998,74 @@ function HeroMarketplaceScatteredImages({
1016
998
  const renderImages = React.useMemo(() => {
1017
999
  if (imagesSlot) return imagesSlot;
1018
1000
  if (!images || images.length === 0) return null;
1019
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-14 max-w-7xl overflow-hidden py-8", imagesClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-3", children: columns.map((colImages, colIndex) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-3", children: colImages.map((image, imgIndex) => {
1020
- const height = heightPatterns[colIndex][imgIndex % heightPatterns[colIndex].length];
1021
- const direction = colIndex % 2 === 0 ? "up" : "down";
1022
- return /* @__PURE__ */ jsxRuntime.jsx(
1023
- framerMotion.motion.div,
1024
- {
1025
- initial: {
1026
- opacity: 0,
1027
- scale: 0.9,
1028
- y: direction === "up" ? 50 : -50
1029
- },
1030
- whileInView: {
1031
- opacity: 1,
1032
- scale: 1,
1033
- y: 0
1034
- },
1035
- transition: {
1036
- duration: 0.5,
1037
- delay: imgIndex * 0.1
1001
+ return /* @__PURE__ */ jsxRuntime.jsx(
1002
+ "div",
1003
+ {
1004
+ className: cn(
1005
+ "mx-auto max-w-7xl overflow-hidden py-8",
1006
+ imagesClassName
1007
+ ),
1008
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-3", children: columns.map((colImages, colIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1009
+ "div",
1010
+ {
1011
+ className: cn(
1012
+ "grid gap-3",
1013
+ colIndex === 2 && "hidden md:grid"
1014
+ ),
1015
+ children: colImages.map((image, imgIndex) => {
1016
+ const height = heightPatterns[colIndex][imgIndex % heightPatterns[colIndex].length];
1017
+ const direction = colIndex % 2 === 0 ? "up" : "down";
1018
+ return /* @__PURE__ */ jsxRuntime.jsx(
1019
+ framerMotion.motion.div,
1020
+ {
1021
+ initial: {
1022
+ opacity: 0,
1023
+ scale: 0.9,
1024
+ y: direction === "up" ? 50 : -50
1025
+ },
1026
+ whileInView: {
1027
+ opacity: 1,
1028
+ scale: 1,
1029
+ y: 0
1030
+ },
1031
+ transition: {
1032
+ duration: 0.5,
1033
+ delay: imgIndex * 0.1
1034
+ },
1035
+ viewport: { once: true },
1036
+ className: cn("w-full overflow-hidden rounded-2xl"),
1037
+ style: { height },
1038
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1039
+ img.Img,
1040
+ {
1041
+ src: image.src,
1042
+ alt: image.alt,
1043
+ className: cn(
1044
+ "h-full w-full rounded-2xl object-cover",
1045
+ image.className
1046
+ ),
1047
+ loading: "lazy",
1048
+ optixFlowConfig
1049
+ }
1050
+ )
1051
+ },
1052
+ imgIndex
1053
+ );
1054
+ })
1038
1055
  },
1039
- viewport: { once: true },
1040
- className: cn(
1041
- "w-full overflow-hidden rounded-2xl",
1042
- getNestedCardBg(background)
1043
- ),
1044
- style: { height },
1045
- children: /* @__PURE__ */ jsxRuntime.jsx(
1046
- img.Img,
1047
- {
1048
- src: image.src,
1049
- alt: image.alt,
1050
- className: cn(
1051
- "h-full w-full rounded-2xl object-cover",
1052
- image.className
1053
- ),
1054
- loading: "lazy",
1055
- optixFlowConfig
1056
- }
1057
- )
1058
- },
1059
- imgIndex
1060
- );
1061
- }) }, colIndex)) }) });
1062
- }, [imagesSlot, images, imagesClassName, optixFlowConfig, columns, heightPatterns, background]);
1056
+ colIndex
1057
+ )) })
1058
+ }
1059
+ );
1060
+ }, [
1061
+ imagesSlot,
1062
+ images,
1063
+ imagesClassName,
1064
+ optixFlowConfig,
1065
+ columns,
1066
+ heightPatterns,
1067
+ background
1068
+ ]);
1063
1069
  return /* @__PURE__ */ jsxRuntime.jsx(
1064
1070
  Section,
1065
1071
  {
@@ -1069,14 +1075,49 @@ function HeroMarketplaceScatteredImages({
1069
1075
  patternOpacity,
1070
1076
  className: cn("relative flex items-center justify-center", className),
1071
1077
  containerClassName,
1072
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1073
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative mx-auto max-w-xl py-10 text-center", contentClassName), children: [
1074
- showGridPattern && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 -z-10 h-full w-full bg-[linear-gradient(to_right,hsl(var(--muted))_1px,transparent_1px),linear-gradient(to_bottom,hsl(var(--muted))_1px,transparent_1px)] mask-[radial-gradient(ellipse_50%_100%_at_50%_50%,#000_60%,transparent_100%)] bg-size-[64px_64px]" }),
1075
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-3 text-4xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-3 text-4xl lg:text-7xl", headingClassName), children: heading })),
1076
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-5 text-sm md:text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1077
- renderAction,
1078
- renderTagline
1079
- ] }),
1078
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 items-center", children: [
1079
+ /* @__PURE__ */ jsxRuntime.jsxs(
1080
+ "div",
1081
+ {
1082
+ className: cn(
1083
+ "relative mx-auto max-w-xl py-10 text-center flex flex-col gap-6 items-center",
1084
+ contentClassName
1085
+ ),
1086
+ children: [
1087
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1088
+ "h1",
1089
+ {
1090
+ className: cn(
1091
+ "mb-3 text-4xl lg:text-7xl text-balance",
1092
+ headingClassName
1093
+ ),
1094
+ children: heading
1095
+ }
1096
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1097
+ "h1",
1098
+ {
1099
+ className: cn(
1100
+ "mb-3 text-4xl lg:text-7xl text-balance",
1101
+ headingClassName
1102
+ ),
1103
+ children: heading
1104
+ }
1105
+ )),
1106
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1107
+ "p",
1108
+ {
1109
+ className: cn(
1110
+ "mb-5 text-sm md:text-base text-balance",
1111
+ descriptionClassName
1112
+ ),
1113
+ children: description
1114
+ }
1115
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1116
+ renderAction,
1117
+ renderTagline
1118
+ ]
1119
+ }
1120
+ ),
1080
1121
  renderImages
1081
1122
  ] })
1082
1123
  }