@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
@@ -501,6 +501,47 @@ function ActionComponent({ action }) {
501
501
  }
502
502
  );
503
503
  }
504
+ var SIZE_CLASSES = {
505
+ sm: "max-h-6 sm:max-h-7",
506
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
507
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
508
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
509
+ };
510
+ var BrandLogo = ({
511
+ logo,
512
+ logoSlot,
513
+ logoClassName,
514
+ size = "md",
515
+ optixFlowConfig
516
+ }) => {
517
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
518
+ if (!logo || !logo.src) return null;
519
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
520
+ img.Img,
521
+ {
522
+ src: logo.src,
523
+ className: cn(
524
+ "w-auto object-contain",
525
+ SIZE_CLASSES[size],
526
+ logo.className
527
+ ),
528
+ alt: logo.alt || "Logo",
529
+ optixFlowConfig,
530
+ loading: "eager"
531
+ }
532
+ );
533
+ if (logo.url) {
534
+ return /* @__PURE__ */ jsxRuntime.jsx(
535
+ pressable.Pressable,
536
+ {
537
+ href: logo.url,
538
+ className: cn("flex items-center", logoClassName),
539
+ children: imgElement
540
+ }
541
+ );
542
+ }
543
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
544
+ };
504
545
  function CardArrowIcon({ className }) {
505
546
  return /* @__PURE__ */ jsxRuntime.jsxs(
506
547
  "svg",
@@ -544,7 +585,10 @@ function HeroOverlayCtaGrid({
544
585
  contentClassName = "relative flex flex-col gap-6 md:gap-12 px-6 pt-0 md:pt-28 pb-6 md:pt-0 md:pb-0 min-h-screen h-fit md:h-screen justify-end md:justify-center",
545
586
  headingClassName,
546
587
  descriptionClassName,
547
- optixFlowConfig
588
+ optixFlowConfig,
589
+ logo,
590
+ logoSlot,
591
+ logoClassName
548
592
  }) {
549
593
  const renderBadge = React.useMemo(() => {
550
594
  if (badgeSlot) return badgeSlot;
@@ -628,6 +672,7 @@ function HeroOverlayCtaGrid({
628
672
  className: "mx-auto max-w-3xl text-center text-balance text-white px-0 flex flex-col items-center justify-center",
629
673
  children: [
630
674
  renderBadge,
675
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
631
676
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
632
677
  "h1",
633
678
  {
@@ -1,11 +1,14 @@
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 { ActionConfig } from '@page-speed/maps/components/geo-map';
4
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
4
5
  import './blocks-DyouPohq.cjs';
5
6
  import 'class-variance-authority';
6
7
  import '@page-speed/pressable';
7
8
  import '@opensite/hooks/usePlatformFromUrl';
8
9
  import 'react/jsx-runtime';
10
+ import './dynamic-icon.cjs';
11
+ import '@page-speed/icon';
9
12
 
10
13
  interface HeroOverlayCtaGridCard {
11
14
  /**
@@ -121,6 +124,18 @@ interface HeroOverlayCtaGridProps {
121
124
  apiKey: string;
122
125
  compression?: number;
123
126
  };
127
+ /**
128
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
129
+ */
130
+ logo?: LogoConfig;
131
+ /**
132
+ * Custom slot for logo (overrides logo prop)
133
+ */
134
+ logoSlot?: React.ReactNode;
135
+ /**
136
+ * Additional CSS classes for the logo container
137
+ */
138
+ logoClassName?: string;
124
139
  /** Optional Section ID */
125
140
  sectionId?: string;
126
141
  }
@@ -129,6 +144,6 @@ interface HeroOverlayCtaGridProps {
129
144
  * and a supporting grid of icon cards. Ideal for service-focused landing pages that
130
145
  * need a strong hero statement plus quick navigation to top offerings.
131
146
  */
132
- declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
147
+ declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroOverlayCtaGridProps): React.JSX.Element;
133
148
 
134
149
  export { HeroOverlayCtaGrid, type HeroOverlayCtaGridProps };
@@ -1,11 +1,14 @@
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 { ActionConfig } from '@page-speed/maps/components/geo-map';
4
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
4
5
  import './blocks-DyouPohq.js';
5
6
  import 'class-variance-authority';
6
7
  import '@page-speed/pressable';
7
8
  import '@opensite/hooks/usePlatformFromUrl';
8
9
  import 'react/jsx-runtime';
10
+ import './dynamic-icon.js';
11
+ import '@page-speed/icon';
9
12
 
10
13
  interface HeroOverlayCtaGridCard {
11
14
  /**
@@ -121,6 +124,18 @@ interface HeroOverlayCtaGridProps {
121
124
  apiKey: string;
122
125
  compression?: number;
123
126
  };
127
+ /**
128
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
129
+ */
130
+ logo?: LogoConfig;
131
+ /**
132
+ * Custom slot for logo (overrides logo prop)
133
+ */
134
+ logoSlot?: React.ReactNode;
135
+ /**
136
+ * Additional CSS classes for the logo container
137
+ */
138
+ logoClassName?: string;
124
139
  /** Optional Section ID */
125
140
  sectionId?: string;
126
141
  }
@@ -129,6 +144,6 @@ interface HeroOverlayCtaGridProps {
129
144
  * and a supporting grid of icon cards. Ideal for service-focused landing pages that
130
145
  * need a strong hero statement plus quick navigation to top offerings.
131
146
  */
132
- declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
147
+ declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroOverlayCtaGridProps): React.JSX.Element;
133
148
 
134
149
  export { HeroOverlayCtaGrid, type HeroOverlayCtaGridProps };
@@ -480,6 +480,47 @@ function ActionComponent({ action }) {
480
480
  }
481
481
  );
482
482
  }
483
+ var SIZE_CLASSES = {
484
+ sm: "max-h-6 sm:max-h-7",
485
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
486
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
487
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
488
+ };
489
+ var BrandLogo = ({
490
+ logo,
491
+ logoSlot,
492
+ logoClassName,
493
+ size = "md",
494
+ optixFlowConfig
495
+ }) => {
496
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
497
+ if (!logo || !logo.src) return null;
498
+ const imgElement = /* @__PURE__ */ jsx(
499
+ Img,
500
+ {
501
+ src: logo.src,
502
+ className: cn(
503
+ "w-auto object-contain",
504
+ SIZE_CLASSES[size],
505
+ logo.className
506
+ ),
507
+ alt: logo.alt || "Logo",
508
+ optixFlowConfig,
509
+ loading: "eager"
510
+ }
511
+ );
512
+ if (logo.url) {
513
+ return /* @__PURE__ */ jsx(
514
+ Pressable,
515
+ {
516
+ href: logo.url,
517
+ className: cn("flex items-center", logoClassName),
518
+ children: imgElement
519
+ }
520
+ );
521
+ }
522
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
523
+ };
483
524
  function CardArrowIcon({ className }) {
484
525
  return /* @__PURE__ */ jsxs(
485
526
  "svg",
@@ -523,7 +564,10 @@ function HeroOverlayCtaGrid({
523
564
  contentClassName = "relative flex flex-col gap-6 md:gap-12 px-6 pt-0 md:pt-28 pb-6 md:pt-0 md:pb-0 min-h-screen h-fit md:h-screen justify-end md:justify-center",
524
565
  headingClassName,
525
566
  descriptionClassName,
526
- optixFlowConfig
567
+ optixFlowConfig,
568
+ logo,
569
+ logoSlot,
570
+ logoClassName
527
571
  }) {
528
572
  const renderBadge = useMemo(() => {
529
573
  if (badgeSlot) return badgeSlot;
@@ -607,6 +651,7 @@ function HeroOverlayCtaGrid({
607
651
  className: "mx-auto max-w-3xl text-center text-balance text-white px-0 flex flex-col items-center justify-center",
608
652
  children: [
609
653
  renderBadge,
654
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
610
655
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
611
656
  "h1",
612
657
  {
@@ -448,6 +448,47 @@ var Section = React__namespace.default.forwardRef(
448
448
  }
449
449
  );
450
450
  Section.displayName = "Section";
451
+ var SIZE_CLASSES = {
452
+ sm: "max-h-6 sm:max-h-7",
453
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
454
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
455
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
456
+ };
457
+ var BrandLogo = ({
458
+ logo,
459
+ logoSlot,
460
+ logoClassName,
461
+ size = "md",
462
+ optixFlowConfig
463
+ }) => {
464
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
465
+ if (!logo || !logo.src) return null;
466
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
467
+ img.Img,
468
+ {
469
+ src: logo.src,
470
+ className: cn(
471
+ "w-auto object-contain",
472
+ SIZE_CLASSES[size],
473
+ logo.className
474
+ ),
475
+ alt: logo.alt || "Logo",
476
+ optixFlowConfig,
477
+ loading: "eager"
478
+ }
479
+ );
480
+ if (logo.url) {
481
+ return /* @__PURE__ */ jsxRuntime.jsx(
482
+ pressable.Pressable,
483
+ {
484
+ href: logo.url,
485
+ className: cn("flex items-center", logoClassName),
486
+ children: imgElement
487
+ }
488
+ );
489
+ }
490
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
491
+ };
451
492
  function HeroPortfolioCreative({
452
493
  sectionId = "hero-portfolio-creative",
453
494
  profile,
@@ -470,7 +511,10 @@ function HeroPortfolioCreative({
470
511
  headingClassName,
471
512
  descriptionClassName,
472
513
  portfolioClassName,
473
- optixFlowConfig
514
+ optixFlowConfig,
515
+ logo,
516
+ logoSlot,
517
+ logoClassName
474
518
  }) {
475
519
  const renderProfile = React.useMemo(() => {
476
520
  if (profileSlot) return profileSlot;
@@ -614,6 +658,7 @@ function HeroPortfolioCreative({
614
658
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
615
659
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
616
660
  renderProfile,
661
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
617
662
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
618
663
  "h1",
619
664
  {
@@ -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 { I as ImageItem, A as ActionConfig, j as SocialLinkItem, 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';
@@ -106,9 +109,21 @@ interface HeroPortfolioCreativeProps {
106
109
  * OptixFlow image optimization configuration
107
110
  */
108
111
  optixFlowConfig?: OptixFlowConfig;
112
+ /**
113
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
114
+ */
115
+ logo?: LogoConfig;
116
+ /**
117
+ * Custom slot for logo (overrides logo prop)
118
+ */
119
+ logoSlot?: React.ReactNode;
120
+ /**
121
+ * Additional CSS classes for the logo container
122
+ */
123
+ logoClassName?: string;
109
124
  /** Optional Section ID */
110
125
  sectionId?: string;
111
126
  }
112
- declare function HeroPortfolioCreative({ sectionId, profile, profileSlot, heading, description, actions, actionsSlot, socialLinks, socialLinksSlot, portfolioImages, portfolioImagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, portfolioClassName, optixFlowConfig, }: HeroPortfolioCreativeProps): React.JSX.Element;
127
+ declare function HeroPortfolioCreative({ sectionId, profile, profileSlot, heading, description, actions, actionsSlot, socialLinks, socialLinksSlot, portfolioImages, portfolioImagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, portfolioClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroPortfolioCreativeProps): React.JSX.Element;
113
128
 
114
129
  export { HeroPortfolioCreative, type HeroPortfolioCreativeProps };
@@ -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 { I as ImageItem, A as ActionConfig, j as SocialLinkItem, 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';
@@ -106,9 +109,21 @@ interface HeroPortfolioCreativeProps {
106
109
  * OptixFlow image optimization configuration
107
110
  */
108
111
  optixFlowConfig?: OptixFlowConfig;
112
+ /**
113
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
114
+ */
115
+ logo?: LogoConfig;
116
+ /**
117
+ * Custom slot for logo (overrides logo prop)
118
+ */
119
+ logoSlot?: React.ReactNode;
120
+ /**
121
+ * Additional CSS classes for the logo container
122
+ */
123
+ logoClassName?: string;
109
124
  /** Optional Section ID */
110
125
  sectionId?: string;
111
126
  }
112
- declare function HeroPortfolioCreative({ sectionId, profile, profileSlot, heading, description, actions, actionsSlot, socialLinks, socialLinksSlot, portfolioImages, portfolioImagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, portfolioClassName, optixFlowConfig, }: HeroPortfolioCreativeProps): React.JSX.Element;
127
+ declare function HeroPortfolioCreative({ sectionId, profile, profileSlot, heading, description, actions, actionsSlot, socialLinks, socialLinksSlot, portfolioImages, portfolioImagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, portfolioClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroPortfolioCreativeProps): React.JSX.Element;
113
128
 
114
129
  export { HeroPortfolioCreative, type HeroPortfolioCreativeProps };
@@ -427,6 +427,47 @@ var Section = React__default.forwardRef(
427
427
  }
428
428
  );
429
429
  Section.displayName = "Section";
430
+ var SIZE_CLASSES = {
431
+ sm: "max-h-6 sm:max-h-7",
432
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
433
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
434
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
435
+ };
436
+ var BrandLogo = ({
437
+ logo,
438
+ logoSlot,
439
+ logoClassName,
440
+ size = "md",
441
+ optixFlowConfig
442
+ }) => {
443
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
444
+ if (!logo || !logo.src) return null;
445
+ const imgElement = /* @__PURE__ */ jsx(
446
+ Img,
447
+ {
448
+ src: logo.src,
449
+ className: cn(
450
+ "w-auto object-contain",
451
+ SIZE_CLASSES[size],
452
+ logo.className
453
+ ),
454
+ alt: logo.alt || "Logo",
455
+ optixFlowConfig,
456
+ loading: "eager"
457
+ }
458
+ );
459
+ if (logo.url) {
460
+ return /* @__PURE__ */ jsx(
461
+ Pressable,
462
+ {
463
+ href: logo.url,
464
+ className: cn("flex items-center", logoClassName),
465
+ children: imgElement
466
+ }
467
+ );
468
+ }
469
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
470
+ };
430
471
  function HeroPortfolioCreative({
431
472
  sectionId = "hero-portfolio-creative",
432
473
  profile,
@@ -449,7 +490,10 @@ function HeroPortfolioCreative({
449
490
  headingClassName,
450
491
  descriptionClassName,
451
492
  portfolioClassName,
452
- optixFlowConfig
493
+ optixFlowConfig,
494
+ logo,
495
+ logoSlot,
496
+ logoClassName
453
497
  }) {
454
498
  const renderProfile = useMemo(() => {
455
499
  if (profileSlot) return profileSlot;
@@ -593,6 +637,7 @@ function HeroPortfolioCreative({
593
637
  children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
594
638
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
595
639
  renderProfile,
640
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
596
641
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
597
642
  "h1",
598
643
  {
@@ -627,6 +627,47 @@ function MediaAspectRatio({
627
627
  )
628
628
  ] });
629
629
  }
630
+ var SIZE_CLASSES = {
631
+ sm: "max-h-6 sm:max-h-7",
632
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
633
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
634
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
635
+ };
636
+ var BrandLogo = ({
637
+ logo,
638
+ logoSlot,
639
+ logoClassName,
640
+ size = "md",
641
+ optixFlowConfig
642
+ }) => {
643
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
644
+ if (!logo || !logo.src) return null;
645
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
646
+ img.Img,
647
+ {
648
+ src: logo.src,
649
+ className: cn(
650
+ "w-auto object-contain",
651
+ SIZE_CLASSES[size],
652
+ logo.className
653
+ ),
654
+ alt: logo.alt || "Logo",
655
+ optixFlowConfig,
656
+ loading: "eager"
657
+ }
658
+ );
659
+ if (logo.url) {
660
+ return /* @__PURE__ */ jsxRuntime.jsx(
661
+ pressable.Pressable,
662
+ {
663
+ href: logo.url,
664
+ className: cn("flex items-center", logoClassName),
665
+ children: imgElement
666
+ }
667
+ );
668
+ }
669
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
670
+ };
630
671
  function HeroPremiumSplitAvatars({
631
672
  sectionId = "hero-premium-split-avatars",
632
673
  brandName,
@@ -653,7 +694,10 @@ function HeroPremiumSplitAvatars({
653
694
  imageClassName,
654
695
  optixFlowConfig,
655
696
  mediaAspectRatios = { desktop: "vertical", mobile: "vertical" },
656
- directionConfig = { desktop: "mediaRight", mobile: "mediaBottom" }
697
+ directionConfig = { desktop: "mediaRight", mobile: "mediaBottom" },
698
+ logo,
699
+ logoSlot,
700
+ logoClassName
657
701
  }) {
658
702
  const responsiveClassName = React.useMemo(() => {
659
703
  const desktopOrder = directionConfig.desktop === "mediaRight" ? "md:flex-row" : "md:flex-row-reverse";
@@ -760,6 +804,7 @@ function HeroPremiumSplitAvatars({
760
804
  children: [
761
805
  renderBrand,
762
806
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 md:gap-8", children: [
807
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
763
808
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading })),
764
809
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2.5 lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
765
810
  renderAction
@@ -1,11 +1,14 @@
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 { ResponsiveMediaAspectRatioProps } from './media-aspect-ratio.cjs';
4
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
4
5
  import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig, h as DirectionConfig } from './blocks-DyouPohq.cjs';
5
6
  import 'react/jsx-runtime';
6
7
  import 'class-variance-authority';
7
8
  import '@page-speed/pressable';
8
9
  import '@opensite/hooks/usePlatformFromUrl';
10
+ import './dynamic-icon.cjs';
11
+ import '@page-speed/icon';
9
12
 
10
13
  interface AvatarItem {
11
14
  /**
@@ -110,6 +113,18 @@ interface HeroPremiumSplitAvatarsProps {
110
113
  * OptixFlow image optimization configuration
111
114
  */
112
115
  optixFlowConfig?: OptixFlowConfig;
116
+ /**
117
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
118
+ */
119
+ logo?: LogoConfig;
120
+ /**
121
+ * Custom slot for logo (overrides logo prop)
122
+ */
123
+ logoSlot?: React.ReactNode;
124
+ /**
125
+ * Additional CSS classes for the logo container
126
+ */
127
+ logoClassName?: string;
113
128
  /** Optional Section ID */
114
129
  sectionId?: string;
115
130
  /**
@@ -123,6 +138,6 @@ interface HeroPremiumSplitAvatarsProps {
123
138
  */
124
139
  directionConfig?: DirectionConfig;
125
140
  }
126
- declare function HeroPremiumSplitAvatars({ sectionId, brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, className, spacing, containerClassName, background, pattern, patternOpacity, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, mediaAspectRatios, directionConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
141
+ declare function HeroPremiumSplitAvatars({ sectionId, brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, className, spacing, containerClassName, background, pattern, patternOpacity, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, mediaAspectRatios, directionConfig, logo, logoSlot, logoClassName, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
127
142
 
128
143
  export { HeroPremiumSplitAvatars, type HeroPremiumSplitAvatarsProps };
@@ -1,11 +1,14 @@
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 { ResponsiveMediaAspectRatioProps } from './media-aspect-ratio.js';
4
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
4
5
  import { A as ActionConfig, I as ImageItem, O as OptixFlowConfig, h as DirectionConfig } from './blocks-DyouPohq.js';
5
6
  import 'react/jsx-runtime';
6
7
  import 'class-variance-authority';
7
8
  import '@page-speed/pressable';
8
9
  import '@opensite/hooks/usePlatformFromUrl';
10
+ import './dynamic-icon.js';
11
+ import '@page-speed/icon';
9
12
 
10
13
  interface AvatarItem {
11
14
  /**
@@ -110,6 +113,18 @@ interface HeroPremiumSplitAvatarsProps {
110
113
  * OptixFlow image optimization configuration
111
114
  */
112
115
  optixFlowConfig?: OptixFlowConfig;
116
+ /**
117
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
118
+ */
119
+ logo?: LogoConfig;
120
+ /**
121
+ * Custom slot for logo (overrides logo prop)
122
+ */
123
+ logoSlot?: React.ReactNode;
124
+ /**
125
+ * Additional CSS classes for the logo container
126
+ */
127
+ logoClassName?: string;
113
128
  /** Optional Section ID */
114
129
  sectionId?: string;
115
130
  /**
@@ -123,6 +138,6 @@ interface HeroPremiumSplitAvatarsProps {
123
138
  */
124
139
  directionConfig?: DirectionConfig;
125
140
  }
126
- declare function HeroPremiumSplitAvatars({ sectionId, brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, className, spacing, containerClassName, background, pattern, patternOpacity, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, mediaAspectRatios, directionConfig, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
141
+ declare function HeroPremiumSplitAvatars({ sectionId, brandName, brandSuffix, brandSlot, heading, description, action, actionSlot, avatars, avatarsSlot, socialProofText, image, imageSlot, className, spacing, containerClassName, background, pattern, patternOpacity, contentClassName, headingClassName, descriptionClassName, imageClassName, optixFlowConfig, mediaAspectRatios, directionConfig, logo, logoSlot, logoClassName, }: HeroPremiumSplitAvatarsProps): React.JSX.Element;
127
142
 
128
143
  export { HeroPremiumSplitAvatars, type HeroPremiumSplitAvatarsProps };
@@ -601,6 +601,47 @@ function MediaAspectRatio({
601
601
  )
602
602
  ] });
603
603
  }
604
+ var SIZE_CLASSES = {
605
+ sm: "max-h-6 sm:max-h-7",
606
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
607
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
608
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
609
+ };
610
+ var BrandLogo = ({
611
+ logo,
612
+ logoSlot,
613
+ logoClassName,
614
+ size = "md",
615
+ optixFlowConfig
616
+ }) => {
617
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
618
+ if (!logo || !logo.src) return null;
619
+ const imgElement = /* @__PURE__ */ jsx(
620
+ Img,
621
+ {
622
+ src: logo.src,
623
+ className: cn(
624
+ "w-auto object-contain",
625
+ SIZE_CLASSES[size],
626
+ logo.className
627
+ ),
628
+ alt: logo.alt || "Logo",
629
+ optixFlowConfig,
630
+ loading: "eager"
631
+ }
632
+ );
633
+ if (logo.url) {
634
+ return /* @__PURE__ */ jsx(
635
+ Pressable,
636
+ {
637
+ href: logo.url,
638
+ className: cn("flex items-center", logoClassName),
639
+ children: imgElement
640
+ }
641
+ );
642
+ }
643
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
644
+ };
604
645
  function HeroPremiumSplitAvatars({
605
646
  sectionId = "hero-premium-split-avatars",
606
647
  brandName,
@@ -627,7 +668,10 @@ function HeroPremiumSplitAvatars({
627
668
  imageClassName,
628
669
  optixFlowConfig,
629
670
  mediaAspectRatios = { desktop: "vertical", mobile: "vertical" },
630
- directionConfig = { desktop: "mediaRight", mobile: "mediaBottom" }
671
+ directionConfig = { desktop: "mediaRight", mobile: "mediaBottom" },
672
+ logo,
673
+ logoSlot,
674
+ logoClassName
631
675
  }) {
632
676
  const responsiveClassName = useMemo(() => {
633
677
  const desktopOrder = directionConfig.desktop === "mediaRight" ? "md:flex-row" : "md:flex-row-reverse";
@@ -734,6 +778,7 @@ function HeroPremiumSplitAvatars({
734
778
  children: [
735
779
  renderBrand,
736
780
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 md:gap-8", children: [
781
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
737
782
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h2", { className: cn("text-4xl lg:text-6xl", headingClassName), children: heading })),
738
783
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2.5 lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
739
784
  renderAction