@opensite/ui 1.6.7 → 1.6.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.
Files changed (69) hide show
  1. package/dist/hero-architecture-fullscreen.cjs +7 -54
  2. package/dist/hero-architecture-fullscreen.js +7 -54
  3. package/dist/hero-badge-shadow-overlay.cjs +42 -45
  4. package/dist/hero-badge-shadow-overlay.d.cts +14 -2
  5. package/dist/hero-badge-shadow-overlay.d.ts +14 -2
  6. package/dist/hero-badge-shadow-overlay.js +42 -45
  7. package/dist/hero-billing-platform-logos.cjs +5 -9
  8. package/dist/hero-billing-platform-logos.d.cts +1 -5
  9. package/dist/hero-billing-platform-logos.d.ts +1 -5
  10. package/dist/hero-billing-platform-logos.js +5 -9
  11. package/dist/hero-centered-gradient-cta.cjs +12 -68
  12. package/dist/hero-centered-gradient-cta.js +12 -68
  13. package/dist/hero-conversion-video-play.cjs +13 -64
  14. package/dist/hero-conversion-video-play.js +13 -64
  15. package/dist/hero-customer-support-layered.cjs +1 -1
  16. package/dist/hero-customer-support-layered.js +1 -1
  17. package/dist/hero-dashed-border-features.cjs +8 -71
  18. package/dist/hero-dashed-border-features.js +8 -71
  19. package/dist/hero-design-showcase-logos.cjs +7 -32
  20. package/dist/hero-design-showcase-logos.js +7 -32
  21. package/dist/hero-floating-images.cjs +1 -1
  22. package/dist/hero-floating-images.js +1 -1
  23. package/dist/hero-grid-pattern-solutions.cjs +7 -66
  24. package/dist/hero-grid-pattern-solutions.js +7 -66
  25. package/dist/hero-hiring-animated-text.cjs +10 -5
  26. package/dist/hero-hiring-animated-text.js +10 -5
  27. package/dist/hero-marketplace-scattered-images.cjs +7 -32
  28. package/dist/hero-marketplace-scattered-images.js +7 -32
  29. package/dist/hero-mentorship-video-split.cjs +11 -14
  30. package/dist/hero-mentorship-video-split.js +11 -14
  31. package/dist/hero-mobile-app-download.cjs +2 -2
  32. package/dist/hero-mobile-app-download.d.cts +1 -1
  33. package/dist/hero-mobile-app-download.d.ts +1 -1
  34. package/dist/hero-mobile-app-download.js +2 -2
  35. package/dist/hero-premium-split-avatars.cjs +11 -9
  36. package/dist/hero-premium-split-avatars.d.cts +5 -1
  37. package/dist/hero-premium-split-avatars.d.ts +5 -1
  38. package/dist/hero-premium-split-avatars.js +11 -9
  39. package/dist/hero-presentation-platform-video.cjs +12 -9
  40. package/dist/hero-presentation-platform-video.d.cts +5 -1
  41. package/dist/hero-presentation-platform-video.d.ts +5 -1
  42. package/dist/hero-presentation-platform-video.js +12 -9
  43. package/dist/hero-productivity-launcher-video.cjs +11 -35
  44. package/dist/hero-productivity-launcher-video.js +11 -35
  45. package/dist/hero-spiral-pattern-cards.cjs +49 -92
  46. package/dist/hero-spiral-pattern-cards.d.cts +20 -3
  47. package/dist/hero-spiral-pattern-cards.d.ts +20 -3
  48. package/dist/hero-spiral-pattern-cards.js +49 -92
  49. package/dist/hero-split-spiral-shapes.cjs +43 -90
  50. package/dist/hero-split-spiral-shapes.d.cts +17 -4
  51. package/dist/hero-split-spiral-shapes.d.ts +17 -4
  52. package/dist/hero-split-spiral-shapes.js +43 -90
  53. package/dist/hero-startup-launch-cta.cjs +2 -2
  54. package/dist/hero-startup-launch-cta.js +2 -2
  55. package/dist/hero-task-timer-animated.cjs +64 -156
  56. package/dist/hero-task-timer-animated.d.cts +13 -1
  57. package/dist/hero-task-timer-animated.d.ts +13 -1
  58. package/dist/hero-task-timer-animated.js +64 -156
  59. package/dist/hero-testimonial-image-grid.cjs +10 -38
  60. package/dist/hero-testimonial-image-grid.js +10 -38
  61. package/dist/hero-therapy-testimonial-grid.cjs +11 -40
  62. package/dist/hero-therapy-testimonial-grid.js +11 -40
  63. package/dist/hero-video-background-dark.cjs +10 -34
  64. package/dist/hero-video-background-dark.d.cts +5 -1
  65. package/dist/hero-video-background-dark.d.ts +5 -1
  66. package/dist/hero-video-background-dark.js +10 -34
  67. package/dist/registry.cjs +353 -302
  68. package/dist/registry.js +353 -302
  69. package/package.json +1 -1
@@ -11,32 +11,6 @@ import { Img } from '@page-speed/img';
11
11
  function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
- function getTextColor(parentBg, variant = "default", options) {
15
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
- if (isDark) {
17
- switch (variant) {
18
- case "default":
19
- return "text-foreground";
20
- case "muted":
21
- return "text-foreground/80";
22
- case "subtle":
23
- return "text-foreground/60";
24
- case "accent":
25
- return "text-accent-foreground";
26
- }
27
- } else {
28
- switch (variant) {
29
- case "default":
30
- return "text-foreground";
31
- case "muted":
32
- return "text-muted-foreground";
33
- case "subtle":
34
- return "text-muted-foreground/70";
35
- case "accent":
36
- return "text-primary";
37
- }
38
- }
39
- }
40
14
  function normalizePhoneNumber(input) {
41
15
  const trimmed = input.trim();
42
16
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -947,11 +921,11 @@ function HeroMarketplaceScatteredImages({
947
921
  imagesSlot,
948
922
  showGridPattern = true,
949
923
  background,
950
- spacing,
924
+ spacing = "py-32 md:py-32",
951
925
  pattern,
952
926
  patternOpacity,
953
927
  className,
954
- containerClassName,
928
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
955
929
  contentClassName,
956
930
  headingClassName,
957
931
  descriptionClassName,
@@ -996,12 +970,13 @@ function HeroMarketplaceScatteredImages({
996
970
  spacing,
997
971
  pattern,
998
972
  patternOpacity,
999
- className: cn(className),
1000
- children: /* @__PURE__ */ jsxs("div", { className: containerClassName, children: [
1001
- /* @__PURE__ */ jsxs("div", { className: cn("relative container mx-auto max-w-xl py-10 text-center", contentClassName), children: [
973
+ className: cn("relative flex items-center justify-center", className),
974
+ containerClassName,
975
+ children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
976
+ /* @__PURE__ */ jsxs("div", { className: cn("relative mx-auto max-w-xl py-10 text-center", contentClassName), children: [
1002
977
  showGridPattern && /* @__PURE__ */ 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]" }),
1003
978
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mb-3 text-4xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("mb-3 text-4xl lg:text-7xl", headingClassName), children: heading })),
1004
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-5 text-sm md:text-base", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
979
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-5 text-sm md:text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1005
980
  renderAction,
1006
981
  renderTagline
1007
982
  ] }),
@@ -36,10 +36,6 @@ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive)
36
36
  function cn(...inputs) {
37
37
  return tailwindMerge.twMerge(clsx.clsx(inputs));
38
38
  }
39
- function getAccentColor(parentBg, options) {
40
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
- return isDark ? "text-accent-foreground" : "text-primary";
42
- }
43
39
  function normalizePhoneNumber(input) {
44
40
  const trimmed = input.trim();
45
41
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1032,19 +1028,19 @@ function HeroMentorshipVideoSplit({
1032
1028
  description,
1033
1029
  action,
1034
1030
  actionSlot,
1035
- videoLabel = "Watch our introduction to discover our services",
1031
+ videoLabel,
1036
1032
  videoThumbnail,
1037
- videoUrl = "https://www.youtube.com/embed/your-video-id",
1038
- videoTitle = "Presentation Video",
1033
+ videoUrl,
1034
+ videoTitle,
1039
1035
  videoSlot,
1040
1036
  image,
1041
1037
  imageSlot,
1042
1038
  background,
1043
- spacing,
1039
+ spacing = "py-32 md:py-32",
1044
1040
  pattern,
1045
1041
  patternOpacity,
1046
1042
  className,
1047
- containerClassName,
1043
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
1048
1044
  contentClassName,
1049
1045
  headingClassName,
1050
1046
  descriptionClassName,
@@ -1066,7 +1062,7 @@ function HeroMentorshipVideoSplit({
1066
1062
  if (videoSlot) return videoSlot;
1067
1063
  if (!videoThumbnail) return null;
1068
1064
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-97.5 flex-col gap-6", children: [
1069
- videoLabel && (typeof videoLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl", getAccentColor(background)), children: videoLabel }) : videoLabel),
1065
+ videoLabel && (typeof videoLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-accent-foreground", children: videoLabel }) : videoLabel),
1070
1066
  /* @__PURE__ */ jsxRuntime.jsx(
1071
1067
  Pressable,
1072
1068
  {
@@ -1119,12 +1115,13 @@ function HeroMentorshipVideoSplit({
1119
1115
  spacing,
1120
1116
  pattern,
1121
1117
  patternOpacity,
1122
- className: cn(className),
1123
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-1 gap-6 lg:grid-cols-2", children: [
1118
+ className: cn("relative flex items-center justify-center", className),
1119
+ containerClassName,
1120
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-1 gap-6 lg:grid-cols-2", children: [
1124
1121
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex h-full flex-col justify-between gap-12", contentClassName), children: [
1125
1122
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-165 flex-col gap-9", children: [
1126
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-[2.5rem] leading-none sm:text-[3.4375rem] md:text-[4rem]", getAccentColor(background), headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-[2.5rem] leading-none sm:text-[3.4375rem] md:text-[4rem]", getAccentColor(background), headingClassName), children: heading })),
1127
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg font-medium md:text-xl", getAccentColor(background), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1123
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-[2.5rem] leading-none text-accent-foreground sm:text-[3.4375rem] md:text-[4rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-[2.5rem] leading-none text-accent-foreground sm:text-[3.4375rem] md:text-[4rem]", headingClassName), children: heading })),
1124
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg font-medium text-accent-foreground md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1128
1125
  renderAction
1129
1126
  ] }),
1130
1127
  renderVideoSection
@@ -13,10 +13,6 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
13
13
  function cn(...inputs) {
14
14
  return twMerge(clsx(inputs));
15
15
  }
16
- function getAccentColor(parentBg, options) {
17
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
18
- return isDark ? "text-accent-foreground" : "text-primary";
19
- }
20
16
  function normalizePhoneNumber(input) {
21
17
  const trimmed = input.trim();
22
18
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1009,19 +1005,19 @@ function HeroMentorshipVideoSplit({
1009
1005
  description,
1010
1006
  action,
1011
1007
  actionSlot,
1012
- videoLabel = "Watch our introduction to discover our services",
1008
+ videoLabel,
1013
1009
  videoThumbnail,
1014
- videoUrl = "https://www.youtube.com/embed/your-video-id",
1015
- videoTitle = "Presentation Video",
1010
+ videoUrl,
1011
+ videoTitle,
1016
1012
  videoSlot,
1017
1013
  image,
1018
1014
  imageSlot,
1019
1015
  background,
1020
- spacing,
1016
+ spacing = "py-32 md:py-32",
1021
1017
  pattern,
1022
1018
  patternOpacity,
1023
1019
  className,
1024
- containerClassName,
1020
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
1025
1021
  contentClassName,
1026
1022
  headingClassName,
1027
1023
  descriptionClassName,
@@ -1043,7 +1039,7 @@ function HeroMentorshipVideoSplit({
1043
1039
  if (videoSlot) return videoSlot;
1044
1040
  if (!videoThumbnail) return null;
1045
1041
  return /* @__PURE__ */ jsxs("div", { className: "flex max-w-97.5 flex-col gap-6", children: [
1046
- videoLabel && (typeof videoLabel === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl", getAccentColor(background)), children: videoLabel }) : videoLabel),
1042
+ videoLabel && (typeof videoLabel === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xl text-accent-foreground", children: videoLabel }) : videoLabel),
1047
1043
  /* @__PURE__ */ jsx(
1048
1044
  Pressable,
1049
1045
  {
@@ -1096,12 +1092,13 @@ function HeroMentorshipVideoSplit({
1096
1092
  spacing,
1097
1093
  pattern,
1098
1094
  patternOpacity,
1099
- className: cn(className),
1100
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-1 gap-6 lg:grid-cols-2", children: [
1095
+ className: cn("relative flex items-center justify-center", className),
1096
+ containerClassName,
1097
+ children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid w-full grid-cols-1 gap-6 lg:grid-cols-2", children: [
1101
1098
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: cn("flex h-full flex-col justify-between gap-12", contentClassName), children: [
1102
1099
  /* @__PURE__ */ jsxs("div", { className: "flex max-w-165 flex-col gap-9", children: [
1103
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-[2.5rem] leading-none sm:text-[3.4375rem] md:text-[4rem]", getAccentColor(background), headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-[2.5rem] leading-none sm:text-[3.4375rem] md:text-[4rem]", getAccentColor(background), headingClassName), children: heading })),
1104
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg font-medium md:text-xl", getAccentColor(background), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1100
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-[2.5rem] leading-none text-accent-foreground sm:text-[3.4375rem] md:text-[4rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-[2.5rem] leading-none text-accent-foreground sm:text-[3.4375rem] md:text-[4rem]", headingClassName), children: heading })),
1101
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg font-medium text-accent-foreground md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1105
1102
  renderAction
1106
1103
  ] }),
1107
1104
  renderVideoSection
@@ -968,7 +968,6 @@ function HeroMobileAppDownload({
968
968
  badgeIcon,
969
969
  badgeSlot,
970
970
  heading,
971
- description,
972
971
  storeActions,
973
972
  storeActionsSlot,
974
973
  ratingValue,
@@ -987,13 +986,14 @@ function HeroMobileAppDownload({
987
986
  className,
988
987
  contentClassName,
989
988
  headingClassName,
989
+ description,
990
990
  descriptionClassName,
991
991
  imageClassName,
992
992
  optixFlowConfig
993
993
  }) {
994
994
  const renderBadge = React.useMemo(() => {
995
995
  if (badgeSlot) return badgeSlot;
996
- return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { children: [
996
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "px-4 py-1", children: [
997
997
  badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon }),
998
998
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
999
999
  ] });
@@ -147,6 +147,6 @@ interface HeroMobileAppDownloadProps {
147
147
  */
148
148
  optixFlowConfig?: OptixFlowConfig;
149
149
  }
150
- declare function HeroMobileAppDownload({ badgeText, badgeIcon, badgeSlot, heading, description, storeActions, storeActionsSlot, ratingValue, ratingLabel, starCount, ratingSlot, image, imageSlot, notification, notificationSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroMobileAppDownloadProps): React.JSX.Element;
150
+ declare function HeroMobileAppDownload({ badgeText, badgeIcon, badgeSlot, heading, storeActions, storeActionsSlot, ratingValue, ratingLabel, starCount, ratingSlot, image, imageSlot, notification, notificationSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, description, descriptionClassName, imageClassName, optixFlowConfig, }: HeroMobileAppDownloadProps): React.JSX.Element;
151
151
 
152
152
  export { HeroMobileAppDownload, type HeroMobileAppDownloadProps };
@@ -147,6 +147,6 @@ interface HeroMobileAppDownloadProps {
147
147
  */
148
148
  optixFlowConfig?: OptixFlowConfig;
149
149
  }
150
- declare function HeroMobileAppDownload({ badgeText, badgeIcon, badgeSlot, heading, description, storeActions, storeActionsSlot, ratingValue, ratingLabel, starCount, ratingSlot, image, imageSlot, notification, notificationSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroMobileAppDownloadProps): React.JSX.Element;
150
+ declare function HeroMobileAppDownload({ badgeText, badgeIcon, badgeSlot, heading, storeActions, storeActionsSlot, ratingValue, ratingLabel, starCount, ratingSlot, image, imageSlot, notification, notificationSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, description, descriptionClassName, imageClassName, optixFlowConfig, }: HeroMobileAppDownloadProps): React.JSX.Element;
151
151
 
152
152
  export { HeroMobileAppDownload, type HeroMobileAppDownloadProps };
@@ -947,7 +947,6 @@ function HeroMobileAppDownload({
947
947
  badgeIcon,
948
948
  badgeSlot,
949
949
  heading,
950
- description,
951
950
  storeActions,
952
951
  storeActionsSlot,
953
952
  ratingValue,
@@ -966,13 +965,14 @@ function HeroMobileAppDownload({
966
965
  className,
967
966
  contentClassName,
968
967
  headingClassName,
968
+ description,
969
969
  descriptionClassName,
970
970
  imageClassName,
971
971
  optixFlowConfig
972
972
  }) {
973
973
  const renderBadge = useMemo(() => {
974
974
  if (badgeSlot) return badgeSlot;
975
- return /* @__PURE__ */ jsxs(Badge, { children: [
975
+ return /* @__PURE__ */ jsxs(Badge, { className: "px-4 py-1", children: [
976
976
  badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon }),
977
977
  /* @__PURE__ */ jsx("span", { children: badgeText })
978
978
  ] });
@@ -873,8 +873,8 @@ var Section = React__namespace.default.forwardRef(
873
873
  );
874
874
  Section.displayName = "Section";
875
875
  function HeroPremiumSplitAvatars({
876
- brandName = "Business",
877
- brandSuffix = "PRO",
876
+ brandName,
877
+ brandSuffix,
878
878
  brandSlot,
879
879
  heading,
880
880
  description,
@@ -882,14 +882,15 @@ function HeroPremiumSplitAvatars({
882
882
  actionSlot,
883
883
  avatars,
884
884
  avatarsSlot,
885
- socialProofText = "More than 1 million professionals rely on our platform",
885
+ socialProofText,
886
886
  image,
887
887
  imageSlot,
888
888
  background,
889
- spacing,
889
+ spacing = "py-32 md:py-32",
890
890
  pattern,
891
891
  patternOpacity,
892
892
  className,
893
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
893
894
  contentClassName,
894
895
  headingClassName,
895
896
  descriptionClassName,
@@ -938,16 +939,17 @@ function HeroPremiumSplitAvatars({
938
939
  }
939
940
  );
940
941
  }, [imageSlot, image, imageClassName, optixFlowConfig]);
941
- return /* @__PURE__ */ jsxRuntime.jsxs(
942
+ return /* @__PURE__ */ jsxRuntime.jsx(
942
943
  Section,
943
944
  {
944
945
  background,
945
946
  spacing,
946
947
  pattern,
947
948
  patternOpacity,
948
- className: cn("dark flex", className),
949
- children: [
950
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full items-center justify-center bg-background lg:w-1/2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container my-10 flex w-[500px] flex-col gap-24", contentClassName), children: [
949
+ className: cn("relative flex items-center justify-center dark", className),
950
+ containerClassName,
951
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex w-full", children: [
952
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full items-center justify-center bg-background lg:w-1/2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("my-10 flex w-[500px] flex-col gap-24", contentClassName), children: [
951
953
  renderBrand,
952
954
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
953
955
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading })),
@@ -957,7 +959,7 @@ function HeroPremiumSplitAvatars({
957
959
  renderAvatars
958
960
  ] }) }),
959
961
  renderImage
960
- ]
962
+ ] })
961
963
  }
962
964
  );
963
965
  }
@@ -84,6 +84,10 @@ interface HeroPremiumSplitAvatarsProps {
84
84
  * Additional CSS classes for the section
85
85
  */
86
86
  className?: string;
87
+ /**
88
+ * Additional CSS classes for the container
89
+ */
90
+ containerClassName?: string;
87
91
  /**
88
92
  * Additional CSS classes for the content column
89
93
  */
@@ -105,6 +109,6 @@ interface HeroPremiumSplitAvatarsProps {
105
109
  */
106
110
  optixFlowConfig?: OptixFlowConfig;
107
111
  }
108
- declare function HeroPremiumSplitAvatars({ brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, background, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
112
+ declare function HeroPremiumSplitAvatars({ brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
109
113
 
110
114
  export { HeroPremiumSplitAvatars, type HeroPremiumSplitAvatarsProps };
@@ -84,6 +84,10 @@ interface HeroPremiumSplitAvatarsProps {
84
84
  * Additional CSS classes for the section
85
85
  */
86
86
  className?: string;
87
+ /**
88
+ * Additional CSS classes for the container
89
+ */
90
+ containerClassName?: string;
87
91
  /**
88
92
  * Additional CSS classes for the content column
89
93
  */
@@ -105,6 +109,6 @@ interface HeroPremiumSplitAvatarsProps {
105
109
  */
106
110
  optixFlowConfig?: OptixFlowConfig;
107
111
  }
108
- declare function HeroPremiumSplitAvatars({ brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, background, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
112
+ declare function HeroPremiumSplitAvatars({ brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
109
113
 
110
114
  export { HeroPremiumSplitAvatars, type HeroPremiumSplitAvatarsProps };
@@ -851,8 +851,8 @@ var Section = React__default.forwardRef(
851
851
  );
852
852
  Section.displayName = "Section";
853
853
  function HeroPremiumSplitAvatars({
854
- brandName = "Business",
855
- brandSuffix = "PRO",
854
+ brandName,
855
+ brandSuffix,
856
856
  brandSlot,
857
857
  heading,
858
858
  description,
@@ -860,14 +860,15 @@ function HeroPremiumSplitAvatars({
860
860
  actionSlot,
861
861
  avatars,
862
862
  avatarsSlot,
863
- socialProofText = "More than 1 million professionals rely on our platform",
863
+ socialProofText,
864
864
  image,
865
865
  imageSlot,
866
866
  background,
867
- spacing,
867
+ spacing = "py-32 md:py-32",
868
868
  pattern,
869
869
  patternOpacity,
870
870
  className,
871
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
871
872
  contentClassName,
872
873
  headingClassName,
873
874
  descriptionClassName,
@@ -916,16 +917,17 @@ function HeroPremiumSplitAvatars({
916
917
  }
917
918
  );
918
919
  }, [imageSlot, image, imageClassName, optixFlowConfig]);
919
- return /* @__PURE__ */ jsxs(
920
+ return /* @__PURE__ */ jsx(
920
921
  Section,
921
922
  {
922
923
  background,
923
924
  spacing,
924
925
  pattern,
925
926
  patternOpacity,
926
- className: cn("dark flex", className),
927
- children: [
928
- /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center bg-background lg:w-1/2", children: /* @__PURE__ */ jsxs("div", { className: cn("container my-10 flex w-[500px] flex-col gap-24", contentClassName), children: [
927
+ className: cn("relative flex items-center justify-center dark", className),
928
+ containerClassName,
929
+ children: /* @__PURE__ */ jsxs("div", { className: "relative flex w-full", children: [
930
+ /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center bg-background lg:w-1/2", children: /* @__PURE__ */ jsxs("div", { className: cn("my-10 flex w-[500px] flex-col gap-24", contentClassName), children: [
929
931
  renderBrand,
930
932
  /* @__PURE__ */ jsxs("div", { children: [
931
933
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading })),
@@ -935,7 +937,7 @@ function HeroPremiumSplitAvatars({
935
937
  renderAvatars
936
938
  ] }) }),
937
939
  renderImage
938
- ]
940
+ ] })
939
941
  }
940
942
  );
941
943
  }
@@ -833,10 +833,11 @@ function HeroPresentationPlatformVideo({
833
833
  videoSrc,
834
834
  videoSlot,
835
835
  background,
836
- spacing,
836
+ spacing = "py-32 md:py-32",
837
837
  pattern,
838
838
  patternOpacity,
839
839
  className,
840
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
840
841
  contentClassName,
841
842
  headingClassName,
842
843
  descriptionClassName,
@@ -879,22 +880,24 @@ function HeroPresentationPlatformVideo({
879
880
  }
880
881
  ) });
881
882
  }, [videoSlot, videoSrc, videoClassName]);
882
- return /* @__PURE__ */ jsxRuntime.jsxs(
883
+ return /* @__PURE__ */ jsxRuntime.jsx(
883
884
  Section,
884
885
  {
885
- className: cn(
886
- "flex min-h-screen items-center justify-between bg-background py-14",
887
- className
888
- ),
889
- children: [
890
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5 px-[10%] lg:w-[50%] lg:pr-0", contentClassName), children: [
886
+ background,
887
+ spacing,
888
+ pattern,
889
+ patternOpacity,
890
+ className: cn("relative flex items-center justify-center", className),
891
+ containerClassName,
892
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex min-h-screen items-center justify-between", children: [
893
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5 lg:w-[50%] lg:pr-0", contentClassName), children: [
891
894
  subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-light uppercase", children: subtitle }) : subtitle),
892
895
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-5xl font-medium md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-5xl font-medium md:text-6xl lg:text-7xl", headingClassName), children: heading })),
893
896
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("my-8 md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
894
897
  renderActions
895
898
  ] }),
896
899
  renderVideo
897
- ]
900
+ ] })
898
901
  }
899
902
  );
900
903
  }
@@ -54,6 +54,10 @@ interface HeroPresentationPlatformVideoProps {
54
54
  * Additional CSS classes for the section
55
55
  */
56
56
  className?: string;
57
+ /**
58
+ * Additional CSS classes for the container
59
+ */
60
+ containerClassName?: string;
57
61
  /**
58
62
  * Additional CSS classes for the content column
59
63
  */
@@ -71,6 +75,6 @@ interface HeroPresentationPlatformVideoProps {
71
75
  */
72
76
  videoClassName?: string;
73
77
  }
74
- declare function HeroPresentationPlatformVideo({ subtitle, heading, description, actions, actionsSlot, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
78
+ declare function HeroPresentationPlatformVideo({ subtitle, heading, description, actions, actionsSlot, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
75
79
 
76
80
  export { HeroPresentationPlatformVideo, type HeroPresentationPlatformVideoProps };
@@ -54,6 +54,10 @@ interface HeroPresentationPlatformVideoProps {
54
54
  * Additional CSS classes for the section
55
55
  */
56
56
  className?: string;
57
+ /**
58
+ * Additional CSS classes for the container
59
+ */
60
+ containerClassName?: string;
57
61
  /**
58
62
  * Additional CSS classes for the content column
59
63
  */
@@ -71,6 +75,6 @@ interface HeroPresentationPlatformVideoProps {
71
75
  */
72
76
  videoClassName?: string;
73
77
  }
74
- declare function HeroPresentationPlatformVideo({ subtitle, heading, description, actions, actionsSlot, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
78
+ declare function HeroPresentationPlatformVideo({ subtitle, heading, description, actions, actionsSlot, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
75
79
 
76
80
  export { HeroPresentationPlatformVideo, type HeroPresentationPlatformVideoProps };
@@ -812,10 +812,11 @@ function HeroPresentationPlatformVideo({
812
812
  videoSrc,
813
813
  videoSlot,
814
814
  background,
815
- spacing,
815
+ spacing = "py-32 md:py-32",
816
816
  pattern,
817
817
  patternOpacity,
818
818
  className,
819
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
819
820
  contentClassName,
820
821
  headingClassName,
821
822
  descriptionClassName,
@@ -858,22 +859,24 @@ function HeroPresentationPlatformVideo({
858
859
  }
859
860
  ) });
860
861
  }, [videoSlot, videoSrc, videoClassName]);
861
- return /* @__PURE__ */ jsxs(
862
+ return /* @__PURE__ */ jsx(
862
863
  Section,
863
864
  {
864
- className: cn(
865
- "flex min-h-screen items-center justify-between bg-background py-14",
866
- className
867
- ),
868
- children: [
869
- /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5 px-[10%] lg:w-[50%] lg:pr-0", contentClassName), children: [
865
+ background,
866
+ spacing,
867
+ pattern,
868
+ patternOpacity,
869
+ className: cn("relative flex items-center justify-center", className),
870
+ containerClassName,
871
+ children: /* @__PURE__ */ jsxs("div", { className: "relative flex min-h-screen items-center justify-between", children: [
872
+ /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5 lg:w-[50%] lg:pr-0", contentClassName), children: [
870
873
  subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: "font-light uppercase", children: subtitle }) : subtitle),
871
874
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-5xl font-medium md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-5xl font-medium md:text-6xl lg:text-7xl", headingClassName), children: heading })),
872
875
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("my-8 md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
873
876
  renderActions
874
877
  ] }),
875
878
  renderVideo
876
- ]
879
+ ] })
877
880
  }
878
881
  );
879
882
  }
@@ -31,32 +31,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
31
  function cn(...inputs) {
32
32
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
33
  }
34
- function getTextColor(parentBg, variant = "default", options) {
35
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
36
- if (isDark) {
37
- switch (variant) {
38
- case "default":
39
- return "text-foreground";
40
- case "muted":
41
- return "text-foreground/80";
42
- case "subtle":
43
- return "text-foreground/60";
44
- case "accent":
45
- return "text-accent-foreground";
46
- }
47
- } else {
48
- switch (variant) {
49
- case "default":
50
- return "text-foreground";
51
- case "muted":
52
- return "text-muted-foreground";
53
- case "subtle":
54
- return "text-muted-foreground/70";
55
- case "accent":
56
- return "text-primary";
57
- }
58
- }
59
- }
60
34
  function normalizePhoneNumber(input) {
61
35
  const trimmed = input.trim();
62
36
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -967,7 +941,7 @@ function HeroProductivityLauncherVideo({
967
941
  videoSrc,
968
942
  videoSlot,
969
943
  background,
970
- spacing,
944
+ spacing = "py-32 md:py-32",
971
945
  pattern,
972
946
  patternOpacity,
973
947
  className,
@@ -999,7 +973,7 @@ function HeroProductivityLauncherVideo({
999
973
  const renderVersionInfo = React.useMemo(() => {
1000
974
  if (versionInfoSlot) return versionInfoSlot;
1001
975
  if (!versionInfo) return null;
1002
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex gap-6 text-xs", getTextColor(background, "muted")), children: [
976
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-6 text-xs text-muted-foreground", children: [
1003
977
  versionInfo.version && /* @__PURE__ */ jsxRuntime.jsx("span", { children: versionInfo.version }),
1004
978
  versionInfo.osRequirement && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative before:absolute before:-left-3 before:content-['|']", children: versionInfo.osRequirement }),
1005
979
  versionInfo.installMethod && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative before:absolute before:-left-3 before:content-['|']", children: /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: versionInfo.installAction, children: versionInfo.installMethod }) })
@@ -1015,7 +989,7 @@ function HeroProductivityLauncherVideo({
1015
989
  className: "group relative mt-10 flex h-8 items-center gap-3 overflow-hidden rounded-full border border-border/50 bg-background px-3 py-1 text-sm font-medium",
1016
990
  children: [
1017
991
  secondaryCta.primaryText && /* @__PURE__ */ jsxRuntime.jsx("span", { children: secondaryCta.primaryText }),
1018
- secondaryCta.secondaryText && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("flex items-center gap-1", getTextColor(background, "muted")), children: [
992
+ secondaryCta.secondaryText && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 text-muted-foreground", children: [
1019
993
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: secondaryCta.secondaryText }),
1020
994
  /* @__PURE__ */ jsxRuntime.jsx(
1021
995
  DynamicIcon,
@@ -1047,15 +1021,17 @@ function HeroProductivityLauncherVideo({
1047
1021
  return /* @__PURE__ */ jsxRuntime.jsxs(
1048
1022
  Section,
1049
1023
  {
1050
- className: cn(
1051
- "dark relative overflow-hidden bg-background py-12 font-sans md:py-20",
1052
- className
1053
- ),
1024
+ background,
1025
+ spacing,
1026
+ pattern,
1027
+ patternOpacity,
1028
+ className: cn("relative flex items-center justify-center dark overflow-hidden bg-background py-12 font-sans md:py-20", className),
1029
+ containerClassName: "px-6 sm:px-6 md:px-8 lg:px-8",
1054
1030
  children: [
1055
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-20 container max-w-204.5", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
1031
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-20 max-w-204.5", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
1056
1032
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-8 px-4 pt-52 pb-32 md:pb-52", children: [
1057
1033
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-100 sm:max-w-135", children: heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-center text-4xl leading-tight font-semibold [text-shadow:0_4px_4px_rgba(0,0,0,0.15)] sm:text-5xl md:text-[4rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-center text-4xl leading-tight font-semibold [text-shadow:0_4px_4px_rgba(0,0,0,0.15)] sm:text-5xl md:text-[4rem]", headingClassName), children: heading })) }),
1058
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-90 md:max-w-full", children: description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-sm leading-normal tracking-tight text-balance [text-shadow:0_4px_4px_rgba(0,0,0,0.25)] md:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })) })
1034
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-90 md:max-w-full", children: description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-sm leading-normal tracking-tight text-balance text-muted-foreground [text-shadow:0_4px_4px_rgba(0,0,0,0.25)] md:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })) })
1059
1035
  ] }),
1060
1036
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
1061
1037
  renderActions,