@opensite/ui 3.7.2 → 3.7.4

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 (279) hide show
  1. package/dist/hero-ad-campaign-expert.cjs +46 -1
  2. package/dist/hero-ad-campaign-expert.d.cts +16 -1
  3. package/dist/hero-ad-campaign-expert.d.ts +16 -1
  4. package/dist/hero-ad-campaign-expert.js +46 -1
  5. package/dist/hero-adaptable-product-grid.cjs +46 -1
  6. package/dist/hero-adaptable-product-grid.d.cts +16 -1
  7. package/dist/hero-adaptable-product-grid.d.ts +16 -1
  8. package/dist/hero-adaptable-product-grid.js +46 -1
  9. package/dist/hero-agency-animated-images.cjs +46 -1
  10. package/dist/hero-agency-animated-images.d.cts +16 -1
  11. package/dist/hero-agency-animated-images.d.ts +16 -1
  12. package/dist/hero-agency-animated-images.js +46 -1
  13. package/dist/hero-ai-powered-carousel.cjs +56 -8
  14. package/dist/hero-ai-powered-carousel.d.cts +16 -1
  15. package/dist/hero-ai-powered-carousel.d.ts +16 -1
  16. package/dist/hero-ai-powered-carousel.js +56 -8
  17. package/dist/hero-announcement-badge.cjs +47 -1
  18. package/dist/hero-announcement-badge.d.cts +16 -1
  19. package/dist/hero-announcement-badge.d.ts +16 -1
  20. package/dist/hero-announcement-badge.js +47 -1
  21. package/dist/hero-architecture-fullscreen.cjs +46 -1
  22. package/dist/hero-architecture-fullscreen.d.cts +16 -1
  23. package/dist/hero-architecture-fullscreen.d.ts +16 -1
  24. package/dist/hero-architecture-fullscreen.js +46 -1
  25. package/dist/hero-badge-image-split.cjs +46 -1
  26. package/dist/hero-badge-image-split.d.cts +16 -1
  27. package/dist/hero-badge-image-split.d.ts +16 -1
  28. package/dist/hero-badge-image-split.js +46 -1
  29. package/dist/hero-badge-shadow-overlay.cjs +54 -3
  30. package/dist/hero-badge-shadow-overlay.d.cts +16 -1
  31. package/dist/hero-badge-shadow-overlay.d.ts +16 -1
  32. package/dist/hero-badge-shadow-overlay.js +54 -3
  33. package/dist/hero-business-carousel-dots.cjs +46 -1
  34. package/dist/hero-business-carousel-dots.d.cts +16 -1
  35. package/dist/hero-business-carousel-dots.d.ts +16 -1
  36. package/dist/hero-business-carousel-dots.js +46 -1
  37. package/dist/hero-business-operations-mosaic.cjs +46 -1
  38. package/dist/hero-business-operations-mosaic.d.cts +16 -1
  39. package/dist/hero-business-operations-mosaic.d.ts +16 -1
  40. package/dist/hero-business-operations-mosaic.js +46 -1
  41. package/dist/hero-centered-gradient-cta.cjs +47 -1
  42. package/dist/hero-centered-gradient-cta.d.cts +16 -1
  43. package/dist/hero-centered-gradient-cta.d.ts +16 -1
  44. package/dist/hero-centered-gradient-cta.js +47 -1
  45. package/dist/hero-centered-image-grid.cjs +46 -1
  46. package/dist/hero-centered-image-grid.d.cts +16 -1
  47. package/dist/hero-centered-image-grid.d.ts +16 -1
  48. package/dist/hero-centered-image-grid.js +46 -1
  49. package/dist/hero-centered-screenshot.cjs +46 -1
  50. package/dist/hero-centered-screenshot.d.cts +16 -1
  51. package/dist/hero-centered-screenshot.d.ts +16 -1
  52. package/dist/hero-centered-screenshot.js +46 -1
  53. package/dist/hero-coming-soon-countdown.cjs +47 -1
  54. package/dist/hero-coming-soon-countdown.d.cts +16 -1
  55. package/dist/hero-coming-soon-countdown.d.ts +16 -1
  56. package/dist/hero-coming-soon-countdown.js +47 -1
  57. package/dist/hero-community-survey-cta.cjs +46 -1
  58. package/dist/hero-community-survey-cta.d.cts +16 -1
  59. package/dist/hero-community-survey-cta.d.ts +16 -1
  60. package/dist/hero-community-survey-cta.js +46 -1
  61. package/dist/hero-conversation-intelligence.cjs +46 -1
  62. package/dist/hero-conversation-intelligence.d.cts +16 -1
  63. package/dist/hero-conversation-intelligence.d.ts +16 -1
  64. package/dist/hero-conversation-intelligence.js +46 -1
  65. package/dist/hero-creative-studio-stacked.cjs +46 -1
  66. package/dist/hero-creative-studio-stacked.d.cts +17 -2
  67. package/dist/hero-creative-studio-stacked.d.ts +17 -2
  68. package/dist/hero-creative-studio-stacked.js +46 -1
  69. package/dist/hero-crm-streamlined.cjs +58 -9
  70. package/dist/hero-crm-streamlined.d.cts +16 -1
  71. package/dist/hero-crm-streamlined.d.ts +16 -1
  72. package/dist/hero-crm-streamlined.js +58 -9
  73. package/dist/hero-customer-support-layered.cjs +46 -1
  74. package/dist/hero-customer-support-layered.d.cts +16 -1
  75. package/dist/hero-customer-support-layered.d.ts +16 -1
  76. package/dist/hero-customer-support-layered.js +46 -1
  77. package/dist/hero-design-system-3d.cjs +67 -20
  78. package/dist/hero-design-system-3d.d.cts +16 -1
  79. package/dist/hero-design-system-3d.d.ts +16 -1
  80. package/dist/hero-design-system-3d.js +67 -20
  81. package/dist/hero-developer-tools-code.cjs +47 -1
  82. package/dist/hero-developer-tools-code.d.cts +16 -1
  83. package/dist/hero-developer-tools-code.d.ts +16 -1
  84. package/dist/hero-developer-tools-code.js +47 -1
  85. package/dist/hero-digital-agency-fullscreen.cjs +46 -1
  86. package/dist/hero-digital-agency-fullscreen.d.cts +16 -1
  87. package/dist/hero-digital-agency-fullscreen.d.ts +16 -1
  88. package/dist/hero-digital-agency-fullscreen.js +46 -1
  89. package/dist/hero-ecommerce-product-showcase.cjs +46 -1
  90. package/dist/hero-ecommerce-product-showcase.d.cts +16 -1
  91. package/dist/hero-ecommerce-product-showcase.d.ts +16 -1
  92. package/dist/hero-ecommerce-product-showcase.js +46 -1
  93. package/dist/hero-enterprise-security.cjs +47 -1
  94. package/dist/hero-enterprise-security.d.cts +16 -1
  95. package/dist/hero-enterprise-security.d.ts +16 -1
  96. package/dist/hero-enterprise-security.js +47 -1
  97. package/dist/hero-feature-cards-grid.cjs +47 -1
  98. package/dist/hero-feature-cards-grid.d.cts +16 -1
  99. package/dist/hero-feature-cards-grid.d.ts +16 -1
  100. package/dist/hero-feature-cards-grid.js +47 -1
  101. package/dist/hero-fullscreen-background-image.cjs +46 -1
  102. package/dist/hero-fullscreen-background-image.d.cts +16 -1
  103. package/dist/hero-fullscreen-background-image.d.ts +16 -1
  104. package/dist/hero-fullscreen-background-image.js +46 -1
  105. package/dist/hero-gradient-avatars-rating.cjs +46 -1
  106. package/dist/hero-gradient-avatars-rating.d.cts +16 -1
  107. package/dist/hero-gradient-avatars-rating.d.ts +16 -1
  108. package/dist/hero-gradient-avatars-rating.js +46 -1
  109. package/dist/hero-gradient-client-focused.cjs +46 -1
  110. package/dist/hero-gradient-client-focused.d.cts +16 -1
  111. package/dist/hero-gradient-client-focused.d.ts +16 -1
  112. package/dist/hero-gradient-client-focused.js +46 -1
  113. package/dist/hero-grid-pattern-efficiency.cjs +47 -1
  114. package/dist/hero-grid-pattern-efficiency.d.cts +16 -1
  115. package/dist/hero-grid-pattern-efficiency.d.ts +16 -1
  116. package/dist/hero-grid-pattern-efficiency.js +47 -1
  117. package/dist/hero-grid-pattern-solutions.cjs +46 -1
  118. package/dist/hero-grid-pattern-solutions.d.cts +16 -1
  119. package/dist/hero-grid-pattern-solutions.d.ts +16 -1
  120. package/dist/hero-grid-pattern-solutions.js +46 -1
  121. package/dist/hero-hiring-animated-text.cjs +47 -1
  122. package/dist/hero-hiring-animated-text.d.cts +16 -1
  123. package/dist/hero-hiring-animated-text.d.ts +16 -1
  124. package/dist/hero-hiring-animated-text.js +47 -1
  125. package/dist/hero-image-left-content.cjs +46 -1
  126. package/dist/hero-image-left-content.d.cts +16 -1
  127. package/dist/hero-image-left-content.d.ts +16 -1
  128. package/dist/hero-image-left-content.js +46 -1
  129. package/dist/hero-image-slider.cjs +46 -1
  130. package/dist/hero-image-slider.d.cts +16 -1
  131. package/dist/hero-image-slider.d.ts +16 -1
  132. package/dist/hero-image-slider.js +46 -1
  133. package/dist/hero-innovation-image-grid.cjs +46 -1
  134. package/dist/hero-innovation-image-grid.d.cts +16 -1
  135. package/dist/hero-innovation-image-grid.d.ts +16 -1
  136. package/dist/hero-innovation-image-grid.js +46 -1
  137. package/dist/hero-marketplace-scattered-images.cjs +46 -1
  138. package/dist/hero-marketplace-scattered-images.d.cts +16 -1
  139. package/dist/hero-marketplace-scattered-images.d.ts +16 -1
  140. package/dist/hero-marketplace-scattered-images.js +46 -1
  141. package/dist/hero-minimal-centered-dark.cjs +47 -1
  142. package/dist/hero-minimal-centered-dark.d.cts +16 -1
  143. package/dist/hero-minimal-centered-dark.d.ts +16 -1
  144. package/dist/hero-minimal-centered-dark.js +47 -1
  145. package/dist/hero-mobile-app-download.cjs +46 -1
  146. package/dist/hero-mobile-app-download.d.cts +16 -1
  147. package/dist/hero-mobile-app-download.d.ts +16 -1
  148. package/dist/hero-mobile-app-download.js +46 -1
  149. package/dist/hero-newsletter-minimal.cjs +48 -1
  150. package/dist/hero-newsletter-minimal.d.cts +16 -1
  151. package/dist/hero-newsletter-minimal.d.ts +16 -1
  152. package/dist/hero-newsletter-minimal.js +48 -1
  153. package/dist/hero-overlay-cta-grid.cjs +46 -1
  154. package/dist/hero-overlay-cta-grid.d.cts +16 -1
  155. package/dist/hero-overlay-cta-grid.d.ts +16 -1
  156. package/dist/hero-overlay-cta-grid.js +46 -1
  157. package/dist/hero-portfolio-creative.cjs +46 -1
  158. package/dist/hero-portfolio-creative.d.cts +16 -1
  159. package/dist/hero-portfolio-creative.d.ts +16 -1
  160. package/dist/hero-portfolio-creative.js +46 -1
  161. package/dist/hero-premium-split-avatars.cjs +46 -1
  162. package/dist/hero-premium-split-avatars.d.cts +16 -1
  163. package/dist/hero-premium-split-avatars.d.ts +16 -1
  164. package/dist/hero-premium-split-avatars.js +46 -1
  165. package/dist/hero-presentation-platform-video.cjs +47 -1
  166. package/dist/hero-presentation-platform-video.d.cts +16 -1
  167. package/dist/hero-presentation-platform-video.d.ts +16 -1
  168. package/dist/hero-presentation-platform-video.js +47 -1
  169. package/dist/hero-pricing-comparison.cjs +47 -1
  170. package/dist/hero-pricing-comparison.d.cts +16 -1
  171. package/dist/hero-pricing-comparison.d.ts +16 -1
  172. package/dist/hero-pricing-comparison.js +47 -1
  173. package/dist/hero-product-showcase-floating.cjs +46 -1
  174. package/dist/hero-product-showcase-floating.d.cts +16 -1
  175. package/dist/hero-product-showcase-floating.d.ts +16 -1
  176. package/dist/hero-product-showcase-floating.js +46 -1
  177. package/dist/hero-productivity-launcher-video.cjs +68 -20
  178. package/dist/hero-productivity-launcher-video.d.cts +16 -1
  179. package/dist/hero-productivity-launcher-video.d.ts +16 -1
  180. package/dist/hero-productivity-launcher-video.js +68 -20
  181. package/dist/hero-saas-dashboard-preview.cjs +46 -1
  182. package/dist/hero-saas-dashboard-preview.d.cts +16 -1
  183. package/dist/hero-saas-dashboard-preview.d.ts +16 -1
  184. package/dist/hero-saas-dashboard-preview.js +46 -1
  185. package/dist/hero-shared-inbox-layered.cjs +46 -1
  186. package/dist/hero-shared-inbox-layered.d.cts +16 -1
  187. package/dist/hero-shared-inbox-layered.d.ts +16 -1
  188. package/dist/hero-shared-inbox-layered.js +46 -1
  189. package/dist/hero-simple-centered-image.cjs +46 -1
  190. package/dist/hero-simple-centered-image.d.cts +16 -1
  191. package/dist/hero-simple-centered-image.d.ts +16 -1
  192. package/dist/hero-simple-centered-image.js +46 -1
  193. package/dist/hero-software-growth-video-dialog.cjs +46 -1
  194. package/dist/hero-software-growth-video-dialog.d.cts +16 -1
  195. package/dist/hero-software-growth-video-dialog.d.ts +16 -1
  196. package/dist/hero-software-growth-video-dialog.js +46 -1
  197. package/dist/hero-spiral-pattern-cards.cjs +46 -1
  198. package/dist/hero-spiral-pattern-cards.d.cts +16 -1
  199. package/dist/hero-spiral-pattern-cards.d.ts +16 -1
  200. package/dist/hero-spiral-pattern-cards.js +46 -1
  201. package/dist/hero-split-geometric-shapes.cjs +46 -1
  202. package/dist/hero-split-geometric-shapes.d.cts +16 -1
  203. package/dist/hero-split-geometric-shapes.d.ts +16 -1
  204. package/dist/hero-split-geometric-shapes.js +46 -1
  205. package/dist/hero-split-icon-cards.cjs +47 -1
  206. package/dist/hero-split-icon-cards.d.cts +16 -1
  207. package/dist/hero-split-icon-cards.d.ts +16 -1
  208. package/dist/hero-split-icon-cards.js +47 -1
  209. package/dist/hero-split-image-newsletter.cjs +46 -1
  210. package/dist/hero-split-image-newsletter.d.cts +16 -1
  211. package/dist/hero-split-image-newsletter.d.ts +16 -1
  212. package/dist/hero-split-image-newsletter.js +47 -2
  213. package/dist/hero-split-spiral-shapes.cjs +46 -1
  214. package/dist/hero-split-spiral-shapes.d.cts +16 -1
  215. package/dist/hero-split-spiral-shapes.d.ts +16 -1
  216. package/dist/hero-split-spiral-shapes.js +46 -1
  217. package/dist/hero-startup-launch-cta.cjs +46 -1
  218. package/dist/hero-startup-launch-cta.d.cts +16 -1
  219. package/dist/hero-startup-launch-cta.d.ts +16 -1
  220. package/dist/hero-startup-launch-cta.js +46 -1
  221. package/dist/hero-stats-social-proof.cjs +46 -1
  222. package/dist/hero-stats-social-proof.d.cts +16 -1
  223. package/dist/hero-stats-social-proof.d.ts +16 -1
  224. package/dist/hero-stats-social-proof.js +46 -1
  225. package/dist/hero-task-timer-animated.cjs +46 -1
  226. package/dist/hero-task-timer-animated.d.cts +16 -1
  227. package/dist/hero-task-timer-animated.d.ts +16 -1
  228. package/dist/hero-task-timer-animated.js +46 -1
  229. package/dist/hero-testimonial-image-grid.cjs +46 -1
  230. package/dist/hero-testimonial-image-grid.d.cts +16 -1
  231. package/dist/hero-testimonial-image-grid.d.ts +16 -1
  232. package/dist/hero-testimonial-image-grid.js +46 -1
  233. package/dist/hero-therapy-testimonial-grid.cjs +46 -1
  234. package/dist/hero-therapy-testimonial-grid.d.cts +16 -1
  235. package/dist/hero-therapy-testimonial-grid.d.ts +16 -1
  236. package/dist/hero-therapy-testimonial-grid.js +46 -1
  237. package/dist/hero-ui-library-showcase.cjs +3 -2
  238. package/dist/hero-ui-library-showcase.d.cts +13 -5
  239. package/dist/hero-ui-library-showcase.d.ts +13 -5
  240. package/dist/hero-ui-library-showcase.js +3 -2
  241. package/dist/hero-video-background-dark.cjs +47 -1
  242. package/dist/hero-video-background-dark.d.cts +16 -1
  243. package/dist/hero-video-background-dark.d.ts +16 -1
  244. package/dist/hero-video-background-dark.js +47 -1
  245. package/dist/{hero-video-dialog-gradient-Cr96k01H.d.ts → hero-video-dialog-gradient-B6-kFIvZ.d.ts} +14 -1
  246. package/dist/{hero-video-dialog-gradient-Dc0wRYdW.d.cts → hero-video-dialog-gradient-DPnh6Vn-.d.cts} +14 -1
  247. package/dist/hero-video-dialog-gradient.cjs +46 -1
  248. package/dist/hero-video-dialog-gradient.d.cts +4 -1
  249. package/dist/hero-video-dialog-gradient.d.ts +4 -1
  250. package/dist/hero-video-dialog-gradient.js +46 -1
  251. package/dist/hero-welcome-asymmetric-images.cjs +46 -1
  252. package/dist/hero-welcome-asymmetric-images.d.cts +16 -1
  253. package/dist/hero-welcome-asymmetric-images.d.ts +16 -1
  254. package/dist/hero-welcome-asymmetric-images.js +46 -1
  255. package/dist/link-page-bento-layout.cjs +59 -3
  256. package/dist/link-page-bento-layout.d.cts +16 -1
  257. package/dist/link-page-bento-layout.d.ts +16 -1
  258. package/dist/link-page-bento-layout.js +59 -3
  259. package/dist/link-page-grid-cards.cjs +59 -3
  260. package/dist/link-page-grid-cards.d.cts +16 -1
  261. package/dist/link-page-grid-cards.d.ts +16 -1
  262. package/dist/link-page-grid-cards.js +59 -3
  263. package/dist/link-page-minimal-profile.cjs +59 -3
  264. package/dist/link-page-minimal-profile.d.cts +16 -1
  265. package/dist/link-page-minimal-profile.d.ts +16 -1
  266. package/dist/link-page-minimal-profile.js +59 -3
  267. package/dist/link-page-newsletter-social.cjs +59 -3
  268. package/dist/link-page-newsletter-social.d.cts +16 -1
  269. package/dist/link-page-newsletter-social.d.ts +16 -1
  270. package/dist/link-page-newsletter-social.js +59 -3
  271. package/dist/link-tree-block.cjs +58 -2
  272. package/dist/link-tree-block.d.cts +16 -1
  273. package/dist/link-tree-block.d.ts +16 -1
  274. package/dist/link-tree-block.js +58 -2
  275. package/dist/registry.cjs +734 -199
  276. package/dist/registry.js +734 -199
  277. package/dist/social-link-icon.d.cts +1 -1
  278. package/dist/social-link-icon.d.ts +1 -1
  279. package/package.json +1 -1
@@ -471,6 +471,47 @@ function ActionComponent({ action }) {
471
471
  }
472
472
  );
473
473
  }
474
+ var SIZE_CLASSES = {
475
+ sm: "max-h-6 sm:max-h-7",
476
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
477
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
478
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
479
+ };
480
+ var BrandLogo = ({
481
+ logo,
482
+ logoSlot,
483
+ logoClassName,
484
+ size = "md",
485
+ optixFlowConfig
486
+ }) => {
487
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
488
+ if (!logo || !logo.src) return null;
489
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
490
+ img.Img,
491
+ {
492
+ src: logo.src,
493
+ className: cn(
494
+ "w-auto object-contain",
495
+ SIZE_CLASSES[size],
496
+ logo.className
497
+ ),
498
+ alt: logo.alt || "Logo",
499
+ optixFlowConfig,
500
+ loading: "eager"
501
+ }
502
+ );
503
+ if (logo.url) {
504
+ return /* @__PURE__ */ jsxRuntime.jsx(
505
+ pressable.Pressable,
506
+ {
507
+ href: logo.url,
508
+ className: cn("flex items-center", logoClassName),
509
+ children: imgElement
510
+ }
511
+ );
512
+ }
513
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
514
+ };
474
515
  function HeroSplitGeometricShapes({
475
516
  sectionId = "hero-split-geometric-shapes",
476
517
  badgeText,
@@ -492,7 +533,10 @@ function HeroSplitGeometricShapes({
492
533
  descriptionClassName,
493
534
  imagesClassName,
494
535
  imageClassName,
495
- optixFlowConfig
536
+ optixFlowConfig,
537
+ logo,
538
+ logoSlot,
539
+ logoClassName
496
540
  }) {
497
541
  const [lightboxOpen, setLightboxOpen] = React.useState(false);
498
542
  const [lightboxIndex, setLightboxIndex] = React.useState(0);
@@ -611,6 +655,7 @@ function HeroSplitGeometricShapes({
611
655
  ),
612
656
  children: [
613
657
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: badgeText }) : badgeText),
658
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
614
659
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
615
660
  "h1",
616
661
  {
@@ -1,7 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
3
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
3
4
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-DyouPohq.cjs';
4
5
  import 'react/jsx-runtime';
6
+ import './dynamic-icon.cjs';
7
+ import '@page-speed/icon';
5
8
  import 'class-variance-authority';
6
9
  import '@page-speed/pressable';
7
10
  import '@opensite/hooks/usePlatformFromUrl';
@@ -103,9 +106,21 @@ interface HeroSplitGeometricShapesProps {
103
106
  * Additional CSS classes for the actions container
104
107
  */
105
108
  actionsClassName?: string;
109
+ /**
110
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
111
+ */
112
+ logo?: LogoConfig;
113
+ /**
114
+ * Custom slot for logo (overrides logo prop)
115
+ */
116
+ logoSlot?: React.ReactNode;
117
+ /**
118
+ * Additional CSS classes for the logo container
119
+ */
120
+ logoClassName?: string;
106
121
  /** Optional Section ID */
107
122
  sectionId?: string;
108
123
  }
109
- declare function HeroSplitGeometricShapes({ sectionId, badgeText, heading, description, actions, actionsSlot, images, imagesSlot, background, containerClassName, spacing, pattern, actionsClassName, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imagesClassName, imageClassName, optixFlowConfig, }: HeroSplitGeometricShapesProps): React.JSX.Element;
124
+ declare function HeroSplitGeometricShapes({ sectionId, badgeText, heading, description, actions, actionsSlot, images, imagesSlot, background, containerClassName, spacing, pattern, actionsClassName, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imagesClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSplitGeometricShapesProps): React.JSX.Element;
110
125
 
111
126
  export { HeroSplitGeometricShapes, type HeroSplitGeometricShapesImage, type HeroSplitGeometricShapesProps };
@@ -1,7 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
3
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
3
4
  import { A as ActionConfig, O as OptixFlowConfig } from './blocks-DyouPohq.js';
4
5
  import 'react/jsx-runtime';
6
+ import './dynamic-icon.js';
7
+ import '@page-speed/icon';
5
8
  import 'class-variance-authority';
6
9
  import '@page-speed/pressable';
7
10
  import '@opensite/hooks/usePlatformFromUrl';
@@ -103,9 +106,21 @@ interface HeroSplitGeometricShapesProps {
103
106
  * Additional CSS classes for the actions container
104
107
  */
105
108
  actionsClassName?: string;
109
+ /**
110
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
111
+ */
112
+ logo?: LogoConfig;
113
+ /**
114
+ * Custom slot for logo (overrides logo prop)
115
+ */
116
+ logoSlot?: React.ReactNode;
117
+ /**
118
+ * Additional CSS classes for the logo container
119
+ */
120
+ logoClassName?: string;
106
121
  /** Optional Section ID */
107
122
  sectionId?: string;
108
123
  }
109
- declare function HeroSplitGeometricShapes({ sectionId, badgeText, heading, description, actions, actionsSlot, images, imagesSlot, background, containerClassName, spacing, pattern, actionsClassName, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imagesClassName, imageClassName, optixFlowConfig, }: HeroSplitGeometricShapesProps): React.JSX.Element;
124
+ declare function HeroSplitGeometricShapes({ sectionId, badgeText, heading, description, actions, actionsSlot, images, imagesSlot, background, containerClassName, spacing, pattern, actionsClassName, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imagesClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSplitGeometricShapesProps): React.JSX.Element;
110
125
 
111
126
  export { HeroSplitGeometricShapes, type HeroSplitGeometricShapesImage, type HeroSplitGeometricShapesProps };
@@ -465,6 +465,47 @@ function ActionComponent({ action }) {
465
465
  }
466
466
  );
467
467
  }
468
+ var SIZE_CLASSES = {
469
+ sm: "max-h-6 sm:max-h-7",
470
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
471
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
472
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
473
+ };
474
+ var BrandLogo = ({
475
+ logo,
476
+ logoSlot,
477
+ logoClassName,
478
+ size = "md",
479
+ optixFlowConfig
480
+ }) => {
481
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
482
+ if (!logo || !logo.src) return null;
483
+ const imgElement = /* @__PURE__ */ jsx(
484
+ Img,
485
+ {
486
+ src: logo.src,
487
+ className: cn(
488
+ "w-auto object-contain",
489
+ SIZE_CLASSES[size],
490
+ logo.className
491
+ ),
492
+ alt: logo.alt || "Logo",
493
+ optixFlowConfig,
494
+ loading: "eager"
495
+ }
496
+ );
497
+ if (logo.url) {
498
+ return /* @__PURE__ */ jsx(
499
+ Pressable,
500
+ {
501
+ href: logo.url,
502
+ className: cn("flex items-center", logoClassName),
503
+ children: imgElement
504
+ }
505
+ );
506
+ }
507
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
508
+ };
468
509
  function HeroSplitGeometricShapes({
469
510
  sectionId = "hero-split-geometric-shapes",
470
511
  badgeText,
@@ -486,7 +527,10 @@ function HeroSplitGeometricShapes({
486
527
  descriptionClassName,
487
528
  imagesClassName,
488
529
  imageClassName,
489
- optixFlowConfig
530
+ optixFlowConfig,
531
+ logo,
532
+ logoSlot,
533
+ logoClassName
490
534
  }) {
491
535
  const [lightboxOpen, setLightboxOpen] = useState(false);
492
536
  const [lightboxIndex, setLightboxIndex] = useState(0);
@@ -605,6 +649,7 @@ function HeroSplitGeometricShapes({
605
649
  ),
606
650
  children: [
607
651
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("p", { children: badgeText }) : badgeText),
652
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
608
653
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
609
654
  "h1",
610
655
  {
@@ -7,6 +7,7 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var icon = require('@page-speed/icon');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var pressable = require('@page-speed/pressable');
10
+ var img = require('@page-speed/img');
10
11
 
11
12
  function _interopNamespace(e) {
12
13
  if (e && e.__esModule) return e;
@@ -464,6 +465,47 @@ var Section = React__namespace.default.forwardRef(
464
465
  }
465
466
  );
466
467
  Section.displayName = "Section";
468
+ var SIZE_CLASSES = {
469
+ sm: "max-h-6 sm:max-h-7",
470
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
471
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
472
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
473
+ };
474
+ var BrandLogo = ({
475
+ logo,
476
+ logoSlot,
477
+ logoClassName,
478
+ size = "md",
479
+ optixFlowConfig
480
+ }) => {
481
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
482
+ if (!logo || !logo.src) return null;
483
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
484
+ img.Img,
485
+ {
486
+ src: logo.src,
487
+ className: cn(
488
+ "w-auto object-contain",
489
+ SIZE_CLASSES[size],
490
+ logo.className
491
+ ),
492
+ alt: logo.alt || "Logo",
493
+ optixFlowConfig,
494
+ loading: "eager"
495
+ }
496
+ );
497
+ if (logo.url) {
498
+ return /* @__PURE__ */ jsxRuntime.jsx(
499
+ pressable.Pressable,
500
+ {
501
+ href: logo.url,
502
+ className: cn("flex items-center", logoClassName),
503
+ children: imgElement
504
+ }
505
+ );
506
+ }
507
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
508
+ };
467
509
  function HeroSplitIconCards({
468
510
  sectionId = "hero-split-icon-cards",
469
511
  eyebrow,
@@ -484,7 +526,10 @@ function HeroSplitIconCards({
484
526
  descriptionClassName,
485
527
  verticalSpacing,
486
528
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
487
- spacing = "pt-32 pb-8 md:pt-32 md:pb-32"
529
+ spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
530
+ logo,
531
+ logoSlot,
532
+ logoClassName
488
533
  }) {
489
534
  const renderActions = React.useMemo(() => {
490
535
  if (actionsSlot) return actionsSlot;
@@ -549,6 +594,7 @@ function HeroSplitIconCards({
549
594
  children: eyebrow
550
595
  }
551
596
  ) : eyebrow),
597
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
552
598
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
553
599
  "h2",
554
600
  {
@@ -1,10 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
3
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
3
4
  import './blocks-DyouPohq.cjs';
4
5
  import 'class-variance-authority';
5
6
  import '@page-speed/pressable';
6
7
  import '@opensite/hooks/usePlatformFromUrl';
7
8
  import 'react/jsx-runtime';
9
+ import './dynamic-icon.cjs';
10
+ import '@page-speed/icon';
8
11
 
9
12
  interface HeroSplitIconCardsItem {
10
13
  /**
@@ -105,6 +108,18 @@ interface HeroSplitIconCardsProps {
105
108
  containerClassName?: string;
106
109
  /** Section spacing variant */
107
110
  spacing?: SectionSpacing;
111
+ /**
112
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
113
+ */
114
+ logo?: LogoConfig;
115
+ /**
116
+ * Custom slot for logo (overrides logo prop)
117
+ */
118
+ logoSlot?: React.ReactNode;
119
+ /**
120
+ * Additional CSS classes for the logo container
121
+ */
122
+ logoClassName?: string;
108
123
  /** Optional Section ID */
109
124
  sectionId?: string;
110
125
  }
@@ -113,6 +128,6 @@ interface HeroSplitIconCardsProps {
113
128
  * a stacked list of icon cards on the right. Ideal for service pages that need
114
129
  * an explanatory hero plus quick benefit callouts.
115
130
  */
116
- declare function HeroSplitIconCards({ sectionId, eyebrow, heading, description, primaryCta, secondaryCta, actionsSlot, children, cardItems, cardsSlot, background, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, verticalSpacing, containerClassName, spacing, }: HeroSplitIconCardsProps): React.JSX.Element;
131
+ declare function HeroSplitIconCards({ sectionId, eyebrow, heading, description, primaryCta, secondaryCta, actionsSlot, children, cardItems, cardsSlot, background, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, verticalSpacing, containerClassName, spacing, logo, logoSlot, logoClassName, }: HeroSplitIconCardsProps): React.JSX.Element;
117
132
 
118
133
  export { HeroSplitIconCards, type HeroSplitIconCardsProps };
@@ -1,10 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
3
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
3
4
  import './blocks-DyouPohq.js';
4
5
  import 'class-variance-authority';
5
6
  import '@page-speed/pressable';
6
7
  import '@opensite/hooks/usePlatformFromUrl';
7
8
  import 'react/jsx-runtime';
9
+ import './dynamic-icon.js';
10
+ import '@page-speed/icon';
8
11
 
9
12
  interface HeroSplitIconCardsItem {
10
13
  /**
@@ -105,6 +108,18 @@ interface HeroSplitIconCardsProps {
105
108
  containerClassName?: string;
106
109
  /** Section spacing variant */
107
110
  spacing?: SectionSpacing;
111
+ /**
112
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
113
+ */
114
+ logo?: LogoConfig;
115
+ /**
116
+ * Custom slot for logo (overrides logo prop)
117
+ */
118
+ logoSlot?: React.ReactNode;
119
+ /**
120
+ * Additional CSS classes for the logo container
121
+ */
122
+ logoClassName?: string;
108
123
  /** Optional Section ID */
109
124
  sectionId?: string;
110
125
  }
@@ -113,6 +128,6 @@ interface HeroSplitIconCardsProps {
113
128
  * a stacked list of icon cards on the right. Ideal for service pages that need
114
129
  * an explanatory hero plus quick benefit callouts.
115
130
  */
116
- declare function HeroSplitIconCards({ sectionId, eyebrow, heading, description, primaryCta, secondaryCta, actionsSlot, children, cardItems, cardsSlot, background, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, verticalSpacing, containerClassName, spacing, }: HeroSplitIconCardsProps): React.JSX.Element;
131
+ declare function HeroSplitIconCards({ sectionId, eyebrow, heading, description, primaryCta, secondaryCta, actionsSlot, children, cardItems, cardsSlot, background, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, verticalSpacing, containerClassName, spacing, logo, logoSlot, logoClassName, }: HeroSplitIconCardsProps): React.JSX.Element;
117
132
 
118
133
  export { HeroSplitIconCards, type HeroSplitIconCardsProps };
@@ -6,6 +6,7 @@ import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
7
7
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
8
8
  import { Pressable } from '@page-speed/pressable';
9
+ import { Img } from '@page-speed/img';
9
10
 
10
11
  // components/blocks/hero/hero-split-icon-cards.tsx
11
12
  function cn(...inputs) {
@@ -443,6 +444,47 @@ var Section = React__default.forwardRef(
443
444
  }
444
445
  );
445
446
  Section.displayName = "Section";
447
+ var SIZE_CLASSES = {
448
+ sm: "max-h-6 sm:max-h-7",
449
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
450
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
451
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
452
+ };
453
+ var BrandLogo = ({
454
+ logo,
455
+ logoSlot,
456
+ logoClassName,
457
+ size = "md",
458
+ optixFlowConfig
459
+ }) => {
460
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
461
+ if (!logo || !logo.src) return null;
462
+ const imgElement = /* @__PURE__ */ jsx(
463
+ Img,
464
+ {
465
+ src: logo.src,
466
+ className: cn(
467
+ "w-auto object-contain",
468
+ SIZE_CLASSES[size],
469
+ logo.className
470
+ ),
471
+ alt: logo.alt || "Logo",
472
+ optixFlowConfig,
473
+ loading: "eager"
474
+ }
475
+ );
476
+ if (logo.url) {
477
+ return /* @__PURE__ */ jsx(
478
+ Pressable,
479
+ {
480
+ href: logo.url,
481
+ className: cn("flex items-center", logoClassName),
482
+ children: imgElement
483
+ }
484
+ );
485
+ }
486
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
487
+ };
446
488
  function HeroSplitIconCards({
447
489
  sectionId = "hero-split-icon-cards",
448
490
  eyebrow,
@@ -463,7 +505,10 @@ function HeroSplitIconCards({
463
505
  descriptionClassName,
464
506
  verticalSpacing,
465
507
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
466
- spacing = "pt-32 pb-8 md:pt-32 md:pb-32"
508
+ spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
509
+ logo,
510
+ logoSlot,
511
+ logoClassName
467
512
  }) {
468
513
  const renderActions = useMemo(() => {
469
514
  if (actionsSlot) return actionsSlot;
@@ -528,6 +573,7 @@ function HeroSplitIconCards({
528
573
  children: eyebrow
529
574
  }
530
575
  ) : eyebrow),
576
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
531
577
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
532
578
  "h2",
533
579
  {
@@ -410,6 +410,47 @@ var Section = React3__namespace.default.forwardRef(
410
410
  }
411
411
  );
412
412
  Section.displayName = "Section";
413
+ var SIZE_CLASSES = {
414
+ sm: "max-h-6 sm:max-h-7",
415
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
416
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
417
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
418
+ };
419
+ var BrandLogo = ({
420
+ logo,
421
+ logoSlot,
422
+ logoClassName,
423
+ size = "md",
424
+ optixFlowConfig
425
+ }) => {
426
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
427
+ if (!logo || !logo.src) return null;
428
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
429
+ img.Img,
430
+ {
431
+ src: logo.src,
432
+ className: cn(
433
+ "w-auto object-contain",
434
+ SIZE_CLASSES[size],
435
+ logo.className
436
+ ),
437
+ alt: logo.alt || "Logo",
438
+ optixFlowConfig,
439
+ loading: "eager"
440
+ }
441
+ );
442
+ if (logo.url) {
443
+ return /* @__PURE__ */ jsxRuntime.jsx(
444
+ pressable.Pressable,
445
+ {
446
+ href: logo.url,
447
+ className: cn("flex items-center", logoClassName),
448
+ children: imgElement
449
+ }
450
+ );
451
+ }
452
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
453
+ };
413
454
  var DEFAULT_FORM_FIELDS = [
414
455
  {
415
456
  name: "email",
@@ -445,7 +486,10 @@ function HeroSplitImageNewsletter({
445
486
  headingClassName,
446
487
  descriptionClassName,
447
488
  imageClassName,
448
- optixFlowConfig
489
+ optixFlowConfig,
490
+ logo,
491
+ logoSlot,
492
+ logoClassName
449
493
  }) {
450
494
  const {
451
495
  uploadTokens,
@@ -581,6 +625,7 @@ function HeroSplitImageNewsletter({
581
625
  contentClassName
582
626
  ),
583
627
  children: [
628
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
584
629
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
585
630
  "h1",
586
631
  {
@@ -1,8 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
3
3
  import { FormFieldConfig, PageSpeedFormConfig } from '@page-speed/forms/integration';
4
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
4
5
  import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig } from './blocks-DyouPohq.cjs';
5
6
  import 'react/jsx-runtime';
7
+ import './dynamic-icon.cjs';
8
+ import '@page-speed/icon';
6
9
  import 'class-variance-authority';
7
10
  import '@page-speed/pressable';
8
11
  import '@opensite/hooks/usePlatformFromUrl';
@@ -103,9 +106,21 @@ interface HeroSplitImageNewsletterProps {
103
106
  * OptixFlow image optimization configuration
104
107
  */
105
108
  optixFlowConfig?: OptixFlowConfig;
109
+ /**
110
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
111
+ */
112
+ logo?: LogoConfig;
113
+ /**
114
+ * Custom slot for logo (overrides logo prop)
115
+ */
116
+ logoSlot?: React.ReactNode;
117
+ /**
118
+ * Additional CSS classes for the logo container
119
+ */
120
+ logoClassName?: string;
106
121
  /** Optional Section ID */
107
122
  sectionId?: string;
108
123
  }
109
- declare function HeroSplitImageNewsletter({ sectionId, heading, description, formFields, formConfig, onSubmit, onSuccess, onError, successMessage, buttonAction, helperText, formSlot, image, imageSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroSplitImageNewsletterProps): React.JSX.Element;
124
+ declare function HeroSplitImageNewsletter({ sectionId, heading, description, formFields, formConfig, onSubmit, onSuccess, onError, successMessage, buttonAction, helperText, formSlot, image, imageSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSplitImageNewsletterProps): React.JSX.Element;
110
125
 
111
126
  export { HeroSplitImageNewsletter, type HeroSplitImageNewsletterProps };
@@ -1,8 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
3
3
  import { FormFieldConfig, PageSpeedFormConfig } from '@page-speed/forms/integration';
4
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
4
5
  import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig } from './blocks-DyouPohq.js';
5
6
  import 'react/jsx-runtime';
7
+ import './dynamic-icon.js';
8
+ import '@page-speed/icon';
6
9
  import 'class-variance-authority';
7
10
  import '@page-speed/pressable';
8
11
  import '@opensite/hooks/usePlatformFromUrl';
@@ -103,9 +106,21 @@ interface HeroSplitImageNewsletterProps {
103
106
  * OptixFlow image optimization configuration
104
107
  */
105
108
  optixFlowConfig?: OptixFlowConfig;
109
+ /**
110
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
111
+ */
112
+ logo?: LogoConfig;
113
+ /**
114
+ * Custom slot for logo (overrides logo prop)
115
+ */
116
+ logoSlot?: React.ReactNode;
117
+ /**
118
+ * Additional CSS classes for the logo container
119
+ */
120
+ logoClassName?: string;
106
121
  /** Optional Section ID */
107
122
  sectionId?: string;
108
123
  }
109
- declare function HeroSplitImageNewsletter({ sectionId, heading, description, formFields, formConfig, onSubmit, onSuccess, onError, successMessage, buttonAction, helperText, formSlot, image, imageSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, }: HeroSplitImageNewsletterProps): React.JSX.Element;
124
+ declare function HeroSplitImageNewsletter({ sectionId, heading, description, formFields, formConfig, onSubmit, onSuccess, onError, successMessage, buttonAction, helperText, formSlot, image, imageSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSplitImageNewsletterProps): React.JSX.Element;
110
125
 
111
126
  export { HeroSplitImageNewsletter, type HeroSplitImageNewsletterProps };
@@ -5,7 +5,7 @@ import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Pressable } from '@page-speed/pressable';
7
7
  import { Img } from '@page-speed/img';
8
- import { jsx, jsxs } from 'react/jsx-runtime';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Form } from '@page-speed/forms';
10
10
  import { useFileUpload, useContactForm, DynamicFormField } from '@page-speed/forms/integration';
11
11
 
@@ -389,6 +389,47 @@ var Section = React3__default.forwardRef(
389
389
  }
390
390
  );
391
391
  Section.displayName = "Section";
392
+ var SIZE_CLASSES = {
393
+ sm: "max-h-6 sm:max-h-7",
394
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
395
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
396
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
397
+ };
398
+ var BrandLogo = ({
399
+ logo,
400
+ logoSlot,
401
+ logoClassName,
402
+ size = "md",
403
+ optixFlowConfig
404
+ }) => {
405
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
406
+ if (!logo || !logo.src) return null;
407
+ const imgElement = /* @__PURE__ */ jsx(
408
+ Img,
409
+ {
410
+ src: logo.src,
411
+ className: cn(
412
+ "w-auto object-contain",
413
+ SIZE_CLASSES[size],
414
+ logo.className
415
+ ),
416
+ alt: logo.alt || "Logo",
417
+ optixFlowConfig,
418
+ loading: "eager"
419
+ }
420
+ );
421
+ if (logo.url) {
422
+ return /* @__PURE__ */ jsx(
423
+ Pressable,
424
+ {
425
+ href: logo.url,
426
+ className: cn("flex items-center", logoClassName),
427
+ children: imgElement
428
+ }
429
+ );
430
+ }
431
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
432
+ };
392
433
  var DEFAULT_FORM_FIELDS = [
393
434
  {
394
435
  name: "email",
@@ -424,7 +465,10 @@ function HeroSplitImageNewsletter({
424
465
  headingClassName,
425
466
  descriptionClassName,
426
467
  imageClassName,
427
- optixFlowConfig
468
+ optixFlowConfig,
469
+ logo,
470
+ logoSlot,
471
+ logoClassName
428
472
  }) {
429
473
  const {
430
474
  uploadTokens,
@@ -560,6 +604,7 @@ function HeroSplitImageNewsletter({
560
604
  contentClassName
561
605
  ),
562
606
  children: [
607
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
563
608
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
564
609
  "h1",
565
610
  {