@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
@@ -35,6 +35,58 @@ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrim
35
35
  function cn(...inputs) {
36
36
  return tailwindMerge.twMerge(clsx.clsx(inputs));
37
37
  }
38
+ function getNestedCardBg(parentBg, variant = "muted", options) {
39
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
40
+ if (isDark) {
41
+ switch (variant) {
42
+ case "muted":
43
+ return "bg-background";
44
+ case "card":
45
+ return "bg-card";
46
+ case "accent":
47
+ return "bg-accent";
48
+ case "subtle":
49
+ return "bg-background/50";
50
+ }
51
+ } else {
52
+ switch (variant) {
53
+ case "muted":
54
+ return "bg-muted";
55
+ case "card":
56
+ return "bg-card";
57
+ case "accent":
58
+ return "bg-accent";
59
+ case "subtle":
60
+ return "bg-muted/50";
61
+ }
62
+ }
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
+ }
38
90
  var svgCache = /* @__PURE__ */ new Map();
39
91
  function DynamicIcon({
40
92
  name,
@@ -642,13 +694,13 @@ function FeatureBentoUtilities({
642
694
  renderImage(),
643
695
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6", children: [
644
696
  renderTitle(),
645
- card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: card.description })
697
+ card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: getTextColor(background, "muted"), children: card.description })
646
698
  ] })
647
699
  ] }, index);
648
700
  }
649
701
  return /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: cardClasses, children: [
650
702
  renderTitle(),
651
- card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: card.description })
703
+ card.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: getTextColor(background, "muted"), children: card.description })
652
704
  ] }, index);
653
705
  }, [optixFlowConfig]);
654
706
  const renderColumn = React__namespace.useCallback((cards, slot) => {
@@ -669,10 +721,10 @@ function FeatureBentoUtilities({
669
721
  pattern,
670
722
  patternOpacity,
671
723
  patternClassName,
672
- className: cn("bg-muted/60", className),
724
+ className: cn(getNestedCardBg(background, "muted"), className),
673
725
  containerClassName: cn("max-w-7xl", containerClassName),
674
726
  children: [
675
- (labelIconElement || label) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
727
+ (labelIconElement || label) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", getTextColor(background, "muted"), labelClassName), children: [
676
728
  labelIconElement,
677
729
  label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: label }))
678
730
  ] }),
@@ -13,6 +13,58 @@ import { Img } from '@page-speed/img';
13
13
  function cn(...inputs) {
14
14
  return twMerge(clsx(inputs));
15
15
  }
16
+ function getNestedCardBg(parentBg, variant = "muted", options) {
17
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
18
+ if (isDark) {
19
+ switch (variant) {
20
+ case "muted":
21
+ return "bg-background";
22
+ case "card":
23
+ return "bg-card";
24
+ case "accent":
25
+ return "bg-accent";
26
+ case "subtle":
27
+ return "bg-background/50";
28
+ }
29
+ } else {
30
+ switch (variant) {
31
+ case "muted":
32
+ return "bg-muted";
33
+ case "card":
34
+ return "bg-card";
35
+ case "accent":
36
+ return "bg-accent";
37
+ case "subtle":
38
+ return "bg-muted/50";
39
+ }
40
+ }
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
+ }
16
68
  var svgCache = /* @__PURE__ */ new Map();
17
69
  function DynamicIcon({
18
70
  name,
@@ -620,13 +672,13 @@ function FeatureBentoUtilities({
620
672
  renderImage(),
621
673
  /* @__PURE__ */ jsxs("div", { className: "p-6", children: [
622
674
  renderTitle(),
623
- card.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: card.description })
675
+ card.description && /* @__PURE__ */ jsx("p", { className: getTextColor(background, "muted"), children: card.description })
624
676
  ] })
625
677
  ] }, index);
626
678
  }
627
679
  return /* @__PURE__ */ jsxs(Card, { className: cardClasses, children: [
628
680
  renderTitle(),
629
- card.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: card.description })
681
+ card.description && /* @__PURE__ */ jsx("p", { className: getTextColor(background, "muted"), children: card.description })
630
682
  ] }, index);
631
683
  }, [optixFlowConfig]);
632
684
  const renderColumn = React.useCallback((cards, slot) => {
@@ -647,10 +699,10 @@ function FeatureBentoUtilities({
647
699
  pattern,
648
700
  patternOpacity,
649
701
  patternClassName,
650
- className: cn("bg-muted/60", className),
702
+ className: cn(getNestedCardBg(background, "muted"), className),
651
703
  containerClassName: cn("max-w-7xl", containerClassName),
652
704
  children: [
653
- (labelIconElement || label) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
705
+ (labelIconElement || label) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", getTextColor(background, "muted"), labelClassName), children: [
654
706
  labelIconElement,
655
707
  label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsx("div", { className: "text-sm", children: label }))
656
708
  ] }),
@@ -31,6 +31,32 @@ 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
+ }
34
60
  var svgCache = /* @__PURE__ */ new Map();
35
61
  function DynamicIcon({
36
62
  name,
@@ -601,10 +627,10 @@ function FeatureCapabilitiesGrid({
601
627
  iconContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-border/15 bg-background/5", item.iconClassName), children: iconContent }),
602
628
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
603
629
  item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: cn("text-lg font-medium", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-medium", item.titleClassName), children: item.title })),
604
- item.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full border border-border/20 px-2 py-0.5 text-[10px] leading-none text-muted-foreground", item.badgeClassName), children: item.badge })
630
+ item.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full border border-border/20 px-2 py-0.5 text-[10px] leading-none", getTextColor(background, "muted"), item.badgeClassName), children: item.badge })
605
631
  ] }) })
606
632
  ] }),
607
- item.description && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-muted-foreground", item.descriptionClassName), children: item.description }),
633
+ item.description && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm", getTextColor(background, "muted"), item.descriptionClassName), children: item.description }),
608
634
  /* @__PURE__ */ jsxRuntime.jsx(
609
635
  framerMotion.motion.div,
610
636
  {
@@ -631,7 +657,7 @@ function FeatureCapabilitiesGrid({
631
657
  className,
632
658
  containerClassName,
633
659
  children: [
634
- eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xs tracking-widest text-muted-foreground", eyebrowClassName), children: eyebrow }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xs tracking-widest text-muted-foreground", eyebrowClassName), children: eyebrow })),
660
+ eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xs tracking-widest", getTextColor(background, "muted"), eyebrowClassName), children: eyebrow }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xs tracking-widest", getTextColor(background, "muted"), eyebrowClassName), children: eyebrow })),
635
661
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("mt-3 text-4xl font-semibold tracking-tight sm:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-3 text-4xl font-semibold tracking-tight sm:text-5xl", headingClassName), children: heading })),
636
662
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", gridClassName), children: itemsContent })
637
663
  ]
@@ -10,6 +10,32 @@ import { jsx, jsxs } 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
+ }
13
39
  var svgCache = /* @__PURE__ */ new Map();
14
40
  function DynamicIcon({
15
41
  name,
@@ -580,10 +606,10 @@ function FeatureCapabilitiesGrid({
580
606
  iconContent && /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-border/15 bg-background/5", item.iconClassName), children: iconContent }),
581
607
  /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
582
608
  item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-medium", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-medium", item.titleClassName), children: item.title })),
583
- item.badge && /* @__PURE__ */ jsx("span", { className: cn("rounded-full border border-border/20 px-2 py-0.5 text-[10px] leading-none text-muted-foreground", item.badgeClassName), children: item.badge })
609
+ item.badge && /* @__PURE__ */ jsx("span", { className: cn("rounded-full border border-border/20 px-2 py-0.5 text-[10px] leading-none", getTextColor(background, "muted"), item.badgeClassName), children: item.badge })
584
610
  ] }) })
585
611
  ] }),
586
- item.description && /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-muted-foreground", item.descriptionClassName), children: item.description }),
612
+ item.description && /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm", getTextColor(background, "muted"), item.descriptionClassName), children: item.description }),
587
613
  /* @__PURE__ */ jsx(
588
614
  motion.div,
589
615
  {
@@ -610,7 +636,7 @@ function FeatureCapabilitiesGrid({
610
636
  className,
611
637
  containerClassName,
612
638
  children: [
613
- eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xs tracking-widest text-muted-foreground", eyebrowClassName), children: eyebrow }) : /* @__PURE__ */ jsx("div", { className: cn("text-xs tracking-widest text-muted-foreground", eyebrowClassName), children: eyebrow })),
639
+ eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xs tracking-widest", getTextColor(background, "muted"), eyebrowClassName), children: eyebrow }) : /* @__PURE__ */ jsx("div", { className: cn("text-xs tracking-widest", getTextColor(background, "muted"), eyebrowClassName), children: eyebrow })),
614
640
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("mt-3 text-4xl font-semibold tracking-tight sm:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: cn("mt-3 text-4xl font-semibold tracking-tight sm:text-5xl", headingClassName), children: heading })),
615
641
  /* @__PURE__ */ jsx("div", { className: cn("mt-10 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", gridClassName), children: itemsContent })
616
642
  ]
@@ -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
  function normalizePhoneNumber(input) {
66
92
  const trimmed = input.trim();
67
93
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -946,7 +972,8 @@ function FeatureCardGridLinked({
946
972
  "p",
947
973
  {
948
974
  className: cn(
949
- "p-4 text-muted-foreground md:p-8",
975
+ "p-4 md:p-8",
976
+ getTextColor(background, "muted"),
950
977
  feature.descriptionClassName
951
978
  ),
952
979
  children: feature.description
@@ -957,7 +984,7 @@ function FeatureCardGridLinked({
957
984
  featureKey
958
985
  );
959
986
  });
960
- }, [featuresSlot, features, cardClassName, renderImage]);
987
+ }, [featuresSlot, features, cardClassName, renderImage, background]);
961
988
  return /* @__PURE__ */ jsxRuntime.jsxs(
962
989
  Section,
963
990
  {
@@ -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
  function normalizePhoneNumber(input) {
45
71
  const trimmed = input.trim();
46
72
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -925,7 +951,8 @@ function FeatureCardGridLinked({
925
951
  "p",
926
952
  {
927
953
  className: cn(
928
- "p-4 text-muted-foreground md:p-8",
954
+ "p-4 md:p-8",
955
+ getTextColor(background, "muted"),
929
956
  feature.descriptionClassName
930
957
  ),
931
958
  children: feature.description
@@ -936,7 +963,7 @@ function FeatureCardGridLinked({
936
963
  featureKey
937
964
  );
938
965
  });
939
- }, [featuresSlot, features, cardClassName, renderImage]);
966
+ }, [featuresSlot, features, cardClassName, renderImage, background]);
940
967
  return /* @__PURE__ */ jsxs(
941
968
  Section,
942
969
  {
@@ -38,6 +38,32 @@ var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimit
38
38
  function cn(...inputs) {
39
39
  return tailwindMerge.twMerge(clsx.clsx(inputs));
40
40
  }
41
+ function getTextColor(parentBg, variant = "default", options) {
42
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
43
+ if (isDark) {
44
+ switch (variant) {
45
+ case "default":
46
+ return "text-foreground";
47
+ case "muted":
48
+ return "text-foreground/80";
49
+ case "subtle":
50
+ return "text-foreground/60";
51
+ case "accent":
52
+ return "text-accent-foreground";
53
+ }
54
+ } else {
55
+ switch (variant) {
56
+ case "default":
57
+ return "text-foreground";
58
+ case "muted":
59
+ return "text-muted-foreground";
60
+ case "subtle":
61
+ return "text-muted-foreground/70";
62
+ case "accent":
63
+ return "text-primary";
64
+ }
65
+ }
66
+ }
41
67
  var svgCache = /* @__PURE__ */ new Map();
42
68
  function DynamicIcon({
43
69
  name,
@@ -1252,7 +1278,7 @@ function FeatureCarouselProgress({
1252
1278
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1", children: /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1253
1279
  (slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-primary text-primary-foreground lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
1254
1280
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
1255
- slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
1281
+ slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("pt-2", getTextColor(background, "muted"), slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2", getTextColor(background, "muted"), slide.descriptionClassName), children: slide.description }))
1256
1282
  ] }) }) }) })
1257
1283
  },
1258
1284
  index
@@ -1277,7 +1303,7 @@ function FeatureCarouselProgress({
1277
1303
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-4 flex justify-between px-1 md:mb-5", controlsClassName), children: [
1278
1304
  carouselLabel && (typeof carouselLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: carouselLabel }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: carouselLabel })),
1279
1305
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1280
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mr-2 hidden items-center gap-3 text-xs text-muted-foreground md:flex", children: [
1306
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mr-2 hidden items-center gap-3 text-xs md:flex", getTextColor(background, "muted")), children: [
1281
1307
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "01" }),
1282
1308
  /* @__PURE__ */ jsxRuntime.jsx(Progress, { value: progress, className: cn("h-0.5 w-52", progressClassName) }),
1283
1309
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
@@ -13,6 +13,32 @@ import * as ProgressPrimitive from '@radix-ui/react-progress';
13
13
  function cn(...inputs) {
14
14
  return twMerge(clsx(inputs));
15
15
  }
16
+ function getTextColor(parentBg, variant = "default", options) {
17
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
18
+ if (isDark) {
19
+ switch (variant) {
20
+ case "default":
21
+ return "text-foreground";
22
+ case "muted":
23
+ return "text-foreground/80";
24
+ case "subtle":
25
+ return "text-foreground/60";
26
+ case "accent":
27
+ return "text-accent-foreground";
28
+ }
29
+ } else {
30
+ switch (variant) {
31
+ case "default":
32
+ return "text-foreground";
33
+ case "muted":
34
+ return "text-muted-foreground";
35
+ case "subtle":
36
+ return "text-muted-foreground/70";
37
+ case "accent":
38
+ return "text-primary";
39
+ }
40
+ }
41
+ }
16
42
  var svgCache = /* @__PURE__ */ new Map();
17
43
  function DynamicIcon({
18
44
  name,
@@ -1227,7 +1253,7 @@ function FeatureCarouselProgress({
1227
1253
  children: /* @__PURE__ */ jsx("div", { className: "p-1", children: /* @__PURE__ */ jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxs("div", { children: [
1228
1254
  (slide.icon || slide.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-primary text-primary-foreground lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
1229
1255
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
1230
- slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
1256
+ slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("pt-2", getTextColor(background, "muted"), slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: cn("pt-2", getTextColor(background, "muted"), slide.descriptionClassName), children: slide.description }))
1231
1257
  ] }) }) }) })
1232
1258
  },
1233
1259
  index
@@ -1252,7 +1278,7 @@ function FeatureCarouselProgress({
1252
1278
  /* @__PURE__ */ jsxs("div", { className: cn("mb-4 flex justify-between px-1 md:mb-5", controlsClassName), children: [
1253
1279
  carouselLabel && (typeof carouselLabel === "string" ? /* @__PURE__ */ jsx("p", { className: "font-medium", children: carouselLabel }) : /* @__PURE__ */ jsx("div", { className: "font-medium", children: carouselLabel })),
1254
1280
  /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
1255
- /* @__PURE__ */ jsxs("div", { className: "mr-2 hidden items-center gap-3 text-xs text-muted-foreground md:flex", children: [
1281
+ /* @__PURE__ */ jsxs("div", { className: cn("mr-2 hidden items-center gap-3 text-xs md:flex", getTextColor(background, "muted")), children: [
1256
1282
  /* @__PURE__ */ jsx("span", { children: "01" }),
1257
1283
  /* @__PURE__ */ jsx(Progress, { value: progress, className: cn("h-0.5 w-52", progressClassName) }),
1258
1284
  /* @__PURE__ */ jsxs("span", { children: [
@@ -47,6 +47,32 @@ function getNestedCardTextColor(parentBg, options) {
47
47
  const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
48
48
  return isDark ? "text-foreground" : "";
49
49
  }
50
+ function getTextColor(parentBg, variant = "default", options) {
51
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
52
+ if (isDark) {
53
+ switch (variant) {
54
+ case "default":
55
+ return "text-foreground";
56
+ case "muted":
57
+ return "text-foreground/80";
58
+ case "subtle":
59
+ return "text-foreground/60";
60
+ case "accent":
61
+ return "text-accent-foreground";
62
+ }
63
+ } else {
64
+ switch (variant) {
65
+ case "default":
66
+ return "text-foreground";
67
+ case "muted":
68
+ return "text-muted-foreground";
69
+ case "subtle":
70
+ return "text-muted-foreground/70";
71
+ case "accent":
72
+ return "text-primary";
73
+ }
74
+ }
75
+ }
50
76
  var badgeVariants = classVarianceAuthority.cva(
51
77
  "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",
52
78
  {
@@ -559,7 +585,7 @@ function FeatureCategoryImageCards({
559
585
  ), children: [
560
586
  /* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "text-center", children: [
561
587
  feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: cn("text-lg font-semibold md:text-2xl", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-semibold md:text-2xl", feature.titleClassName), children: feature.title })),
562
- feature.category && (typeof feature.category === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardDescription, { className: cn("text-muted-foreground md:text-lg", feature.categoryClassName), children: feature.category }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground md:text-lg", feature.categoryClassName), children: feature.category }))
588
+ feature.category && (typeof feature.category === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardDescription, { className: cn("md:text-lg", getTextColor(background, "muted"), feature.categoryClassName), children: feature.category }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("md:text-lg", getTextColor(background, "muted"), feature.categoryClassName), children: feature.category }))
563
589
  ] }),
564
590
  /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
565
591
  ] }, index));
@@ -578,7 +604,7 @@ function FeatureCategoryImageCards({
578
604
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center justify-center gap-4 text-center", headerClassName), children: [
579
605
  badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
580
606
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-3xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold md:text-5xl", titleClassName), children: title })),
581
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description }))
607
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl md:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl md:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }))
582
608
  ] }),
583
609
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
584
610
  ]
@@ -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
  {
@@ -553,7 +579,7 @@ function FeatureCategoryImageCards({
553
579
  ), children: [
554
580
  /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
555
581
  feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-semibold md:text-2xl", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-semibold md:text-2xl", feature.titleClassName), children: feature.title })),
556
- feature.category && (typeof feature.category === "string" ? /* @__PURE__ */ jsx(CardDescription, { className: cn("text-muted-foreground md:text-lg", feature.categoryClassName), children: feature.category }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground md:text-lg", feature.categoryClassName), children: feature.category }))
582
+ feature.category && (typeof feature.category === "string" ? /* @__PURE__ */ jsx(CardDescription, { className: cn("md:text-lg", getTextColor(background, "muted"), feature.categoryClassName), children: feature.category }) : /* @__PURE__ */ jsx("div", { className: cn("md:text-lg", getTextColor(background, "muted"), feature.categoryClassName), children: feature.category }))
557
583
  ] }),
558
584
  /* @__PURE__ */ jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
559
585
  ] }, index));
@@ -572,7 +598,7 @@ function FeatureCategoryImageCards({
572
598
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center gap-4 text-center", headerClassName), children: [
573
599
  badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
574
600
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-3xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold md:text-5xl", titleClassName), children: title })),
575
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description }))
601
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl md:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl md:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }))
576
602
  ] }),
577
603
  /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
578
604
  ]