@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
@@ -6,6 +6,7 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var classVarianceAuthority = require('class-variance-authority');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
+ var img = require('@page-speed/img');
9
10
 
10
11
  function _interopNamespace(e) {
11
12
  if (e && e.__esModule) return e;
@@ -31,58 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
32
  function cn(...inputs) {
32
33
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
34
  }
34
- function getNestedCardBg(parentBg, variant = "muted", options) {
35
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
36
- if (isDark) {
37
- switch (variant) {
38
- case "muted":
39
- return "bg-background";
40
- case "card":
41
- return "bg-card";
42
- case "accent":
43
- return "bg-accent";
44
- case "subtle":
45
- return "bg-background/50";
46
- }
47
- } else {
48
- switch (variant) {
49
- case "muted":
50
- return "bg-muted";
51
- case "card":
52
- return "bg-card";
53
- case "accent":
54
- return "bg-accent";
55
- case "subtle":
56
- return "bg-muted/50";
57
- }
58
- }
59
- }
60
- function getTextColor(parentBg, variant = "default", options) {
61
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
62
- if (isDark) {
63
- switch (variant) {
64
- case "default":
65
- return "text-foreground";
66
- case "muted":
67
- return "text-foreground/80";
68
- case "subtle":
69
- return "text-foreground/60";
70
- case "accent":
71
- return "text-accent-foreground";
72
- }
73
- } else {
74
- switch (variant) {
75
- case "default":
76
- return "text-foreground";
77
- case "muted":
78
- return "text-muted-foreground";
79
- case "subtle":
80
- return "text-muted-foreground/70";
81
- case "accent":
82
- return "text-primary";
83
- }
84
- }
85
- }
86
35
  function normalizePhoneNumber(input) {
87
36
  const trimmed = input.trim();
88
37
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -882,16 +831,19 @@ function HeroSplitSpiralShapes({
882
831
  description,
883
832
  actions,
884
833
  actionsSlot,
885
- shapesSlot,
834
+ images,
835
+ imagesSlot,
836
+ optixFlowConfig,
886
837
  background,
887
- spacing,
838
+ spacing = "py-32 md:py-32",
888
839
  pattern,
889
840
  patternOpacity,
890
841
  className,
891
- containerClassName,
842
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
892
843
  contentClassName,
893
844
  headingClassName,
894
- descriptionClassName
845
+ descriptionClassName,
846
+ imagesClassName
895
847
  }) {
896
848
  const renderActions = React.useMemo(() => {
897
849
  if (actionsSlot) return actionsSlot;
@@ -914,39 +866,39 @@ function HeroSplitSpiralShapes({
914
866
  );
915
867
  }) });
916
868
  }, [actionsSlot, actions]);
917
- const renderShapes = React.useMemo(() => {
918
- if (shapesSlot) return shapesSlot;
919
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative aspect-3/4", children: [
920
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
921
- "svg",
869
+ const renderImages = React.useMemo(() => {
870
+ if (imagesSlot) return imagesSlot;
871
+ if (!images || images.length === 0) return null;
872
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative aspect-3/4", imagesClassName), children: [
873
+ images[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-[10%] left-[8%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsxRuntime.jsx(
874
+ img.Img,
922
875
  {
923
- xmlns: "http://www.w3.org/2000/svg",
924
- version: "1.1",
925
- viewBox: "0 0 800 800",
926
- className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
927
- children: Array.from(Array(720).keys()).map((dot, index, array) => {
928
- const angle = 0.2 * index;
929
- const scalar = 40 + index * (360 / array.length);
930
- const x = Math.round(Math.cos(angle) * scalar);
931
- const y = Math.round(Math.sin(angle) * scalar);
932
- return /* @__PURE__ */ jsxRuntime.jsx(
933
- "circle",
934
- {
935
- r: 3 * index / array.length,
936
- cx: 400 + x,
937
- cy: 400 + y,
938
- opacity: 1 - Math.sin(angle)
939
- },
940
- index
941
- );
942
- })
876
+ src: images[0].src,
877
+ alt: images[0].alt,
878
+ className: cn("h-full w-full object-cover", images[0].className),
879
+ optixFlowConfig
943
880
  }
944
- ) }),
945
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute top-[10%] left-[8%] flex aspect-5/6 w-[38%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) }),
946
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute top-[20%] right-[12%] flex aspect-square w-[20%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) }),
947
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute right-[24%] bottom-[24%] flex aspect-5/6 w-[38%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) })
881
+ ) }) }),
882
+ images[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-[20%] right-[12%] w-[20%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-square", children: /* @__PURE__ */ jsxRuntime.jsx(
883
+ img.Img,
884
+ {
885
+ src: images[1].src,
886
+ alt: images[1].alt,
887
+ className: cn("h-full w-full object-cover", images[1].className),
888
+ optixFlowConfig
889
+ }
890
+ ) }) }),
891
+ images[2] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-[24%] bottom-[24%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsxRuntime.jsx(
892
+ img.Img,
893
+ {
894
+ src: images[2].src,
895
+ alt: images[2].alt,
896
+ className: cn("h-full w-full object-cover", images[2].className),
897
+ optixFlowConfig
898
+ }
899
+ ) }) })
948
900
  ] });
949
- }, [shapesSlot]);
901
+ }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
950
902
  return /* @__PURE__ */ jsxRuntime.jsx(
951
903
  Section,
952
904
  {
@@ -954,15 +906,16 @@ function HeroSplitSpiralShapes({
954
906
  spacing,
955
907
  pattern,
956
908
  patternOpacity,
957
- className: cn(className),
958
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
909
+ className: cn("relative flex items-center justify-center", className),
910
+ containerClassName,
911
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
959
912
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
960
913
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: badgeText }) : badgeText),
961
914
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
962
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
915
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
963
916
  renderActions
964
917
  ] }),
965
- renderShapes
918
+ renderImages
966
919
  ] }) })
967
920
  }
968
921
  );
@@ -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, I as ImageItem, 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';
@@ -28,9 +28,18 @@ interface HeroSplitSpiralShapesProps {
28
28
  */
29
29
  actionsSlot?: React.ReactNode;
30
30
  /**
31
- * Custom slot for spiral shapes (overrides default shapes)
31
+ * Array of images to display (expects 3 images for scattered layout)
32
32
  */
33
- shapesSlot?: React.ReactNode; /**
33
+ images?: ImageItem[];
34
+ /**
35
+ * Custom slot for rendering images (overrides images array)
36
+ */
37
+ imagesSlot?: React.ReactNode;
38
+ /**
39
+ * OptixFlow image optimization configuration
40
+ */
41
+ optixFlowConfig?: OptixFlowConfig;
42
+ /**
34
43
  * Background style for the section
35
44
  */
36
45
  background?: SectionBackground;
@@ -66,7 +75,11 @@ interface HeroSplitSpiralShapesProps {
66
75
  * Additional CSS classes for the description
67
76
  */
68
77
  descriptionClassName?: string;
78
+ /**
79
+ * Additional CSS classes for the images container
80
+ */
81
+ imagesClassName?: string;
69
82
  }
70
- declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, shapesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
83
+ declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
71
84
 
72
85
  export { HeroSplitSpiralShapes, type HeroSplitSpiralShapesProps };
@@ -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, I as ImageItem, 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';
@@ -28,9 +28,18 @@ interface HeroSplitSpiralShapesProps {
28
28
  */
29
29
  actionsSlot?: React.ReactNode;
30
30
  /**
31
- * Custom slot for spiral shapes (overrides default shapes)
31
+ * Array of images to display (expects 3 images for scattered layout)
32
32
  */
33
- shapesSlot?: React.ReactNode; /**
33
+ images?: ImageItem[];
34
+ /**
35
+ * Custom slot for rendering images (overrides images array)
36
+ */
37
+ imagesSlot?: React.ReactNode;
38
+ /**
39
+ * OptixFlow image optimization configuration
40
+ */
41
+ optixFlowConfig?: OptixFlowConfig;
42
+ /**
34
43
  * Background style for the section
35
44
  */
36
45
  background?: SectionBackground;
@@ -66,7 +75,11 @@ interface HeroSplitSpiralShapesProps {
66
75
  * Additional CSS classes for the description
67
76
  */
68
77
  descriptionClassName?: string;
78
+ /**
79
+ * Additional CSS classes for the images container
80
+ */
81
+ imagesClassName?: string;
69
82
  }
70
- declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, shapesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
83
+ declare function HeroSplitSpiralShapes({ badgeText, heading, description, actions, actionsSlot, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSplitSpiralShapesProps): React.JSX.Element;
71
84
 
72
85
  export { HeroSplitSpiralShapes, type HeroSplitSpiralShapesProps };
@@ -5,63 +5,12 @@ import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import { Img } from '@page-speed/img';
8
9
 
9
10
  // components/blocks/hero/hero-split-spiral-shapes.tsx
10
11
  function cn(...inputs) {
11
12
  return twMerge(clsx(inputs));
12
13
  }
13
- function getNestedCardBg(parentBg, variant = "muted", options) {
14
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
15
- if (isDark) {
16
- switch (variant) {
17
- case "muted":
18
- return "bg-background";
19
- case "card":
20
- return "bg-card";
21
- case "accent":
22
- return "bg-accent";
23
- case "subtle":
24
- return "bg-background/50";
25
- }
26
- } else {
27
- switch (variant) {
28
- case "muted":
29
- return "bg-muted";
30
- case "card":
31
- return "bg-card";
32
- case "accent":
33
- return "bg-accent";
34
- case "subtle":
35
- return "bg-muted/50";
36
- }
37
- }
38
- }
39
- function getTextColor(parentBg, variant = "default", options) {
40
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
- if (isDark) {
42
- switch (variant) {
43
- case "default":
44
- return "text-foreground";
45
- case "muted":
46
- return "text-foreground/80";
47
- case "subtle":
48
- return "text-foreground/60";
49
- case "accent":
50
- return "text-accent-foreground";
51
- }
52
- } else {
53
- switch (variant) {
54
- case "default":
55
- return "text-foreground";
56
- case "muted":
57
- return "text-muted-foreground";
58
- case "subtle":
59
- return "text-muted-foreground/70";
60
- case "accent":
61
- return "text-primary";
62
- }
63
- }
64
- }
65
14
  function normalizePhoneNumber(input) {
66
15
  const trimmed = input.trim();
67
16
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -861,16 +810,19 @@ function HeroSplitSpiralShapes({
861
810
  description,
862
811
  actions,
863
812
  actionsSlot,
864
- shapesSlot,
813
+ images,
814
+ imagesSlot,
815
+ optixFlowConfig,
865
816
  background,
866
- spacing,
817
+ spacing = "py-32 md:py-32",
867
818
  pattern,
868
819
  patternOpacity,
869
820
  className,
870
- containerClassName,
821
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
871
822
  contentClassName,
872
823
  headingClassName,
873
- descriptionClassName
824
+ descriptionClassName,
825
+ imagesClassName
874
826
  }) {
875
827
  const renderActions = useMemo(() => {
876
828
  if (actionsSlot) return actionsSlot;
@@ -893,39 +845,39 @@ function HeroSplitSpiralShapes({
893
845
  );
894
846
  }) });
895
847
  }, [actionsSlot, actions]);
896
- const renderShapes = useMemo(() => {
897
- if (shapesSlot) return shapesSlot;
898
- return /* @__PURE__ */ jsxs("div", { className: "relative aspect-3/4", children: [
899
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(
900
- "svg",
848
+ const renderImages = useMemo(() => {
849
+ if (imagesSlot) return imagesSlot;
850
+ if (!images || images.length === 0) return null;
851
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative aspect-3/4", imagesClassName), children: [
852
+ images[0] && /* @__PURE__ */ jsx("div", { className: "absolute top-[10%] left-[8%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsx(
853
+ Img,
901
854
  {
902
- xmlns: "http://www.w3.org/2000/svg",
903
- version: "1.1",
904
- viewBox: "0 0 800 800",
905
- className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
906
- children: Array.from(Array(720).keys()).map((dot, index, array) => {
907
- const angle = 0.2 * index;
908
- const scalar = 40 + index * (360 / array.length);
909
- const x = Math.round(Math.cos(angle) * scalar);
910
- const y = Math.round(Math.sin(angle) * scalar);
911
- return /* @__PURE__ */ jsx(
912
- "circle",
913
- {
914
- r: 3 * index / array.length,
915
- cx: 400 + x,
916
- cy: 400 + y,
917
- opacity: 1 - Math.sin(angle)
918
- },
919
- index
920
- );
921
- })
855
+ src: images[0].src,
856
+ alt: images[0].alt,
857
+ className: cn("h-full w-full object-cover", images[0].className),
858
+ optixFlowConfig
922
859
  }
923
- ) }),
924
- /* @__PURE__ */ jsx("div", { className: cn("absolute top-[10%] left-[8%] flex aspect-5/6 w-[38%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) }),
925
- /* @__PURE__ */ jsx("div", { className: cn("absolute top-[20%] right-[12%] flex aspect-square w-[20%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) }),
926
- /* @__PURE__ */ jsx("div", { className: cn("absolute right-[24%] bottom-[24%] flex aspect-5/6 w-[38%] justify-center rounded-lg border border-border", getNestedCardBg(background, "accent")) })
860
+ ) }) }),
861
+ images[1] && /* @__PURE__ */ jsx("div", { className: "absolute top-[20%] right-[12%] w-[20%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-square", children: /* @__PURE__ */ jsx(
862
+ Img,
863
+ {
864
+ src: images[1].src,
865
+ alt: images[1].alt,
866
+ className: cn("h-full w-full object-cover", images[1].className),
867
+ optixFlowConfig
868
+ }
869
+ ) }) }),
870
+ images[2] && /* @__PURE__ */ jsx("div", { className: "absolute right-[24%] bottom-[24%] w-[38%] overflow-hidden rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "aspect-5/6", children: /* @__PURE__ */ jsx(
871
+ Img,
872
+ {
873
+ src: images[2].src,
874
+ alt: images[2].alt,
875
+ className: cn("h-full w-full object-cover", images[2].className),
876
+ optixFlowConfig
877
+ }
878
+ ) }) })
927
879
  ] });
928
- }, [shapesSlot]);
880
+ }, [imagesSlot, images, imagesClassName, optixFlowConfig]);
929
881
  return /* @__PURE__ */ jsx(
930
882
  Section,
931
883
  {
@@ -933,15 +885,16 @@ function HeroSplitSpiralShapes({
933
885
  spacing,
934
886
  pattern,
935
887
  patternOpacity,
936
- className: cn(className),
937
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
888
+ className: cn("relative flex items-center justify-center", className),
889
+ containerClassName,
890
+ children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 lg:grid-cols-2", children: [
938
891
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
939
892
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("p", { children: badgeText }) : badgeText),
940
893
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
941
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
894
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
942
895
  renderActions
943
896
  ] }),
944
- renderShapes
897
+ renderImages
945
898
  ] }) })
946
899
  }
947
900
  );
@@ -936,7 +936,7 @@ function HeroStartupLaunchCta({
936
936
  const renderBadgeCard = React.useMemo(() => {
937
937
  if (badgeCardSlot) return badgeCardSlot;
938
938
  if (!badgeCard) return null;
939
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-background p-4 shadow-lg", children: [
939
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-card text-card-foreground p-4 shadow-lg", children: [
940
940
  badgeCard.logoSrc && /* @__PURE__ */ jsxRuntime.jsx(
941
941
  img.Img,
942
942
  {
@@ -947,7 +947,7 @@ function HeroStartupLaunchCta({
947
947
  }
948
948
  ),
949
949
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
950
- badgeCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold ", children: badgeCard.title }),
950
+ badgeCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: badgeCard.title }),
951
951
  badgeCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: badgeCard.subtitle })
952
952
  ] })
953
953
  ] });
@@ -915,7 +915,7 @@ function HeroStartupLaunchCta({
915
915
  const renderBadgeCard = useMemo(() => {
916
916
  if (badgeCardSlot) return badgeCardSlot;
917
917
  if (!badgeCard) return null;
918
- return /* @__PURE__ */ jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-background p-4 shadow-lg", children: [
918
+ return /* @__PURE__ */ jsxs("div", { className: "absolute -bottom-4 -left-4 flex items-center gap-3 rounded-xl bg-card text-card-foreground p-4 shadow-lg", children: [
919
919
  badgeCard.logoSrc && /* @__PURE__ */ jsx(
920
920
  Img,
921
921
  {
@@ -926,7 +926,7 @@ function HeroStartupLaunchCta({
926
926
  }
927
927
  ),
928
928
  /* @__PURE__ */ jsxs("div", { children: [
929
- badgeCard.title && /* @__PURE__ */ jsx("div", { className: "font-semibold ", children: badgeCard.title }),
929
+ badgeCard.title && /* @__PURE__ */ jsx("div", { className: "font-semibold", children: badgeCard.title }),
930
930
  badgeCard.subtitle && /* @__PURE__ */ jsx("div", { className: "text-sm", children: badgeCard.subtitle })
931
931
  ] })
932
932
  ] });