@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
@@ -7,6 +7,7 @@ var clsx = require('clsx');
7
7
  var tailwindMerge = require('tailwind-merge');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var pressable = require('@page-speed/pressable');
10
+ var img = require('@page-speed/img');
10
11
 
11
12
  function _interopNamespace(e) {
12
13
  if (e && e.__esModule) return e;
@@ -518,6 +519,47 @@ function ActionComponent({ action }) {
518
519
  }
519
520
  );
520
521
  }
522
+ var SIZE_CLASSES = {
523
+ sm: "max-h-6 sm:max-h-7",
524
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
525
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
526
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
527
+ };
528
+ var BrandLogo = ({
529
+ logo,
530
+ logoSlot,
531
+ logoClassName,
532
+ size = "md",
533
+ optixFlowConfig
534
+ }) => {
535
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
536
+ if (!logo || !logo.src) return null;
537
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
538
+ img.Img,
539
+ {
540
+ src: logo.src,
541
+ className: cn(
542
+ "w-auto object-contain",
543
+ SIZE_CLASSES[size],
544
+ logo.className
545
+ ),
546
+ alt: logo.alt || "Logo",
547
+ optixFlowConfig,
548
+ loading: "eager"
549
+ }
550
+ );
551
+ if (logo.url) {
552
+ return /* @__PURE__ */ jsxRuntime.jsx(
553
+ pressable.Pressable,
554
+ {
555
+ href: logo.url,
556
+ className: cn("flex items-center", logoClassName),
557
+ children: imgElement
558
+ }
559
+ );
560
+ }
561
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
562
+ };
521
563
  function HeroPresentationPlatformVideo({
522
564
  sectionId = "hero-presentation-platform-video",
523
565
  subtitle,
@@ -538,7 +580,10 @@ function HeroPresentationPlatformVideo({
538
580
  contentClassName,
539
581
  headingClassName,
540
582
  descriptionClassName,
541
- videoClassName
583
+ videoClassName,
584
+ logo,
585
+ logoSlot,
586
+ logoClassName
542
587
  }) {
543
588
  const contentItems = React4.useMemo(() => {
544
589
  const items = [];
@@ -635,6 +680,7 @@ function HeroPresentationPlatformVideo({
635
680
  contentClassName
636
681
  ),
637
682
  children: [
683
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
638
684
  /* @__PURE__ */ jsxRuntime.jsx(ContentGroup, { items: contentItems }),
639
685
  /* @__PURE__ */ jsxRuntime.jsx(
640
686
  BlockActions,
@@ -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, M as MediaItem } 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 HeroPresentationPlatformVideoProps {
83
86
  * Additional CSS classes for the actions container
84
87
  */
85
88
  actionsClassName?: string;
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 HeroPresentationPlatformVideo({ sectionId, subtitle, heading, description, actions, actionsSlot, actionsClassName, backgroundVideo, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
104
+ declare function HeroPresentationPlatformVideo({ sectionId, subtitle, heading, description, actions, actionsSlot, actionsClassName, backgroundVideo, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, logo, logoSlot, logoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
90
105
 
91
106
  export { HeroPresentationPlatformVideo, type HeroPresentationPlatformVideoProps };
@@ -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, M as MediaItem } 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 HeroPresentationPlatformVideoProps {
83
86
  * Additional CSS classes for the actions container
84
87
  */
85
88
  actionsClassName?: string;
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 HeroPresentationPlatformVideo({ sectionId, subtitle, heading, description, actions, actionsSlot, actionsClassName, backgroundVideo, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
104
+ declare function HeroPresentationPlatformVideo({ sectionId, subtitle, heading, description, actions, actionsSlot, actionsClassName, backgroundVideo, videoSrc, videoSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, videoClassName, logo, logoSlot, logoClassName, }: HeroPresentationPlatformVideoProps): React.JSX.Element;
90
105
 
91
106
  export { HeroPresentationPlatformVideo, type HeroPresentationPlatformVideoProps };
@@ -6,6 +6,7 @@ import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { Pressable, buttonVariants } from '@page-speed/pressable';
9
+ import { Img } from '@page-speed/img';
9
10
 
10
11
  // components/blocks/hero/hero-presentation-platform-video.tsx
11
12
  function cn(...inputs) {
@@ -497,6 +498,47 @@ function ActionComponent({ action }) {
497
498
  }
498
499
  );
499
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
+ };
500
542
  function HeroPresentationPlatformVideo({
501
543
  sectionId = "hero-presentation-platform-video",
502
544
  subtitle,
@@ -517,7 +559,10 @@ function HeroPresentationPlatformVideo({
517
559
  contentClassName,
518
560
  headingClassName,
519
561
  descriptionClassName,
520
- videoClassName
562
+ videoClassName,
563
+ logo,
564
+ logoSlot,
565
+ logoClassName
521
566
  }) {
522
567
  const contentItems = useMemo(() => {
523
568
  const items = [];
@@ -614,6 +659,7 @@ function HeroPresentationPlatformVideo({
614
659
  contentClassName
615
660
  ),
616
661
  children: [
662
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
617
663
  /* @__PURE__ */ jsx(ContentGroup, { items: contentItems }),
618
664
  /* @__PURE__ */ jsx(
619
665
  BlockActions,
@@ -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 @@ var Section = React__namespace.default.forwardRef(
533
534
  }
534
535
  );
535
536
  Section.displayName = "Section";
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 HeroPricingComparison({
537
579
  sectionId = "hero-pricing-comparison",
538
580
  badgeText,
@@ -550,7 +592,10 @@ function HeroPricingComparison({
550
592
  headerClassName,
551
593
  headingClassName,
552
594
  descriptionClassName,
553
- plansClassName
595
+ plansClassName,
596
+ logo,
597
+ logoSlot,
598
+ logoClassName
554
599
  }) {
555
600
  const renderBadge = React.useMemo(() => {
556
601
  if (badgeSlot) return badgeSlot;
@@ -608,6 +653,7 @@ function HeroPricingComparison({
608
653
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
609
654
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-4xl text-center", headerClassName), children: [
610
655
  renderBadge,
656
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
611
657
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
612
658
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
613
659
  ] }),
@@ -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';
@@ -104,9 +107,21 @@ interface HeroPricingComparisonProps {
104
107
  * Additional CSS classes for the plans grid
105
108
  */
106
109
  plansClassName?: string;
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
  /** Optional Section ID */
108
123
  sectionId?: string;
109
124
  }
110
- declare function HeroPricingComparison({ sectionId, badgeText, badgeSlot, heading, description, plans, plansSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, descriptionClassName, plansClassName, }: HeroPricingComparisonProps): React.JSX.Element;
125
+ declare function HeroPricingComparison({ sectionId, badgeText, badgeSlot, heading, description, plans, plansSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, descriptionClassName, plansClassName, logo, logoSlot, logoClassName, }: HeroPricingComparisonProps): React.JSX.Element;
111
126
 
112
127
  export { HeroPricingComparison, type HeroPricingComparisonProps };
@@ -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';
@@ -104,9 +107,21 @@ interface HeroPricingComparisonProps {
104
107
  * Additional CSS classes for the plans grid
105
108
  */
106
109
  plansClassName?: string;
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
  /** Optional Section ID */
108
123
  sectionId?: string;
109
124
  }
110
- declare function HeroPricingComparison({ sectionId, badgeText, badgeSlot, heading, description, plans, plansSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, descriptionClassName, plansClassName, }: HeroPricingComparisonProps): React.JSX.Element;
125
+ declare function HeroPricingComparison({ sectionId, badgeText, badgeSlot, heading, description, plans, plansSlot, background, spacing, pattern, patternOpacity, className, containerClassName, headerClassName, headingClassName, descriptionClassName, plansClassName, logo, logoSlot, logoClassName, }: HeroPricingComparisonProps): React.JSX.Element;
111
126
 
112
127
  export { HeroPricingComparison, type HeroPricingComparisonProps };
@@ -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-pricing-comparison.tsx
13
14
  function cn(...inputs) {
@@ -512,6 +513,47 @@ var Section = React__default.forwardRef(
512
513
  }
513
514
  );
514
515
  Section.displayName = "Section";
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 HeroPricingComparison({
516
558
  sectionId = "hero-pricing-comparison",
517
559
  badgeText,
@@ -529,7 +571,10 @@ function HeroPricingComparison({
529
571
  headerClassName,
530
572
  headingClassName,
531
573
  descriptionClassName,
532
- plansClassName
574
+ plansClassName,
575
+ logo,
576
+ logoSlot,
577
+ logoClassName
533
578
  }) {
534
579
  const renderBadge = useMemo(() => {
535
580
  if (badgeSlot) return badgeSlot;
@@ -587,6 +632,7 @@ function HeroPricingComparison({
587
632
  children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
588
633
  /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl text-center", headerClassName), children: [
589
634
  renderBadge,
635
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
590
636
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
591
637
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
592
638
  ] }),
@@ -566,6 +566,47 @@ function ActionComponent({ action }) {
566
566
  }
567
567
  );
568
568
  }
569
+ var SIZE_CLASSES = {
570
+ sm: "max-h-6 sm:max-h-7",
571
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
572
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
573
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
574
+ };
575
+ var BrandLogo = ({
576
+ logo,
577
+ logoSlot,
578
+ logoClassName,
579
+ size = "md",
580
+ optixFlowConfig
581
+ }) => {
582
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
583
+ if (!logo || !logo.src) return null;
584
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
585
+ img.Img,
586
+ {
587
+ src: logo.src,
588
+ className: cn(
589
+ "w-auto object-contain",
590
+ SIZE_CLASSES[size],
591
+ logo.className
592
+ ),
593
+ alt: logo.alt || "Logo",
594
+ optixFlowConfig,
595
+ loading: "eager"
596
+ }
597
+ );
598
+ if (logo.url) {
599
+ return /* @__PURE__ */ jsxRuntime.jsx(
600
+ pressable.Pressable,
601
+ {
602
+ href: logo.url,
603
+ className: cn("flex items-center", logoClassName),
604
+ children: imgElement
605
+ }
606
+ );
607
+ }
608
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
609
+ };
569
610
  function HeroProductShowcaseFloating({
570
611
  sectionId = "hero-product-showcase-floating",
571
612
  badgeText,
@@ -593,7 +634,10 @@ function HeroProductShowcaseFloating({
593
634
  headerClassName,
594
635
  descriptionClassName,
595
636
  showcaseClassName,
596
- optixFlowConfig
637
+ optixFlowConfig,
638
+ logo,
639
+ logoSlot,
640
+ logoClassName
597
641
  }) {
598
642
  const renderBadge = React5.useMemo(() => {
599
643
  if (badgeSlot) return badgeSlot;
@@ -719,6 +763,7 @@ function HeroProductShowcaseFloating({
719
763
  ),
720
764
  children: [
721
765
  renderBadge,
766
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
722
767
  /* @__PURE__ */ jsxRuntime.jsx(
723
768
  ContentGroup,
724
769
  {
@@ -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';
@@ -142,9 +145,21 @@ interface HeroProductShowcaseFloatingProps {
142
145
  * Additional CSS classes for the actions container
143
146
  */
144
147
  actionsClassName?: string;
148
+ /**
149
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
150
+ */
151
+ logo?: LogoConfig;
152
+ /**
153
+ * Custom slot for logo (overrides logo prop)
154
+ */
155
+ logoSlot?: React.ReactNode;
156
+ /**
157
+ * Additional CSS classes for the logo container
158
+ */
159
+ logoClassName?: string;
145
160
  /** Optional Section ID */
146
161
  sectionId?: string;
147
162
  }
148
- declare function HeroProductShowcaseFloating({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
163
+ declare function HeroProductShowcaseFloating({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
149
164
 
150
165
  export { HeroProductShowcaseFloating, type HeroProductShowcaseFloatingProps };
@@ -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';
@@ -142,9 +145,21 @@ interface HeroProductShowcaseFloatingProps {
142
145
  * Additional CSS classes for the actions container
143
146
  */
144
147
  actionsClassName?: string;
148
+ /**
149
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
150
+ */
151
+ logo?: LogoConfig;
152
+ /**
153
+ * Custom slot for logo (overrides logo prop)
154
+ */
155
+ logoSlot?: React.ReactNode;
156
+ /**
157
+ * Additional CSS classes for the logo container
158
+ */
159
+ logoClassName?: string;
145
160
  /** Optional Section ID */
146
161
  sectionId?: string;
147
162
  }
148
- declare function HeroProductShowcaseFloating({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
163
+ declare function HeroProductShowcaseFloating({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
149
164
 
150
165
  export { HeroProductShowcaseFloating, type HeroProductShowcaseFloatingProps };
@@ -545,6 +545,47 @@ function ActionComponent({ action }) {
545
545
  }
546
546
  );
547
547
  }
548
+ var SIZE_CLASSES = {
549
+ sm: "max-h-6 sm:max-h-7",
550
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
551
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
552
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
553
+ };
554
+ var BrandLogo = ({
555
+ logo,
556
+ logoSlot,
557
+ logoClassName,
558
+ size = "md",
559
+ optixFlowConfig
560
+ }) => {
561
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
562
+ if (!logo || !logo.src) return null;
563
+ const imgElement = /* @__PURE__ */ jsx(
564
+ Img,
565
+ {
566
+ src: logo.src,
567
+ className: cn(
568
+ "w-auto object-contain",
569
+ SIZE_CLASSES[size],
570
+ logo.className
571
+ ),
572
+ alt: logo.alt || "Logo",
573
+ optixFlowConfig,
574
+ loading: "eager"
575
+ }
576
+ );
577
+ if (logo.url) {
578
+ return /* @__PURE__ */ jsx(
579
+ Pressable,
580
+ {
581
+ href: logo.url,
582
+ className: cn("flex items-center", logoClassName),
583
+ children: imgElement
584
+ }
585
+ );
586
+ }
587
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
588
+ };
548
589
  function HeroProductShowcaseFloating({
549
590
  sectionId = "hero-product-showcase-floating",
550
591
  badgeText,
@@ -572,7 +613,10 @@ function HeroProductShowcaseFloating({
572
613
  headerClassName,
573
614
  descriptionClassName,
574
615
  showcaseClassName,
575
- optixFlowConfig
616
+ optixFlowConfig,
617
+ logo,
618
+ logoSlot,
619
+ logoClassName
576
620
  }) {
577
621
  const renderBadge = useMemo(() => {
578
622
  if (badgeSlot) return badgeSlot;
@@ -698,6 +742,7 @@ function HeroProductShowcaseFloating({
698
742
  ),
699
743
  children: [
700
744
  renderBadge,
745
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
701
746
  /* @__PURE__ */ jsx(
702
747
  ContentGroup,
703
748
  {