@opensite/ui 0.8.9 → 0.9.1

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 (367) hide show
  1. package/dist/about-company-profile.cjs +32 -4
  2. package/dist/about-company-profile.js +32 -4
  3. package/dist/about-culture-tabs.cjs +38 -8
  4. package/dist/about-culture-tabs.js +38 -8
  5. package/dist/about-developer-profile.cjs +37 -5
  6. package/dist/about-developer-profile.js +37 -5
  7. package/dist/about-developer-story.cjs +31 -3
  8. package/dist/about-developer-story.js +31 -3
  9. package/dist/about-expandable-values.cjs +43 -9
  10. package/dist/about-expandable-values.js +43 -9
  11. package/dist/about-interactive-tabs.cjs +63 -4
  12. package/dist/about-interactive-tabs.js +63 -4
  13. package/dist/about-location-info-hero.cjs +28 -2
  14. package/dist/about-location-info-hero.js +28 -2
  15. package/dist/about-minimal-story.cjs +35 -4
  16. package/dist/about-minimal-story.js +35 -4
  17. package/dist/about-mission-dual-image.cjs +30 -2
  18. package/dist/about-mission-dual-image.js +30 -2
  19. package/dist/about-mission-features.cjs +36 -4
  20. package/dist/about-mission-features.js +36 -4
  21. package/dist/about-mission-principles.cjs +39 -6
  22. package/dist/about-mission-principles.js +39 -6
  23. package/dist/about-network-spotlight.cjs +33 -5
  24. package/dist/about-network-spotlight.js +33 -5
  25. package/dist/about-startup-team.cjs +47 -6
  26. package/dist/about-startup-team.js +47 -6
  27. package/dist/about-stats-showcase.cjs +31 -4
  28. package/dist/about-stats-showcase.js +31 -4
  29. package/dist/about-stats-sidebar.cjs +29 -3
  30. package/dist/about-stats-sidebar.js +29 -3
  31. package/dist/about-story-expertise.cjs +44 -8
  32. package/dist/about-story-expertise.js +44 -8
  33. package/dist/about-story-gallery.cjs +28 -1
  34. package/dist/about-story-gallery.js +28 -1
  35. package/dist/about-story-hero.cjs +36 -4
  36. package/dist/about-story-hero.js +36 -4
  37. package/dist/about-streamline-team.cjs +32 -4
  38. package/dist/about-streamline-team.js +32 -4
  39. package/dist/about-vision-gallery.cjs +32 -3
  40. package/dist/about-vision-gallery.js +32 -3
  41. package/dist/alternating-blocks.cjs +5 -1
  42. package/dist/alternating-blocks.js +5 -1
  43. package/dist/banner-announcement-dismissible.cjs +377 -1
  44. package/dist/banner-announcement-dismissible.d.cts +7 -1
  45. package/dist/banner-announcement-dismissible.d.ts +7 -1
  46. package/dist/banner-announcement-dismissible.js +378 -2
  47. package/dist/banner-countdown-sale.cjs +388 -8
  48. package/dist/banner-countdown-sale.d.cts +11 -1
  49. package/dist/banner-countdown-sale.d.ts +11 -1
  50. package/dist/banner-countdown-sale.js +379 -3
  51. package/dist/banner-delivery-countdown.cjs +377 -1
  52. package/dist/banner-delivery-countdown.d.cts +11 -1
  53. package/dist/banner-delivery-countdown.d.ts +11 -1
  54. package/dist/banner-delivery-countdown.js +378 -2
  55. package/dist/banner-event-promo.cjs +377 -1
  56. package/dist/banner-event-promo.d.cts +7 -1
  57. package/dist/banner-event-promo.d.ts +7 -1
  58. package/dist/banner-event-promo.js +378 -2
  59. package/dist/banner-floating-offer.cjs +379 -3
  60. package/dist/banner-floating-offer.d.cts +7 -1
  61. package/dist/banner-floating-offer.d.ts +7 -1
  62. package/dist/banner-floating-offer.js +380 -4
  63. package/dist/banner-gdpr-rights.cjs +398 -31
  64. package/dist/banner-gdpr-rights.d.cts +7 -1
  65. package/dist/banner-gdpr-rights.d.ts +7 -1
  66. package/dist/banner-gdpr-rights.js +399 -32
  67. package/dist/banner-privacy-notice.cjs +399 -32
  68. package/dist/banner-privacy-notice.d.cts +7 -1
  69. package/dist/banner-privacy-notice.d.ts +7 -1
  70. package/dist/banner-privacy-notice.js +400 -33
  71. package/dist/banner-promo-cta.cjs +382 -12
  72. package/dist/banner-promo-cta.d.cts +7 -1
  73. package/dist/banner-promo-cta.d.ts +7 -1
  74. package/dist/banner-promo-cta.js +383 -13
  75. package/dist/banner-social-follow.cjs +395 -28
  76. package/dist/banner-social-follow.d.cts +7 -1
  77. package/dist/banner-social-follow.d.ts +7 -1
  78. package/dist/banner-social-follow.js +396 -29
  79. package/dist/banner-survey-incentive.cjs +377 -1
  80. package/dist/banner-survey-incentive.d.cts +7 -1
  81. package/dist/banner-survey-incentive.d.ts +7 -1
  82. package/dist/banner-survey-incentive.js +378 -2
  83. package/dist/community-initiatives.cjs +43 -10
  84. package/dist/community-initiatives.js +43 -10
  85. package/dist/components.cjs +76 -36
  86. package/dist/components.js +76 -36
  87. package/dist/contact-floating-banner.cjs +378 -2
  88. package/dist/contact-floating-banner.d.cts +7 -1
  89. package/dist/contact-floating-banner.d.ts +7 -1
  90. package/dist/contact-floating-banner.js +379 -2
  91. package/dist/cta-accent-background.cjs +28 -1
  92. package/dist/cta-accent-background.js +28 -1
  93. package/dist/cta-app-download-newsletter.cjs +30 -2
  94. package/dist/cta-app-download-newsletter.js +30 -2
  95. package/dist/cta-documentation-links.cjs +28 -2
  96. package/dist/cta-documentation-links.js +28 -2
  97. package/dist/cta-feature-cards-grid.cjs +34 -3
  98. package/dist/cta-feature-cards-grid.js +34 -3
  99. package/dist/cta-feature-checklist.cjs +27 -1
  100. package/dist/cta-feature-checklist.js +27 -1
  101. package/dist/cta-feature-list.cjs +33 -2
  102. package/dist/cta-feature-list.js +33 -2
  103. package/dist/cta-gradient-logos-floating.cjs +28 -1
  104. package/dist/cta-gradient-logos-floating.js +28 -1
  105. package/dist/cta-minimal-separator.cjs +27 -1
  106. package/dist/cta-minimal-separator.js +27 -1
  107. package/dist/cta-platform-demo.cjs +28 -1
  108. package/dist/cta-platform-demo.js +28 -1
  109. package/dist/cta-simple-centered.cjs +28 -1
  110. package/dist/cta-simple-centered.js +28 -1
  111. package/dist/cta-split-gradient-image.cjs +28 -1
  112. package/dist/cta-split-gradient-image.js +28 -1
  113. package/dist/cta-split-image-logos.cjs +29 -2
  114. package/dist/cta-split-image-logos.js +29 -2
  115. package/dist/cta-split-image.cjs +29 -2
  116. package/dist/cta-split-image.js +29 -2
  117. package/dist/cta-stacked-cards.cjs +28 -1
  118. package/dist/cta-stacked-cards.js +28 -1
  119. package/dist/faq-badge-support.cjs +33 -5
  120. package/dist/faq-badge-support.js +33 -5
  121. package/dist/faq-bordered-badge.cjs +31 -3
  122. package/dist/faq-bordered-badge.js +31 -3
  123. package/dist/faq-card-categories.cjs +60 -4
  124. package/dist/faq-card-categories.js +60 -4
  125. package/dist/faq-categorized-sections.cjs +31 -3
  126. package/dist/faq-categorized-sections.js +31 -3
  127. package/dist/faq-centered-accordion.cjs +31 -3
  128. package/dist/faq-centered-accordion.js +31 -3
  129. package/dist/faq-gradient-categories.cjs +31 -3
  130. package/dist/faq-gradient-categories.js +31 -3
  131. package/dist/faq-icon-benefits.cjs +40 -5
  132. package/dist/faq-icon-benefits.js +40 -5
  133. package/dist/faq-muted-cards.cjs +29 -2
  134. package/dist/faq-muted-cards.js +29 -2
  135. package/dist/faq-numbered-grid.cjs +32 -3
  136. package/dist/faq-numbered-grid.js +32 -3
  137. package/dist/faq-numbered-list.cjs +32 -3
  138. package/dist/faq-numbered-list.js +32 -3
  139. package/dist/faq-profile-sidebar.cjs +36 -6
  140. package/dist/faq-profile-sidebar.js +36 -6
  141. package/dist/faq-sidebar-navigation.cjs +30 -3
  142. package/dist/faq-sidebar-navigation.js +30 -3
  143. package/dist/faq-simple-accordion.cjs +29 -2
  144. package/dist/faq-simple-accordion.js +29 -2
  145. package/dist/feature-accordion-image.cjs +28 -2
  146. package/dist/feature-accordion-image.js +28 -2
  147. package/dist/feature-badge-grid-six.cjs +27 -1
  148. package/dist/feature-badge-grid-six.js +27 -1
  149. package/dist/feature-bento-image-grid.cjs +27 -1
  150. package/dist/feature-bento-image-grid.js +27 -1
  151. package/dist/feature-bento-utilities.cjs +56 -4
  152. package/dist/feature-bento-utilities.js +56 -4
  153. package/dist/feature-capabilities-grid.cjs +29 -3
  154. package/dist/feature-capabilities-grid.js +29 -3
  155. package/dist/feature-card-grid-linked.cjs +29 -2
  156. package/dist/feature-card-grid-linked.js +29 -2
  157. package/dist/feature-carousel-progress.cjs +28 -2
  158. package/dist/feature-carousel-progress.js +28 -2
  159. package/dist/feature-category-image-cards.cjs +28 -2
  160. package/dist/feature-category-image-cards.js +28 -2
  161. package/dist/feature-checklist-image.cjs +30 -2
  162. package/dist/feature-checklist-image.js +30 -2
  163. package/dist/feature-checklist-three-column.cjs +35 -5
  164. package/dist/feature-checklist-three-column.js +35 -5
  165. package/dist/feature-icon-grid-accent.cjs +28 -2
  166. package/dist/feature-icon-grid-accent.js +28 -2
  167. package/dist/feature-icon-grid-bordered.cjs +9 -4
  168. package/dist/feature-icon-grid-bordered.js +9 -4
  169. package/dist/feature-icon-grid-muted.cjs +28 -2
  170. package/dist/feature-icon-grid-muted.js +28 -2
  171. package/dist/feature-icon-tabs-content.cjs +56 -5
  172. package/dist/feature-icon-tabs-content.js +56 -5
  173. package/dist/feature-image-cards-three-column.cjs +27 -1
  174. package/dist/feature-image-cards-three-column.js +27 -1
  175. package/dist/feature-integration-cards.cjs +28 -2
  176. package/dist/feature-integration-cards.js +28 -2
  177. package/dist/feature-pattern-grid-links.cjs +28 -2
  178. package/dist/feature-pattern-grid-links.js +28 -2
  179. package/dist/feature-utility-cards-grid.cjs +9 -4
  180. package/dist/feature-utility-cards-grid.js +9 -4
  181. package/dist/footer-comprehensive-links.cjs +231 -151
  182. package/dist/footer-comprehensive-links.js +231 -151
  183. package/dist/hero-ad-campaign-expert.cjs +24 -2
  184. package/dist/hero-ad-campaign-expert.js +24 -2
  185. package/dist/hero-adaptable-product-grid.cjs +27 -1
  186. package/dist/hero-adaptable-product-grid.js +27 -1
  187. package/dist/hero-ai-powered-carousel.cjs +27 -1
  188. package/dist/hero-ai-powered-carousel.js +27 -1
  189. package/dist/hero-announcement-badge.cjs +27 -1
  190. package/dist/hero-announcement-badge.js +27 -1
  191. package/dist/hero-architecture-fullscreen.cjs +50 -2
  192. package/dist/hero-architecture-fullscreen.js +50 -2
  193. package/dist/hero-badge-image-split.cjs +27 -1
  194. package/dist/hero-badge-image-split.js +27 -1
  195. package/dist/hero-business-carousel-dots.cjs +27 -1
  196. package/dist/hero-business-carousel-dots.js +27 -1
  197. package/dist/hero-centered-gradient-cta.cjs +28 -2
  198. package/dist/hero-centered-gradient-cta.js +28 -2
  199. package/dist/hero-centered-image-grid.cjs +27 -1
  200. package/dist/hero-centered-image-grid.js +27 -1
  201. package/dist/hero-centered-screenshot.cjs +50 -2
  202. package/dist/hero-centered-screenshot.js +50 -2
  203. package/dist/hero-coming-soon-countdown.cjs +37 -7
  204. package/dist/hero-coming-soon-countdown.js +37 -7
  205. package/dist/hero-community-survey-cta.cjs +27 -1
  206. package/dist/hero-community-survey-cta.js +27 -1
  207. package/dist/hero-conversation-intelligence.cjs +50 -2
  208. package/dist/hero-conversation-intelligence.js +50 -2
  209. package/dist/hero-conversion-video-play.cjs +55 -3
  210. package/dist/hero-conversion-video-play.js +55 -3
  211. package/dist/hero-creative-studio-stacked.cjs +28 -2
  212. package/dist/hero-creative-studio-stacked.js +28 -2
  213. package/dist/hero-crm-streamlined.cjs +27 -1
  214. package/dist/hero-crm-streamlined.js +27 -1
  215. package/dist/hero-customer-support-layered.cjs +51 -3
  216. package/dist/hero-customer-support-layered.js +51 -3
  217. package/dist/hero-dashed-border-features.cjs +27 -1
  218. package/dist/hero-dashed-border-features.js +27 -1
  219. package/dist/hero-design-showcase-logos.cjs +27 -1
  220. package/dist/hero-design-showcase-logos.js +27 -1
  221. package/dist/hero-design-system-3d.cjs +32 -2
  222. package/dist/hero-design-system-3d.js +32 -2
  223. package/dist/hero-developer-tools-code.cjs +27 -1
  224. package/dist/hero-developer-tools-code.js +27 -1
  225. package/dist/hero-digital-agency-fullscreen.cjs +33 -3
  226. package/dist/hero-digital-agency-fullscreen.js +33 -3
  227. package/dist/hero-ecommerce-product-showcase.cjs +32 -6
  228. package/dist/hero-ecommerce-product-showcase.js +32 -6
  229. package/dist/hero-enterprise-security.cjs +34 -4
  230. package/dist/hero-enterprise-security.js +34 -4
  231. package/dist/hero-event-registration.cjs +35 -5
  232. package/dist/hero-event-registration.js +35 -5
  233. package/dist/hero-feature-cards-grid.cjs +82 -4
  234. package/dist/hero-feature-cards-grid.js +82 -4
  235. package/dist/hero-gradient-avatars-rating.cjs +30 -4
  236. package/dist/hero-gradient-avatars-rating.js +30 -4
  237. package/dist/hero-gradient-client-focused.cjs +27 -1
  238. package/dist/hero-gradient-client-focused.js +27 -1
  239. package/dist/hero-grid-pattern-efficiency.cjs +28 -2
  240. package/dist/hero-grid-pattern-efficiency.js +28 -2
  241. package/dist/hero-grid-pattern-solutions.cjs +27 -1
  242. package/dist/hero-grid-pattern-solutions.js +27 -1
  243. package/dist/hero-image-left-content.cjs +27 -1
  244. package/dist/hero-image-left-content.js +27 -1
  245. package/dist/hero-innovation-image-grid.cjs +27 -1
  246. package/dist/hero-innovation-image-grid.js +27 -1
  247. package/dist/hero-logo-centered-screenshot.cjs +27 -1
  248. package/dist/hero-logo-centered-screenshot.js +27 -1
  249. package/dist/hero-marketplace-scattered-images.cjs +27 -1
  250. package/dist/hero-marketplace-scattered-images.js +27 -1
  251. package/dist/hero-mentorship-video-split.cjs +7 -3
  252. package/dist/hero-mentorship-video-split.js +7 -3
  253. package/dist/hero-minimal-centered-dark.cjs +55 -3
  254. package/dist/hero-minimal-centered-dark.js +55 -3
  255. package/dist/hero-mobile-app-download.cjs +34 -4
  256. package/dist/hero-mobile-app-download.js +34 -4
  257. package/dist/hero-newsletter-minimal.cjs +29 -3
  258. package/dist/hero-newsletter-minimal.js +29 -3
  259. package/dist/hero-overlay-cta-grid.cjs +33 -3
  260. package/dist/hero-overlay-cta-grid.js +33 -3
  261. package/dist/hero-pattern-badge-logos.cjs +28 -2
  262. package/dist/hero-pattern-badge-logos.js +28 -2
  263. package/dist/hero-pattern-logo-tech-stack.cjs +33 -3
  264. package/dist/hero-pattern-logo-tech-stack.js +33 -3
  265. package/dist/hero-platform-features-grid.cjs +28 -2
  266. package/dist/hero-platform-features-grid.js +28 -2
  267. package/dist/hero-portfolio-creative.cjs +29 -3
  268. package/dist/hero-portfolio-creative.js +29 -3
  269. package/dist/hero-pricing-comparison.cjs +52 -4
  270. package/dist/hero-pricing-comparison.js +52 -4
  271. package/dist/hero-product-showcase-floating.cjs +34 -4
  272. package/dist/hero-product-showcase-floating.js +34 -4
  273. package/dist/hero-productivity-launcher-video.cjs +29 -3
  274. package/dist/hero-productivity-launcher-video.js +29 -3
  275. package/dist/hero-saas-dashboard-preview.cjs +34 -4
  276. package/dist/hero-saas-dashboard-preview.js +34 -4
  277. package/dist/hero-shared-inbox-layered.cjs +51 -3
  278. package/dist/hero-shared-inbox-layered.js +51 -3
  279. package/dist/hero-simple-centered-image.cjs +27 -1
  280. package/dist/hero-simple-centered-image.js +27 -1
  281. package/dist/hero-software-growth-video-dialog.cjs +50 -2
  282. package/dist/hero-software-growth-video-dialog.js +50 -2
  283. package/dist/hero-spiral-pattern-cards.cjs +28 -2
  284. package/dist/hero-spiral-pattern-cards.js +28 -2
  285. package/dist/hero-split-icon-cards.cjs +34 -4
  286. package/dist/hero-split-icon-cards.js +34 -4
  287. package/dist/hero-split-image-newsletter.cjs +28 -2
  288. package/dist/hero-split-image-newsletter.js +28 -2
  289. package/dist/hero-split-spiral-shapes.cjs +28 -2
  290. package/dist/hero-split-spiral-shapes.js +28 -2
  291. package/dist/hero-startup-launch-cta.cjs +28 -2
  292. package/dist/hero-startup-launch-cta.js +28 -2
  293. package/dist/hero-stats-social-proof.cjs +34 -4
  294. package/dist/hero-stats-social-proof.js +34 -4
  295. package/dist/hero-tech-carousel.cjs +27 -1
  296. package/dist/hero-tech-carousel.js +27 -1
  297. package/dist/hero-ui-library-showcase.cjs +27 -1
  298. package/dist/hero-ui-library-showcase.js +27 -1
  299. package/dist/hero-video-background-dark.cjs +28 -2
  300. package/dist/hero-video-background-dark.js +28 -2
  301. package/dist/hero-video-dialog-gradient.cjs +27 -1
  302. package/dist/hero-video-dialog-gradient.js +27 -1
  303. package/dist/hero-welcome-asymmetric-images.cjs +30 -2
  304. package/dist/hero-welcome-asymmetric-images.js +30 -2
  305. package/dist/index.cjs +104 -36
  306. package/dist/index.d.cts +1 -1
  307. package/dist/index.d.ts +1 -1
  308. package/dist/index.js +102 -37
  309. package/dist/link-page-bento-layout.cjs +57 -28
  310. package/dist/link-page-bento-layout.d.cts +1 -5
  311. package/dist/link-page-bento-layout.d.ts +1 -5
  312. package/dist/link-page-bento-layout.js +57 -28
  313. package/dist/link-page-grid-cards.cjs +52 -23
  314. package/dist/link-page-grid-cards.d.cts +1 -5
  315. package/dist/link-page-grid-cards.d.ts +1 -5
  316. package/dist/link-page-grid-cards.js +52 -23
  317. package/dist/link-page-minimal-profile.cjs +46 -18
  318. package/dist/link-page-minimal-profile.d.cts +1 -5
  319. package/dist/link-page-minimal-profile.d.ts +1 -5
  320. package/dist/link-page-minimal-profile.js +46 -18
  321. package/dist/link-page-newsletter-social.cjs +53 -28
  322. package/dist/link-page-newsletter-social.d.cts +1 -5
  323. package/dist/link-page-newsletter-social.d.ts +1 -5
  324. package/dist/link-page-newsletter-social.js +53 -28
  325. package/dist/link-tree-block.cjs +122 -34
  326. package/dist/link-tree-block.d.cts +1 -8
  327. package/dist/link-tree-block.d.ts +1 -8
  328. package/dist/link-tree-block.js +122 -34
  329. package/dist/media-hover-ctas.cjs +28 -2
  330. package/dist/media-hover-ctas.js +28 -2
  331. package/dist/process-expandable-timeline.cjs +66 -10
  332. package/dist/process-expandable-timeline.js +66 -10
  333. package/dist/process-hover-cards.cjs +39 -6
  334. package/dist/process-hover-cards.js +39 -6
  335. package/dist/process-icon-timeline.cjs +53 -3
  336. package/dist/process-icon-timeline.js +53 -3
  337. package/dist/process-mission-principles.cjs +44 -6
  338. package/dist/process-mission-principles.js +44 -6
  339. package/dist/process-numbered-services.cjs +76 -22
  340. package/dist/process-numbered-services.js +76 -22
  341. package/dist/process-roadmap-timeline.cjs +63 -9
  342. package/dist/process-roadmap-timeline.js +63 -9
  343. package/dist/process-scroll-image.cjs +71 -32
  344. package/dist/process-scroll-image.js +71 -32
  345. package/dist/process-steps-grid.cjs +61 -5
  346. package/dist/process-steps-grid.js +61 -5
  347. package/dist/process-sticky-steps.cjs +49 -69
  348. package/dist/process-sticky-steps.d.cts +1 -13
  349. package/dist/process-sticky-steps.d.ts +1 -13
  350. package/dist/process-sticky-steps.js +49 -69
  351. package/dist/project-zigzag-layout.cjs +379 -3
  352. package/dist/project-zigzag-layout.d.cts +8 -1
  353. package/dist/project-zigzag-layout.d.ts +8 -1
  354. package/dist/project-zigzag-layout.js +380 -3
  355. package/dist/registry.cjs +2759 -2476
  356. package/dist/registry.js +2759 -2476
  357. package/dist/team-media-showcase.cjs +59 -4
  358. package/dist/team-media-showcase.d.cts +4 -0
  359. package/dist/team-media-showcase.d.ts +4 -0
  360. package/dist/team-media-showcase.js +59 -4
  361. package/dist/testimonials-carousel-image.d.cts +6 -0
  362. package/dist/testimonials-carousel-image.d.ts +6 -0
  363. package/dist/utils.cjs +58 -0
  364. package/dist/utils.d.cts +113 -1
  365. package/dist/utils.d.ts +113 -1
  366. package/dist/utils.js +56 -1
  367. package/package.json +1 -1
@@ -564,6 +564,34 @@ function processSvgForCurrentColor(svg) {
564
564
  );
565
565
  return processed;
566
566
  }
567
+ var maxWidthStyles = {
568
+ sm: "max-w-screen-sm",
569
+ md: "max-w-screen-md",
570
+ lg: "max-w-screen-lg",
571
+ xl: "max-w-7xl",
572
+ "2xl": "max-w-screen-2xl",
573
+ "4xl": "max-w-[1536px]",
574
+ full: "max-w-full"
575
+ };
576
+ var Container = React__default.forwardRef(
577
+ ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
578
+ const Component = as;
579
+ return /* @__PURE__ */ jsx(
580
+ Component,
581
+ {
582
+ ref,
583
+ className: cn(
584
+ "mx-auto w-full px-2 sm:px-4 lg:px-8",
585
+ maxWidthStyles[maxWidth],
586
+ className
587
+ ),
588
+ ...props,
589
+ children
590
+ }
591
+ );
592
+ }
593
+ );
594
+ Container.displayName = "Container";
567
595
 
568
596
  // lib/patternSvgs.ts
569
597
  var patternSvgs = {
@@ -830,34 +858,87 @@ function PatternBackground({
830
858
  }
831
859
  );
832
860
  }
833
- var maxWidthStyles = {
834
- sm: "max-w-screen-sm",
835
- md: "max-w-screen-md",
836
- lg: "max-w-screen-lg",
837
- xl: "max-w-7xl",
838
- "2xl": "max-w-screen-2xl",
839
- "4xl": "max-w-[1536px]",
840
- full: "max-w-full"
861
+ var backgroundStyles = {
862
+ default: "bg-background text-foreground",
863
+ white: "bg-white text-dark",
864
+ gray: "bg-muted/30 text-foreground",
865
+ dark: "bg-foreground text-background",
866
+ transparent: "bg-transparent text-foreground",
867
+ gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
868
+ primary: "bg-primary text-primary-foreground",
869
+ secondary: "bg-secondary text-secondary-foreground",
870
+ muted: "bg-muted text-muted-foreground"
841
871
  };
842
- var Container = React__default.forwardRef(
843
- ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
844
- const Component = as;
845
- return /* @__PURE__ */ jsx(
846
- Component,
872
+ var spacingStyles = {
873
+ none: "py-0 md:py-0",
874
+ sm: "py-12 md:py-16",
875
+ md: "py-16 md:py-24",
876
+ lg: "py-20 md:py-32",
877
+ xl: "py-24 md:py-40"
878
+ };
879
+ var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
880
+ var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
881
+ var Section = React__default.forwardRef(
882
+ ({
883
+ id,
884
+ title,
885
+ subtitle,
886
+ children,
887
+ className,
888
+ style,
889
+ background = "default",
890
+ spacing = "lg",
891
+ pattern,
892
+ patternOpacity,
893
+ patternClassName,
894
+ containerClassName,
895
+ containerMaxWidth = "xl",
896
+ ...props
897
+ }, ref) => {
898
+ const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
899
+ return /* @__PURE__ */ jsxs(
900
+ "section",
847
901
  {
848
902
  ref,
903
+ id,
849
904
  className: cn(
850
- "mx-auto w-full px-2 sm:px-4 lg:px-8",
851
- maxWidthStyles[maxWidth],
905
+ "relative",
906
+ pattern ? "overflow-hidden" : null,
907
+ backgroundStyles[background],
908
+ isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
852
909
  className
853
910
  ),
911
+ style,
854
912
  ...props,
855
- children
913
+ children: [
914
+ /* @__PURE__ */ jsx(
915
+ PatternBackground,
916
+ {
917
+ pattern,
918
+ opacity: effectivePatternOpacity,
919
+ className: patternClassName
920
+ }
921
+ ),
922
+ /* @__PURE__ */ jsxs(
923
+ Container,
924
+ {
925
+ maxWidth: containerMaxWidth,
926
+ className: cn("relative z-10", containerClassName),
927
+ children: [
928
+ (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-6 text-center md:mb-16", children: [
929
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider text-primary", children: subtitle }),
930
+ title && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
931
+ ] }),
932
+ children
933
+ ]
934
+ }
935
+ )
936
+ ]
856
937
  }
857
938
  );
858
939
  }
859
940
  );
860
- Container.displayName = "Container";
941
+ Section.displayName = "Section";
861
942
  var socialIconMap = {
862
943
  facebook: "simple-icons/facebook",
863
944
  x: "simple-icons/x",
@@ -888,155 +969,154 @@ function FooterComprehensiveLinks({
888
969
  const year = useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
889
970
  const copyrightText = copyright || `\xA9 ${year} ${companyName || ""}. All rights reserved.`;
890
971
  return /* @__PURE__ */ jsxs(
891
- "footer",
972
+ Section,
892
973
  {
893
- className: cn(
894
- "relative overflow-hidden",
895
- className
896
- ),
974
+ background,
975
+ spacing: "lg",
976
+ pattern,
977
+ patternOpacity,
978
+ className,
979
+ containerClassName: "relative z-10",
897
980
  children: [
898
- /* @__PURE__ */ jsx(PatternBackground, { pattern, opacity: patternOpacity }),
899
- /* @__PURE__ */ jsxs(Container, { className: "relative z-10 py-12 lg:py-16", children: [
900
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-10 lg:gap-12", children: [
901
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-12", children: [
902
- (logoSrc || tagline || summary) && /* @__PURE__ */ jsx("div", { className: "sm:col-span-2 lg:col-span-3", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
903
- logoSrc && /* @__PURE__ */ jsx(Pressable, { href: logoHref || "/", className: "inline-flex w-fit", children: /* @__PURE__ */ jsx(
904
- Img,
905
- {
906
- src: logoSrc,
907
- alt: logoAlt || "Logo",
908
- className: "h-9 w-auto",
909
- loading: "eager",
910
- optixFlowConfig
911
- }
912
- ) }),
913
- tagline && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: tagline }),
914
- summary && /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: summary })
915
- ] }) }),
916
- linkColumns && linkColumns.length > 0 && linkColumns.map((column) => /* @__PURE__ */ jsx("div", { className: "lg:col-span-2", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
917
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: column.title }),
918
- /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2.5", children: column.links.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
981
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-10 lg:gap-12", children: [
982
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-12", children: [
983
+ (logoSrc || tagline || summary) && /* @__PURE__ */ jsx("div", { className: "sm:col-span-2 lg:col-span-3", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
984
+ logoSrc && /* @__PURE__ */ jsx(Pressable, { href: logoHref || "/", className: "inline-flex w-fit", children: /* @__PURE__ */ jsx(
985
+ Img,
986
+ {
987
+ src: logoSrc,
988
+ alt: logoAlt || "Logo",
989
+ className: "h-9 w-auto",
990
+ loading: "eager",
991
+ optixFlowConfig
992
+ }
993
+ ) }),
994
+ tagline && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: tagline }),
995
+ summary && /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: summary })
996
+ ] }) }),
997
+ linkColumns && linkColumns.length > 0 && linkColumns.map((column) => /* @__PURE__ */ jsx("div", { className: "lg:col-span-2", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
998
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: column.title }),
999
+ /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2.5", children: column.links.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
1000
+ Pressable,
1001
+ {
1002
+ href: link.href,
1003
+ className: "text-sm text-muted-foreground transition-colors hover:text-primary",
1004
+ children: link.label
1005
+ }
1006
+ ) }, link.href)) })
1007
+ ] }) }, column.title)),
1008
+ contact || (socialLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 lg:col-span-3", children: [
1009
+ contact ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
1010
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: "Contact" }),
1011
+ /* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-3", children: [
1012
+ contact.email ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1013
+ Pressable,
1014
+ {
1015
+ href: contact.email,
1016
+ className: "group flex items-center gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
1017
+ children: [
1018
+ /* @__PURE__ */ jsx(
1019
+ DynamicIcon,
1020
+ {
1021
+ name: "lucide/mail",
1022
+ size: 16,
1023
+ className: "text-muted-foreground transition-colors group-hover:text-primary"
1024
+ }
1025
+ ),
1026
+ /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.email })
1027
+ ]
1028
+ }
1029
+ ) }) : null,
1030
+ contact.phone ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1031
+ Pressable,
1032
+ {
1033
+ href: contact.phone,
1034
+ className: "group flex items-center gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
1035
+ children: [
1036
+ /* @__PURE__ */ jsx(
1037
+ DynamicIcon,
1038
+ {
1039
+ name: "lucide/phone",
1040
+ size: 16,
1041
+ className: "text-muted-foreground transition-colors group-hover:text-primary"
1042
+ }
1043
+ ),
1044
+ /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.phone })
1045
+ ]
1046
+ }
1047
+ ) }) : null,
1048
+ contact.address ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1049
+ Pressable,
1050
+ {
1051
+ href: `https://maps.google.com/?q=${encodeURIComponent(
1052
+ contact.address
1053
+ )}`,
1054
+ className: "group flex items-start gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
1055
+ children: [
1056
+ /* @__PURE__ */ jsx(
1057
+ DynamicIcon,
1058
+ {
1059
+ name: "lucide/map-pin",
1060
+ size: 16,
1061
+ className: "mt-0.5 text-muted-foreground transition-colors group-hover:text-primary"
1062
+ }
1063
+ ),
1064
+ /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.address })
1065
+ ]
1066
+ }
1067
+ ) }) : null
1068
+ ] })
1069
+ ] }) : null,
1070
+ (socialLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
1071
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: "Follow Us" }),
1072
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: socialLinks?.map((link) => /* @__PURE__ */ jsx(
919
1073
  Pressable,
920
1074
  {
921
1075
  href: link.href,
922
- className: "text-sm text-muted-foreground transition-colors hover:text-primary",
923
- children: link.label
924
- }
925
- ) }, link.href)) })
926
- ] }) }, column.title)),
927
- contact || (socialLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 lg:col-span-3", children: [
928
- contact ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
929
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: "Contact" }),
930
- /* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-3", children: [
931
- contact.email ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
932
- Pressable,
1076
+ "aria-label": link.label || `Follow us on ${link.platform}`,
1077
+ className: cn(
1078
+ "flex h-9 w-9 items-center justify-center rounded-full transition-colors hover:bg-muted/80 hover:text-primary",
1079
+ getNestedCardBg(background),
1080
+ getNestedCardTextColor(background)
1081
+ ),
1082
+ children: /* @__PURE__ */ jsx(
1083
+ DynamicIcon,
933
1084
  {
934
- href: contact.email,
935
- className: "group flex items-center gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
936
- children: [
937
- /* @__PURE__ */ jsx(
938
- DynamicIcon,
939
- {
940
- name: "lucide/mail",
941
- size: 16,
942
- className: "text-muted-foreground transition-colors group-hover:text-primary"
943
- }
944
- ),
945
- /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.email })
946
- ]
1085
+ name: socialIconMap[link.platform],
1086
+ size: 16
947
1087
  }
948
- ) }) : null,
949
- contact.phone ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
950
- Pressable,
951
- {
952
- href: contact.phone,
953
- className: "group flex items-center gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
954
- children: [
955
- /* @__PURE__ */ jsx(
956
- DynamicIcon,
957
- {
958
- name: "lucide/phone",
959
- size: 16,
960
- className: "text-muted-foreground transition-colors group-hover:text-primary"
961
- }
962
- ),
963
- /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.phone })
964
- ]
965
- }
966
- ) }) : null,
967
- contact.address ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
968
- Pressable,
969
- {
970
- href: `https://maps.google.com/?q=${encodeURIComponent(
971
- contact.address
972
- )}`,
973
- className: "group flex items-start gap-2.5 text-sm text-muted-foreground transition-colors hover:text-primary",
974
- children: [
975
- /* @__PURE__ */ jsx(
976
- DynamicIcon,
977
- {
978
- name: "lucide/map-pin",
979
- size: 16,
980
- className: "mt-0.5 text-muted-foreground transition-colors group-hover:text-primary"
981
- }
982
- ),
983
- /* @__PURE__ */ jsx("span", { className: "underline underline-offset-2", children: contact.address })
984
- ]
985
- }
986
- ) }) : null
987
- ] })
988
- ] }) : null,
989
- (socialLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
990
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: "Follow Us" }),
991
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: socialLinks?.map((link) => /* @__PURE__ */ jsx(
992
- Pressable,
993
- {
994
- href: link.href,
995
- "aria-label": link.label || `Follow us on ${link.platform}`,
996
- className: cn(
997
- "flex h-9 w-9 items-center justify-center rounded-full transition-colors hover:bg-muted/80 hover:text-primary",
998
- getNestedCardBg(background),
999
- getNestedCardTextColor(background)
1000
- ),
1001
- children: /* @__PURE__ */ jsx(
1002
- DynamicIcon,
1003
- {
1004
- name: socialIconMap[link.platform],
1005
- size: 16
1006
- }
1007
- )
1008
- },
1009
- `${link.platform}-${link.href}`
1010
- )) })
1011
- ] }) : null
1088
+ )
1089
+ },
1090
+ `${link.platform}-${link.href}`
1091
+ )) })
1012
1092
  ] }) : null
1013
- ] }),
1014
- (articleLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsx("div", { className: "border-t pt-8", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
1015
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: articleSectionTitle }),
1016
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-x-8 gap-y-2.5 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4", children: articleLinks?.map((link) => /* @__PURE__ */ jsx(
1017
- Pressable,
1018
- {
1019
- href: link.href,
1020
- className: "truncate text-sm text-muted-foreground transition-colors hover:text-primary",
1021
- children: link.label
1022
- },
1023
- link.href
1024
- )) })
1025
- ] }) }) : null
1093
+ ] }) : null
1026
1094
  ] }),
1027
- /* @__PURE__ */ jsx("div", { className: "mt-10 border-t pt-8", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-between gap-4 sm:flex-row", children: [
1028
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: copyrightText }),
1029
- (bottomLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 sm:gap-6", children: bottomLinks?.map((link) => /* @__PURE__ */ jsx(
1095
+ (articleLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsx("div", { className: "border-t pt-8", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
1096
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: articleSectionTitle }),
1097
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-x-8 gap-y-2.5 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4", children: articleLinks?.map((link) => /* @__PURE__ */ jsx(
1030
1098
  Pressable,
1031
1099
  {
1032
1100
  href: link.href,
1033
- className: "text-sm text-muted-foreground underline underline-offset-2 transition-colors hover:text-primary",
1101
+ className: "truncate text-sm text-muted-foreground transition-colors hover:text-primary",
1034
1102
  children: link.label
1035
1103
  },
1036
1104
  link.href
1037
- )) }) : null
1038
- ] }) })
1039
- ] })
1105
+ )) })
1106
+ ] }) }) : null
1107
+ ] }),
1108
+ /* @__PURE__ */ jsx("div", { className: "mt-10 border-t pt-8", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-between gap-4 sm:flex-row", children: [
1109
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: copyrightText }),
1110
+ (bottomLinks?.length ?? 0) > 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 sm:gap-6", children: bottomLinks?.map((link) => /* @__PURE__ */ jsx(
1111
+ Pressable,
1112
+ {
1113
+ href: link.href,
1114
+ className: "text-sm text-muted-foreground underline underline-offset-2 transition-colors hover:text-primary",
1115
+ children: link.label
1116
+ },
1117
+ link.href
1118
+ )) }) : null
1119
+ ] }) })
1040
1120
  ]
1041
1121
  }
1042
1122
  );
@@ -60,6 +60,28 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
60
60
  }
61
61
  }
62
62
  }
63
+ function getBorderColor(parentBg, variant = "default", options) {
64
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
65
+ if (isDark) {
66
+ switch (variant) {
67
+ case "default":
68
+ return "border-foreground/20";
69
+ case "muted":
70
+ return "border-foreground/10";
71
+ case "accent":
72
+ return "border-accent-foreground";
73
+ }
74
+ } else {
75
+ switch (variant) {
76
+ case "default":
77
+ return "border-border";
78
+ case "muted":
79
+ return "border-muted";
80
+ case "accent":
81
+ return "border-primary";
82
+ }
83
+ }
84
+ }
63
85
  function normalizePhoneNumber(input) {
64
86
  const trimmed = input.trim();
65
87
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -910,14 +932,14 @@ function HeroAdCampaignExpert({
910
932
  (heading || headingHighlight) && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl leading-tight font-bold tracking-tighter lg:text-5xl", headingClassName), children: heading }) : heading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading }) : headingHighlight ? /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: cn("text-3xl leading-tight font-bold tracking-tighter lg:text-5xl", headingClassName), children: [
911
933
  "Your ad campaigns excel with",
912
934
  " ",
913
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "border-muted2 border-b-2", children: headingHighlight }),
935
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(getBorderColor(background, "muted"), "border-b-2"), children: headingHighlight }),
914
936
  ", delivering optimized performance."
915
937
  ] }) : null),
916
938
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
917
939
  renderAction
918
940
  ] }),
919
941
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative flex w-full justify-center lg:w-1/2", imageContainerClassName), children: [
920
- imageSrc && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 -mb-16 h-auto w-[80%] max-w-[355px] lg:w-[520px]", children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 355 / 520, className: "border-muted2 border", children: /* @__PURE__ */ jsxRuntime.jsx(
942
+ imageSrc && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 -mb-16 h-auto w-[80%] max-w-[355px] lg:w-[520px]", children: /* @__PURE__ */ jsxRuntime.jsx(AspectRatio, { ratio: 355 / 520, className: cn(getBorderColor(background, "muted"), "border"), children: /* @__PURE__ */ jsxRuntime.jsx(
921
943
  img.Img,
922
944
  {
923
945
  src: imageSrc,
@@ -38,6 +38,28 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
38
38
  }
39
39
  }
40
40
  }
41
+ function getBorderColor(parentBg, variant = "default", options) {
42
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
43
+ if (isDark) {
44
+ switch (variant) {
45
+ case "default":
46
+ return "border-foreground/20";
47
+ case "muted":
48
+ return "border-foreground/10";
49
+ case "accent":
50
+ return "border-accent-foreground";
51
+ }
52
+ } else {
53
+ switch (variant) {
54
+ case "default":
55
+ return "border-border";
56
+ case "muted":
57
+ return "border-muted";
58
+ case "accent":
59
+ return "border-primary";
60
+ }
61
+ }
62
+ }
41
63
  function normalizePhoneNumber(input) {
42
64
  const trimmed = input.trim();
43
65
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -888,14 +910,14 @@ function HeroAdCampaignExpert({
888
910
  (heading || headingHighlight) && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl leading-tight font-bold tracking-tighter lg:text-5xl", headingClassName), children: heading }) : heading ? /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading }) : headingHighlight ? /* @__PURE__ */ jsxs("h2", { className: cn("text-3xl leading-tight font-bold tracking-tighter lg:text-5xl", headingClassName), children: [
889
911
  "Your ad campaigns excel with",
890
912
  " ",
891
- /* @__PURE__ */ jsx("span", { className: "border-muted2 border-b-2", children: headingHighlight }),
913
+ /* @__PURE__ */ jsx("span", { className: cn(getBorderColor(background, "muted"), "border-b-2"), children: headingHighlight }),
892
914
  ", delivering optimized performance."
893
915
  ] }) : null),
894
916
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
895
917
  renderAction
896
918
  ] }),
897
919
  /* @__PURE__ */ jsxs("div", { className: cn("relative flex w-full justify-center lg:w-1/2", imageContainerClassName), children: [
898
- imageSrc && /* @__PURE__ */ jsx("div", { className: "relative z-10 -mb-16 h-auto w-[80%] max-w-[355px] lg:w-[520px]", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 355 / 520, className: "border-muted2 border", children: /* @__PURE__ */ jsx(
920
+ imageSrc && /* @__PURE__ */ jsx("div", { className: "relative z-10 -mb-16 h-auto w-[80%] max-w-[355px] lg:w-[520px]", children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 355 / 520, className: cn(getBorderColor(background, "muted"), "border"), children: /* @__PURE__ */ jsx(
899
921
  Img,
900
922
  {
901
923
  src: imageSrc,
@@ -32,6 +32,32 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
32
  function cn(...inputs) {
33
33
  return tailwindMerge.twMerge(clsx.clsx(inputs));
34
34
  }
35
+ function getTextColor(parentBg, variant = "default", options) {
36
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
37
+ if (isDark) {
38
+ switch (variant) {
39
+ case "default":
40
+ return "text-foreground";
41
+ case "muted":
42
+ return "text-foreground/80";
43
+ case "subtle":
44
+ return "text-foreground/60";
45
+ case "accent":
46
+ return "text-accent-foreground";
47
+ }
48
+ } else {
49
+ switch (variant) {
50
+ case "default":
51
+ return "text-foreground";
52
+ case "muted":
53
+ return "text-muted-foreground";
54
+ case "subtle":
55
+ return "text-muted-foreground/70";
56
+ case "accent":
57
+ return "text-primary";
58
+ }
59
+ }
60
+ }
35
61
  function normalizePhoneNumber(input) {
36
62
  const trimmed = input.trim();
37
63
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -876,7 +902,7 @@ function HeroAdaptableProductGrid({
876
902
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-5xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
877
903
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-14 grid gap-10 lg:grid-cols-2", children: [
878
904
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: contentClassName, children: [
879
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
905
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
880
906
  renderAction
881
907
  ] }),
882
908
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative flex items-center justify-center overflow-hidden", imageContainerClassName), children: [
@@ -11,6 +11,32 @@ import { Img } from '@page-speed/img';
11
11
  function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
+ function getTextColor(parentBg, variant = "default", options) {
15
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
+ if (isDark) {
17
+ switch (variant) {
18
+ case "default":
19
+ return "text-foreground";
20
+ case "muted":
21
+ return "text-foreground/80";
22
+ case "subtle":
23
+ return "text-foreground/60";
24
+ case "accent":
25
+ return "text-accent-foreground";
26
+ }
27
+ } else {
28
+ switch (variant) {
29
+ case "default":
30
+ return "text-foreground";
31
+ case "muted":
32
+ return "text-muted-foreground";
33
+ case "subtle":
34
+ return "text-muted-foreground/70";
35
+ case "accent":
36
+ return "text-primary";
37
+ }
38
+ }
39
+ }
14
40
  function normalizePhoneNumber(input) {
15
41
  const trimmed = input.trim();
16
42
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -855,7 +881,7 @@ function HeroAdaptableProductGrid({
855
881
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-5xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
856
882
  /* @__PURE__ */ jsxs("div", { className: "mt-14 grid gap-10 lg:grid-cols-2", children: [
857
883
  /* @__PURE__ */ jsxs("div", { className: contentClassName, children: [
858
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
884
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
859
885
  renderAction
860
886
  ] }),
861
887
  /* @__PURE__ */ jsxs("div", { className: cn("relative flex items-center justify-center overflow-hidden", imageContainerClassName), children: [