@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
@@ -531,6 +531,47 @@ function ActionComponent({ action }) {
531
531
  }
532
532
  );
533
533
  }
534
+ var SIZE_CLASSES = {
535
+ sm: "max-h-6 sm:max-h-7",
536
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
537
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
538
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
539
+ };
540
+ var BrandLogo = ({
541
+ logo,
542
+ logoSlot,
543
+ logoClassName,
544
+ size = "md",
545
+ optixFlowConfig
546
+ }) => {
547
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
548
+ if (!logo || !logo.src) return null;
549
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
550
+ img.Img,
551
+ {
552
+ src: logo.src,
553
+ className: cn(
554
+ "w-auto object-contain",
555
+ SIZE_CLASSES[size],
556
+ logo.className
557
+ ),
558
+ alt: logo.alt || "Logo",
559
+ optixFlowConfig,
560
+ loading: "eager"
561
+ }
562
+ );
563
+ if (logo.url) {
564
+ return /* @__PURE__ */ jsxRuntime.jsx(
565
+ pressable.Pressable,
566
+ {
567
+ href: logo.url,
568
+ className: cn("flex items-center", logoClassName),
569
+ children: imgElement
570
+ }
571
+ );
572
+ }
573
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
574
+ };
534
575
  function HeroGradientAvatarsRating({
535
576
  sectionId = "hero-gradient-avatars-rating",
536
577
  heading,
@@ -555,7 +596,10 @@ function HeroGradientAvatarsRating({
555
596
  descriptionClassName,
556
597
  actionsClassName,
557
598
  imagesClassName,
558
- optixFlowConfig
599
+ optixFlowConfig,
600
+ logo,
601
+ logoSlot,
602
+ logoClassName
559
603
  }) {
560
604
  const renderAvatars = React.useMemo(() => {
561
605
  if (avatarsSlot) return avatarsSlot;
@@ -661,6 +705,7 @@ function HeroGradientAvatarsRating({
661
705
  contentClassName
662
706
  ),
663
707
  children: [
708
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
664
709
  heading && /* @__PURE__ */ jsxRuntime.jsx(
665
710
  "h1",
666
711
  {
@@ -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';
@@ -108,9 +111,21 @@ interface HeroGradientAvatarsRatingProps {
108
111
  * OptixFlow image optimization configuration
109
112
  */
110
113
  optixFlowConfig?: OptixFlowConfig;
114
+ /**
115
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
116
+ */
117
+ logo?: LogoConfig;
118
+ /**
119
+ * Custom slot for logo (overrides logo prop)
120
+ */
121
+ logoSlot?: React.ReactNode;
122
+ /**
123
+ * Additional CSS classes for the logo container
124
+ */
125
+ logoClassName?: string;
111
126
  /** Optional Section ID */
112
127
  sectionId?: string;
113
128
  }
114
- declare function HeroGradientAvatarsRating({ sectionId, heading, description, actions, actionsSlot, avatars, avatarsSlot, ratingValue, ratingLabel, starCount, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGradientAvatarsRatingProps): React.JSX.Element;
129
+ declare function HeroGradientAvatarsRating({ sectionId, heading, description, actions, actionsSlot, avatars, avatarsSlot, ratingValue, ratingLabel, starCount, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGradientAvatarsRatingProps): React.JSX.Element;
115
130
 
116
131
  export { type AvatarItem, HeroGradientAvatarsRating, type HeroGradientAvatarsRatingProps };
@@ -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';
@@ -108,9 +111,21 @@ interface HeroGradientAvatarsRatingProps {
108
111
  * OptixFlow image optimization configuration
109
112
  */
110
113
  optixFlowConfig?: OptixFlowConfig;
114
+ /**
115
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
116
+ */
117
+ logo?: LogoConfig;
118
+ /**
119
+ * Custom slot for logo (overrides logo prop)
120
+ */
121
+ logoSlot?: React.ReactNode;
122
+ /**
123
+ * Additional CSS classes for the logo container
124
+ */
125
+ logoClassName?: string;
111
126
  /** Optional Section ID */
112
127
  sectionId?: string;
113
128
  }
114
- declare function HeroGradientAvatarsRating({ sectionId, heading, description, actions, actionsSlot, avatars, avatarsSlot, ratingValue, ratingLabel, starCount, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroGradientAvatarsRatingProps): React.JSX.Element;
129
+ declare function HeroGradientAvatarsRating({ sectionId, heading, description, actions, actionsSlot, avatars, avatarsSlot, ratingValue, ratingLabel, starCount, images, imagesSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGradientAvatarsRatingProps): React.JSX.Element;
115
130
 
116
131
  export { type AvatarItem, HeroGradientAvatarsRating, type HeroGradientAvatarsRatingProps };
@@ -509,6 +509,47 @@ function ActionComponent({ action }) {
509
509
  }
510
510
  );
511
511
  }
512
+ var SIZE_CLASSES = {
513
+ sm: "max-h-6 sm:max-h-7",
514
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
515
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
516
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
517
+ };
518
+ var BrandLogo = ({
519
+ logo,
520
+ logoSlot,
521
+ logoClassName,
522
+ size = "md",
523
+ optixFlowConfig
524
+ }) => {
525
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
526
+ if (!logo || !logo.src) return null;
527
+ const imgElement = /* @__PURE__ */ jsx(
528
+ Img,
529
+ {
530
+ src: logo.src,
531
+ className: cn(
532
+ "w-auto object-contain",
533
+ SIZE_CLASSES[size],
534
+ logo.className
535
+ ),
536
+ alt: logo.alt || "Logo",
537
+ optixFlowConfig,
538
+ loading: "eager"
539
+ }
540
+ );
541
+ if (logo.url) {
542
+ return /* @__PURE__ */ jsx(
543
+ Pressable,
544
+ {
545
+ href: logo.url,
546
+ className: cn("flex items-center", logoClassName),
547
+ children: imgElement
548
+ }
549
+ );
550
+ }
551
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
552
+ };
512
553
  function HeroGradientAvatarsRating({
513
554
  sectionId = "hero-gradient-avatars-rating",
514
555
  heading,
@@ -533,7 +574,10 @@ function HeroGradientAvatarsRating({
533
574
  descriptionClassName,
534
575
  actionsClassName,
535
576
  imagesClassName,
536
- optixFlowConfig
577
+ optixFlowConfig,
578
+ logo,
579
+ logoSlot,
580
+ logoClassName
537
581
  }) {
538
582
  const renderAvatars = useMemo(() => {
539
583
  if (avatarsSlot) return avatarsSlot;
@@ -639,6 +683,7 @@ function HeroGradientAvatarsRating({
639
683
  contentClassName
640
684
  ),
641
685
  children: [
686
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
642
687
  heading && /* @__PURE__ */ jsx(
643
688
  "h1",
644
689
  {
@@ -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 HeroGradientClientFocused({
474
515
  sectionId = "hero-gradient-client-focused",
475
516
  heading,
@@ -488,7 +529,10 @@ function HeroGradientClientFocused({
488
529
  descriptionClassName,
489
530
  actionsClassName,
490
531
  imageClassName,
491
- optixFlowConfig
532
+ optixFlowConfig,
533
+ logo,
534
+ logoSlot,
535
+ logoClassName
492
536
  }) {
493
537
  const renderImage = React.useMemo(() => {
494
538
  if (imageSlot) return imageSlot;
@@ -518,6 +562,7 @@ function HeroGradientClientFocused({
518
562
  patternOpacity,
519
563
  containerClassName,
520
564
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col items-center gap-4", children: [
565
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
521
566
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
522
567
  "h1",
523
568
  {
@@ -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';
@@ -74,9 +77,21 @@ interface HeroGradientClientFocusedProps {
74
77
  * OptixFlow image optimization configuration
75
78
  */
76
79
  optixFlowConfig?: OptixFlowConfig;
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 HeroGradientClientFocused({ sectionId, heading, description, actions, actionsSlot, image, imageSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headingClassName, descriptionClassName, actionsClassName, imageClassName, optixFlowConfig, }: HeroGradientClientFocusedProps): React.JSX.Element;
95
+ declare function HeroGradientClientFocused({ sectionId, heading, description, actions, actionsSlot, image, imageSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headingClassName, descriptionClassName, actionsClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGradientClientFocusedProps): React.JSX.Element;
81
96
 
82
97
  export { HeroGradientClientFocused, type HeroGradientClientFocusedProps };
@@ -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';
@@ -74,9 +77,21 @@ interface HeroGradientClientFocusedProps {
74
77
  * OptixFlow image optimization configuration
75
78
  */
76
79
  optixFlowConfig?: OptixFlowConfig;
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 HeroGradientClientFocused({ sectionId, heading, description, actions, actionsSlot, image, imageSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headingClassName, descriptionClassName, actionsClassName, imageClassName, optixFlowConfig, }: HeroGradientClientFocusedProps): React.JSX.Element;
95
+ declare function HeroGradientClientFocused({ sectionId, heading, description, actions, actionsSlot, image, imageSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headingClassName, descriptionClassName, actionsClassName, imageClassName, optixFlowConfig, logo, logoSlot, logoClassName, }: HeroGradientClientFocusedProps): React.JSX.Element;
81
96
 
82
97
  export { HeroGradientClientFocused, type HeroGradientClientFocusedProps };
@@ -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 HeroGradientClientFocused({
468
509
  sectionId = "hero-gradient-client-focused",
469
510
  heading,
@@ -482,7 +523,10 @@ function HeroGradientClientFocused({
482
523
  descriptionClassName,
483
524
  actionsClassName,
484
525
  imageClassName,
485
- optixFlowConfig
526
+ optixFlowConfig,
527
+ logo,
528
+ logoSlot,
529
+ logoClassName
486
530
  }) {
487
531
  const renderImage = useMemo(() => {
488
532
  if (imageSlot) return imageSlot;
@@ -512,6 +556,7 @@ function HeroGradientClientFocused({
512
556
  patternOpacity,
513
557
  containerClassName,
514
558
  children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center gap-4", children: [
559
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
515
560
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
516
561
  "h1",
517
562
  {
@@ -6,6 +6,7 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var pressable = require('@page-speed/pressable');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
+ var img = require('@page-speed/img');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
12
 
@@ -391,6 +392,47 @@ var Section = React__default.default.forwardRef(
391
392
  }
392
393
  );
393
394
  Section.displayName = "Section";
395
+ var SIZE_CLASSES = {
396
+ sm: "max-h-6 sm:max-h-7",
397
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
398
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
399
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
400
+ };
401
+ var BrandLogo = ({
402
+ logo,
403
+ logoSlot,
404
+ logoClassName,
405
+ size = "md",
406
+ optixFlowConfig
407
+ }) => {
408
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
409
+ if (!logo || !logo.src) return null;
410
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
411
+ img.Img,
412
+ {
413
+ src: logo.src,
414
+ className: cn(
415
+ "w-auto object-contain",
416
+ SIZE_CLASSES[size],
417
+ logo.className
418
+ ),
419
+ alt: logo.alt || "Logo",
420
+ optixFlowConfig,
421
+ loading: "eager"
422
+ }
423
+ );
424
+ if (logo.url) {
425
+ return /* @__PURE__ */ jsxRuntime.jsx(
426
+ pressable.Pressable,
427
+ {
428
+ href: logo.url,
429
+ className: cn("flex items-center", logoClassName),
430
+ children: imgElement
431
+ }
432
+ );
433
+ }
434
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
435
+ };
394
436
  function HeroGridPatternEfficiency({
395
437
  sectionId = "hero-grid-pattern-efficiency",
396
438
  heading,
@@ -407,7 +449,10 @@ function HeroGridPatternEfficiency({
407
449
  contentClassName,
408
450
  headingClassName,
409
451
  descriptionClassName,
410
- actionClassName
452
+ actionClassName,
453
+ logo,
454
+ logoSlot,
455
+ logoClassName
411
456
  }) {
412
457
  const renderAction = React.useMemo(() => {
413
458
  if (actionSlot) return actionSlot;
@@ -462,6 +507,7 @@ function HeroGridPatternEfficiency({
462
507
  className,
463
508
  containerClassName,
464
509
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative max-w-5xl", contentClassName), children: [
510
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
465
511
  renderHeading,
466
512
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
467
513
  "p",
@@ -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';
@@ -67,9 +70,21 @@ interface HeroGridPatternEfficiencyProps {
67
70
  * Additional CSS classes for the action container
68
71
  */
69
72
  actionClassName?: string;
73
+ /**
74
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
75
+ */
76
+ logo?: LogoConfig;
77
+ /**
78
+ * Custom slot for logo (overrides logo prop)
79
+ */
80
+ logoSlot?: React.ReactNode;
81
+ /**
82
+ * Additional CSS classes for the logo container
83
+ */
84
+ logoClassName?: string;
70
85
  /** Optional Section ID */
71
86
  sectionId?: string;
72
87
  }
73
- declare function HeroGridPatternEfficiency({ sectionId, heading, description, action, actionSlot, actionSubtext, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionClassName, }: HeroGridPatternEfficiencyProps): React.JSX.Element;
88
+ declare function HeroGridPatternEfficiency({ sectionId, heading, description, action, actionSlot, actionSubtext, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionClassName, logo, logoSlot, logoClassName, }: HeroGridPatternEfficiencyProps): React.JSX.Element;
74
89
 
75
90
  export { HeroGridPatternEfficiency, type HeroGridPatternEfficiencyProps };
@@ -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';
@@ -67,9 +70,21 @@ interface HeroGridPatternEfficiencyProps {
67
70
  * Additional CSS classes for the action container
68
71
  */
69
72
  actionClassName?: string;
73
+ /**
74
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
75
+ */
76
+ logo?: LogoConfig;
77
+ /**
78
+ * Custom slot for logo (overrides logo prop)
79
+ */
80
+ logoSlot?: React.ReactNode;
81
+ /**
82
+ * Additional CSS classes for the logo container
83
+ */
84
+ logoClassName?: string;
70
85
  /** Optional Section ID */
71
86
  sectionId?: string;
72
87
  }
73
- declare function HeroGridPatternEfficiency({ sectionId, heading, description, action, actionSlot, actionSubtext, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionClassName, }: HeroGridPatternEfficiencyProps): React.JSX.Element;
88
+ declare function HeroGridPatternEfficiency({ sectionId, heading, description, action, actionSlot, actionSubtext, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, actionClassName, logo, logoSlot, logoClassName, }: HeroGridPatternEfficiencyProps): React.JSX.Element;
74
89
 
75
90
  export { HeroGridPatternEfficiency, type HeroGridPatternEfficiencyProps };
@@ -4,6 +4,7 @@ import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { Pressable } from '@page-speed/pressable';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { Img } from '@page-speed/img';
7
8
 
8
9
  // components/blocks/hero/hero-grid-pattern-efficiency.tsx
9
10
  function cn(...inputs) {
@@ -385,6 +386,47 @@ var Section = React.forwardRef(
385
386
  }
386
387
  );
387
388
  Section.displayName = "Section";
389
+ var SIZE_CLASSES = {
390
+ sm: "max-h-6 sm:max-h-7",
391
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
392
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
393
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
394
+ };
395
+ var BrandLogo = ({
396
+ logo,
397
+ logoSlot,
398
+ logoClassName,
399
+ size = "md",
400
+ optixFlowConfig
401
+ }) => {
402
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
403
+ if (!logo || !logo.src) return null;
404
+ const imgElement = /* @__PURE__ */ jsx(
405
+ Img,
406
+ {
407
+ src: logo.src,
408
+ className: cn(
409
+ "w-auto object-contain",
410
+ SIZE_CLASSES[size],
411
+ logo.className
412
+ ),
413
+ alt: logo.alt || "Logo",
414
+ optixFlowConfig,
415
+ loading: "eager"
416
+ }
417
+ );
418
+ if (logo.url) {
419
+ return /* @__PURE__ */ jsx(
420
+ Pressable,
421
+ {
422
+ href: logo.url,
423
+ className: cn("flex items-center", logoClassName),
424
+ children: imgElement
425
+ }
426
+ );
427
+ }
428
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
429
+ };
388
430
  function HeroGridPatternEfficiency({
389
431
  sectionId = "hero-grid-pattern-efficiency",
390
432
  heading,
@@ -401,7 +443,10 @@ function HeroGridPatternEfficiency({
401
443
  contentClassName,
402
444
  headingClassName,
403
445
  descriptionClassName,
404
- actionClassName
446
+ actionClassName,
447
+ logo,
448
+ logoSlot,
449
+ logoClassName
405
450
  }) {
406
451
  const renderAction = useMemo(() => {
407
452
  if (actionSlot) return actionSlot;
@@ -456,6 +501,7 @@ function HeroGridPatternEfficiency({
456
501
  className,
457
502
  containerClassName,
458
503
  children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: cn("relative max-w-5xl", contentClassName), children: [
504
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
459
505
  renderHeading,
460
506
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
461
507
  "p",