@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
@@ -9,6 +9,7 @@ var icon = require('@page-speed/icon');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
10
  var reactSlot = require('@radix-ui/react-slot');
11
11
  var classVarianceAuthority = require('class-variance-authority');
12
+ var img = require('@page-speed/img');
12
13
 
13
14
  function _interopNamespace(e) {
14
15
  if (e && e.__esModule) return e;
@@ -533,6 +534,47 @@ function ActionComponent({ action }) {
533
534
  }
534
535
  );
535
536
  }
537
+ var SIZE_CLASSES = {
538
+ sm: "max-h-6 sm:max-h-7",
539
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
540
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
541
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
542
+ };
543
+ var BrandLogo = ({
544
+ logo,
545
+ logoSlot,
546
+ logoClassName,
547
+ size = "md",
548
+ optixFlowConfig
549
+ }) => {
550
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
551
+ if (!logo || !logo.src) return null;
552
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
553
+ img.Img,
554
+ {
555
+ src: logo.src,
556
+ className: cn(
557
+ "w-auto object-contain",
558
+ SIZE_CLASSES[size],
559
+ logo.className
560
+ ),
561
+ alt: logo.alt || "Logo",
562
+ optixFlowConfig,
563
+ loading: "eager"
564
+ }
565
+ );
566
+ if (logo.url) {
567
+ return /* @__PURE__ */ jsxRuntime.jsx(
568
+ pressable.Pressable,
569
+ {
570
+ href: logo.url,
571
+ className: cn("flex items-center", logoClassName),
572
+ children: imgElement
573
+ }
574
+ );
575
+ }
576
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
577
+ };
536
578
  function HeroEnterpriseSecurity({
537
579
  sectionId = "hero-enterprise-security",
538
580
  badge,
@@ -555,7 +597,10 @@ function HeroEnterpriseSecurity({
555
597
  headingClassName,
556
598
  descriptionClassName,
557
599
  actionsClassName,
558
- featuresClassName
600
+ featuresClassName,
601
+ logo,
602
+ logoSlot,
603
+ logoClassName
559
604
  }) {
560
605
  const renderFeatures = React.useMemo(() => {
561
606
  if (featuresSlot) return featuresSlot;
@@ -626,6 +671,7 @@ function HeroEnterpriseSecurity({
626
671
  badgeIcon,
627
672
  typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge }) : badge
628
673
  ] }),
674
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
629
675
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
630
676
  "h1",
631
677
  {
@@ -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, F as FeatureItem, 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';
@@ -97,9 +100,21 @@ interface HeroEnterpriseSecurityProps {
97
100
  * OptixFlow image optimization configuration
98
101
  */
99
102
  optixFlowConfig?: OptixFlowConfig;
103
+ /**
104
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
105
+ */
106
+ logo?: LogoConfig;
107
+ /**
108
+ * Custom slot for logo (overrides logo prop)
109
+ */
110
+ logoSlot?: React.ReactNode;
111
+ /**
112
+ * Additional CSS classes for the logo container
113
+ */
114
+ logoClassName?: string;
100
115
  /** Optional Section ID */
101
116
  sectionId?: string;
102
117
  }
103
- declare function HeroEnterpriseSecurity({ sectionId, badge, badgeIcon, badgeClassName, heading, description, actions, actionsSlot, features, featuresSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroEnterpriseSecurityProps): React.JSX.Element;
118
+ declare function HeroEnterpriseSecurity({ sectionId, badge, badgeIcon, badgeClassName, heading, description, actions, actionsSlot, features, featuresSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, logo, logoSlot, logoClassName, }: HeroEnterpriseSecurityProps): React.JSX.Element;
104
119
 
105
120
  export { HeroEnterpriseSecurity, type HeroEnterpriseSecurityProps };
@@ -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, F as FeatureItem, 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';
@@ -97,9 +100,21 @@ interface HeroEnterpriseSecurityProps {
97
100
  * OptixFlow image optimization configuration
98
101
  */
99
102
  optixFlowConfig?: OptixFlowConfig;
103
+ /**
104
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
105
+ */
106
+ logo?: LogoConfig;
107
+ /**
108
+ * Custom slot for logo (overrides logo prop)
109
+ */
110
+ logoSlot?: React.ReactNode;
111
+ /**
112
+ * Additional CSS classes for the logo container
113
+ */
114
+ logoClassName?: string;
100
115
  /** Optional Section ID */
101
116
  sectionId?: string;
102
117
  }
103
- declare function HeroEnterpriseSecurity({ sectionId, badge, badgeIcon, badgeClassName, heading, description, actions, actionsSlot, features, featuresSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroEnterpriseSecurityProps): React.JSX.Element;
118
+ declare function HeroEnterpriseSecurity({ sectionId, badge, badgeIcon, badgeClassName, heading, description, actions, actionsSlot, features, featuresSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, logo, logoSlot, logoClassName, }: HeroEnterpriseSecurityProps): React.JSX.Element;
104
119
 
105
120
  export { HeroEnterpriseSecurity, type HeroEnterpriseSecurityProps };
@@ -8,6 +8,7 @@ import { Icon } from '@page-speed/icon';
8
8
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
9
9
  import { Slot } from '@radix-ui/react-slot';
10
10
  import { cva } from 'class-variance-authority';
11
+ import { Img } from '@page-speed/img';
11
12
 
12
13
  // components/blocks/hero/hero-enterprise-security.tsx
13
14
  function cn(...inputs) {
@@ -512,6 +513,47 @@ function ActionComponent({ action }) {
512
513
  }
513
514
  );
514
515
  }
516
+ var SIZE_CLASSES = {
517
+ sm: "max-h-6 sm:max-h-7",
518
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
519
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
520
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
521
+ };
522
+ var BrandLogo = ({
523
+ logo,
524
+ logoSlot,
525
+ logoClassName,
526
+ size = "md",
527
+ optixFlowConfig
528
+ }) => {
529
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
530
+ if (!logo || !logo.src) return null;
531
+ const imgElement = /* @__PURE__ */ jsx(
532
+ Img,
533
+ {
534
+ src: logo.src,
535
+ className: cn(
536
+ "w-auto object-contain",
537
+ SIZE_CLASSES[size],
538
+ logo.className
539
+ ),
540
+ alt: logo.alt || "Logo",
541
+ optixFlowConfig,
542
+ loading: "eager"
543
+ }
544
+ );
545
+ if (logo.url) {
546
+ return /* @__PURE__ */ jsx(
547
+ Pressable,
548
+ {
549
+ href: logo.url,
550
+ className: cn("flex items-center", logoClassName),
551
+ children: imgElement
552
+ }
553
+ );
554
+ }
555
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
556
+ };
515
557
  function HeroEnterpriseSecurity({
516
558
  sectionId = "hero-enterprise-security",
517
559
  badge,
@@ -534,7 +576,10 @@ function HeroEnterpriseSecurity({
534
576
  headingClassName,
535
577
  descriptionClassName,
536
578
  actionsClassName,
537
- featuresClassName
579
+ featuresClassName,
580
+ logo,
581
+ logoSlot,
582
+ logoClassName
538
583
  }) {
539
584
  const renderFeatures = useMemo(() => {
540
585
  if (featuresSlot) return featuresSlot;
@@ -605,6 +650,7 @@ function HeroEnterpriseSecurity({
605
650
  badgeIcon,
606
651
  typeof badge === "string" ? /* @__PURE__ */ jsx("span", { children: badge }) : badge
607
652
  ] }),
653
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
608
654
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
609
655
  "h1",
610
656
  {
@@ -7,6 +7,7 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var pressable = require('@page-speed/pressable');
8
8
  var icon = require('@page-speed/icon');
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;
@@ -499,6 +500,47 @@ function ActionComponent({ action }) {
499
500
  }
500
501
  );
501
502
  }
503
+ var SIZE_CLASSES = {
504
+ sm: "max-h-6 sm:max-h-7",
505
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
506
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
507
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
508
+ };
509
+ var BrandLogo = ({
510
+ logo,
511
+ logoSlot,
512
+ logoClassName,
513
+ size = "md",
514
+ optixFlowConfig
515
+ }) => {
516
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
517
+ if (!logo || !logo.src) return null;
518
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
519
+ img.Img,
520
+ {
521
+ src: logo.src,
522
+ className: cn(
523
+ "w-auto object-contain",
524
+ SIZE_CLASSES[size],
525
+ logo.className
526
+ ),
527
+ alt: logo.alt || "Logo",
528
+ optixFlowConfig,
529
+ loading: "eager"
530
+ }
531
+ );
532
+ if (logo.url) {
533
+ return /* @__PURE__ */ jsxRuntime.jsx(
534
+ pressable.Pressable,
535
+ {
536
+ href: logo.url,
537
+ className: cn("flex items-center", logoClassName),
538
+ children: imgElement
539
+ }
540
+ );
541
+ }
542
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
543
+ };
502
544
  function HeroFeatureCardsGrid({
503
545
  sectionId = "hero-feature-cards-grid",
504
546
  heading,
@@ -517,7 +559,10 @@ function HeroFeatureCardsGrid({
517
559
  headingClassName,
518
560
  descriptionClassName,
519
561
  actionsClassName,
520
- featuresClassName
562
+ featuresClassName,
563
+ logo,
564
+ logoSlot,
565
+ logoClassName
521
566
  }) {
522
567
  const renderFeatures = React.useMemo(() => {
523
568
  if (featuresSlot) return featuresSlot;
@@ -580,6 +625,7 @@ function HeroFeatureCardsGrid({
580
625
  contentClassName
581
626
  ),
582
627
  children: [
628
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
583
629
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
584
630
  "h1",
585
631
  {
@@ -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, F as FeatureItem } 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';
@@ -76,9 +79,21 @@ interface HeroFeatureCardsGridProps {
76
79
  * Additional CSS classes for the features container
77
80
  */
78
81
  featuresClassName?: string;
82
+ /**
83
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
84
+ */
85
+ logo?: LogoConfig;
86
+ /**
87
+ * Custom slot for logo (overrides logo prop)
88
+ */
89
+ logoSlot?: React.ReactNode;
90
+ /**
91
+ * Additional CSS classes for the logo container
92
+ */
93
+ logoClassName?: string;
79
94
  /** Optional Section ID */
80
95
  sectionId?: string;
81
96
  }
82
- declare function HeroFeatureCardsGrid({ sectionId, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroFeatureCardsGridProps): React.JSX.Element;
97
+ declare function HeroFeatureCardsGrid({ sectionId, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, logo, logoSlot, logoClassName, }: HeroFeatureCardsGridProps): React.JSX.Element;
83
98
 
84
99
  export { HeroFeatureCardsGrid, type HeroFeatureCardsGridProps };
@@ -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, F as FeatureItem } 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';
@@ -76,9 +79,21 @@ interface HeroFeatureCardsGridProps {
76
79
  * Additional CSS classes for the features container
77
80
  */
78
81
  featuresClassName?: string;
82
+ /**
83
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
84
+ */
85
+ logo?: LogoConfig;
86
+ /**
87
+ * Custom slot for logo (overrides logo prop)
88
+ */
89
+ logoSlot?: React.ReactNode;
90
+ /**
91
+ * Additional CSS classes for the logo container
92
+ */
93
+ logoClassName?: string;
79
94
  /** Optional Section ID */
80
95
  sectionId?: string;
81
96
  }
82
- declare function HeroFeatureCardsGrid({ sectionId, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroFeatureCardsGridProps): React.JSX.Element;
97
+ declare function HeroFeatureCardsGrid({ sectionId, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, logo, logoSlot, logoClassName, }: HeroFeatureCardsGridProps): React.JSX.Element;
83
98
 
84
99
  export { HeroFeatureCardsGrid, type HeroFeatureCardsGridProps };
@@ -6,6 +6,7 @@ import { twMerge } from 'tailwind-merge';
6
6
  import { Pressable, buttonVariants } from '@page-speed/pressable';
7
7
  import { Icon } from '@page-speed/icon';
8
8
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
9
+ import { Img } from '@page-speed/img';
9
10
 
10
11
  // components/blocks/hero/hero-feature-cards-grid.tsx
11
12
  function cn(...inputs) {
@@ -478,6 +479,47 @@ function ActionComponent({ action }) {
478
479
  }
479
480
  );
480
481
  }
482
+ var SIZE_CLASSES = {
483
+ sm: "max-h-6 sm:max-h-7",
484
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
485
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
486
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
487
+ };
488
+ var BrandLogo = ({
489
+ logo,
490
+ logoSlot,
491
+ logoClassName,
492
+ size = "md",
493
+ optixFlowConfig
494
+ }) => {
495
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
496
+ if (!logo || !logo.src) return null;
497
+ const imgElement = /* @__PURE__ */ jsx(
498
+ Img,
499
+ {
500
+ src: logo.src,
501
+ className: cn(
502
+ "w-auto object-contain",
503
+ SIZE_CLASSES[size],
504
+ logo.className
505
+ ),
506
+ alt: logo.alt || "Logo",
507
+ optixFlowConfig,
508
+ loading: "eager"
509
+ }
510
+ );
511
+ if (logo.url) {
512
+ return /* @__PURE__ */ jsx(
513
+ Pressable,
514
+ {
515
+ href: logo.url,
516
+ className: cn("flex items-center", logoClassName),
517
+ children: imgElement
518
+ }
519
+ );
520
+ }
521
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
522
+ };
481
523
  function HeroFeatureCardsGrid({
482
524
  sectionId = "hero-feature-cards-grid",
483
525
  heading,
@@ -496,7 +538,10 @@ function HeroFeatureCardsGrid({
496
538
  headingClassName,
497
539
  descriptionClassName,
498
540
  actionsClassName,
499
- featuresClassName
541
+ featuresClassName,
542
+ logo,
543
+ logoSlot,
544
+ logoClassName
500
545
  }) {
501
546
  const renderFeatures = useMemo(() => {
502
547
  if (featuresSlot) return featuresSlot;
@@ -559,6 +604,7 @@ function HeroFeatureCardsGrid({
559
604
  contentClassName
560
605
  ),
561
606
  children: [
607
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
562
608
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
563
609
  "h1",
564
610
  {
@@ -470,6 +470,47 @@ function ActionComponent({ action }) {
470
470
  }
471
471
  );
472
472
  }
473
+ var SIZE_CLASSES = {
474
+ sm: "max-h-6 sm:max-h-7",
475
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
476
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
477
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
478
+ };
479
+ var BrandLogo = ({
480
+ logo,
481
+ logoSlot,
482
+ logoClassName,
483
+ size = "md",
484
+ optixFlowConfig
485
+ }) => {
486
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
487
+ if (!logo || !logo.src) return null;
488
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
489
+ img.Img,
490
+ {
491
+ src: logo.src,
492
+ className: cn(
493
+ "w-auto object-contain",
494
+ SIZE_CLASSES[size],
495
+ logo.className
496
+ ),
497
+ alt: logo.alt || "Logo",
498
+ optixFlowConfig,
499
+ loading: "eager"
500
+ }
501
+ );
502
+ if (logo.url) {
503
+ return /* @__PURE__ */ jsxRuntime.jsx(
504
+ pressable.Pressable,
505
+ {
506
+ href: logo.url,
507
+ className: cn("flex items-center", logoClassName),
508
+ children: imgElement
509
+ }
510
+ );
511
+ }
512
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
513
+ };
473
514
  function HeroFullscreenBackgroundImage({
474
515
  sectionId = "hero-fullscreen-background-image",
475
516
  heading,
@@ -487,7 +528,10 @@ function HeroFullscreenBackgroundImage({
487
528
  headingClassName,
488
529
  descriptionClassName,
489
530
  actionsClassName,
490
- optixFlowConfig
531
+ optixFlowConfig,
532
+ logo,
533
+ logoSlot,
534
+ logoClassName
491
535
  }) {
492
536
  const renderBackground = React.useMemo(() => {
493
537
  if (!backgroundImage) return null;
@@ -529,6 +573,7 @@ function HeroFullscreenBackgroundImage({
529
573
  contentClassName
530
574
  ),
531
575
  children: [
576
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "xl" }) }),
532
577
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
533
578
  "h1",
534
579
  {
@@ -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 } 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';
@@ -74,9 +77,21 @@ interface HeroFullscreenBackgroundImageProps {
74
77
  apiKey: string;
75
78
  compression?: number;
76
79
  };
80
+ /**
81
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
82
+ */
83
+ logo?: LogoConfig;
84
+ /**
85
+ * Custom slot for logo (overrides logo prop)
86
+ */
87
+ logoSlot?: React.ReactNode;
88
+ /**
89
+ * Additional CSS classes for the logo container
90
+ */
91
+ logoClassName?: string;
77
92
  /** Optional Section ID */
78
93
  sectionId?: string;
79
94
  }
80
- declare function HeroFullscreenBackgroundImage({ sectionId, heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroFullscreenBackgroundImageProps): React.JSX.Element;
95
+ declare function HeroFullscreenBackgroundImage({ sectionId, heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroFullscreenBackgroundImageProps): React.JSX.Element;
81
96
 
82
97
  export { HeroFullscreenBackgroundImage, type HeroFullscreenBackgroundImageProps };
@@ -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 } 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';
@@ -74,9 +77,21 @@ interface HeroFullscreenBackgroundImageProps {
74
77
  apiKey: string;
75
78
  compression?: number;
76
79
  };
80
+ /**
81
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
82
+ */
83
+ logo?: LogoConfig;
84
+ /**
85
+ * Custom slot for logo (overrides logo prop)
86
+ */
87
+ logoSlot?: React.ReactNode;
88
+ /**
89
+ * Additional CSS classes for the logo container
90
+ */
91
+ logoClassName?: string;
77
92
  /** Optional Section ID */
78
93
  sectionId?: string;
79
94
  }
80
- declare function HeroFullscreenBackgroundImage({ sectionId, heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroFullscreenBackgroundImageProps): React.JSX.Element;
95
+ declare function HeroFullscreenBackgroundImage({ sectionId, heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroFullscreenBackgroundImageProps): React.JSX.Element;
81
96
 
82
97
  export { HeroFullscreenBackgroundImage, type HeroFullscreenBackgroundImageProps };
@@ -464,6 +464,47 @@ function ActionComponent({ action }) {
464
464
  }
465
465
  );
466
466
  }
467
+ var SIZE_CLASSES = {
468
+ sm: "max-h-6 sm:max-h-7",
469
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
470
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
471
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
472
+ };
473
+ var BrandLogo = ({
474
+ logo,
475
+ logoSlot,
476
+ logoClassName,
477
+ size = "md",
478
+ optixFlowConfig
479
+ }) => {
480
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
481
+ if (!logo || !logo.src) return null;
482
+ const imgElement = /* @__PURE__ */ jsx(
483
+ Img,
484
+ {
485
+ src: logo.src,
486
+ className: cn(
487
+ "w-auto object-contain",
488
+ SIZE_CLASSES[size],
489
+ logo.className
490
+ ),
491
+ alt: logo.alt || "Logo",
492
+ optixFlowConfig,
493
+ loading: "eager"
494
+ }
495
+ );
496
+ if (logo.url) {
497
+ return /* @__PURE__ */ jsx(
498
+ Pressable,
499
+ {
500
+ href: logo.url,
501
+ className: cn("flex items-center", logoClassName),
502
+ children: imgElement
503
+ }
504
+ );
505
+ }
506
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
507
+ };
467
508
  function HeroFullscreenBackgroundImage({
468
509
  sectionId = "hero-fullscreen-background-image",
469
510
  heading,
@@ -481,7 +522,10 @@ function HeroFullscreenBackgroundImage({
481
522
  headingClassName,
482
523
  descriptionClassName,
483
524
  actionsClassName,
484
- optixFlowConfig
525
+ optixFlowConfig,
526
+ logo,
527
+ logoSlot,
528
+ logoClassName
485
529
  }) {
486
530
  const renderBackground = useMemo(() => {
487
531
  if (!backgroundImage) return null;
@@ -523,6 +567,7 @@ function HeroFullscreenBackgroundImage({
523
567
  contentClassName
524
568
  ),
525
569
  children: [
570
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "xl" }) }),
526
571
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
527
572
  "h1",
528
573
  {