@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
@@ -39,6 +39,32 @@ var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
39
39
  function cn(...inputs) {
40
40
  return tailwindMerge.twMerge(clsx.clsx(inputs));
41
41
  }
42
+ function getTextColor(parentBg, variant = "default", options) {
43
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
44
+ if (isDark) {
45
+ switch (variant) {
46
+ case "default":
47
+ return "text-foreground";
48
+ case "muted":
49
+ return "text-foreground/80";
50
+ case "subtle":
51
+ return "text-foreground/60";
52
+ case "accent":
53
+ return "text-accent-foreground";
54
+ }
55
+ } else {
56
+ switch (variant) {
57
+ case "default":
58
+ return "text-foreground";
59
+ case "muted":
60
+ return "text-muted-foreground";
61
+ case "subtle":
62
+ return "text-muted-foreground/70";
63
+ case "accent":
64
+ return "text-primary";
65
+ }
66
+ }
67
+ }
42
68
  var badgeVariants = classVarianceAuthority.cva(
43
69
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
44
70
  {
@@ -1054,7 +1080,7 @@ function HeroAiPoweredCarousel({
1054
1080
  badgeTagline
1055
1081
  ] }),
1056
1082
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-10 mb-4 text-3xl font-semibold lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1057
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1083
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1058
1084
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex flex-col gap-2 sm:flex-row", actionsClassName), children: renderActions })
1059
1085
  ] }),
1060
1086
  carouselSlot ? carouselSlot : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -14,6 +14,32 @@ import useEmblaCarousel from 'embla-carousel-react';
14
14
  function cn(...inputs) {
15
15
  return twMerge(clsx(inputs));
16
16
  }
17
+ function getTextColor(parentBg, variant = "default", options) {
18
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
19
+ if (isDark) {
20
+ switch (variant) {
21
+ case "default":
22
+ return "text-foreground";
23
+ case "muted":
24
+ return "text-foreground/80";
25
+ case "subtle":
26
+ return "text-foreground/60";
27
+ case "accent":
28
+ return "text-accent-foreground";
29
+ }
30
+ } else {
31
+ switch (variant) {
32
+ case "default":
33
+ return "text-foreground";
34
+ case "muted":
35
+ return "text-muted-foreground";
36
+ case "subtle":
37
+ return "text-muted-foreground/70";
38
+ case "accent":
39
+ return "text-primary";
40
+ }
41
+ }
42
+ }
17
43
  var badgeVariants = cva(
18
44
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
19
45
  {
@@ -1029,7 +1055,7 @@ function HeroAiPoweredCarousel({
1029
1055
  badgeTagline
1030
1056
  ] }),
1031
1057
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mt-10 mb-4 text-3xl font-semibold lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1032
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1058
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1033
1059
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-10 flex flex-col gap-2 sm:flex-row", actionsClassName), children: renderActions })
1034
1060
  ] }),
1035
1061
  carouselSlot ? carouselSlot : /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -62,6 +62,32 @@ function getNestedCardTextColor(parentBg, options) {
62
62
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
63
63
  return isDark ? "text-foreground" : "";
64
64
  }
65
+ function getTextColor(parentBg, variant = "default", options) {
66
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
67
+ if (isDark) {
68
+ switch (variant) {
69
+ case "default":
70
+ return "text-foreground";
71
+ case "muted":
72
+ return "text-foreground/80";
73
+ case "subtle":
74
+ return "text-foreground/60";
75
+ case "accent":
76
+ return "text-accent-foreground";
77
+ }
78
+ } else {
79
+ switch (variant) {
80
+ case "default":
81
+ return "text-foreground";
82
+ case "muted":
83
+ return "text-muted-foreground";
84
+ case "subtle":
85
+ return "text-muted-foreground/70";
86
+ case "accent":
87
+ return "text-primary";
88
+ }
89
+ }
90
+ }
65
91
  var badgeVariants = classVarianceAuthority.cva(
66
92
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
67
93
  {
@@ -951,7 +977,7 @@ function HeroAnnouncementBadge({
951
977
  }
952
978
  ),
953
979
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-6 text-4xl leading-none font-bold tracking-tighter md:text-[7vw] lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
954
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl text-muted-foreground md:text-[2vw] lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
980
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl md:text-[2vw] lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
955
981
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-6 flex flex-col gap-4 sm:flex-row lg:mt-10", actionsClassName), children: renderActions })
956
982
  ] })
957
983
  }
@@ -41,6 +41,32 @@ function getNestedCardTextColor(parentBg, options) {
41
41
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
42
42
  return isDark ? "text-foreground" : "";
43
43
  }
44
+ function getTextColor(parentBg, variant = "default", options) {
45
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
46
+ if (isDark) {
47
+ switch (variant) {
48
+ case "default":
49
+ return "text-foreground";
50
+ case "muted":
51
+ return "text-foreground/80";
52
+ case "subtle":
53
+ return "text-foreground/60";
54
+ case "accent":
55
+ return "text-accent-foreground";
56
+ }
57
+ } else {
58
+ switch (variant) {
59
+ case "default":
60
+ return "text-foreground";
61
+ case "muted":
62
+ return "text-muted-foreground";
63
+ case "subtle":
64
+ return "text-muted-foreground/70";
65
+ case "accent":
66
+ return "text-primary";
67
+ }
68
+ }
69
+ }
44
70
  var badgeVariants = cva(
45
71
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
46
72
  {
@@ -930,7 +956,7 @@ function HeroAnnouncementBadge({
930
956
  }
931
957
  ),
932
958
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl leading-none font-bold tracking-tighter md:text-[7vw] lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
933
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl text-muted-foreground md:text-[2vw] lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
959
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl md:text-[2vw] lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
934
960
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-6 flex flex-col gap-4 sm:flex-row lg:mt-10", actionsClassName), children: renderActions })
935
961
  ] })
936
962
  }
@@ -31,6 +31,54 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
31
  function cn(...inputs) {
32
32
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
33
  }
34
+ function getTextColor(parentBg, variant = "default", options) {
35
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
36
+ if (isDark) {
37
+ switch (variant) {
38
+ case "default":
39
+ return "text-foreground";
40
+ case "muted":
41
+ return "text-foreground/80";
42
+ case "subtle":
43
+ return "text-foreground/60";
44
+ case "accent":
45
+ return "text-accent-foreground";
46
+ }
47
+ } else {
48
+ switch (variant) {
49
+ case "default":
50
+ return "text-foreground";
51
+ case "muted":
52
+ return "text-muted-foreground";
53
+ case "subtle":
54
+ return "text-muted-foreground/70";
55
+ case "accent":
56
+ return "text-primary";
57
+ }
58
+ }
59
+ }
60
+ function getBorderColor(parentBg, variant = "default", options) {
61
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
62
+ if (isDark) {
63
+ switch (variant) {
64
+ case "default":
65
+ return "border-foreground/20";
66
+ case "muted":
67
+ return "border-foreground/10";
68
+ case "accent":
69
+ return "border-accent-foreground";
70
+ }
71
+ } else {
72
+ switch (variant) {
73
+ case "default":
74
+ return "border-border";
75
+ case "muted":
76
+ return "border-muted";
77
+ case "accent":
78
+ return "border-primary";
79
+ }
80
+ }
81
+ }
34
82
  function normalizePhoneNumber(input) {
35
83
  const trimmed = input.trim();
36
84
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -873,11 +921,11 @@ function HeroArchitectureFullscreen({
873
921
  style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
874
922
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative z-20 container h-full w-full max-w-340", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
875
923
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-245.5 flex-col gap-1", children: [
876
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm leading-none text-muted-foreground uppercase", taglineClassName), children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
924
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm leading-none uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: taglineClassName, children: tagline })),
877
925
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-3xl leading-snug! md:text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading }))
878
926
  ] }),
879
927
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col justify-between gap-5 sm:flex-row sm:items-center", children: [
880
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-81 border-l border-muted-foreground pl-6 text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
928
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-81 border-l pl-6 text-base", getBorderColor(background, "muted"), getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
881
929
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: renderAction })
882
930
  ] })
883
931
  ] }) })
@@ -10,6 +10,54 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
  function cn(...inputs) {
11
11
  return twMerge(clsx(inputs));
12
12
  }
13
+ function getTextColor(parentBg, variant = "default", options) {
14
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
15
+ if (isDark) {
16
+ switch (variant) {
17
+ case "default":
18
+ return "text-foreground";
19
+ case "muted":
20
+ return "text-foreground/80";
21
+ case "subtle":
22
+ return "text-foreground/60";
23
+ case "accent":
24
+ return "text-accent-foreground";
25
+ }
26
+ } else {
27
+ switch (variant) {
28
+ case "default":
29
+ return "text-foreground";
30
+ case "muted":
31
+ return "text-muted-foreground";
32
+ case "subtle":
33
+ return "text-muted-foreground/70";
34
+ case "accent":
35
+ return "text-primary";
36
+ }
37
+ }
38
+ }
39
+ function getBorderColor(parentBg, variant = "default", options) {
40
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
+ if (isDark) {
42
+ switch (variant) {
43
+ case "default":
44
+ return "border-foreground/20";
45
+ case "muted":
46
+ return "border-foreground/10";
47
+ case "accent":
48
+ return "border-accent-foreground";
49
+ }
50
+ } else {
51
+ switch (variant) {
52
+ case "default":
53
+ return "border-border";
54
+ case "muted":
55
+ return "border-muted";
56
+ case "accent":
57
+ return "border-primary";
58
+ }
59
+ }
60
+ }
13
61
  function normalizePhoneNumber(input) {
14
62
  const trimmed = input.trim();
15
63
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -852,11 +900,11 @@ function HeroArchitectureFullscreen({
852
900
  style: { backgroundImage: backgroundImage ? `url('${backgroundImage}')` : void 0 },
853
901
  children: /* @__PURE__ */ jsx("div", { className: cn("relative z-20 container h-full w-full max-w-340", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col justify-end gap-12", children: [
854
902
  /* @__PURE__ */ jsxs("div", { className: "flex max-w-245.5 flex-col gap-1", children: [
855
- tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm leading-none text-muted-foreground uppercase", taglineClassName), children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
903
+ tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm leading-none uppercase", getTextColor(background, "muted"), taglineClassName), children: tagline }) : /* @__PURE__ */ jsx("div", { className: taglineClassName, children: tagline })),
856
904
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-3xl leading-snug! md:text-4xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading }))
857
905
  ] }),
858
906
  /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col justify-between gap-5 sm:flex-row sm:items-center", children: [
859
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-81 border-l border-muted-foreground pl-6 text-base text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
907
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-81 border-l pl-6 text-base", getBorderColor(background, "muted"), getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
860
908
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: renderAction })
861
909
  ] })
862
910
  ] }) })
@@ -33,6 +33,32 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
33
  function cn(...inputs) {
34
34
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
35
  }
36
+ function getTextColor(parentBg, variant = "default", options) {
37
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
38
+ if (isDark) {
39
+ switch (variant) {
40
+ case "default":
41
+ return "text-foreground";
42
+ case "muted":
43
+ return "text-foreground/80";
44
+ case "subtle":
45
+ return "text-foreground/60";
46
+ case "accent":
47
+ return "text-accent-foreground";
48
+ }
49
+ } else {
50
+ switch (variant) {
51
+ case "default":
52
+ return "text-foreground";
53
+ case "muted":
54
+ return "text-muted-foreground";
55
+ case "subtle":
56
+ return "text-muted-foreground/70";
57
+ case "accent":
58
+ return "text-primary";
59
+ }
60
+ }
61
+ }
36
62
  var badgeVariants = classVarianceAuthority.cva(
37
63
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
38
64
  {
@@ -917,7 +943,7 @@ function HeroBadgeImageSplit({
917
943
  badgeIcon
918
944
  ] }),
919
945
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
920
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
946
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
921
947
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: renderActions })
922
948
  ] }),
923
949
  imageSrc && /* @__PURE__ */ jsxRuntime.jsx(
@@ -12,6 +12,32 @@ import { Img } from '@page-speed/img';
12
12
  function cn(...inputs) {
13
13
  return twMerge(clsx(inputs));
14
14
  }
15
+ function getTextColor(parentBg, variant = "default", options) {
16
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
17
+ if (isDark) {
18
+ switch (variant) {
19
+ case "default":
20
+ return "text-foreground";
21
+ case "muted":
22
+ return "text-foreground/80";
23
+ case "subtle":
24
+ return "text-foreground/60";
25
+ case "accent":
26
+ return "text-accent-foreground";
27
+ }
28
+ } else {
29
+ switch (variant) {
30
+ case "default":
31
+ return "text-foreground";
32
+ case "muted":
33
+ return "text-muted-foreground";
34
+ case "subtle":
35
+ return "text-muted-foreground/70";
36
+ case "accent":
37
+ return "text-primary";
38
+ }
39
+ }
40
+ }
15
41
  var badgeVariants = cva(
16
42
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
17
43
  {
@@ -896,7 +922,7 @@ function HeroBadgeImageSplit({
896
922
  badgeIcon
897
923
  ] }),
898
924
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
899
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
925
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
900
926
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: renderActions })
901
927
  ] }),
902
928
  imageSrc && /* @__PURE__ */ jsx(
@@ -63,6 +63,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
63
63
  }
64
64
  }
65
65
  }
66
+ function getTextColor(parentBg, variant = "default", options) {
67
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
68
+ if (isDark) {
69
+ switch (variant) {
70
+ case "default":
71
+ return "text-foreground";
72
+ case "muted":
73
+ return "text-foreground/80";
74
+ case "subtle":
75
+ return "text-foreground/60";
76
+ case "accent":
77
+ return "text-accent-foreground";
78
+ }
79
+ } else {
80
+ switch (variant) {
81
+ case "default":
82
+ return "text-foreground";
83
+ case "muted":
84
+ return "text-muted-foreground";
85
+ case "subtle":
86
+ return "text-muted-foreground/70";
87
+ case "accent":
88
+ return "text-primary";
89
+ }
90
+ }
91
+ }
66
92
  function normalizePhoneNumber(input) {
67
93
  const trimmed = input.trim();
68
94
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1086,7 +1112,7 @@ function HeroBusinessCarouselDots({
1086
1112
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-5xl text-center", contentClassName), children: [
1087
1113
  badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariant, className: badgeClassName, children: badge }),
1088
1114
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mt-6 text-4xl font-bold md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1089
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-5 text-lg text-muted-foreground md:text-xl lg:px-32", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1115
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-5 text-lg md:text-xl lg:px-32", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1090
1116
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center gap-2", actionsClassName), children: renderActions })
1091
1117
  ] }),
1092
1118
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative mx-10 mt-16 hidden md:block", carouselClassName), children: [
@@ -39,6 +39,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
39
39
  }
40
40
  }
41
41
  }
42
+ function getTextColor(parentBg, variant = "default", options) {
43
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
44
+ if (isDark) {
45
+ switch (variant) {
46
+ case "default":
47
+ return "text-foreground";
48
+ case "muted":
49
+ return "text-foreground/80";
50
+ case "subtle":
51
+ return "text-foreground/60";
52
+ case "accent":
53
+ return "text-accent-foreground";
54
+ }
55
+ } else {
56
+ switch (variant) {
57
+ case "default":
58
+ return "text-foreground";
59
+ case "muted":
60
+ return "text-muted-foreground";
61
+ case "subtle":
62
+ return "text-muted-foreground/70";
63
+ case "accent":
64
+ return "text-primary";
65
+ }
66
+ }
67
+ }
42
68
  function normalizePhoneNumber(input) {
43
69
  const trimmed = input.trim();
44
70
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1062,7 +1088,7 @@ function HeroBusinessCarouselDots({
1062
1088
  /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-5xl text-center", contentClassName), children: [
1063
1089
  badge && /* @__PURE__ */ jsx(Badge, { variant: badgeVariant, className: badgeClassName, children: badge }),
1064
1090
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mt-6 text-4xl font-bold md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1065
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-5 text-lg text-muted-foreground md:text-xl lg:px-32", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1091
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-5 text-lg md:text-xl lg:px-32", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
1066
1092
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center gap-2", actionsClassName), children: renderActions })
1067
1093
  ] }),
1068
1094
  /* @__PURE__ */ jsxs("div", { className: cn("relative mx-10 mt-16 hidden md:block", carouselClassName), children: [
@@ -61,6 +61,32 @@ function getNestedCardTextColor(parentBg, options) {
61
61
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
62
62
  return isDark ? "text-foreground" : "";
63
63
  }
64
+ function getTextColor(parentBg, variant = "default", options) {
65
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
66
+ if (isDark) {
67
+ switch (variant) {
68
+ case "default":
69
+ return "text-foreground";
70
+ case "muted":
71
+ return "text-foreground/80";
72
+ case "subtle":
73
+ return "text-foreground/60";
74
+ case "accent":
75
+ return "text-accent-foreground";
76
+ }
77
+ } else {
78
+ switch (variant) {
79
+ case "default":
80
+ return "text-foreground";
81
+ case "muted":
82
+ return "text-muted-foreground";
83
+ case "subtle":
84
+ return "text-muted-foreground/70";
85
+ case "accent":
86
+ return "text-primary";
87
+ }
88
+ }
89
+ }
64
90
  function normalizePhoneNumber(input) {
65
91
  const trimmed = input.trim();
66
92
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -930,9 +956,9 @@ function HeroCenteredGradientCta({
930
956
  " ",
931
957
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-linear-to-r from-primary to-purple-600 bg-clip-text text-transparent", children: headingHighlight })
932
958
  ] }) : null),
933
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-2xl text-lg text-muted-foreground md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
959
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-2xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
934
960
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex flex-col gap-4 sm:flex-row", actionsClassName), children: renderActions }),
935
- (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm text-muted-foreground", featuresClassName), children: renderFeatures })
961
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm", getTextColor(background, "muted"), featuresClassName), children: renderFeatures })
936
962
  ] })
937
963
  ]
938
964
  }
@@ -40,6 +40,32 @@ function getNestedCardTextColor(parentBg, options) {
40
40
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
41
  return isDark ? "text-foreground" : "";
42
42
  }
43
+ function getTextColor(parentBg, variant = "default", options) {
44
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
45
+ if (isDark) {
46
+ switch (variant) {
47
+ case "default":
48
+ return "text-foreground";
49
+ case "muted":
50
+ return "text-foreground/80";
51
+ case "subtle":
52
+ return "text-foreground/60";
53
+ case "accent":
54
+ return "text-accent-foreground";
55
+ }
56
+ } else {
57
+ switch (variant) {
58
+ case "default":
59
+ return "text-foreground";
60
+ case "muted":
61
+ return "text-muted-foreground";
62
+ case "subtle":
63
+ return "text-muted-foreground/70";
64
+ case "accent":
65
+ return "text-primary";
66
+ }
67
+ }
68
+ }
43
69
  function normalizePhoneNumber(input) {
44
70
  const trimmed = input.trim();
45
71
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -909,9 +935,9 @@ function HeroCenteredGradientCta({
909
935
  " ",
910
936
  /* @__PURE__ */ jsx("span", { className: "bg-linear-to-r from-primary to-purple-600 bg-clip-text text-transparent", children: headingHighlight })
911
937
  ] }) : null),
912
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-2xl text-lg text-muted-foreground md:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
938
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-2xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
913
939
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-10 flex flex-col gap-4 sm:flex-row", actionsClassName), children: renderActions }),
914
- (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm text-muted-foreground", featuresClassName), children: renderFeatures })
940
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm", getTextColor(background, "muted"), featuresClassName), children: renderFeatures })
915
941
  ] })
916
942
  ]
917
943
  }
@@ -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:")) {
@@ -916,7 +942,7 @@ function HeroCenteredImageGrid({
916
942
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex max-w-5xl flex-col items-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("z-10 flex flex-col items-center gap-8 text-center", contentClassName), children: [
917
943
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-3xl", children: [
918
944
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-4 text-4xl font-semibold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
919
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
945
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
920
946
  ] }),
921
947
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row", actionsClassName), children: renderActions })
922
948
  ] }) }),