@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
@@ -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:")) {
@@ -910,7 +936,7 @@ function AboutCompanyProfile({
910
936
  ),
911
937
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
912
938
  typeof breakout.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-lg font-semibold", children: breakout.title }) : breakout.title,
913
- typeof breakout.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: breakout.description }) : breakout.description
939
+ typeof breakout.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: getTextColor(background, "muted"), children: breakout.description }) : breakout.description
914
940
  ] }),
915
941
  breakout.action && /* @__PURE__ */ jsxRuntime.jsx(
916
942
  Pressable,
@@ -929,7 +955,7 @@ function AboutCompanyProfile({
929
955
  ]
930
956
  }
931
957
  );
932
- }, [breakoutSlot, breakout, breakoutClassName, optixFlowConfig]);
958
+ }, [breakoutSlot, breakout, breakoutClassName, optixFlowConfig, background]);
933
959
  const companiesContent = React.useMemo(() => {
934
960
  if (companiesSlot) return companiesSlot;
935
961
  if (!companies || companies.length === 0)
@@ -1010,7 +1036,8 @@ function AboutCompanyProfile({
1010
1036
  "p",
1011
1037
  {
1012
1038
  className: cn(
1013
- "text-muted-foreground text-balance",
1039
+ "text-balance",
1040
+ getTextColor(background, "muted"),
1014
1041
  descriptionClassName
1015
1042
  ),
1016
1043
  children: description
@@ -1072,7 +1099,8 @@ function AboutCompanyProfile({
1072
1099
  "p",
1073
1100
  {
1074
1101
  className: cn(
1075
- "max-w-xl text-muted-foreground",
1102
+ "max-w-xl",
1103
+ getTextColor(background, "muted"),
1076
1104
  achievementsDescriptionClassName
1077
1105
  ),
1078
1106
  children: achievementsDescription
@@ -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:")) {
@@ -889,7 +915,7 @@ function AboutCompanyProfile({
889
915
  ),
890
916
  /* @__PURE__ */ jsxs("div", { children: [
891
917
  typeof breakout.title === "string" ? /* @__PURE__ */ jsx("p", { className: "mb-2 text-lg font-semibold", children: breakout.title }) : breakout.title,
892
- typeof breakout.description === "string" ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: breakout.description }) : breakout.description
918
+ typeof breakout.description === "string" ? /* @__PURE__ */ jsx("p", { className: getTextColor(background, "muted"), children: breakout.description }) : breakout.description
893
919
  ] }),
894
920
  breakout.action && /* @__PURE__ */ jsx(
895
921
  Pressable,
@@ -908,7 +934,7 @@ function AboutCompanyProfile({
908
934
  ]
909
935
  }
910
936
  );
911
- }, [breakoutSlot, breakout, breakoutClassName, optixFlowConfig]);
937
+ }, [breakoutSlot, breakout, breakoutClassName, optixFlowConfig, background]);
912
938
  const companiesContent = useMemo(() => {
913
939
  if (companiesSlot) return companiesSlot;
914
940
  if (!companies || companies.length === 0)
@@ -989,7 +1015,8 @@ function AboutCompanyProfile({
989
1015
  "p",
990
1016
  {
991
1017
  className: cn(
992
- "text-muted-foreground text-balance",
1018
+ "text-balance",
1019
+ getTextColor(background, "muted"),
993
1020
  descriptionClassName
994
1021
  ),
995
1022
  children: description
@@ -1051,7 +1078,8 @@ function AboutCompanyProfile({
1051
1078
  "p",
1052
1079
  {
1053
1080
  className: cn(
1054
- "max-w-xl text-muted-foreground",
1081
+ "max-w-xl",
1082
+ getTextColor(background, "muted"),
1055
1083
  achievementsDescriptionClassName
1056
1084
  ),
1057
1085
  children: achievementsDescription
@@ -34,6 +34,36 @@ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
34
34
  function cn(...inputs) {
35
35
  return tailwindMerge.twMerge(clsx.clsx(inputs));
36
36
  }
37
+ function getTextColor(parentBg, variant = "default", options) {
38
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
39
+ if (isDark) {
40
+ switch (variant) {
41
+ case "default":
42
+ return "text-foreground";
43
+ case "muted":
44
+ return "text-foreground/80";
45
+ case "subtle":
46
+ return "text-foreground/60";
47
+ case "accent":
48
+ return "text-accent-foreground";
49
+ }
50
+ } else {
51
+ switch (variant) {
52
+ case "default":
53
+ return "text-foreground";
54
+ case "muted":
55
+ return "text-muted-foreground";
56
+ case "subtle":
57
+ return "text-muted-foreground/70";
58
+ case "accent":
59
+ return "text-primary";
60
+ }
61
+ }
62
+ }
63
+ function getAccentColor(parentBg, options) {
64
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
65
+ return isDark ? "text-accent-foreground" : "text-primary";
66
+ }
37
67
  function normalizePhoneNumber(input) {
38
68
  const trimmed = input.trim();
39
69
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1089,9 +1119,9 @@ function AboutCultureTabs({
1089
1119
  containerClassName,
1090
1120
  children: [
1091
1121
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto mb-12 max-w-3xl space-y-4 text-center", headerClassName), children: [
1092
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("inline-block rounded-lg bg-primary/10 px-3 py-1 text-sm text-primary", badgeClassName), children: badgeText }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: badgeText })),
1122
+ badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("inline-block rounded-lg bg-primary/10 px-3 py-1 text-sm", getAccentColor(background), badgeClassName), children: badgeText }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: badgeText })),
1093
1123
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1094
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
1124
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
1095
1125
  ] }),
1096
1126
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
1097
1127
  Tabs,
@@ -1105,7 +1135,7 @@ function AboutCultureTabs({
1105
1135
  TabsTrigger,
1106
1136
  {
1107
1137
  value: aspect.id,
1108
- className: "px-3 py-2.5 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
1138
+ className: cn("px-3 py-2.5", `data-[state=active]:${getAccentColor(background)}`, "data-[state=active]:text-primary-foreground"),
1109
1139
  children: aspect.title
1110
1140
  },
1111
1141
  aspect.id
@@ -1114,7 +1144,7 @@ function AboutCultureTabs({
1114
1144
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
1115
1145
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1116
1146
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-bold tracking-tight", children: aspect.title }),
1117
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "leading-relaxed text-muted-foreground", children: aspect.description })
1147
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: aspect.description })
1118
1148
  ] }),
1119
1149
  /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "border-0 bg-gradient-to-br from-primary/5 to-primary/10 p-0", children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "space-y-4 p-6 pt-6", children: [
1120
1150
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1122,10 +1152,10 @@ function AboutCultureTabs({
1122
1152
  {
1123
1153
  name: "lucide/quote",
1124
1154
  size: 32,
1125
- className: "text-primary/40"
1155
+ className: cn(getAccentColor(background), "opacity-40")
1126
1156
  }
1127
1157
  ),
1128
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "italic text-muted-foreground", children: [
1158
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("italic", getTextColor(background, "muted")), children: [
1129
1159
  '"',
1130
1160
  aspect.testimonial.quote,
1131
1161
  '"'
@@ -1142,7 +1172,7 @@ function AboutCultureTabs({
1142
1172
  ) }),
1143
1173
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1144
1174
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-medium", children: aspect.testimonial.author }),
1145
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: aspect.testimonial.role })
1175
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xs", getTextColor(background, "muted")), children: aspect.testimonial.role })
1146
1176
  ] })
1147
1177
  ] })
1148
1178
  ] }) })
@@ -1171,7 +1201,7 @@ function AboutCultureTabs({
1171
1201
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-8 md:grid-cols-2", children: [
1172
1202
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1173
1203
  ctaHeading && (typeof ctaHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 text-2xl font-bold", ctaHeadingClassName), children: ctaHeading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", ctaHeadingClassName), children: ctaHeading })),
1174
- ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6 text-muted-foreground", ctaDescriptionClassName), children: ctaDescription }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription })),
1204
+ ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6", getTextColor(background, "muted"), ctaDescriptionClassName), children: ctaDescription }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription })),
1175
1205
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex gap-4", actionsClassName), children: actionsContent })
1176
1206
  ] }),
1177
1207
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-2", children: ctaImagesContent })
@@ -12,6 +12,36 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
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
+ }
41
+ function getAccentColor(parentBg, options) {
42
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
43
+ return isDark ? "text-accent-foreground" : "text-primary";
44
+ }
15
45
  function normalizePhoneNumber(input) {
16
46
  const trimmed = input.trim();
17
47
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1067,9 +1097,9 @@ function AboutCultureTabs({
1067
1097
  containerClassName,
1068
1098
  children: [
1069
1099
  /* @__PURE__ */ jsxs("div", { className: cn("mx-auto mb-12 max-w-3xl space-y-4 text-center", headerClassName), children: [
1070
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("div", { className: cn("inline-block rounded-lg bg-primary/10 px-3 py-1 text-sm text-primary", badgeClassName), children: badgeText }) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badgeText })),
1100
+ badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("div", { className: cn("inline-block rounded-lg bg-primary/10 px-3 py-1 text-sm", getAccentColor(background), badgeClassName), children: badgeText }) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badgeText })),
1071
1101
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1072
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
1102
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn(getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
1073
1103
  ] }),
1074
1104
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxs(
1075
1105
  Tabs,
@@ -1083,7 +1113,7 @@ function AboutCultureTabs({
1083
1113
  TabsTrigger,
1084
1114
  {
1085
1115
  value: aspect.id,
1086
- className: "px-3 py-2.5 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
1116
+ className: cn("px-3 py-2.5", `data-[state=active]:${getAccentColor(background)}`, "data-[state=active]:text-primary-foreground"),
1087
1117
  children: aspect.title
1088
1118
  },
1089
1119
  aspect.id
@@ -1092,7 +1122,7 @@ function AboutCultureTabs({
1092
1122
  /* @__PURE__ */ jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
1093
1123
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1094
1124
  /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold tracking-tight", children: aspect.title }),
1095
- /* @__PURE__ */ jsx("p", { className: "leading-relaxed text-muted-foreground", children: aspect.description })
1125
+ /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: aspect.description })
1096
1126
  ] }),
1097
1127
  /* @__PURE__ */ jsx(Card, { className: "border-0 bg-gradient-to-br from-primary/5 to-primary/10 p-0", children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6 pt-6", children: [
1098
1128
  /* @__PURE__ */ jsx(
@@ -1100,10 +1130,10 @@ function AboutCultureTabs({
1100
1130
  {
1101
1131
  name: "lucide/quote",
1102
1132
  size: 32,
1103
- className: "text-primary/40"
1133
+ className: cn(getAccentColor(background), "opacity-40")
1104
1134
  }
1105
1135
  ),
1106
- /* @__PURE__ */ jsxs("p", { className: "italic text-muted-foreground", children: [
1136
+ /* @__PURE__ */ jsxs("p", { className: cn("italic", getTextColor(background, "muted")), children: [
1107
1137
  '"',
1108
1138
  aspect.testimonial.quote,
1109
1139
  '"'
@@ -1120,7 +1150,7 @@ function AboutCultureTabs({
1120
1150
  ) }),
1121
1151
  /* @__PURE__ */ jsxs("div", { children: [
1122
1152
  /* @__PURE__ */ jsx("h4", { className: "text-sm font-medium", children: aspect.testimonial.author }),
1123
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: aspect.testimonial.role })
1153
+ /* @__PURE__ */ jsx("p", { className: cn("text-xs", getTextColor(background, "muted")), children: aspect.testimonial.role })
1124
1154
  ] })
1125
1155
  ] })
1126
1156
  ] }) })
@@ -1149,7 +1179,7 @@ function AboutCultureTabs({
1149
1179
  /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-8 md:grid-cols-2", children: [
1150
1180
  /* @__PURE__ */ jsxs("div", { children: [
1151
1181
  ctaHeading && (typeof ctaHeading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("mb-4 text-2xl font-bold", ctaHeadingClassName), children: ctaHeading }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4", ctaHeadingClassName), children: ctaHeading })),
1152
- ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6 text-muted-foreground", ctaDescriptionClassName), children: ctaDescription }) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription })),
1182
+ ctaDescription && (typeof ctaDescription === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6", getTextColor(background, "muted"), ctaDescriptionClassName), children: ctaDescription }) : /* @__PURE__ */ jsx("div", { className: cn("mb-6", ctaDescriptionClassName), children: ctaDescription })),
1153
1183
  (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex gap-4", actionsClassName), children: actionsContent })
1154
1184
  ] }),
1155
1185
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: ctaImagesContent })
@@ -62,6 +62,36 @@ 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
+ }
91
+ function getAccentColor(parentBg, options) {
92
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
93
+ return isDark ? "text-accent-foreground" : "text-primary";
94
+ }
65
95
  function normalizePhoneNumber(input) {
66
96
  const trimmed = input.trim();
67
97
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -893,14 +923,15 @@ function AboutDeveloperProfile({
893
923
  href: link.href,
894
924
  "aria-label": link["aria-label"],
895
925
  className: cn(
896
- "text-muted-foreground hover:text-primary",
926
+ getTextColor(background, "muted"),
927
+ `hover:${getAccentColor(background)}`,
897
928
  link.className
898
929
  ),
899
930
  children: link.icon
900
931
  },
901
932
  idx
902
933
  ));
903
- }, [socialLinksSlot, socialLinks]);
934
+ }, [socialLinksSlot, socialLinks, background]);
904
935
  const skillsContent = React.useMemo(() => {
905
936
  if (skillsSlot) return skillsSlot;
906
937
  if (!skills || skills.length === 0) return null;
@@ -917,7 +948,7 @@ function AboutDeveloperProfile({
917
948
  },
918
949
  idx
919
950
  ));
920
- }, [skillsSlot, skills, skillTagClassName]);
951
+ }, [skillsSlot, skills, skillTagClassName, background]);
921
952
  const actionsContent = React.useMemo(() => {
922
953
  if (actionsSlot) return actionsSlot;
923
954
  if (!actions || actions.length === 0) return null;
@@ -971,7 +1002,7 @@ function AboutDeveloperProfile({
971
1002
  ),
972
1003
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center md:text-left", children: [
973
1004
  name && (typeof name === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold", nameClassName), children: name }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: nameClassName, children: name })),
974
- role && (typeof role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2 text-xl text-primary", roleClassName), children: role }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-2", roleClassName), children: role })),
1005
+ role && (typeof role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2 text-xl", getAccentColor(background), roleClassName), children: role }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-2", roleClassName), children: role })),
975
1006
  (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
976
1007
  "div",
977
1008
  {
@@ -988,7 +1019,8 @@ function AboutDeveloperProfile({
988
1019
  "p",
989
1020
  {
990
1021
  className: cn(
991
- "text-lg text-muted-foreground whitespace-pre-line",
1022
+ "text-lg whitespace-pre-line",
1023
+ getTextColor(background, "muted"),
992
1024
  bioClassName
993
1025
  ),
994
1026
  children: bio
@@ -41,6 +41,36 @@ 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
+ }
70
+ function getAccentColor(parentBg, options) {
71
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
72
+ return isDark ? "text-accent-foreground" : "text-primary";
73
+ }
44
74
  function normalizePhoneNumber(input) {
45
75
  const trimmed = input.trim();
46
76
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -872,14 +902,15 @@ function AboutDeveloperProfile({
872
902
  href: link.href,
873
903
  "aria-label": link["aria-label"],
874
904
  className: cn(
875
- "text-muted-foreground hover:text-primary",
905
+ getTextColor(background, "muted"),
906
+ `hover:${getAccentColor(background)}`,
876
907
  link.className
877
908
  ),
878
909
  children: link.icon
879
910
  },
880
911
  idx
881
912
  ));
882
- }, [socialLinksSlot, socialLinks]);
913
+ }, [socialLinksSlot, socialLinks, background]);
883
914
  const skillsContent = useMemo(() => {
884
915
  if (skillsSlot) return skillsSlot;
885
916
  if (!skills || skills.length === 0) return null;
@@ -896,7 +927,7 @@ function AboutDeveloperProfile({
896
927
  },
897
928
  idx
898
929
  ));
899
- }, [skillsSlot, skills, skillTagClassName]);
930
+ }, [skillsSlot, skills, skillTagClassName, background]);
900
931
  const actionsContent = useMemo(() => {
901
932
  if (actionsSlot) return actionsSlot;
902
933
  if (!actions || actions.length === 0) return null;
@@ -950,7 +981,7 @@ function AboutDeveloperProfile({
950
981
  ),
951
982
  /* @__PURE__ */ jsxs("div", { className: "text-center md:text-left", children: [
952
983
  name && (typeof name === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold", nameClassName), children: name }) : /* @__PURE__ */ jsx("div", { className: nameClassName, children: name })),
953
- role && (typeof role === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2 text-xl text-primary", roleClassName), children: role }) : /* @__PURE__ */ jsx("div", { className: cn("mt-2", roleClassName), children: role })),
984
+ role && (typeof role === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2 text-xl", getAccentColor(background), roleClassName), children: role }) : /* @__PURE__ */ jsx("div", { className: cn("mt-2", roleClassName), children: role })),
954
985
  (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx(
955
986
  "div",
956
987
  {
@@ -967,7 +998,8 @@ function AboutDeveloperProfile({
967
998
  "p",
968
999
  {
969
1000
  className: cn(
970
- "text-lg text-muted-foreground whitespace-pre-line",
1001
+ "text-lg whitespace-pre-line",
1002
+ getTextColor(background, "muted"),
971
1003
  bioClassName
972
1004
  ),
973
1005
  children: bio
@@ -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:")) {
@@ -1049,7 +1075,7 @@ function AboutDeveloperStory({
1049
1075
  ),
1050
1076
  children: stats.map((stat, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
1051
1077
  stat.value && (typeof stat.value === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-4xl font-bold", children: stat.value }) : stat.value),
1052
- stat.label && (typeof stat.label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: stat.label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: stat.label }))
1078
+ stat.label && (typeof stat.label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2", getTextColor(background, "muted")), children: stat.label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: stat.label }))
1053
1079
  ] }, idx))
1054
1080
  }
1055
1081
  );
@@ -1079,7 +1105,8 @@ function AboutDeveloperStory({
1079
1105
  "p",
1080
1106
  {
1081
1107
  className: cn(
1082
- "max-w-2xl text-lg text-muted-foreground md:text-xl text-balance",
1108
+ "max-w-2xl text-lg md:text-xl text-balance",
1109
+ getTextColor(background, "muted"),
1083
1110
  descriptionClassName
1084
1111
  ),
1085
1112
  children: description
@@ -1105,7 +1132,8 @@ function AboutDeveloperStory({
1105
1132
  "p",
1106
1133
  {
1107
1134
  className: cn(
1108
- "mt-6 text-lg text-muted-foreground whitespace-pre-line",
1135
+ "mt-6 text-lg whitespace-pre-line",
1136
+ getTextColor(background, "muted"),
1109
1137
  storyContentClassName
1110
1138
  ),
1111
1139
  children: storyContent
@@ -11,6 +11,32 @@ import { jsx, jsxs } from 'react/jsx-runtime';
11
11
  function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
+ function getTextColor(parentBg, variant = "default", options) {
15
+ const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
+ if (isDark) {
17
+ switch (variant) {
18
+ case "default":
19
+ return "text-foreground";
20
+ case "muted":
21
+ return "text-foreground/80";
22
+ case "subtle":
23
+ return "text-foreground/60";
24
+ case "accent":
25
+ return "text-accent-foreground";
26
+ }
27
+ } else {
28
+ switch (variant) {
29
+ case "default":
30
+ return "text-foreground";
31
+ case "muted":
32
+ return "text-muted-foreground";
33
+ case "subtle":
34
+ return "text-muted-foreground/70";
35
+ case "accent":
36
+ return "text-primary";
37
+ }
38
+ }
39
+ }
14
40
  function normalizePhoneNumber(input) {
15
41
  const trimmed = input.trim();
16
42
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -1028,7 +1054,7 @@ function AboutDeveloperStory({
1028
1054
  ),
1029
1055
  children: stats.map((stat, idx) => /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
1030
1056
  stat.value && (typeof stat.value === "string" ? /* @__PURE__ */ jsx("p", { className: "text-4xl font-bold", children: stat.value }) : stat.value),
1031
- stat.label && (typeof stat.label === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: stat.label }) : /* @__PURE__ */ jsx("div", { className: "mt-2", children: stat.label }))
1057
+ stat.label && (typeof stat.label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2", getTextColor(background, "muted")), children: stat.label }) : /* @__PURE__ */ jsx("div", { className: "mt-2", children: stat.label }))
1032
1058
  ] }, idx))
1033
1059
  }
1034
1060
  );
@@ -1058,7 +1084,8 @@ function AboutDeveloperStory({
1058
1084
  "p",
1059
1085
  {
1060
1086
  className: cn(
1061
- "max-w-2xl text-lg text-muted-foreground md:text-xl text-balance",
1087
+ "max-w-2xl text-lg md:text-xl text-balance",
1088
+ getTextColor(background, "muted"),
1062
1089
  descriptionClassName
1063
1090
  ),
1064
1091
  children: description
@@ -1084,7 +1111,8 @@ function AboutDeveloperStory({
1084
1111
  "p",
1085
1112
  {
1086
1113
  className: cn(
1087
- "mt-6 text-lg text-muted-foreground whitespace-pre-line",
1114
+ "mt-6 text-lg whitespace-pre-line",
1115
+ getTextColor(background, "muted"),
1088
1116
  storyContentClassName
1089
1117
  ),
1090
1118
  children: storyContent