@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
@@ -31,54 +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
- function getBorderColor(parentBg, variant = "default", options) {
61
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
62
- if (isDark) {
63
- switch (variant) {
64
- case "default":
65
- return "border-foreground/20";
66
- case "muted":
67
- return "border-foreground/10";
68
- case "accent":
69
- return "border-accent-foreground";
70
- }
71
- } else {
72
- switch (variant) {
73
- case "default":
74
- return "border-border";
75
- case "muted":
76
- return "border-muted";
77
- case "accent":
78
- return "border-primary";
79
- }
80
- }
81
- }
82
34
  function normalizePhoneNumber(input) {
83
35
  const trimmed = input.trim();
84
36
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -880,11 +832,11 @@ function HeroArchitectureFullscreen({
880
832
  actionSlot,
881
833
  backgroundImage,
882
834
  background,
883
- spacing,
835
+ spacing = "py-32 md:py-32",
884
836
  pattern,
885
837
  patternOpacity,
886
838
  className,
887
- containerClassName,
839
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
888
840
  taglineClassName,
889
841
  headingClassName,
890
842
  descriptionClassName
@@ -915,17 +867,18 @@ function HeroArchitectureFullscreen({
915
867
  pattern,
916
868
  patternOpacity,
917
869
  className: cn(
918
- "dark relative h-svh max-h-[1400px] w-full overflow-hidden bg-cover bg-center bg-no-repeat font-poppins after:absolute after:top-0 after:left-0 after:block after:h-full after:w-full after:bg-foreground/65 after:content-['']",
870
+ "relative flex items-center justify-center dark h-svh max-h-[1400px] w-full overflow-hidden bg-cover bg-center bg-no-repeat font-poppins after:absolute after:top-0 after:left-0 after:block after:h-full after:w-full after:bg-foreground/65 after:content-['']",
919
871
  className
920
872
  ),
873
+ containerClassName,
921
874
  style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
922
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-20 container h-full w-full max-w-340", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
875
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-20 h-full w-full max-w-340", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
923
876
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-245.5 flex-col gap-1", children: [
924
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm leading-none uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
877
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm leading-none uppercase text-muted-foreground", taglineClassName), children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
925
878
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-3xl leading-snug! md:text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading }))
926
879
  ] }),
927
880
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col justify-between gap-5 sm:flex-row sm:items-center", children: [
928
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-81 border-l pl-6 text-base", getBorderColor(background, "muted"), getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
881
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-81 border-l border-border pl-6 text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
929
882
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: renderAction })
930
883
  ] })
931
884
  ] }) })
@@ -10,54 +10,6 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
  function cn(...inputs) {
11
11
  return twMerge(clsx(inputs));
12
12
  }
13
- function getTextColor(parentBg, variant = "default", options) {
14
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
15
- if (isDark) {
16
- switch (variant) {
17
- case "default":
18
- return "text-foreground";
19
- case "muted":
20
- return "text-foreground/80";
21
- case "subtle":
22
- return "text-foreground/60";
23
- case "accent":
24
- return "text-accent-foreground";
25
- }
26
- } else {
27
- switch (variant) {
28
- case "default":
29
- return "text-foreground";
30
- case "muted":
31
- return "text-muted-foreground";
32
- case "subtle":
33
- return "text-muted-foreground/70";
34
- case "accent":
35
- return "text-primary";
36
- }
37
- }
38
- }
39
- function getBorderColor(parentBg, variant = "default", options) {
40
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
- if (isDark) {
42
- switch (variant) {
43
- case "default":
44
- return "border-foreground/20";
45
- case "muted":
46
- return "border-foreground/10";
47
- case "accent":
48
- return "border-accent-foreground";
49
- }
50
- } else {
51
- switch (variant) {
52
- case "default":
53
- return "border-border";
54
- case "muted":
55
- return "border-muted";
56
- case "accent":
57
- return "border-primary";
58
- }
59
- }
60
- }
61
13
  function normalizePhoneNumber(input) {
62
14
  const trimmed = input.trim();
63
15
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -859,11 +811,11 @@ function HeroArchitectureFullscreen({
859
811
  actionSlot,
860
812
  backgroundImage,
861
813
  background,
862
- spacing,
814
+ spacing = "py-32 md:py-32",
863
815
  pattern,
864
816
  patternOpacity,
865
817
  className,
866
- containerClassName,
818
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
867
819
  taglineClassName,
868
820
  headingClassName,
869
821
  descriptionClassName
@@ -894,17 +846,18 @@ function HeroArchitectureFullscreen({
894
846
  pattern,
895
847
  patternOpacity,
896
848
  className: cn(
897
- "dark relative h-svh max-h-[1400px] w-full overflow-hidden bg-cover bg-center bg-no-repeat font-poppins after:absolute after:top-0 after:left-0 after:block after:h-full after:w-full after:bg-foreground/65 after:content-['']",
849
+ "relative flex items-center justify-center dark h-svh max-h-[1400px] w-full overflow-hidden bg-cover bg-center bg-no-repeat font-poppins after:absolute after:top-0 after:left-0 after:block after:h-full after:w-full after:bg-foreground/65 after:content-['']",
898
850
  className
899
851
  ),
852
+ containerClassName,
900
853
  style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
901
- children: /* @__PURE__ */ jsx("div", { className: cn("relative z-20 container h-full w-full max-w-340", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
854
+ children: /* @__PURE__ */ jsx("div", { className: "relative z-20 h-full w-full max-w-340", children: /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
902
855
  /* @__PURE__ */ jsxs("div", { className: "flex max-w-245.5 flex-col gap-1", children: [
903
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm leading-none uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
856
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm leading-none uppercase text-muted-foreground", taglineClassName), children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
904
857
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-3xl leading-snug! md:text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading }))
905
858
  ] }),
906
859
  /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col justify-between gap-5 sm:flex-row sm:items-center", children: [
907
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-81 border-l pl-6 text-base", getBorderColor(background, "muted"), getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
860
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-81 border-l border-border pl-6 text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
908
861
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: renderAction })
909
862
  ] })
910
863
  ] }) })
@@ -7,6 +7,7 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var reactSlot = require('@radix-ui/react-slot');
8
8
  var classVarianceAuthority = require('class-variance-authority');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
+ var img = require('@page-speed/img');
10
11
 
11
12
  function _interopNamespace(e) {
12
13
  if (e && e.__esModule) return e;
@@ -32,32 +33,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
  function cn(...inputs) {
33
34
  return tailwindMerge.twMerge(clsx.clsx(inputs));
34
35
  }
35
- function getNestedCardBg(parentBg, variant = "muted", options) {
36
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
37
- if (isDark) {
38
- switch (variant) {
39
- case "muted":
40
- return "bg-background";
41
- case "card":
42
- return "bg-card";
43
- case "accent":
44
- return "bg-accent";
45
- case "subtle":
46
- return "bg-background/50";
47
- }
48
- } else {
49
- switch (variant) {
50
- case "muted":
51
- return "bg-muted";
52
- case "card":
53
- return "bg-card";
54
- case "accent":
55
- return "bg-accent";
56
- case "subtle":
57
- return "bg-muted/50";
58
- }
59
- }
60
- }
61
36
  var badgeVariants = classVarianceAuthority.cva(
62
37
  "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",
63
38
  {
@@ -991,17 +966,20 @@ Section.displayName = "Section";
991
966
  function HeroBadgeShadowOverlay({
992
967
  announcementBadge,
993
968
  announcementText,
994
- announcementHref = "#",
969
+ announcementHref,
970
+ description,
971
+ descriptionClassName,
995
972
  heading,
996
973
  actions,
997
974
  actionsSlot,
998
- backgroundImageUrl = "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/shadow-overlay.png",
975
+ backgroundImageUrl,
976
+ optixFlowConfig,
999
977
  background,
1000
- spacing,
978
+ spacing = "py-0 md:py-0",
1001
979
  pattern,
1002
980
  patternOpacity,
1003
981
  className,
1004
- containerClassName,
982
+ containerClassName = "mx-0 w-screen px-0 sm:px-0 lg:px-0 max-w-screen relative z-10 min-h-screen h-full",
1005
983
  announcementClassName,
1006
984
  headingClassName,
1007
985
  actionsClassName
@@ -1009,8 +987,15 @@ function HeroBadgeShadowOverlay({
1009
987
  const renderActions = React.useMemo(() => {
1010
988
  if (actionsSlot) return actionsSlot;
1011
989
  if (!actions || actions.length === 0) return null;
1012
- return actions.map((action, index) => {
1013
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
990
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col md:flex-row gap-4", actionsClassName), children: actions.map((action, index) => {
991
+ const {
992
+ label,
993
+ icon,
994
+ iconAfter,
995
+ children,
996
+ className: actionClassName,
997
+ ...pressableProps
998
+ } = action;
1014
999
  return /* @__PURE__ */ jsxRuntime.jsx(
1015
1000
  Pressable,
1016
1001
  {
@@ -1025,8 +1010,8 @@ function HeroBadgeShadowOverlay({
1025
1010
  },
1026
1011
  index
1027
1012
  );
1028
- });
1029
- }, [actionsSlot, actions]);
1013
+ }) });
1014
+ }, [actionsSlot, actions, actionsClassName]);
1030
1015
  return /* @__PURE__ */ jsxRuntime.jsxs(
1031
1016
  Section,
1032
1017
  {
@@ -1034,33 +1019,45 @@ function HeroBadgeShadowOverlay({
1034
1019
  spacing,
1035
1020
  pattern,
1036
1021
  patternOpacity,
1037
- className: cn("relative", className),
1022
+ className: cn("relative flex items-center justify-center", className),
1023
+ containerClassName,
1038
1024
  children: [
1039
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-10 text-center", children: [
1025
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col min-h-screen h-full justify-center items-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-10 text-center px-6 max-full md:max-w-lg", children: [
1040
1026
  (announcementBadge || announcementText) && /* @__PURE__ */ jsxRuntime.jsxs(
1041
1027
  Pressable,
1042
1028
  {
1043
1029
  href: announcementHref,
1044
1030
  className: cn(
1045
- "flex items-center gap-2 rounded-full px-2 py-1 text-sm transition-colors",
1046
- `hover:${getNestedCardBg(background)}`,
1031
+ "flex items-center gap-2 rounded-full px-2 py-1 text-sm bg-card text-card-foreground",
1047
1032
  announcementClassName
1048
1033
  ),
1049
1034
  children: [
1050
1035
  announcementBadge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { children: announcementBadge }),
1051
1036
  announcementText,
1052
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1037
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 16 })
1053
1038
  ]
1054
1039
  }
1055
1040
  ),
1056
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-semibold lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1057
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row", actionsClassName), children: renderActions })
1041
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1042
+ "h1",
1043
+ {
1044
+ className: cn(
1045
+ "text-4xl font-semibold lg:text-8xl text-white text-balance text-shadow-xl text-center",
1046
+ headingClassName
1047
+ ),
1048
+ children: heading
1049
+ }
1050
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1051
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1052
+ renderActions
1058
1053
  ] }) }),
1059
- /* @__PURE__ */ jsxRuntime.jsx(
1060
- "div",
1054
+ backgroundImageUrl && /* @__PURE__ */ jsxRuntime.jsx(
1055
+ img.Img,
1061
1056
  {
1062
- className: "absolute inset-0 -z-10 bg-[50%_0] bg-no-repeat",
1063
- style: { backgroundImage: `url('${backgroundImageUrl}')` }
1057
+ src: backgroundImageUrl,
1058
+ alt: "Background Image",
1059
+ className: "absolute inset-0 -z-10 h-full w-full object-cover brightness-50",
1060
+ optixFlowConfig
1064
1061
  }
1065
1062
  )
1066
1063
  ]
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-r_NhxVet.cjs';
3
- import { A as ActionConfig } from './blocks-DP3Vofl4.cjs';
3
+ import { A as ActionConfig, O as OptixFlowConfig } from './blocks-DP3Vofl4.cjs';
4
4
  import 'react/jsx-runtime';
5
5
  import 'class-variance-authority';
6
6
  import './button-variants-CdNtNOuP.cjs';
@@ -71,7 +71,19 @@ interface HeroBadgeShadowOverlayProps {
71
71
  * Additional CSS classes for the actions container
72
72
  */
73
73
  actionsClassName?: string;
74
+ /**
75
+ * Description text below heading
76
+ */
77
+ description?: React.ReactNode;
78
+ /**
79
+ * Additional CSS classes for the description
80
+ */
81
+ descriptionClassName?: string;
82
+ /**
83
+ * OptixFlow image optimization configuration
84
+ */
85
+ optixFlowConfig?: OptixFlowConfig;
74
86
  }
75
- declare function HeroBadgeShadowOverlay({ announcementBadge, announcementText, announcementHref, heading, actions, actionsSlot, backgroundImageUrl, background, spacing, pattern, patternOpacity, className, containerClassName, announcementClassName, headingClassName, actionsClassName, }: HeroBadgeShadowOverlayProps): React.JSX.Element;
87
+ declare function HeroBadgeShadowOverlay({ announcementBadge, announcementText, announcementHref, description, descriptionClassName, heading, actions, actionsSlot, backgroundImageUrl, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, announcementClassName, headingClassName, actionsClassName, }: HeroBadgeShadowOverlayProps): React.JSX.Element;
76
88
 
77
89
  export { HeroBadgeShadowOverlay, type HeroBadgeShadowOverlayProps };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-DmVsuoHE.js';
3
- import { A as ActionConfig } from './blocks-XLPGq8A5.js';
3
+ import { A as ActionConfig, O as OptixFlowConfig } from './blocks-XLPGq8A5.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'class-variance-authority';
6
6
  import './button-variants-CdNtNOuP.js';
@@ -71,7 +71,19 @@ interface HeroBadgeShadowOverlayProps {
71
71
  * Additional CSS classes for the actions container
72
72
  */
73
73
  actionsClassName?: string;
74
+ /**
75
+ * Description text below heading
76
+ */
77
+ description?: React.ReactNode;
78
+ /**
79
+ * Additional CSS classes for the description
80
+ */
81
+ descriptionClassName?: string;
82
+ /**
83
+ * OptixFlow image optimization configuration
84
+ */
85
+ optixFlowConfig?: OptixFlowConfig;
74
86
  }
75
- declare function HeroBadgeShadowOverlay({ announcementBadge, announcementText, announcementHref, heading, actions, actionsSlot, backgroundImageUrl, background, spacing, pattern, patternOpacity, className, containerClassName, announcementClassName, headingClassName, actionsClassName, }: HeroBadgeShadowOverlayProps): React.JSX.Element;
87
+ declare function HeroBadgeShadowOverlay({ announcementBadge, announcementText, announcementHref, description, descriptionClassName, heading, actions, actionsSlot, backgroundImageUrl, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, announcementClassName, headingClassName, actionsClassName, }: HeroBadgeShadowOverlayProps): React.JSX.Element;
76
88
 
77
89
  export { HeroBadgeShadowOverlay, type HeroBadgeShadowOverlayProps };
@@ -6,37 +6,12 @@ import { twMerge } from 'tailwind-merge';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import { cva } from 'class-variance-authority';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
+ import { Img } from '@page-speed/img';
9
10
 
10
11
  // components/blocks/hero/hero-badge-shadow-overlay.tsx
11
12
  function cn(...inputs) {
12
13
  return twMerge(clsx(inputs));
13
14
  }
14
- function getNestedCardBg(parentBg, variant = "muted", options) {
15
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
- if (isDark) {
17
- switch (variant) {
18
- case "muted":
19
- return "bg-background";
20
- case "card":
21
- return "bg-card";
22
- case "accent":
23
- return "bg-accent";
24
- case "subtle":
25
- return "bg-background/50";
26
- }
27
- } else {
28
- switch (variant) {
29
- case "muted":
30
- return "bg-muted";
31
- case "card":
32
- return "bg-card";
33
- case "accent":
34
- return "bg-accent";
35
- case "subtle":
36
- return "bg-muted/50";
37
- }
38
- }
39
- }
40
15
  var badgeVariants = cva(
41
16
  "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",
42
17
  {
@@ -970,17 +945,20 @@ Section.displayName = "Section";
970
945
  function HeroBadgeShadowOverlay({
971
946
  announcementBadge,
972
947
  announcementText,
973
- announcementHref = "#",
948
+ announcementHref,
949
+ description,
950
+ descriptionClassName,
974
951
  heading,
975
952
  actions,
976
953
  actionsSlot,
977
- backgroundImageUrl = "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/shadow-overlay.png",
954
+ backgroundImageUrl,
955
+ optixFlowConfig,
978
956
  background,
979
- spacing,
957
+ spacing = "py-0 md:py-0",
980
958
  pattern,
981
959
  patternOpacity,
982
960
  className,
983
- containerClassName,
961
+ containerClassName = "mx-0 w-screen px-0 sm:px-0 lg:px-0 max-w-screen relative z-10 min-h-screen h-full",
984
962
  announcementClassName,
985
963
  headingClassName,
986
964
  actionsClassName
@@ -988,8 +966,15 @@ function HeroBadgeShadowOverlay({
988
966
  const renderActions = useMemo(() => {
989
967
  if (actionsSlot) return actionsSlot;
990
968
  if (!actions || actions.length === 0) return null;
991
- return actions.map((action, index) => {
992
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
969
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col md:flex-row gap-4", actionsClassName), children: actions.map((action, index) => {
970
+ const {
971
+ label,
972
+ icon,
973
+ iconAfter,
974
+ children,
975
+ className: actionClassName,
976
+ ...pressableProps
977
+ } = action;
993
978
  return /* @__PURE__ */ jsx(
994
979
  Pressable,
995
980
  {
@@ -1004,8 +989,8 @@ function HeroBadgeShadowOverlay({
1004
989
  },
1005
990
  index
1006
991
  );
1007
- });
1008
- }, [actionsSlot, actions]);
992
+ }) });
993
+ }, [actionsSlot, actions, actionsClassName]);
1009
994
  return /* @__PURE__ */ jsxs(
1010
995
  Section,
1011
996
  {
@@ -1013,33 +998,45 @@ function HeroBadgeShadowOverlay({
1013
998
  spacing,
1014
999
  pattern,
1015
1000
  patternOpacity,
1016
- className: cn("relative", className),
1001
+ className: cn("relative flex items-center justify-center", className),
1002
+ containerClassName,
1017
1003
  children: [
1018
- /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-10 text-center", children: [
1004
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col min-h-screen h-full justify-center items-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-10 text-center px-6 max-full md:max-w-lg", children: [
1019
1005
  (announcementBadge || announcementText) && /* @__PURE__ */ jsxs(
1020
1006
  Pressable,
1021
1007
  {
1022
1008
  href: announcementHref,
1023
1009
  className: cn(
1024
- "flex items-center gap-2 rounded-full px-2 py-1 text-sm transition-colors",
1025
- `hover:${getNestedCardBg(background)}`,
1010
+ "flex items-center gap-2 rounded-full px-2 py-1 text-sm bg-card text-card-foreground",
1026
1011
  announcementClassName
1027
1012
  ),
1028
1013
  children: [
1029
1014
  announcementBadge && /* @__PURE__ */ jsx(Badge, { children: announcementBadge }),
1030
1015
  announcementText,
1031
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1016
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 16 })
1032
1017
  ]
1033
1018
  }
1034
1019
  ),
1035
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-semibold lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1036
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row", actionsClassName), children: renderActions })
1020
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
1021
+ "h1",
1022
+ {
1023
+ className: cn(
1024
+ "text-4xl font-semibold lg:text-8xl text-white text-balance text-shadow-xl text-center",
1025
+ headingClassName
1026
+ ),
1027
+ children: heading
1028
+ }
1029
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1030
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1031
+ renderActions
1037
1032
  ] }) }),
1038
- /* @__PURE__ */ jsx(
1039
- "div",
1033
+ backgroundImageUrl && /* @__PURE__ */ jsx(
1034
+ Img,
1040
1035
  {
1041
- className: "absolute inset-0 -z-10 bg-[50%_0] bg-no-repeat",
1042
- style: { backgroundImage: `url('${backgroundImageUrl}')` }
1036
+ src: backgroundImageUrl,
1037
+ alt: "Background Image",
1038
+ className: "absolute inset-0 -z-10 h-full w-full object-cover brightness-50",
1039
+ optixFlowConfig
1043
1040
  }
1044
1041
  )
1045
1042
  ]
@@ -973,13 +973,12 @@ function HeroBillingPlatformLogos({
973
973
  logosTagline,
974
974
  logos,
975
975
  logosSlot,
976
- backgroundNoiseUrl = "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
977
976
  background,
978
- spacing,
977
+ spacing = "py-32 md:py-32",
979
978
  pattern,
980
979
  patternOpacity,
981
980
  className,
982
- containerClassName,
981
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
983
982
  contentClassName,
984
983
  headingClassName,
985
984
  descriptionClassName,
@@ -1030,13 +1029,10 @@ function HeroBillingPlatformLogos({
1030
1029
  spacing,
1031
1030
  pattern,
1032
1031
  patternOpacity,
1033
- className: cn(
1034
- "dark font-sans",
1035
- className
1036
- ),
1037
- style: { backgroundImage: backgroundNoiseUrl ? `url('${backgroundNoiseUrl}')` : void 0 },
1032
+ className: cn("relative flex items-center justify-center dark font-sans", className),
1033
+ containerClassName,
1038
1034
  children: [
1039
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center justify-center gap-12 lg:grid-cols-[minmax(33.75rem,1fr)_1.5fr] lg:gap-8", children: [
1035
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center justify-center gap-12 lg:grid-cols-[minmax(33.75rem,1fr)_1.5fr] lg:gap-8", children: [
1040
1036
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [
1041
1037
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl leading-tight md:text-5xl lg:text-[3.5rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1042
1038
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-5 text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
@@ -47,10 +47,6 @@ interface HeroBillingPlatformLogosProps {
47
47
  * Custom slot for logos (overrides logos array)
48
48
  */
49
49
  logosSlot?: React.ReactNode;
50
- /**
51
- * Background noise texture URL
52
- */
53
- backgroundNoiseUrl?: string;
54
50
  /**
55
51
  * Background style for the section
56
52
  */
@@ -100,6 +96,6 @@ interface HeroBillingPlatformLogosProps {
100
96
  */
101
97
  optixFlowConfig?: OptixFlowConfig;
102
98
  }
103
- declare function HeroBillingPlatformLogos({ heading, description, actions, actionsSlot, mainImage, overlayImages, imagesSlot, logosTagline, logos, logosSlot, backgroundNoiseUrl, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logosClassName, optixFlowConfig, }: HeroBillingPlatformLogosProps): React.JSX.Element;
99
+ declare function HeroBillingPlatformLogos({ heading, description, actions, actionsSlot, mainImage, overlayImages, imagesSlot, logosTagline, logos, logosSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logosClassName, optixFlowConfig, }: HeroBillingPlatformLogosProps): React.JSX.Element;
104
100
 
105
101
  export { HeroBillingPlatformLogos, type HeroBillingPlatformLogosProps };
@@ -47,10 +47,6 @@ interface HeroBillingPlatformLogosProps {
47
47
  * Custom slot for logos (overrides logos array)
48
48
  */
49
49
  logosSlot?: React.ReactNode;
50
- /**
51
- * Background noise texture URL
52
- */
53
- backgroundNoiseUrl?: string;
54
50
  /**
55
51
  * Background style for the section
56
52
  */
@@ -100,6 +96,6 @@ interface HeroBillingPlatformLogosProps {
100
96
  */
101
97
  optixFlowConfig?: OptixFlowConfig;
102
98
  }
103
- declare function HeroBillingPlatformLogos({ heading, description, actions, actionsSlot, mainImage, overlayImages, imagesSlot, logosTagline, logos, logosSlot, backgroundNoiseUrl, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logosClassName, optixFlowConfig, }: HeroBillingPlatformLogosProps): React.JSX.Element;
99
+ declare function HeroBillingPlatformLogos({ heading, description, actions, actionsSlot, mainImage, overlayImages, imagesSlot, logosTagline, logos, logosSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logosClassName, optixFlowConfig, }: HeroBillingPlatformLogosProps): React.JSX.Element;
104
100
 
105
101
  export { HeroBillingPlatformLogos, type HeroBillingPlatformLogosProps };
@@ -947,13 +947,12 @@ function HeroBillingPlatformLogos({
947
947
  logosTagline,
948
948
  logos,
949
949
  logosSlot,
950
- backgroundNoiseUrl = "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
951
950
  background,
952
- spacing,
951
+ spacing = "py-32 md:py-32",
953
952
  pattern,
954
953
  patternOpacity,
955
954
  className,
956
- containerClassName,
955
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
957
956
  contentClassName,
958
957
  headingClassName,
959
958
  descriptionClassName,
@@ -1004,13 +1003,10 @@ function HeroBillingPlatformLogos({
1004
1003
  spacing,
1005
1004
  pattern,
1006
1005
  patternOpacity,
1007
- className: cn(
1008
- "dark font-sans",
1009
- className
1010
- ),
1011
- style: { backgroundImage: backgroundNoiseUrl ? `url('${backgroundNoiseUrl}')` : void 0 },
1006
+ className: cn("relative flex items-center justify-center dark font-sans", className),
1007
+ containerClassName,
1012
1008
  children: [
1013
- /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center justify-center gap-12 lg:grid-cols-[minmax(33.75rem,1fr)_1.5fr] lg:gap-8", children: [
1009
+ /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center justify-center gap-12 lg:grid-cols-[minmax(33.75rem,1fr)_1.5fr] lg:gap-8", children: [
1014
1010
  /* @__PURE__ */ jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
1015
1011
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl leading-tight md:text-5xl lg:text-[3.5rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1016
1012
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-5 text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),