@opensite/ui 2.0.6 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/hero-adaptable-product-grid.cjs +1 -1
  2. package/dist/hero-adaptable-product-grid.js +1 -1
  3. package/dist/hero-agency-animated-images.cjs +795 -631
  4. package/dist/hero-agency-animated-images.d.cts +13 -9
  5. package/dist/hero-agency-animated-images.d.ts +13 -9
  6. package/dist/hero-agency-animated-images.js +794 -630
  7. package/dist/hero-business-carousel-dots.cjs +822 -911
  8. package/dist/hero-business-carousel-dots.d.cts +5 -1
  9. package/dist/hero-business-carousel-dots.d.ts +5 -1
  10. package/dist/hero-business-carousel-dots.js +824 -910
  11. package/dist/hero-coming-soon-countdown.cjs +267 -110
  12. package/dist/hero-coming-soon-countdown.d.cts +8 -11
  13. package/dist/hero-coming-soon-countdown.d.ts +8 -11
  14. package/dist/hero-coming-soon-countdown.js +268 -111
  15. package/dist/hero-conversation-intelligence.cjs +673 -639
  16. package/dist/hero-conversation-intelligence.js +663 -629
  17. package/dist/hero-creative-studio-stacked.cjs +899 -861
  18. package/dist/hero-creative-studio-stacked.d.cts +16 -15
  19. package/dist/hero-creative-studio-stacked.d.ts +16 -15
  20. package/dist/hero-creative-studio-stacked.js +897 -859
  21. package/dist/hero-customer-support-layered.cjs +89 -76
  22. package/dist/hero-customer-support-layered.js +89 -76
  23. package/dist/hero-developer-tools-code.cjs +721 -669
  24. package/dist/hero-developer-tools-code.d.cts +5 -1
  25. package/dist/hero-developer-tools-code.d.ts +5 -1
  26. package/dist/hero-developer-tools-code.js +719 -667
  27. package/dist/hero-digital-agency-fullscreen.cjs +722 -680
  28. package/dist/hero-digital-agency-fullscreen.d.cts +4 -20
  29. package/dist/hero-digital-agency-fullscreen.d.ts +4 -20
  30. package/dist/hero-digital-agency-fullscreen.js +722 -680
  31. package/dist/hero-ecommerce-product-showcase.cjs +892 -846
  32. package/dist/hero-ecommerce-product-showcase.js +889 -843
  33. package/dist/hero-enterprise-security.cjs +168 -132
  34. package/dist/hero-enterprise-security.d.cts +12 -19
  35. package/dist/hero-enterprise-security.d.ts +12 -19
  36. package/dist/hero-enterprise-security.js +168 -132
  37. package/dist/hero-event-registration.cjs +39 -39
  38. package/dist/hero-event-registration.js +39 -39
  39. package/dist/hero-fullscreen-background-image.cjs +3 -2
  40. package/dist/hero-fullscreen-background-image.js +3 -2
  41. package/dist/hero-fullscreen-logo-cta.cjs +4 -2
  42. package/dist/hero-fullscreen-logo-cta.js +4 -2
  43. package/dist/hero-innovation-image-grid.cjs +2 -2
  44. package/dist/hero-innovation-image-grid.js +2 -2
  45. package/dist/hero-mental-health-team.cjs +17 -17
  46. package/dist/hero-mental-health-team.d.cts +5 -5
  47. package/dist/hero-mental-health-team.d.ts +5 -5
  48. package/dist/hero-mental-health-team.js +17 -17
  49. package/dist/hero-mobile-app-download.cjs +2 -2
  50. package/dist/hero-mobile-app-download.js +2 -2
  51. package/dist/hero-newsletter-minimal.cjs +97 -57
  52. package/dist/hero-newsletter-minimal.d.cts +5 -1
  53. package/dist/hero-newsletter-minimal.d.ts +5 -1
  54. package/dist/hero-newsletter-minimal.js +97 -57
  55. package/dist/hero-shared-inbox-layered.cjs +522 -42
  56. package/dist/hero-shared-inbox-layered.d.cts +20 -4
  57. package/dist/hero-shared-inbox-layered.d.ts +20 -4
  58. package/dist/hero-shared-inbox-layered.js +505 -40
  59. package/dist/hero-startup-launch-cta.cjs +859 -816
  60. package/dist/hero-startup-launch-cta.d.cts +3 -2
  61. package/dist/hero-startup-launch-cta.d.ts +3 -2
  62. package/dist/hero-startup-launch-cta.js +858 -815
  63. package/dist/hero-therapy-testimonial-grid.cjs +1 -1
  64. package/dist/hero-therapy-testimonial-grid.js +1 -1
  65. package/dist/hero-video-dialog-gradient-BnCFFec0.d.ts +99 -0
  66. package/dist/hero-video-dialog-gradient-Dapebkzu.d.cts +99 -0
  67. package/dist/hero-video-dialog-gradient.cjs +24 -23
  68. package/dist/hero-video-dialog-gradient.d.cts +4 -94
  69. package/dist/hero-video-dialog-gradient.d.ts +4 -94
  70. package/dist/hero-video-dialog-gradient.js +24 -23
  71. package/dist/hero-welcome-asymmetric-images.cjs +652 -617
  72. package/dist/hero-welcome-asymmetric-images.d.cts +5 -1
  73. package/dist/hero-welcome-asymmetric-images.d.ts +5 -1
  74. package/dist/hero-welcome-asymmetric-images.js +651 -616
  75. package/dist/registry.cjs +1111 -848
  76. package/dist/registry.js +1111 -848
  77. package/package.json +1 -1
@@ -954,11 +954,11 @@ function HeroInnovationImageGrid({
954
954
  patternOpacity,
955
955
  className,
956
956
  containerClassName,
957
- children: /* @__PURE__ */ jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-22.5 lg:grid-cols-2", children: [
957
+ children: /* @__PURE__ */ jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-12 md:gap-22.5 lg:grid-cols-2", children: [
958
958
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
959
959
  "div",
960
960
  {
961
- className: cn("flex flex-col gap-6 md:gap-12", contentClassName),
961
+ className: cn("flex flex-col gap-2 md:gap-12", contentClassName),
962
962
  children: [
963
963
  /* @__PURE__ */ jsxs("div", { children: [
964
964
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
@@ -896,53 +896,53 @@ function HeroMentalHealthTeam({
896
896
  actionsSlot,
897
897
  actionsClassName,
898
898
  heading,
899
- teamImages,
900
- teamImagesSlot,
899
+ smallImages,
900
+ smallImagesSlot,
901
901
  testimonial,
902
902
  testimonialSlot,
903
903
  featureImage,
904
904
  featureImageSlot,
905
905
  background,
906
- spacing = "xl",
907
906
  pattern,
908
907
  patternOpacity,
909
908
  className,
909
+ spacing = "xl",
910
910
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
911
911
  headerClassName,
912
912
  headingClassName,
913
913
  gridClassName,
914
914
  optixFlowConfig
915
915
  }) {
916
- const renderTeamImages = React3.useMemo(() => {
917
- if (teamImagesSlot) return teamImagesSlot;
918
- if (!teamImages || teamImages.length === 0) return null;
916
+ const renderSmallImages = React3.useMemo(() => {
917
+ if (smallImagesSlot) return smallImagesSlot;
918
+ if (!smallImages || smallImages.length === 0) return null;
919
919
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
920
- teamImages[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
920
+ smallImages[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
921
921
  img.Img,
922
922
  {
923
- src: teamImages[0].src,
924
- alt: teamImages[0].alt,
923
+ src: smallImages[0].src,
924
+ alt: smallImages[0].alt,
925
925
  className: cn(
926
926
  "block h-full w-full object-cover object-center",
927
- teamImages[0].className
927
+ smallImages[0].className
928
928
  ),
929
929
  optixFlowConfig
930
930
  }
931
931
  ) }) }),
932
- teamImages[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
932
+ smallImages[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
933
933
  img.Img,
934
934
  {
935
- src: teamImages[1].src,
936
- alt: teamImages[1].alt,
935
+ src: smallImages[1].src,
936
+ alt: smallImages[1].alt,
937
937
  className: cn(
938
938
  "block h-full w-full object-cover object-center",
939
- teamImages[1].className
939
+ smallImages[1].className
940
940
  ),
941
941
  optixFlowConfig
942
942
  }
943
943
  ) }) })
944
944
  ] });
945
- }, [teamImagesSlot, teamImages, optixFlowConfig]);
945
+ }, [smallImagesSlot, smallImages, optixFlowConfig]);
946
946
  const renderTestimonial = React3.useMemo(() => {
947
947
  if (testimonialSlot) return testimonialSlot;
948
948
  if (!testimonial) return null;
@@ -1032,7 +1032,7 @@ function HeroMentalHealthTeam({
1032
1032
  "p",
1033
1033
  {
1034
1034
  className: cn(
1035
- "text-center text-lg md:text-xl",
1035
+ "text-center text-lg md:text-xl text-balance",
1036
1036
  descriptionClassName
1037
1037
  ),
1038
1038
  children: description
@@ -1057,7 +1057,7 @@ function HeroMentalHealthTeam({
1057
1057
  gridClassName
1058
1058
  ),
1059
1059
  children: [
1060
- renderTeamImages,
1060
+ renderSmallImages,
1061
1061
  renderTestimonial,
1062
1062
  renderFeatureImage
1063
1063
  ]
@@ -16,13 +16,13 @@ interface HeroMentalHealthTeamProps {
16
16
  */
17
17
  heading?: React.ReactNode;
18
18
  /**
19
- * Array of team member images (expects 2 images)
19
+ * Array of 2 small images (expects 2 images)
20
20
  */
21
- teamImages?: ImageItem[];
21
+ smallImages?: ImageItem[];
22
22
  /**
23
- * Custom slot for team images (overrides teamImages array)
23
+ * Custom slot for small images (overrides smallImage array)
24
24
  */
25
- teamImagesSlot?: React.ReactNode;
25
+ smallImagesSlot?: React.ReactNode;
26
26
  /**
27
27
  * Testimonial configuration
28
28
  */
@@ -101,6 +101,6 @@ interface HeroMentalHealthTeamProps {
101
101
  */
102
102
  descriptionClassName?: string;
103
103
  }
104
- declare function HeroMentalHealthTeam({ description, descriptionClassName, actions, actionsSlot, actionsClassName, heading, teamImages, teamImagesSlot, testimonial, testimonialSlot, featureImage, featureImageSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, gridClassName, optixFlowConfig, }: HeroMentalHealthTeamProps): React.JSX.Element;
104
+ declare function HeroMentalHealthTeam({ description, descriptionClassName, actions, actionsSlot, actionsClassName, heading, smallImages, smallImagesSlot, testimonial, testimonialSlot, featureImage, featureImageSlot, background, pattern, patternOpacity, className, spacing, containerClassName, headerClassName, headingClassName, gridClassName, optixFlowConfig, }: HeroMentalHealthTeamProps): React.JSX.Element;
105
105
 
106
106
  export { HeroMentalHealthTeam, type HeroMentalHealthTeamProps };
@@ -16,13 +16,13 @@ interface HeroMentalHealthTeamProps {
16
16
  */
17
17
  heading?: React.ReactNode;
18
18
  /**
19
- * Array of team member images (expects 2 images)
19
+ * Array of 2 small images (expects 2 images)
20
20
  */
21
- teamImages?: ImageItem[];
21
+ smallImages?: ImageItem[];
22
22
  /**
23
- * Custom slot for team images (overrides teamImages array)
23
+ * Custom slot for small images (overrides smallImage array)
24
24
  */
25
- teamImagesSlot?: React.ReactNode;
25
+ smallImagesSlot?: React.ReactNode;
26
26
  /**
27
27
  * Testimonial configuration
28
28
  */
@@ -101,6 +101,6 @@ interface HeroMentalHealthTeamProps {
101
101
  */
102
102
  descriptionClassName?: string;
103
103
  }
104
- declare function HeroMentalHealthTeam({ description, descriptionClassName, actions, actionsSlot, actionsClassName, heading, teamImages, teamImagesSlot, testimonial, testimonialSlot, featureImage, featureImageSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, gridClassName, optixFlowConfig, }: HeroMentalHealthTeamProps): React.JSX.Element;
104
+ declare function HeroMentalHealthTeam({ description, descriptionClassName, actions, actionsSlot, actionsClassName, heading, smallImages, smallImagesSlot, testimonial, testimonialSlot, featureImage, featureImageSlot, background, pattern, patternOpacity, className, spacing, containerClassName, headerClassName, headingClassName, gridClassName, optixFlowConfig, }: HeroMentalHealthTeamProps): React.JSX.Element;
105
105
 
106
106
  export { HeroMentalHealthTeam, type HeroMentalHealthTeamProps };
@@ -875,53 +875,53 @@ function HeroMentalHealthTeam({
875
875
  actionsSlot,
876
876
  actionsClassName,
877
877
  heading,
878
- teamImages,
879
- teamImagesSlot,
878
+ smallImages,
879
+ smallImagesSlot,
880
880
  testimonial,
881
881
  testimonialSlot,
882
882
  featureImage,
883
883
  featureImageSlot,
884
884
  background,
885
- spacing = "xl",
886
885
  pattern,
887
886
  patternOpacity,
888
887
  className,
888
+ spacing = "xl",
889
889
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
890
890
  headerClassName,
891
891
  headingClassName,
892
892
  gridClassName,
893
893
  optixFlowConfig
894
894
  }) {
895
- const renderTeamImages = useMemo(() => {
896
- if (teamImagesSlot) return teamImagesSlot;
897
- if (!teamImages || teamImages.length === 0) return null;
895
+ const renderSmallImages = useMemo(() => {
896
+ if (smallImagesSlot) return smallImagesSlot;
897
+ if (!smallImages || smallImages.length === 0) return null;
898
898
  return /* @__PURE__ */ jsxs(Fragment, { children: [
899
- teamImages[0] && /* @__PURE__ */ jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
899
+ smallImages[0] && /* @__PURE__ */ jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
900
900
  Img,
901
901
  {
902
- src: teamImages[0].src,
903
- alt: teamImages[0].alt,
902
+ src: smallImages[0].src,
903
+ alt: smallImages[0].alt,
904
904
  className: cn(
905
905
  "block h-full w-full object-cover object-center",
906
- teamImages[0].className
906
+ smallImages[0].className
907
907
  ),
908
908
  optixFlowConfig
909
909
  }
910
910
  ) }) }),
911
- teamImages[1] && /* @__PURE__ */ jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
911
+ smallImages[1] && /* @__PURE__ */ jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx(
912
912
  Img,
913
913
  {
914
- src: teamImages[1].src,
915
- alt: teamImages[1].alt,
914
+ src: smallImages[1].src,
915
+ alt: smallImages[1].alt,
916
916
  className: cn(
917
917
  "block h-full w-full object-cover object-center",
918
- teamImages[1].className
918
+ smallImages[1].className
919
919
  ),
920
920
  optixFlowConfig
921
921
  }
922
922
  ) }) })
923
923
  ] });
924
- }, [teamImagesSlot, teamImages, optixFlowConfig]);
924
+ }, [smallImagesSlot, smallImages, optixFlowConfig]);
925
925
  const renderTestimonial = useMemo(() => {
926
926
  if (testimonialSlot) return testimonialSlot;
927
927
  if (!testimonial) return null;
@@ -1011,7 +1011,7 @@ function HeroMentalHealthTeam({
1011
1011
  "p",
1012
1012
  {
1013
1013
  className: cn(
1014
- "text-center text-lg md:text-xl",
1014
+ "text-center text-lg md:text-xl text-balance",
1015
1015
  descriptionClassName
1016
1016
  ),
1017
1017
  children: description
@@ -1036,7 +1036,7 @@ function HeroMentalHealthTeam({
1036
1036
  gridClassName
1037
1037
  ),
1038
1038
  children: [
1039
- renderTeamImages,
1039
+ renderSmallImages,
1040
1040
  renderTestimonial,
1041
1041
  renderFeatureImage
1042
1042
  ]
@@ -880,7 +880,7 @@ function HeroMobileAppDownload({
880
880
  notificationSlot,
881
881
  background,
882
882
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
883
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
883
+ spacing = "xl",
884
884
  pattern,
885
885
  patternOpacity,
886
886
  className,
@@ -1019,7 +1019,7 @@ function HeroMobileAppDownload({
1019
1019
  patternOpacity,
1020
1020
  className,
1021
1021
  containerClassName,
1022
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
1022
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
1023
1023
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
1024
1024
  renderBadge,
1025
1025
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -859,7 +859,7 @@ function HeroMobileAppDownload({
859
859
  notificationSlot,
860
860
  background,
861
861
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
862
- spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
862
+ spacing = "xl",
863
863
  pattern,
864
864
  patternOpacity,
865
865
  className,
@@ -998,7 +998,7 @@ function HeroMobileAppDownload({
998
998
  patternOpacity,
999
999
  className,
1000
1000
  containerClassName,
1001
- children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
1001
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 md:gap-20", children: [
1002
1002
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
1003
1003
  renderBadge,
1004
1004
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
@@ -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:")) {
@@ -869,11 +843,12 @@ Section.displayName = "Section";
869
843
  function HeroNewsletterMinimal({
870
844
  heading,
871
845
  description,
872
- inputPlaceholder = "Enter your email",
846
+ inputPlaceholder,
873
847
  submitAction,
874
848
  formSlot,
875
- disclaimer = "Free forever. No spam. Unsubscribe anytime.",
849
+ disclaimer,
876
850
  stats,
851
+ patternClassName,
877
852
  statsSlot,
878
853
  background,
879
854
  spacing,
@@ -891,15 +866,40 @@ function HeroNewsletterMinimal({
891
866
  const renderStats = React.useMemo(() => {
892
867
  if (statsSlot) return statsSlot;
893
868
  if (!stats || stats.length === 0) return null;
894
- return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-sm", getTextColor(background, "muted"), stat.className), children: [
895
- stat.icon,
896
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.value })
897
- ] }, index));
869
+ return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
870
+ /* @__PURE__ */ jsxRuntime.jsxs(
871
+ "div",
872
+ {
873
+ className: cn(
874
+ "flex items-center",
875
+ stat.icon ? "justify-between" : "justify-center"
876
+ ),
877
+ children: [
878
+ stat.icon,
879
+ /* @__PURE__ */ jsxRuntime.jsx(
880
+ "div",
881
+ {
882
+ className: cn("font-bold ", stat.icon ? "text-xl" : "text-2xl"),
883
+ children: stat.value
884
+ }
885
+ )
886
+ ]
887
+ }
888
+ ),
889
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm"), children: stat.label })
890
+ ] }) }, index));
898
891
  }, [statsSlot, stats]);
899
892
  const renderForm = React.useMemo(() => {
900
893
  if (formSlot) return formSlot;
901
894
  if (!submitAction) return null;
902
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = submitAction;
895
+ const {
896
+ label,
897
+ icon,
898
+ iconAfter,
899
+ children,
900
+ className: actionClassName,
901
+ ...pressableProps
902
+ } = submitAction;
903
903
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
904
904
  /* @__PURE__ */ jsxRuntime.jsx(
905
905
  Input,
@@ -909,35 +909,75 @@ function HeroNewsletterMinimal({
909
909
  className: cn("h-12 flex-1", inputClassName)
910
910
  }
911
911
  ),
912
- /* @__PURE__ */ jsxRuntime.jsx(
913
- Pressable,
914
- {
915
- asButton: true,
916
- className: actionClassName,
917
- ...pressableProps,
918
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
919
- icon,
920
- label,
921
- iconAfter
922
- ] })
923
- }
924
- )
912
+ /* @__PURE__ */ jsxRuntime.jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
913
+ icon,
914
+ label,
915
+ iconAfter
916
+ ] }) })
925
917
  ] });
926
918
  }, [formSlot, submitAction, inputPlaceholder, inputClassName]);
927
919
  return /* @__PURE__ */ jsxRuntime.jsx(
928
920
  Section,
929
921
  {
930
- className: cn(
931
- "relative min-h-[80vh] bg-background py-32",
932
- className
933
- ),
934
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
935
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
936
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
937
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
938
- disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm", getTextColor(background, "muted"), disclaimerClassName), children: disclaimer }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: disclaimerClassName, children: disclaimer })),
939
- (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", statsClassName), children: renderStats })
940
- ] })
922
+ background,
923
+ spacing,
924
+ pattern,
925
+ patternOpacity,
926
+ patternClassName,
927
+ className,
928
+ containerClassName,
929
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
930
+ "div",
931
+ {
932
+ className: cn(
933
+ "container flex flex-col items-center justify-center text-center",
934
+ containerClassName
935
+ ),
936
+ children: [
937
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
938
+ "h1",
939
+ {
940
+ className: cn(
941
+ "max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-pretty",
942
+ headingClassName
943
+ ),
944
+ children: heading
945
+ }
946
+ ) : heading),
947
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
948
+ "p",
949
+ {
950
+ className: cn(
951
+ "mt-6 max-w-full md:max-w-lg text-lg md:text-xl text-balance",
952
+ descriptionClassName
953
+ ),
954
+ children: description
955
+ }
956
+ ) : description),
957
+ /* @__PURE__ */ jsxRuntime.jsx(
958
+ "div",
959
+ {
960
+ className: cn(
961
+ "mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row",
962
+ formClassName
963
+ ),
964
+ children: renderForm
965
+ }
966
+ ),
967
+ disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm", disclaimerClassName), children: disclaimer }) : disclaimer),
968
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
969
+ "div",
970
+ {
971
+ className: cn(
972
+ "mt-16 flex flex-wrap items-center justify-center gap-8",
973
+ statsClassName
974
+ ),
975
+ children: renderStats
976
+ }
977
+ )
978
+ ]
979
+ }
980
+ )
941
981
  }
942
982
  );
943
983
  }
@@ -86,7 +86,11 @@ interface HeroNewsletterMinimalProps {
86
86
  * Additional CSS classes for the stats container
87
87
  */
88
88
  statsClassName?: string;
89
+ /**
90
+ * Additional CSS classes for the pattern overlay
91
+ */
92
+ patternClassName?: string;
89
93
  }
90
- declare function HeroNewsletterMinimal({ heading, description, inputPlaceholder, submitAction, formSlot, disclaimer, stats, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, formClassName, inputClassName, disclaimerClassName, statsClassName, }: HeroNewsletterMinimalProps): React.JSX.Element;
94
+ declare function HeroNewsletterMinimal({ heading, description, inputPlaceholder, submitAction, formSlot, disclaimer, stats, patternClassName, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, formClassName, inputClassName, disclaimerClassName, statsClassName, }: HeroNewsletterMinimalProps): React.JSX.Element;
91
95
 
92
96
  export { HeroNewsletterMinimal, type HeroNewsletterMinimalProps };
@@ -86,7 +86,11 @@ interface HeroNewsletterMinimalProps {
86
86
  * Additional CSS classes for the stats container
87
87
  */
88
88
  statsClassName?: string;
89
+ /**
90
+ * Additional CSS classes for the pattern overlay
91
+ */
92
+ patternClassName?: string;
89
93
  }
90
- declare function HeroNewsletterMinimal({ heading, description, inputPlaceholder, submitAction, formSlot, disclaimer, stats, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, formClassName, inputClassName, disclaimerClassName, statsClassName, }: HeroNewsletterMinimalProps): React.JSX.Element;
94
+ declare function HeroNewsletterMinimal({ heading, description, inputPlaceholder, submitAction, formSlot, disclaimer, stats, patternClassName, statsSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, formClassName, inputClassName, disclaimerClassName, statsClassName, }: HeroNewsletterMinimalProps): React.JSX.Element;
91
95
 
92
96
  export { HeroNewsletterMinimal, type HeroNewsletterMinimalProps };