@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
@@ -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 HeroSharedInboxLayered({
468
509
  sectionId = "hero-shared-inbox-layered",
469
510
  eyebrow,
@@ -486,7 +527,10 @@ function HeroSharedInboxLayered({
486
527
  descriptionClassName,
487
528
  imagesClassName,
488
529
  optixFlowConfig,
489
- patternClassName
530
+ patternClassName,
531
+ logo,
532
+ logoSlot,
533
+ logoClassName
490
534
  }) {
491
535
  const renderLayeredImages = useMemo(() => {
492
536
  if (layeredImagesSlot) return layeredImagesSlot;
@@ -557,6 +601,7 @@ function HeroSharedInboxLayered({
557
601
  children: eyebrow
558
602
  }
559
603
  ) : eyebrow),
604
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
560
605
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
561
606
  "h1",
562
607
  {
@@ -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 HeroSimpleCenteredImage({
474
515
  sectionId = "hero-simple-centered-image",
475
516
  heading,
@@ -490,7 +531,10 @@ function HeroSimpleCenteredImage({
490
531
  actionsClassName,
491
532
  imageWrapperClassName,
492
533
  imageClassName,
493
- optixFlowConfig
534
+ optixFlowConfig,
535
+ logo,
536
+ logoSlot,
537
+ logoClassName
494
538
  }) {
495
539
  React.useMemo(() => {
496
540
  if (actionsSlot) return actionsSlot;
@@ -539,6 +583,7 @@ function HeroSimpleCenteredImage({
539
583
  contentClassName
540
584
  ),
541
585
  children: [
586
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
542
587
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
543
588
  "h1",
544
589
  {
@@ -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';
@@ -83,9 +86,21 @@ interface HeroSimpleCenteredImageProps {
83
86
  * OptixFlow image optimization configuration
84
87
  */
85
88
  optixFlowConfig?: OptixFlowConfig;
89
+ /**
90
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
91
+ */
92
+ logo?: LogoConfig;
93
+ /**
94
+ * Custom slot for logo (overrides logo prop)
95
+ */
96
+ logoSlot?: React.ReactNode;
97
+ /**
98
+ * Additional CSS classes for the logo container
99
+ */
100
+ logoClassName?: string;
86
101
  /** Optional Section ID */
87
102
  sectionId?: string;
88
103
  }
89
- declare function HeroSimpleCenteredImage({ sectionId, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imageWrapperClassName, imageClassName, optixFlowConfig, }: HeroSimpleCenteredImageProps): React.JSX.Element;
104
+ declare function HeroSimpleCenteredImage({ sectionId, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imageWrapperClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSimpleCenteredImageProps): React.JSX.Element;
90
105
 
91
106
  export { HeroSimpleCenteredImage, type HeroSimpleCenteredImageProps };
@@ -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';
@@ -83,9 +86,21 @@ interface HeroSimpleCenteredImageProps {
83
86
  * OptixFlow image optimization configuration
84
87
  */
85
88
  optixFlowConfig?: OptixFlowConfig;
89
+ /**
90
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
91
+ */
92
+ logo?: LogoConfig;
93
+ /**
94
+ * Custom slot for logo (overrides logo prop)
95
+ */
96
+ logoSlot?: React.ReactNode;
97
+ /**
98
+ * Additional CSS classes for the logo container
99
+ */
100
+ logoClassName?: string;
86
101
  /** Optional Section ID */
87
102
  sectionId?: string;
88
103
  }
89
- declare function HeroSimpleCenteredImage({ sectionId, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imageWrapperClassName, imageClassName, optixFlowConfig, }: HeroSimpleCenteredImageProps): React.JSX.Element;
104
+ declare function HeroSimpleCenteredImage({ sectionId, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imageWrapperClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSimpleCenteredImageProps): React.JSX.Element;
90
105
 
91
106
  export { HeroSimpleCenteredImage, type HeroSimpleCenteredImageProps };
@@ -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 HeroSimpleCenteredImage({
468
509
  sectionId = "hero-simple-centered-image",
469
510
  heading,
@@ -484,7 +525,10 @@ function HeroSimpleCenteredImage({
484
525
  actionsClassName,
485
526
  imageWrapperClassName,
486
527
  imageClassName,
487
- optixFlowConfig
528
+ optixFlowConfig,
529
+ logo,
530
+ logoSlot,
531
+ logoClassName
488
532
  }) {
489
533
  useMemo(() => {
490
534
  if (actionsSlot) return actionsSlot;
@@ -533,6 +577,7 @@ function HeroSimpleCenteredImage({
533
577
  contentClassName
534
578
  ),
535
579
  children: [
580
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
536
581
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
537
582
  "h1",
538
583
  {
@@ -558,6 +558,47 @@ function ActionComponent({ action }) {
558
558
  }
559
559
  );
560
560
  }
561
+ var SIZE_CLASSES = {
562
+ sm: "max-h-6 sm:max-h-7",
563
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
564
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
565
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
566
+ };
567
+ var BrandLogo = ({
568
+ logo,
569
+ logoSlot,
570
+ logoClassName,
571
+ size = "md",
572
+ optixFlowConfig
573
+ }) => {
574
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
575
+ if (!logo || !logo.src) return null;
576
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
577
+ img.Img,
578
+ {
579
+ src: logo.src,
580
+ className: cn(
581
+ "w-auto object-contain",
582
+ SIZE_CLASSES[size],
583
+ logo.className
584
+ ),
585
+ alt: logo.alt || "Logo",
586
+ optixFlowConfig,
587
+ loading: "eager"
588
+ }
589
+ );
590
+ if (logo.url) {
591
+ return /* @__PURE__ */ jsxRuntime.jsx(
592
+ pressable.Pressable,
593
+ {
594
+ href: logo.url,
595
+ className: cn("flex items-center", logoClassName),
596
+ children: imgElement
597
+ }
598
+ );
599
+ }
600
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
601
+ };
561
602
  function HeroSoftwareGrowthVideoDialog({
562
603
  videoAspectRatio = "horizontal",
563
604
  heading,
@@ -579,7 +620,10 @@ function HeroSoftwareGrowthVideoDialog({
579
620
  headingClassName,
580
621
  descriptionClassName,
581
622
  showcaseClassName,
582
- optixFlowConfig
623
+ optixFlowConfig,
624
+ logo,
625
+ logoSlot,
626
+ logoClassName
583
627
  }) {
584
628
  const [isVideoOpen, setIsVideoOpen] = React.useState(false);
585
629
  const [skinClasses, setSkinClasses] = React.useState(null);
@@ -664,6 +708,7 @@ function HeroSoftwareGrowthVideoDialog({
664
708
  containerClassName,
665
709
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-10 md:gap-6", children: [
666
710
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center gap-8 pt-6 md:pt-0", children: [
711
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
667
712
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
668
713
  "h1",
669
714
  {
@@ -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, I as ImageItem, M as MediaItem, 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';
@@ -104,7 +107,19 @@ interface HeroSoftwareGrowthVideoDialogProps {
104
107
  * Video aspect ratio
105
108
  */
106
109
  videoAspectRatio?: "horizontal" | "vertical";
110
+ /**
111
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
112
+ */
113
+ logo?: LogoConfig;
114
+ /**
115
+ * Custom slot for logo (overrides logo prop)
116
+ */
117
+ logoSlot?: React.ReactNode;
118
+ /**
119
+ * Additional CSS classes for the logo container
120
+ */
121
+ logoClassName?: string;
107
122
  }
108
- declare function HeroSoftwareGrowthVideoDialog({ videoAspectRatio, heading, description, videoAction, actions, showcaseImages, showcaseImagesSlot, modalVideo, videoDialogTitle, videoDialog, onVideoClick, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroSoftwareGrowthVideoDialogProps): React.JSX.Element;
123
+ declare function HeroSoftwareGrowthVideoDialog({ videoAspectRatio, heading, description, videoAction, actions, showcaseImages, showcaseImagesSlot, modalVideo, videoDialogTitle, videoDialog, onVideoClick, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSoftwareGrowthVideoDialogProps): React.JSX.Element;
109
124
 
110
125
  export { HeroSoftwareGrowthVideoDialog, type HeroSoftwareGrowthVideoDialogProps };
@@ -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, I as ImageItem, M as MediaItem, 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';
@@ -104,7 +107,19 @@ interface HeroSoftwareGrowthVideoDialogProps {
104
107
  * Video aspect ratio
105
108
  */
106
109
  videoAspectRatio?: "horizontal" | "vertical";
110
+ /**
111
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
112
+ */
113
+ logo?: LogoConfig;
114
+ /**
115
+ * Custom slot for logo (overrides logo prop)
116
+ */
117
+ logoSlot?: React.ReactNode;
118
+ /**
119
+ * Additional CSS classes for the logo container
120
+ */
121
+ logoClassName?: string;
107
122
  }
108
- declare function HeroSoftwareGrowthVideoDialog({ videoAspectRatio, heading, description, videoAction, actions, showcaseImages, showcaseImagesSlot, modalVideo, videoDialogTitle, videoDialog, onVideoClick, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroSoftwareGrowthVideoDialogProps): React.JSX.Element;
123
+ declare function HeroSoftwareGrowthVideoDialog({ videoAspectRatio, heading, description, videoAction, actions, showcaseImages, showcaseImagesSlot, modalVideo, videoDialogTitle, videoDialog, onVideoClick, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroSoftwareGrowthVideoDialogProps): React.JSX.Element;
109
124
 
110
125
  export { HeroSoftwareGrowthVideoDialog, type HeroSoftwareGrowthVideoDialogProps };
@@ -535,6 +535,47 @@ function ActionComponent({ action }) {
535
535
  }
536
536
  );
537
537
  }
538
+ var SIZE_CLASSES = {
539
+ sm: "max-h-6 sm:max-h-7",
540
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
541
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
542
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
543
+ };
544
+ var BrandLogo = ({
545
+ logo,
546
+ logoSlot,
547
+ logoClassName,
548
+ size = "md",
549
+ optixFlowConfig
550
+ }) => {
551
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
552
+ if (!logo || !logo.src) return null;
553
+ const imgElement = /* @__PURE__ */ jsx(
554
+ Img,
555
+ {
556
+ src: logo.src,
557
+ className: cn(
558
+ "w-auto object-contain",
559
+ SIZE_CLASSES[size],
560
+ logo.className
561
+ ),
562
+ alt: logo.alt || "Logo",
563
+ optixFlowConfig,
564
+ loading: "eager"
565
+ }
566
+ );
567
+ if (logo.url) {
568
+ return /* @__PURE__ */ jsx(
569
+ Pressable,
570
+ {
571
+ href: logo.url,
572
+ className: cn("flex items-center", logoClassName),
573
+ children: imgElement
574
+ }
575
+ );
576
+ }
577
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
578
+ };
538
579
  function HeroSoftwareGrowthVideoDialog({
539
580
  videoAspectRatio = "horizontal",
540
581
  heading,
@@ -556,7 +597,10 @@ function HeroSoftwareGrowthVideoDialog({
556
597
  headingClassName,
557
598
  descriptionClassName,
558
599
  showcaseClassName,
559
- optixFlowConfig
600
+ optixFlowConfig,
601
+ logo,
602
+ logoSlot,
603
+ logoClassName
560
604
  }) {
561
605
  const [isVideoOpen, setIsVideoOpen] = useState(false);
562
606
  const [skinClasses, setSkinClasses] = useState(null);
@@ -641,6 +685,7 @@ function HeroSoftwareGrowthVideoDialog({
641
685
  containerClassName,
642
686
  children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-10 md:gap-6", children: [
643
687
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-8 pt-6 md:pt-0", children: [
688
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
644
689
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
645
690
  "h1",
646
691
  {
@@ -504,6 +504,47 @@ function ActionComponent({ action }) {
504
504
  }
505
505
  );
506
506
  }
507
+ var SIZE_CLASSES = {
508
+ sm: "max-h-6 sm:max-h-7",
509
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
510
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
511
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
512
+ };
513
+ var BrandLogo = ({
514
+ logo,
515
+ logoSlot,
516
+ logoClassName,
517
+ size = "md",
518
+ optixFlowConfig
519
+ }) => {
520
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
521
+ if (!logo || !logo.src) return null;
522
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
523
+ img.Img,
524
+ {
525
+ src: logo.src,
526
+ className: cn(
527
+ "w-auto object-contain",
528
+ SIZE_CLASSES[size],
529
+ logo.className
530
+ ),
531
+ alt: logo.alt || "Logo",
532
+ optixFlowConfig,
533
+ loading: "eager"
534
+ }
535
+ );
536
+ if (logo.url) {
537
+ return /* @__PURE__ */ jsxRuntime.jsx(
538
+ pressable.Pressable,
539
+ {
540
+ href: logo.url,
541
+ className: cn("flex items-center", logoClassName),
542
+ children: imgElement
543
+ }
544
+ );
545
+ }
546
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
547
+ };
507
548
  function HeroSpiralPatternCards({
508
549
  sectionId = "hero-spiral-pattern-cards",
509
550
  badgeText,
@@ -523,7 +564,10 @@ function HeroSpiralPatternCards({
523
564
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
524
565
  headingClassName,
525
566
  descriptionClassName,
526
- imagesClassName
567
+ imagesClassName,
568
+ logo,
569
+ logoSlot,
570
+ logoClassName
527
571
  }) {
528
572
  const renderImages = React.useMemo(() => {
529
573
  if (imagesSlot) return imagesSlot;
@@ -589,6 +633,7 @@ function HeroSpiralPatternCards({
589
633
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
590
634
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center text-center", children: [
591
635
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { children: badgeText }) : badgeText),
636
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
592
637
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
593
638
  "h1",
594
639
  {
@@ -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, I as ImageItem, 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';
@@ -79,9 +82,21 @@ interface HeroSpiralPatternCardsProps {
79
82
  * Additional CSS classes for the images container
80
83
  */
81
84
  imagesClassName?: string;
85
+ /**
86
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
87
+ */
88
+ logo?: LogoConfig;
89
+ /**
90
+ * Custom slot for logo (overrides logo prop)
91
+ */
92
+ logoSlot?: React.ReactNode;
93
+ /**
94
+ * Additional CSS classes for the logo container
95
+ */
96
+ logoClassName?: string;
82
97
  /** Optional Section ID */
83
98
  sectionId?: string;
84
99
  }
85
- declare function HeroSpiralPatternCards({ sectionId, badgeText, heading, description, actions, actionsSlot, actionsClassName, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSpiralPatternCardsProps): React.JSX.Element;
100
+ declare function HeroSpiralPatternCards({ sectionId, badgeText, heading, description, actions, actionsSlot, actionsClassName, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, imagesClassName, logo, logoSlot, logoClassName, }: HeroSpiralPatternCardsProps): React.JSX.Element;
86
101
 
87
102
  export { HeroSpiralPatternCards, type HeroSpiralPatternCardsProps };
@@ -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, I as ImageItem, 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';
@@ -79,9 +82,21 @@ interface HeroSpiralPatternCardsProps {
79
82
  * Additional CSS classes for the images container
80
83
  */
81
84
  imagesClassName?: string;
85
+ /**
86
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
87
+ */
88
+ logo?: LogoConfig;
89
+ /**
90
+ * Custom slot for logo (overrides logo prop)
91
+ */
92
+ logoSlot?: React.ReactNode;
93
+ /**
94
+ * Additional CSS classes for the logo container
95
+ */
96
+ logoClassName?: string;
82
97
  /** Optional Section ID */
83
98
  sectionId?: string;
84
99
  }
85
- declare function HeroSpiralPatternCards({ sectionId, badgeText, heading, description, actions, actionsSlot, actionsClassName, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, imagesClassName, }: HeroSpiralPatternCardsProps): React.JSX.Element;
100
+ declare function HeroSpiralPatternCards({ sectionId, badgeText, heading, description, actions, actionsSlot, actionsClassName, images, imagesSlot, optixFlowConfig, background, spacing, pattern, patternOpacity, className, containerClassName, headingClassName, descriptionClassName, imagesClassName, logo, logoSlot, logoClassName, }: HeroSpiralPatternCardsProps): React.JSX.Element;
86
101
 
87
102
  export { HeroSpiralPatternCards, type HeroSpiralPatternCardsProps };
@@ -498,6 +498,47 @@ function ActionComponent({ action }) {
498
498
  }
499
499
  );
500
500
  }
501
+ var SIZE_CLASSES = {
502
+ sm: "max-h-6 sm:max-h-7",
503
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
504
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
505
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
506
+ };
507
+ var BrandLogo = ({
508
+ logo,
509
+ logoSlot,
510
+ logoClassName,
511
+ size = "md",
512
+ optixFlowConfig
513
+ }) => {
514
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
515
+ if (!logo || !logo.src) return null;
516
+ const imgElement = /* @__PURE__ */ jsx(
517
+ Img,
518
+ {
519
+ src: logo.src,
520
+ className: cn(
521
+ "w-auto object-contain",
522
+ SIZE_CLASSES[size],
523
+ logo.className
524
+ ),
525
+ alt: logo.alt || "Logo",
526
+ optixFlowConfig,
527
+ loading: "eager"
528
+ }
529
+ );
530
+ if (logo.url) {
531
+ return /* @__PURE__ */ jsx(
532
+ Pressable,
533
+ {
534
+ href: logo.url,
535
+ className: cn("flex items-center", logoClassName),
536
+ children: imgElement
537
+ }
538
+ );
539
+ }
540
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
541
+ };
501
542
  function HeroSpiralPatternCards({
502
543
  sectionId = "hero-spiral-pattern-cards",
503
544
  badgeText,
@@ -517,7 +558,10 @@ function HeroSpiralPatternCards({
517
558
  containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
518
559
  headingClassName,
519
560
  descriptionClassName,
520
- imagesClassName
561
+ imagesClassName,
562
+ logo,
563
+ logoSlot,
564
+ logoClassName
521
565
  }) {
522
566
  const renderImages = useMemo(() => {
523
567
  if (imagesSlot) return imagesSlot;
@@ -583,6 +627,7 @@ function HeroSpiralPatternCards({
583
627
  children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
584
628
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center text-center", children: [
585
629
  badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx(Badge, { children: badgeText }) : badgeText),
630
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
586
631
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
587
632
  "h1",
588
633
  {