@opensite/ui 3.7.2 → 3.7.3

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 +46 -1
  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 +46 -1
  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 +46 -1
  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 +46 -1
  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 +46 -1
  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 +46 -1
  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 +704 -182
  276. package/dist/registry.js +704 -182
  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
@@ -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
  {
@@ -7,6 +7,7 @@ var tailwindMerge = require('tailwind-merge');
7
7
  var pressable = require('@page-speed/pressable');
8
8
  var video = require('@page-speed/video');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
+ var img = require('@page-speed/img');
10
11
 
11
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
13
 
@@ -392,6 +393,47 @@ var Section = React__default.default.forwardRef(
392
393
  }
393
394
  );
394
395
  Section.displayName = "Section";
396
+ var SIZE_CLASSES = {
397
+ sm: "max-h-6 sm:max-h-7",
398
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
399
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
400
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
401
+ };
402
+ var BrandLogo = ({
403
+ logo,
404
+ logoSlot,
405
+ logoClassName,
406
+ size = "md",
407
+ optixFlowConfig
408
+ }) => {
409
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
410
+ if (!logo || !logo.src) return null;
411
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
412
+ img.Img,
413
+ {
414
+ src: logo.src,
415
+ className: cn(
416
+ "w-auto object-contain",
417
+ SIZE_CLASSES[size],
418
+ logo.className
419
+ ),
420
+ alt: logo.alt || "Logo",
421
+ optixFlowConfig,
422
+ loading: "eager"
423
+ }
424
+ );
425
+ if (logo.url) {
426
+ return /* @__PURE__ */ jsxRuntime.jsx(
427
+ pressable.Pressable,
428
+ {
429
+ href: logo.url,
430
+ className: cn("flex items-center", logoClassName),
431
+ children: imgElement
432
+ }
433
+ );
434
+ }
435
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
436
+ };
395
437
  function HeroProductivityLauncherVideo({
396
438
  sectionId = "hero-productivity-launcher-video",
397
439
  heading,
@@ -411,7 +453,10 @@ function HeroProductivityLauncherVideo({
411
453
  className,
412
454
  contentClassName,
413
455
  headingClassName,
414
- descriptionClassName
456
+ descriptionClassName,
457
+ logo,
458
+ logoSlot,
459
+ logoClassName
415
460
  }) {
416
461
  const renderActions = React.useMemo(() => {
417
462
  if (actionsSlot) return actionsSlot;
@@ -482,25 +527,28 @@ function HeroProductivityLauncherVideo({
482
527
  children: [
483
528
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-20 max-w-204.5", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center pb-8", children: [
484
529
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-8 pb-16 pt-16", children: [
485
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-100 sm:max-w-135", children: heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
486
- "h1",
487
- {
488
- className: cn(
489
- "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
490
- headingClassName
491
- ),
492
- children: heading
493
- }
494
- ) : /* @__PURE__ */ jsxRuntime.jsx(
495
- "h1",
496
- {
497
- className: cn(
498
- "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
499
- headingClassName
500
- ),
501
- children: heading
502
- }
503
- )) }),
530
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-100 sm:max-w-135", children: [
531
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
532
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
533
+ "h1",
534
+ {
535
+ className: cn(
536
+ "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
537
+ headingClassName
538
+ ),
539
+ children: heading
540
+ }
541
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
542
+ "h1",
543
+ {
544
+ className: cn(
545
+ "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
546
+ headingClassName
547
+ ),
548
+ children: heading
549
+ }
550
+ ))
551
+ ] }),
504
552
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-90 md:max-w-full", children: description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
505
553
  "p",
506
554
  {
@@ -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';
@@ -97,9 +100,21 @@ interface HeroProductivityLauncherVideoProps {
97
100
  * Additional CSS classes for the description
98
101
  */
99
102
  descriptionClassName?: string;
103
+ /**
104
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
105
+ */
106
+ logo?: LogoConfig;
107
+ /**
108
+ * Custom slot for logo (overrides logo prop)
109
+ */
110
+ logoSlot?: React.ReactNode;
111
+ /**
112
+ * Additional CSS classes for the logo container
113
+ */
114
+ logoClassName?: string;
100
115
  /** Optional Section ID */
101
116
  sectionId?: string;
102
117
  }
103
- declare function HeroProductivityLauncherVideo({ sectionId, heading, description, actions, actionsSlot, versionInfo, versionInfoSlot, backgroundVideo, videoSrc, videoSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, }: HeroProductivityLauncherVideoProps): React.JSX.Element;
118
+ declare function HeroProductivityLauncherVideo({ sectionId, heading, description, actions, actionsSlot, versionInfo, versionInfoSlot, backgroundVideo, videoSrc, videoSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, logo, logoSlot, logoClassName, }: HeroProductivityLauncherVideoProps): React.JSX.Element;
104
119
 
105
120
  export { HeroProductivityLauncherVideo, type HeroProductivityLauncherVideoProps };
@@ -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';
@@ -97,9 +100,21 @@ interface HeroProductivityLauncherVideoProps {
97
100
  * Additional CSS classes for the description
98
101
  */
99
102
  descriptionClassName?: string;
103
+ /**
104
+ * Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.
105
+ */
106
+ logo?: LogoConfig;
107
+ /**
108
+ * Custom slot for logo (overrides logo prop)
109
+ */
110
+ logoSlot?: React.ReactNode;
111
+ /**
112
+ * Additional CSS classes for the logo container
113
+ */
114
+ logoClassName?: string;
100
115
  /** Optional Section ID */
101
116
  sectionId?: string;
102
117
  }
103
- declare function HeroProductivityLauncherVideo({ sectionId, heading, description, actions, actionsSlot, versionInfo, versionInfoSlot, backgroundVideo, videoSrc, videoSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, }: HeroProductivityLauncherVideoProps): React.JSX.Element;
118
+ declare function HeroProductivityLauncherVideo({ sectionId, heading, description, actions, actionsSlot, versionInfo, versionInfoSlot, backgroundVideo, videoSrc, videoSlot, background, spacing, containerClassName, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, logo, logoSlot, logoClassName, }: HeroProductivityLauncherVideoProps): React.JSX.Element;
104
119
 
105
120
  export { HeroProductivityLauncherVideo, type HeroProductivityLauncherVideoProps };
@@ -5,6 +5,7 @@ import { twMerge } from 'tailwind-merge';
5
5
  import { Pressable } from '@page-speed/pressable';
6
6
  import { Video } from '@page-speed/video';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import { Img } from '@page-speed/img';
8
9
 
9
10
  // components/blocks/hero/hero-productivity-launcher-video.tsx
10
11
  function cn(...inputs) {
@@ -386,6 +387,47 @@ var Section = React.forwardRef(
386
387
  }
387
388
  );
388
389
  Section.displayName = "Section";
390
+ var SIZE_CLASSES = {
391
+ sm: "max-h-6 sm:max-h-7",
392
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
393
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
394
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
395
+ };
396
+ var BrandLogo = ({
397
+ logo,
398
+ logoSlot,
399
+ logoClassName,
400
+ size = "md",
401
+ optixFlowConfig
402
+ }) => {
403
+ if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
404
+ if (!logo || !logo.src) return null;
405
+ const imgElement = /* @__PURE__ */ jsx(
406
+ Img,
407
+ {
408
+ src: logo.src,
409
+ className: cn(
410
+ "w-auto object-contain",
411
+ SIZE_CLASSES[size],
412
+ logo.className
413
+ ),
414
+ alt: logo.alt || "Logo",
415
+ optixFlowConfig,
416
+ loading: "eager"
417
+ }
418
+ );
419
+ if (logo.url) {
420
+ return /* @__PURE__ */ jsx(
421
+ Pressable,
422
+ {
423
+ href: logo.url,
424
+ className: cn("flex items-center", logoClassName),
425
+ children: imgElement
426
+ }
427
+ );
428
+ }
429
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
430
+ };
389
431
  function HeroProductivityLauncherVideo({
390
432
  sectionId = "hero-productivity-launcher-video",
391
433
  heading,
@@ -405,7 +447,10 @@ function HeroProductivityLauncherVideo({
405
447
  className,
406
448
  contentClassName,
407
449
  headingClassName,
408
- descriptionClassName
450
+ descriptionClassName,
451
+ logo,
452
+ logoSlot,
453
+ logoClassName
409
454
  }) {
410
455
  const renderActions = useMemo(() => {
411
456
  if (actionsSlot) return actionsSlot;
@@ -476,25 +521,28 @@ function HeroProductivityLauncherVideo({
476
521
  children: [
477
522
  /* @__PURE__ */ jsx("div", { className: cn("relative z-20 max-w-204.5", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center pb-8", children: [
478
523
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-8 pb-16 pt-16", children: [
479
- /* @__PURE__ */ jsx("div", { className: "max-w-100 sm:max-w-135", children: heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
480
- "h1",
481
- {
482
- className: cn(
483
- "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
484
- headingClassName
485
- ),
486
- children: heading
487
- }
488
- ) : /* @__PURE__ */ jsx(
489
- "h1",
490
- {
491
- className: cn(
492
- "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
493
- headingClassName
494
- ),
495
- children: heading
496
- }
497
- )) }),
524
+ /* @__PURE__ */ jsxs("div", { className: "max-w-100 sm:max-w-135", children: [
525
+ (logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
526
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
527
+ "h1",
528
+ {
529
+ className: cn(
530
+ "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
531
+ headingClassName
532
+ ),
533
+ children: heading
534
+ }
535
+ ) : /* @__PURE__ */ jsx(
536
+ "h1",
537
+ {
538
+ className: cn(
539
+ "text-center text-4xl leading-tight font-semibold text-shadow-lg sm:text-5xl md:text-6xl text-balance text-white",
540
+ headingClassName
541
+ ),
542
+ children: heading
543
+ }
544
+ ))
545
+ ] }),
498
546
  /* @__PURE__ */ jsx("div", { className: "max-w-90 md:max-w-full", children: description && (typeof description === "string" ? /* @__PURE__ */ jsx(
499
547
  "p",
500
548
  {
@@ -424,6 +424,47 @@ var Section = React4__namespace.default.forwardRef(
424
424
  }
425
425
  );
426
426
  Section.displayName = "Section";
427
+ var SIZE_CLASSES = {
428
+ sm: "max-h-6 sm:max-h-7",
429
+ md: "max-h-8 sm:max-h-9 lg:max-h-10",
430
+ lg: "max-h-10 sm:max-h-12 lg:max-h-14",
431
+ xl: "max-h-12 sm:max-h-14 lg:max-h-16"
432
+ };
433
+ var BrandLogo = ({
434
+ logo,
435
+ logoSlot,
436
+ logoClassName,
437
+ size = "md",
438
+ optixFlowConfig
439
+ }) => {
440
+ if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
441
+ if (!logo || !logo.src) return null;
442
+ const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
443
+ img.Img,
444
+ {
445
+ src: logo.src,
446
+ className: cn(
447
+ "w-auto object-contain",
448
+ SIZE_CLASSES[size],
449
+ logo.className
450
+ ),
451
+ alt: logo.alt || "Logo",
452
+ optixFlowConfig,
453
+ loading: "eager"
454
+ }
455
+ );
456
+ if (logo.url) {
457
+ return /* @__PURE__ */ jsxRuntime.jsx(
458
+ pressable.Pressable,
459
+ {
460
+ href: logo.url,
461
+ className: cn("flex items-center", logoClassName),
462
+ children: imgElement
463
+ }
464
+ );
465
+ }
466
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
467
+ };
427
468
  var DEFAULT_FORM_FIELDS = [
428
469
  {
429
470
  name: "email",
@@ -462,7 +503,10 @@ function HeroSaasDashboardPreview({
462
503
  headingClassName,
463
504
  descriptionClassName,
464
505
  previewClassName,
465
- optixFlowConfig
506
+ optixFlowConfig,
507
+ logo,
508
+ logoSlot,
509
+ logoClassName
466
510
  }) {
467
511
  const {
468
512
  uploadTokens,
@@ -635,6 +679,7 @@ function HeroSaasDashboardPreview({
635
679
  ),
636
680
  children: [
637
681
  renderBadge,
682
+ (logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
638
683
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
639
684
  "h1",
640
685
  {