@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
@@ -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__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
552
+ if (!logo || !logo.src) return null;
553
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
554
+ img.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__ */ jsxRuntime.jsx(
569
+ pressable.Pressable,
570
+ {
571
+ href: logo.url,
572
+ className: cn("flex items-center", logoClassName),
573
+ children: imgElement
574
+ }
575
+ );
576
+ }
577
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
578
+ };
538
579
  function HeroGridPatternSolutions({
539
580
  sectionId = "hero-grid-pattern-solutions",
540
581
  badgeText,
@@ -557,7 +598,10 @@ function HeroGridPatternSolutions({
557
598
  descriptionClassName,
558
599
  actionsClassName,
559
600
  imagesClassName,
560
- optixFlowConfig
601
+ optixFlowConfig,
602
+ logo,
603
+ logoSlot,
604
+ logoClassName
561
605
  }) {
562
606
  const [lightboxOpen, setLightboxOpen] = React.useState(false);
563
607
  const [lightboxIndex, setLightboxIndex] = React.useState(0);
@@ -643,6 +687,7 @@ function HeroGridPatternSolutions({
643
687
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
644
688
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center", contentClassName), children: [
645
689
  renderBadge,
690
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
646
691
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
647
692
  "h1",
648
693
  {
@@ -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';
@@ -91,9 +94,21 @@ interface HeroGridPatternSolutionsProps {
91
94
  * OptixFlow image optimization configuration
92
95
  */
93
96
  optixFlowConfig?: OptixFlowConfig;
97
+ /**
98
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
99
+ */
100
+ logo?: LogoConfig;
101
+ /**
102
+ * Custom slot for logo (overrides logo prop)
103
+ */
104
+ logoSlot?: React.ReactNode;
105
+ /**
106
+ * Additional CSS classes for the logo container
107
+ */
108
+ logoClassName?: string;
94
109
  /** Optional Section ID */
95
110
  sectionId?: string;
96
111
  }
97
- declare function HeroGridPatternSolutions({ sectionId, badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGridPatternSolutionsProps): React.JSX.Element;
112
+ declare function HeroGridPatternSolutions({ sectionId, badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGridPatternSolutionsProps): React.JSX.Element;
98
113
 
99
114
  export { HeroGridPatternSolutions, type HeroGridPatternSolutionsProps };
@@ -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';
@@ -91,9 +94,21 @@ interface HeroGridPatternSolutionsProps {
91
94
  * OptixFlow image optimization configuration
92
95
  */
93
96
  optixFlowConfig?: OptixFlowConfig;
97
+ /**
98
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
99
+ */
100
+ logo?: LogoConfig;
101
+ /**
102
+ * Custom slot for logo (overrides logo prop)
103
+ */
104
+ logoSlot?: React.ReactNode;
105
+ /**
106
+ * Additional CSS classes for the logo container
107
+ */
108
+ logoClassName?: string;
94
109
  /** Optional Section ID */
95
110
  sectionId?: string;
96
111
  }
97
- declare function HeroGridPatternSolutions({ sectionId, badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGridPatternSolutionsProps): React.JSX.Element;
112
+ declare function HeroGridPatternSolutions({ sectionId, badgeText, badgeHref, badgeSlot, heading, description, actions, actionsSlot, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGridPatternSolutionsProps): React.JSX.Element;
98
113
 
99
114
  export { HeroGridPatternSolutions, type HeroGridPatternSolutionsProps };
@@ -514,6 +514,47 @@ function ActionComponent({ action }) {
514
514
  }
515
515
  );
516
516
  }
517
+ var SIZE_CLASSES = {
518
+ sm: "max-h-6 sm:max-h-7",
519
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
520
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
521
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
522
+ };
523
+ var BrandLogo = ({
524
+ logo,
525
+ logoSlot,
526
+ logoClassName,
527
+ size = "md",
528
+ optixFlowConfig
529
+ }) => {
530
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
531
+ if (!logo || !logo.src) return null;
532
+ const imgElement = /* @__PURE__ */ jsx(
533
+ Img,
534
+ {
535
+ src: logo.src,
536
+ className: cn(
537
+ "w-auto object-contain",
538
+ SIZE_CLASSES[size],
539
+ logo.className
540
+ ),
541
+ alt: logo.alt || "Logo",
542
+ optixFlowConfig,
543
+ loading: "eager"
544
+ }
545
+ );
546
+ if (logo.url) {
547
+ return /* @__PURE__ */ jsx(
548
+ Pressable,
549
+ {
550
+ href: logo.url,
551
+ className: cn("flex items-center", logoClassName),
552
+ children: imgElement
553
+ }
554
+ );
555
+ }
556
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
557
+ };
517
558
  function HeroGridPatternSolutions({
518
559
  sectionId = "hero-grid-pattern-solutions",
519
560
  badgeText,
@@ -536,7 +577,10 @@ function HeroGridPatternSolutions({
536
577
  descriptionClassName,
537
578
  actionsClassName,
538
579
  imagesClassName,
539
- optixFlowConfig
580
+ optixFlowConfig,
581
+ logo,
582
+ logoSlot,
583
+ logoClassName
540
584
  }) {
541
585
  const [lightboxOpen, setLightboxOpen] = useState(false);
542
586
  const [lightboxIndex, setLightboxIndex] = useState(0);
@@ -622,6 +666,7 @@ function HeroGridPatternSolutions({
622
666
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
623
667
  /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center", contentClassName), children: [
624
668
  renderBadge,
669
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
625
670
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
626
671
  "h1",
627
672
  {
@@ -6,6 +6,7 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var pressable = require('@page-speed/pressable');
9
+ var img = require('@page-speed/img');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
12
 
@@ -469,6 +470,47 @@ function ActionComponent({ action }) {
469
470
  }
470
471
  );
471
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
+ };
472
514
  function HeroHiringAnimatedText({
473
515
  sectionId = "hero-hiring-animated-text",
474
516
  headingPrefix,
@@ -487,7 +529,10 @@ function HeroHiringAnimatedText({
487
529
  contentClassName,
488
530
  headingClassName,
489
531
  descriptionClassName,
490
- actionsClassName
532
+ actionsClassName,
533
+ logo,
534
+ logoSlot,
535
+ logoClassName
491
536
  }) {
492
537
  const [activeIndex, setActiveIndex] = React.useState(0);
493
538
  const cycleText = React.useCallback(() => {
@@ -553,6 +598,7 @@ function HeroHiringAnimatedText({
553
598
  contentClassName
554
599
  ),
555
600
  children: [
601
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
556
602
  renderHeading,
557
603
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-stretch md:items-start flex-col gap-8", children: [
558
604
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -1,7 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
3
+ import { L as LogoConfig } from './types-mWZcgKth.cjs';
3
4
  import { A as ActionConfig } from './blocks-DyouPohq.cjs';
4
5
  import 'react/jsx-runtime';
6
+ import './dynamic-icon.cjs';
7
+ import '@page-speed/icon';
5
8
  import 'class-variance-authority';
6
9
  import '@page-speed/pressable';
7
10
  import '@opensite/hooks/usePlatformFromUrl';
@@ -74,9 +77,21 @@ interface HeroHiringAnimatedTextProps {
74
77
  * Additional CSS classes for the actions container
75
78
  */
76
79
  actionsClassName?: string;
80
+ /**
81
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
82
+ */
83
+ logo?: LogoConfig;
84
+ /**
85
+ * Custom slot for logo (overrides logo prop)
86
+ */
87
+ logoSlot?: React.ReactNode;
88
+ /**
89
+ * Additional CSS classes for the logo container
90
+ */
91
+ logoClassName?: string;
77
92
  /** Optional Section ID */
78
93
  sectionId?: string;
79
94
  }
80
- declare function HeroHiringAnimatedText({ sectionId, headingPrefix, animatedTexts, headingSlot, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, }: HeroHiringAnimatedTextProps): React.JSX.Element;
95
+ declare function HeroHiringAnimatedText({ sectionId, headingPrefix, animatedTexts, headingSlot, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logo, logoSlot, logoClassName, }: HeroHiringAnimatedTextProps): React.JSX.Element;
81
96
 
82
97
  export { HeroHiringAnimatedText, type HeroHiringAnimatedTextProps };
@@ -1,7 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
3
+ import { L as LogoConfig } from './types-hJ2R0GoH.js';
3
4
  import { A as ActionConfig } from './blocks-DyouPohq.js';
4
5
  import 'react/jsx-runtime';
6
+ import './dynamic-icon.js';
7
+ import '@page-speed/icon';
5
8
  import 'class-variance-authority';
6
9
  import '@page-speed/pressable';
7
10
  import '@opensite/hooks/usePlatformFromUrl';
@@ -74,9 +77,21 @@ interface HeroHiringAnimatedTextProps {
74
77
  * Additional CSS classes for the actions container
75
78
  */
76
79
  actionsClassName?: string;
80
+ /**
81
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
82
+ */
83
+ logo?: LogoConfig;
84
+ /**
85
+ * Custom slot for logo (overrides logo prop)
86
+ */
87
+ logoSlot?: React.ReactNode;
88
+ /**
89
+ * Additional CSS classes for the logo container
90
+ */
91
+ logoClassName?: string;
77
92
  /** Optional Section ID */
78
93
  sectionId?: string;
79
94
  }
80
- declare function HeroHiringAnimatedText({ sectionId, headingPrefix, animatedTexts, headingSlot, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, }: HeroHiringAnimatedTextProps): React.JSX.Element;
95
+ declare function HeroHiringAnimatedText({ sectionId, headingPrefix, animatedTexts, headingSlot, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, logo, logoSlot, logoClassName, }: HeroHiringAnimatedTextProps): React.JSX.Element;
81
96
 
82
97
  export { HeroHiringAnimatedText, type HeroHiringAnimatedTextProps };
@@ -4,6 +4,7 @@ import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import { Pressable, buttonVariants } from '@page-speed/pressable';
7
+ import { Img } from '@page-speed/img';
7
8
 
8
9
  // components/blocks/hero/hero-hiring-animated-text.tsx
9
10
  function cn(...inputs) {
@@ -463,6 +464,47 @@ function ActionComponent({ action }) {
463
464
  }
464
465
  );
465
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
+ };
466
508
  function HeroHiringAnimatedText({
467
509
  sectionId = "hero-hiring-animated-text",
468
510
  headingPrefix,
@@ -481,7 +523,10 @@ function HeroHiringAnimatedText({
481
523
  contentClassName,
482
524
  headingClassName,
483
525
  descriptionClassName,
484
- actionsClassName
526
+ actionsClassName,
527
+ logo,
528
+ logoSlot,
529
+ logoClassName
485
530
  }) {
486
531
  const [activeIndex, setActiveIndex] = useState(0);
487
532
  const cycleText = useCallback(() => {
@@ -547,6 +592,7 @@ function HeroHiringAnimatedText({
547
592
  contentClassName
548
593
  ),
549
594
  children: [
595
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
550
596
  renderHeading,
551
597
  /* @__PURE__ */ jsxs("div", { className: "flex items-stretch md:items-start flex-col gap-8", children: [
552
598
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
@@ -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 HeroImageLeftContent({
508
549
  sectionId = "hero-image-left-content",
509
550
  badge,
@@ -528,7 +569,10 @@ function HeroImageLeftContent({
528
569
  actionsClassName,
529
570
  imageContainerClassName,
530
571
  imageClassName,
531
- optixFlowConfig
572
+ optixFlowConfig,
573
+ logo,
574
+ logoSlot,
575
+ logoClassName
532
576
  }) {
533
577
  return /* @__PURE__ */ jsxRuntime.jsx(
534
578
  Section,
@@ -565,6 +609,7 @@ function HeroImageLeftContent({
565
609
  badge,
566
610
  badgeIcon
567
611
  ] }),
612
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
568
613
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
569
614
  "h1",
570
615
  {
@@ -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';
@@ -99,9 +102,21 @@ interface HeroImageLeftContentProps {
99
102
  * OptixFlow image optimization configuration
100
103
  */
101
104
  optixFlowConfig?: OptixFlowConfig;
105
+ /**
106
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
107
+ */
108
+ logo?: LogoConfig;
109
+ /**
110
+ * Custom slot for logo (overrides logo prop)
111
+ */
112
+ logoSlot?: React.ReactNode;
113
+ /**
114
+ * Additional CSS classes for the logo container
115
+ */
116
+ logoClassName?: string;
102
117
  /** Optional Section ID */
103
118
  sectionId?: string;
104
119
  }
105
- declare function HeroImageLeftContent({ sectionId, badge, badgeIcon, badgeVariant, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, imageContainerClassName, imageClassName, optixFlowConfig, }: HeroImageLeftContentProps): React.JSX.Element;
120
+ declare function HeroImageLeftContent({ sectionId, badge, badgeIcon, badgeVariant, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, imageContainerClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroImageLeftContentProps): React.JSX.Element;
106
121
 
107
122
  export { HeroImageLeftContent, type HeroImageLeftContentProps };
@@ -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';
@@ -99,9 +102,21 @@ interface HeroImageLeftContentProps {
99
102
  * OptixFlow image optimization configuration
100
103
  */
101
104
  optixFlowConfig?: OptixFlowConfig;
105
+ /**
106
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
107
+ */
108
+ logo?: LogoConfig;
109
+ /**
110
+ * Custom slot for logo (overrides logo prop)
111
+ */
112
+ logoSlot?: React.ReactNode;
113
+ /**
114
+ * Additional CSS classes for the logo container
115
+ */
116
+ logoClassName?: string;
102
117
  /** Optional Section ID */
103
118
  sectionId?: string;
104
119
  }
105
- declare function HeroImageLeftContent({ sectionId, badge, badgeIcon, badgeVariant, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, imageContainerClassName, imageClassName, optixFlowConfig, }: HeroImageLeftContentProps): React.JSX.Element;
120
+ declare function HeroImageLeftContent({ sectionId, badge, badgeIcon, badgeVariant, heading, description, actions, actionsSlot, imageSrc, imageAlt, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, badgeClassName, headingClassName, descriptionClassName, actionsClassName, imageContainerClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroImageLeftContentProps): React.JSX.Element;
106
121
 
107
122
  export { HeroImageLeftContent, type HeroImageLeftContentProps };
@@ -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 HeroImageLeftContent({
502
543
  sectionId = "hero-image-left-content",
503
544
  badge,
@@ -522,7 +563,10 @@ function HeroImageLeftContent({
522
563
  actionsClassName,
523
564
  imageContainerClassName,
524
565
  imageClassName,
525
- optixFlowConfig
566
+ optixFlowConfig,
567
+ logo,
568
+ logoSlot,
569
+ logoClassName
526
570
  }) {
527
571
  return /* @__PURE__ */ jsx(
528
572
  Section,
@@ -559,6 +603,7 @@ function HeroImageLeftContent({
559
603
  badge,
560
604
  badgeIcon
561
605
  ] }),
606
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
562
607
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
563
608
  "h1",
564
609
  {