@flamingo-stack/openframe-frontend-core 0.0.439 → 0.0.440

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 (467) hide show
  1. package/dist/{chunk-RVWC4P3H.js → chunk-2BTDPDME.js} +9 -9
  2. package/dist/chunk-2BTDPDME.js.map +1 -0
  3. package/dist/{chunk-G5FALXNO.js → chunk-63TSTDME.js} +21 -21
  4. package/dist/chunk-63TSTDME.js.map +1 -0
  5. package/dist/{chunk-4ACSUJ7Q.js → chunk-6CITW5BD.js} +10 -10
  6. package/dist/chunk-6CITW5BD.js.map +1 -0
  7. package/dist/{chunk-QXYOGJQJ.js → chunk-7KDR5P23.js} +2 -2
  8. package/dist/{chunk-PEIR7D25.js → chunk-7KNOHGMI.js} +2 -2
  9. package/dist/{chunk-ZMUFTGL7.cjs → chunk-7QP65IE4.cjs} +5 -5
  10. package/dist/{chunk-ZMUFTGL7.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
  11. package/dist/{chunk-WPVBTVI3.js → chunk-AGV26PUR.js} +6 -6
  12. package/dist/{chunk-WPVBTVI3.js.map → chunk-AGV26PUR.js.map} +1 -1
  13. package/dist/{chunk-HTVVXVJL.cjs → chunk-DUQQEQ7G.cjs} +1431 -1594
  14. package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
  15. package/dist/{chunk-COMBYYQY.js → chunk-FPE3SQ5D.js} +13 -13
  16. package/dist/chunk-FPE3SQ5D.js.map +1 -0
  17. package/dist/{chunk-WAGTZVQN.js → chunk-IAZ5AN2E.js} +30 -30
  18. package/dist/chunk-IAZ5AN2E.js.map +1 -0
  19. package/dist/{chunk-RQQZF6G6.cjs → chunk-IPEIOR77.cjs} +130 -130
  20. package/dist/chunk-IPEIOR77.cjs.map +1 -0
  21. package/dist/{chunk-3WJQL4DN.cjs → chunk-IZ6A6K6N.cjs} +25 -25
  22. package/dist/chunk-IZ6A6K6N.cjs.map +1 -0
  23. package/dist/{chunk-EE5NH5SH.cjs → chunk-J5NO7PAG.cjs} +3 -3
  24. package/dist/{chunk-EE5NH5SH.cjs.map → chunk-J5NO7PAG.cjs.map} +1 -1
  25. package/dist/{chunk-IAN7GUIV.cjs → chunk-JNC4LVD6.cjs} +42 -42
  26. package/dist/chunk-JNC4LVD6.cjs.map +1 -0
  27. package/dist/{chunk-VWGF6IFR.cjs → chunk-JOH5D76X.cjs} +108 -108
  28. package/dist/chunk-JOH5D76X.cjs.map +1 -0
  29. package/dist/{chunk-7WM77CSW.js → chunk-JYI4R25Q.js} +5 -5
  30. package/dist/chunk-JYI4R25Q.js.map +1 -0
  31. package/dist/{chunk-M6QGB6DC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
  32. package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
  33. package/dist/{chunk-M3LD6DNE.cjs → chunk-LFWPWIAC.cjs} +16 -16
  34. package/dist/{chunk-M3LD6DNE.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
  35. package/dist/{chunk-R46QEE3R.cjs → chunk-LUKRPHEW.cjs} +96 -96
  36. package/dist/chunk-LUKRPHEW.cjs.map +1 -0
  37. package/dist/{chunk-IMK6RUEC.cjs → chunk-PYR4LVAF.cjs} +10 -10
  38. package/dist/chunk-PYR4LVAF.cjs.map +1 -0
  39. package/dist/{chunk-2ELBNZJ3.js → chunk-QAG357PE.js} +7 -7
  40. package/dist/chunk-QAG357PE.js.map +1 -0
  41. package/dist/{chunk-N2TJ3HAM.cjs → chunk-QO6MCQYE.cjs} +9 -9
  42. package/dist/chunk-QO6MCQYE.cjs.map +1 -0
  43. package/dist/{chunk-EGRZHR7J.js → chunk-SM26C2L7.js} +9 -9
  44. package/dist/chunk-SM26C2L7.js.map +1 -0
  45. package/dist/{chunk-AUJXLVXA.cjs → chunk-TAQMYVO6.cjs} +42 -42
  46. package/dist/{chunk-AUJXLVXA.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
  47. package/dist/{chunk-C3FH53AP.cjs → chunk-UFBUQO7Z.cjs} +19 -19
  48. package/dist/{chunk-C3FH53AP.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
  49. package/dist/{chunk-F7YVI54P.js → chunk-W3JZXLJ2.js} +10 -10
  50. package/dist/chunk-W3JZXLJ2.js.map +1 -0
  51. package/dist/{chunk-WZ6TCAYQ.cjs → chunk-XMCVUYKC.cjs} +14 -14
  52. package/dist/chunk-XMCVUYKC.cjs.map +1 -0
  53. package/dist/{chunk-P7PISHM5.js → chunk-Y3NFB6HR.js} +5 -5
  54. package/dist/chunk-Y3NFB6HR.js.map +1 -0
  55. package/dist/{chunk-PBTY7AH5.js → chunk-YZJUHEPZ.js} +95 -95
  56. package/dist/chunk-YZJUHEPZ.js.map +1 -0
  57. package/dist/{chunk-NQQ4NLUT.js → chunk-ZQYFDYWV.js} +4298 -4461
  58. package/dist/chunk-ZQYFDYWV.js.map +1 -0
  59. package/dist/components/case-studies/index.cjs +15 -15
  60. package/dist/components/case-studies/index.cjs.map +1 -1
  61. package/dist/components/case-studies/index.js +9 -9
  62. package/dist/components/case-studies/index.js.map +1 -1
  63. package/dist/components/chat/approval-request-message.d.ts.map +1 -1
  64. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  65. package/dist/components/chat/index.cjs +4 -4
  66. package/dist/components/chat/index.js +3 -3
  67. package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
  68. package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
  69. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  70. package/dist/components/contact/index.cjs +5 -5
  71. package/dist/components/contact/index.js +4 -4
  72. package/dist/components/docs/index.cjs +7 -7
  73. package/dist/components/docs/index.js +6 -6
  74. package/dist/components/embeds/index.cjs +5 -5
  75. package/dist/components/embeds/index.js +4 -4
  76. package/dist/components/faq/index.cjs +6 -6
  77. package/dist/components/faq/index.js +5 -5
  78. package/dist/components/features/index.cjs +4 -4
  79. package/dist/components/features/index.js +3 -3
  80. package/dist/components/help-center-pages/index.cjs +23 -23
  81. package/dist/components/help-center-pages/index.js +14 -14
  82. package/dist/components/index.cjs +262 -256
  83. package/dist/components/index.cjs.map +1 -1
  84. package/dist/components/index.js +117 -111
  85. package/dist/components/index.js.map +1 -1
  86. package/dist/components/msp-display.d.ts.map +1 -1
  87. package/dist/components/navigation/index.cjs +4 -4
  88. package/dist/components/navigation/index.js +3 -3
  89. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  90. package/dist/components/onboarding-guides/index.cjs +8 -8
  91. package/dist/components/onboarding-guides/index.js +7 -7
  92. package/dist/components/pricing-display.d.ts +9 -9
  93. package/dist/components/related-content/index.cjs +6 -6
  94. package/dist/components/related-content/index.js +5 -5
  95. package/dist/components/tickets/index.cjs +7 -7
  96. package/dist/components/tickets/index.js +6 -6
  97. package/dist/components/toast/index.cjs +5 -5
  98. package/dist/components/toast/index.cjs.map +1 -1
  99. package/dist/components/toast/index.js +5 -5
  100. package/dist/components/toast/index.js.map +1 -1
  101. package/dist/components/ui/bullet-list.d.ts.map +1 -1
  102. package/dist/components/ui/drawer.d.ts +1 -1
  103. package/dist/components/ui/drawer.d.ts.map +1 -1
  104. package/dist/components/ui/file-manager/index.cjs +73 -73
  105. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  106. package/dist/components/ui/file-manager/index.js +24 -24
  107. package/dist/components/ui/file-manager/index.js.map +1 -1
  108. package/dist/components/ui/index.cjs +4 -4
  109. package/dist/components/ui/index.js +3 -3
  110. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  111. package/dist/components/ui/square-avatar.d.ts +3 -0
  112. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  113. package/dist/components/user-display.d.ts.map +1 -1
  114. package/dist/components/vendor-tag.d.ts.map +1 -1
  115. package/dist/hooks/index.cjs +2 -2
  116. package/dist/hooks/index.js +1 -1
  117. package/dist/index.cjs +4 -4
  118. package/dist/index.js +3 -3
  119. package/dist/tailwind.config.cjs +38 -5
  120. package/dist/tailwind.config.cjs.map +1 -1
  121. package/dist/tailwind.config.js +38 -5
  122. package/dist/tailwind.config.js.map +1 -1
  123. package/package.json +1 -1
  124. package/src/ODS_TOKEN_RULES.md +5 -0
  125. package/src/components/.footer.md +2 -2
  126. package/src/components/announcement-bar.tsx +1 -1
  127. package/src/components/authors/author-detail-view.tsx +3 -3
  128. package/src/components/calendar.tsx +2 -2
  129. package/src/components/case-studies/share-experience-section.tsx +5 -5
  130. package/src/components/categories-cart.tsx +6 -6
  131. package/src/components/category-card.tsx +5 -5
  132. package/src/components/chart.tsx +3 -3
  133. package/src/components/chat/approval-request-message.tsx +2 -5
  134. package/src/components/chat/chat-attachment-bar.tsx +3 -3
  135. package/src/components/chat/chat-message-enhanced.tsx +1 -1
  136. package/src/components/chat/chat-message-list.tsx +1 -1
  137. package/src/components/chat/chat-message-row.tsx +3 -3
  138. package/src/components/chat/chat-quick-action.tsx +1 -1
  139. package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
  140. package/src/components/chat/chat-sidebar.tsx +6 -6
  141. package/src/components/chat/chat-typing-indicator.tsx +1 -1
  142. package/src/components/chat/context-compaction-display.tsx +1 -1
  143. package/src/components/chat/embeddable-chat.tsx +3 -3
  144. package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
  145. package/src/components/chat/entity-cards/blog-card.tsx +5 -8
  146. package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
  147. package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
  148. package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
  149. package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
  150. package/src/components/chat/entity-cards/dispatch.tsx +1 -1
  151. package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
  152. package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
  153. package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
  154. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
  155. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
  156. package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
  157. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
  158. package/src/components/chat/entity-cards/program-card.tsx +12 -12
  159. package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
  160. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
  161. package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
  162. package/src/components/chat/error-message-display.tsx +2 -2
  163. package/src/components/chat/mingo-info-card.tsx +2 -2
  164. package/src/components/chat/model-display.tsx +7 -7
  165. package/src/components/chat/quick-action-chip.tsx +1 -1
  166. package/src/components/chat/source-action-button.tsx +2 -2
  167. package/src/components/chat/tool-call-blocks.tsx +3 -5
  168. package/src/components/chat/utils/.chip-action-class.md +1 -1
  169. package/src/components/chat/utils/.chip-styles.md +2 -2
  170. package/src/components/chat/utils/chip-action-class.ts +1 -1
  171. package/src/components/chat/utils/chip-styles.ts +2 -2
  172. package/src/components/chat/utils/compact-card-classes.ts +3 -3
  173. package/src/components/command.tsx +3 -3
  174. package/src/components/comment-card.tsx +1 -1
  175. package/src/components/contact/contact-form.tsx +9 -9
  176. package/src/components/context-menu.tsx +5 -5
  177. package/src/components/date-time-picker.tsx +2 -2
  178. package/src/components/docs/doc-viewer.tsx +4 -4
  179. package/src/components/embeds/figma-embed.tsx +2 -2
  180. package/src/components/embeds/file-download-card.tsx +2 -2
  181. package/src/components/embeds/google-sheets-viewer.tsx +1 -1
  182. package/src/components/embeds/linkedin-embed-client.tsx +3 -3
  183. package/src/components/embeds/og-link-preview.tsx +14 -14
  184. package/src/components/embeds/pdf-viewer.tsx +1 -1
  185. package/src/components/embeds/reddit-embed-client.tsx +9 -9
  186. package/src/components/embeds/twitter-embed-client.tsx +9 -9
  187. package/src/components/empty-state.tsx +5 -5
  188. package/src/components/faq/faq-section.tsx +1 -1
  189. package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
  190. package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
  191. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
  192. package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
  193. package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
  194. package/src/components/features/array-entry-manager.tsx +7 -7
  195. package/src/components/features/auth-providers-list.tsx +1 -1
  196. package/src/components/features/board/ticket-card.tsx +1 -1
  197. package/src/components/features/changelog-manager.tsx +10 -10
  198. package/src/components/features/command-box.tsx +2 -2
  199. package/src/components/features/entity-summary-editor.tsx +3 -3
  200. package/src/components/features/figma-prototype-viewer.tsx +9 -9
  201. package/src/components/features/filters-dropdown.tsx +2 -2
  202. package/src/components/features/highlight-config-section.tsx +3 -3
  203. package/src/components/features/highlight-video-combined-section.tsx +2 -2
  204. package/src/components/features/highlight-video-preview.tsx +2 -2
  205. package/src/components/features/highlight-video-section.tsx +9 -9
  206. package/src/components/features/media-gallery-manager.tsx +14 -14
  207. package/src/components/features/og-editor-preview.tsx +4 -4
  208. package/src/components/features/os-type-badge-group.tsx +1 -1
  209. package/src/components/features/os-type-badge.tsx +2 -2
  210. package/src/components/features/platform-badge.tsx +4 -4
  211. package/src/components/features/policy-configuration-panel.tsx +6 -6
  212. package/src/components/features/provider-button.tsx +1 -1
  213. package/src/components/features/push-button-selector.tsx +21 -21
  214. package/src/components/features/release-media-manager.tsx +16 -16
  215. package/src/components/features/section-selector.tsx +8 -8
  216. package/src/components/features/select-button.tsx +4 -4
  217. package/src/components/features/seo-editor-preview.tsx +20 -20
  218. package/src/components/features/social-links-manager.tsx +3 -3
  219. package/src/components/features/start-with-openframe-button.tsx +3 -3
  220. package/src/components/features/status-filter-component.tsx +1 -1
  221. package/src/components/features/tags-selector.tsx +6 -6
  222. package/src/components/features/transcript-summary-editor.tsx +9 -9
  223. package/src/components/features/video-bites-strip.tsx +1 -1
  224. package/src/components/features/video-ratio-tabs.tsx +1 -1
  225. package/src/components/features/video-source-selector.tsx +7 -7
  226. package/src/components/features/video.tsx +1 -1
  227. package/src/components/features/waitlist-form.tsx +3 -3
  228. package/src/components/filter-chip.tsx +13 -13
  229. package/src/components/footer.tsx +3 -3
  230. package/src/components/form.tsx +2 -2
  231. package/src/components/hero-image-uploader.tsx +3 -3
  232. package/src/components/image-cropper.tsx +2 -2
  233. package/src/components/layout/page-container.tsx +6 -6
  234. package/src/components/layout/page-heading.tsx +1 -1
  235. package/src/components/loading/card-skeleton.tsx +2 -2
  236. package/src/components/loading/category-card-skeleton.tsx +1 -1
  237. package/src/components/loading/margin-report-skeleton.tsx +22 -22
  238. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  239. package/src/components/loading/page-layout-skeleton.tsx +83 -83
  240. package/src/components/loading/unified-skeleton.tsx +1 -1
  241. package/src/components/loading/users-grid-skeleton.tsx +2 -2
  242. package/src/components/logs-list.tsx +8 -8
  243. package/src/components/media-carousel.tsx +7 -7
  244. package/src/components/metric-value.tsx +2 -2
  245. package/src/components/msp-display.tsx +8 -2
  246. package/src/components/navigation/app-header.tsx +6 -6
  247. package/src/components/navigation/header-organization-filter.tsx +2 -2
  248. package/src/components/navigation/header.tsx +4 -4
  249. package/src/components/navigation/mobile-burger-menu.tsx +7 -7
  250. package/src/components/navigation/mobile-nav-panel.tsx +1 -1
  251. package/src/components/navigation/multi-level-navigation.tsx +7 -7
  252. package/src/components/navigation/navigation-sidebar.tsx +1 -1
  253. package/src/components/navigation/sticky-section-nav.tsx +2 -2
  254. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
  255. package/src/components/pagination.tsx +2 -2
  256. package/src/components/persistent-filter-controls.tsx +1 -1
  257. package/src/components/platform/.ShellTypeBadge.md +1 -1
  258. package/src/components/platform/CveLink.tsx +1 -1
  259. package/src/components/platform/ScriptArguments.tsx +2 -2
  260. package/src/components/platform/ScriptInfoSection.tsx +5 -5
  261. package/src/components/platform/ShellTypeBadge.tsx +6 -6
  262. package/src/components/platform/SoftwareInfo.tsx +2 -2
  263. package/src/components/pricing-display.tsx +9 -9
  264. package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
  265. package/src/components/related-content/related-content-section.tsx +3 -3
  266. package/src/components/results-count.tsx +1 -1
  267. package/src/components/shared/delivery/delivery-row.tsx +1 -1
  268. package/src/components/shared/delivery/delivery-table.tsx +1 -1
  269. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  270. package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
  271. package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
  272. package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
  273. package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
  274. package/src/components/shared/product-release/product-release-card.tsx +14 -14
  275. package/src/components/shared/product-release/release-detail-page.tsx +16 -16
  276. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
  277. package/src/components/smooth-accordion.tsx +1 -1
  278. package/src/components/social-icon-row.tsx +1 -1
  279. package/src/components/sonner.tsx +5 -5
  280. package/src/components/steps.tsx +3 -3
  281. package/src/components/tickets/help-center-create-form.tsx +1 -1
  282. package/src/components/tickets/help-center-list.tsx +1 -1
  283. package/src/components/tickets/ticket-center.tsx +2 -2
  284. package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
  285. package/src/components/tickets/ticket-open-form.tsx +6 -6
  286. package/src/components/ui/.title-content-block.md +1 -1
  287. package/src/components/ui/accordion.tsx +2 -2
  288. package/src/components/ui/actions-menu.tsx +1 -1
  289. package/src/components/ui/alert-dialog.tsx +3 -3
  290. package/src/components/ui/alert.tsx +2 -2
  291. package/src/components/ui/allowed-domains-input.tsx +3 -3
  292. package/src/components/ui/autocomplete.tsx +3 -3
  293. package/src/components/ui/badge.tsx +2 -2
  294. package/src/components/ui/brand-association-card.tsx +2 -2
  295. package/src/components/ui/breadcrumb.tsx +3 -3
  296. package/src/components/ui/bullet-list.tsx +2 -2
  297. package/src/components/ui/button/button.tsx +1 -1
  298. package/src/components/ui/card.tsx +4 -4
  299. package/src/components/ui/checkbox-with-description.tsx +1 -1
  300. package/src/components/ui/chevron-button.tsx +1 -1
  301. package/src/components/ui/content-loader.tsx +16 -16
  302. package/src/components/ui/cursor-pagination.tsx +1 -1
  303. package/src/components/ui/date-picker.tsx +2 -2
  304. package/src/components/ui/device-card-compact.tsx +2 -2
  305. package/src/components/ui/device-card.tsx +3 -3
  306. package/src/components/ui/dialog.tsx +3 -3
  307. package/src/components/ui/drawer.tsx +4 -4
  308. package/src/components/ui/dropdown-menu.tsx +6 -6
  309. package/src/components/ui/error-state.tsx +9 -9
  310. package/src/components/ui/fade-preview.tsx +1 -1
  311. package/src/components/ui/field-wrapper.tsx +1 -1
  312. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
  313. package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
  314. package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
  315. package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
  316. package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
  317. package/src/components/ui/file-upload.tsx +9 -9
  318. package/src/components/ui/filter-pill-row.tsx +1 -1
  319. package/src/components/ui/floating-tooltip.tsx +1 -1
  320. package/src/components/ui/highlight-card.tsx +1 -1
  321. package/src/components/ui/hover-dropdown.tsx +1 -1
  322. package/src/components/ui/image-gallery-modal.tsx +1 -1
  323. package/src/components/ui/info-row.tsx +1 -1
  324. package/src/components/ui/input.tsx +1 -1
  325. package/src/components/ui/label.tsx +5 -5
  326. package/src/components/ui/markdown-editor.tsx +4 -5
  327. package/src/components/ui/menubar.tsx +7 -7
  328. package/src/components/ui/modal-v2.tsx +1 -1
  329. package/src/components/ui/modal.tsx +1 -1
  330. package/src/components/ui/more-actions-menu.tsx +1 -1
  331. package/src/components/ui/navigation-menu.tsx +1 -1
  332. package/src/components/ui/organization-card.tsx +8 -8
  333. package/src/components/ui/page-loader.tsx +6 -6
  334. package/src/components/ui/phone-input.tsx +1 -1
  335. package/src/components/ui/progress-bar.tsx +5 -5
  336. package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
  337. package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
  338. package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
  339. package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
  340. package/src/components/ui/release-changelog-section.tsx +2 -2
  341. package/src/components/ui/rich-markdown-renderer.tsx +6 -6
  342. package/src/components/ui/search-input.tsx +7 -7
  343. package/src/components/ui/select.tsx +1 -1
  344. package/src/components/ui/service-card.tsx +4 -4
  345. package/src/components/ui/sheet.tsx +3 -3
  346. package/src/components/ui/simple-markdown-renderer.tsx +4 -4
  347. package/src/components/ui/square-avatar.tsx +9 -5
  348. package/src/components/ui/status-badge.tsx +11 -11
  349. package/src/components/ui/status-indicator.tsx +6 -6
  350. package/src/components/ui/tab-content.tsx +1 -1
  351. package/src/components/ui/tab-navigation.tsx +2 -2
  352. package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
  353. package/src/components/ui/table/table-description-cell.tsx +1 -1
  354. package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
  355. package/src/components/ui/table/table.tsx +2 -2
  356. package/src/components/ui/tabs.tsx +1 -1
  357. package/src/components/ui/tag-search-input.tsx +1 -1
  358. package/src/components/ui/tag.tsx +23 -23
  359. package/src/components/ui/tags-input.tsx +2 -2
  360. package/src/components/ui/ticket-status-tag.tsx +1 -1
  361. package/src/components/ui/toaster.tsx +8 -8
  362. package/src/components/ui/toggle.tsx +1 -1
  363. package/src/components/ui/tooltip.tsx +1 -1
  364. package/src/components/user-display.tsx +12 -6
  365. package/src/components/user-summary-stub.tsx +4 -4
  366. package/src/components/vendor-display-button.tsx +2 -2
  367. package/src/components/vendor-icon.tsx +1 -1
  368. package/src/components/vendor-tag.tsx +9 -10
  369. package/src/components/yes-no-display.tsx +3 -3
  370. package/src/styles/ods-colors.css +2 -0
  371. package/tailwind.config.ts +49 -4
  372. package/dist/chunk-2ELBNZJ3.js.map +0 -1
  373. package/dist/chunk-3WJQL4DN.cjs.map +0 -1
  374. package/dist/chunk-4ACSUJ7Q.js.map +0 -1
  375. package/dist/chunk-7WM77CSW.js.map +0 -1
  376. package/dist/chunk-COMBYYQY.js.map +0 -1
  377. package/dist/chunk-EGRZHR7J.js.map +0 -1
  378. package/dist/chunk-F7YVI54P.js.map +0 -1
  379. package/dist/chunk-G5FALXNO.js.map +0 -1
  380. package/dist/chunk-HTVVXVJL.cjs.map +0 -1
  381. package/dist/chunk-IAN7GUIV.cjs.map +0 -1
  382. package/dist/chunk-IMK6RUEC.cjs.map +0 -1
  383. package/dist/chunk-M6QGB6DC.cjs.map +0 -1
  384. package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
  385. package/dist/chunk-NQQ4NLUT.js.map +0 -1
  386. package/dist/chunk-P7PISHM5.js.map +0 -1
  387. package/dist/chunk-PBTY7AH5.js.map +0 -1
  388. package/dist/chunk-R46QEE3R.cjs.map +0 -1
  389. package/dist/chunk-RQQZF6G6.cjs.map +0 -1
  390. package/dist/chunk-RVWC4P3H.js.map +0 -1
  391. package/dist/chunk-VWGF6IFR.cjs.map +0 -1
  392. package/dist/chunk-WAGTZVQN.js.map +0 -1
  393. package/dist/chunk-WZ6TCAYQ.cjs.map +0 -1
  394. package/dist/components/accordion.d.ts +0 -8
  395. package/dist/components/accordion.d.ts.map +0 -1
  396. package/dist/components/alert-dialog.d.ts +0 -21
  397. package/dist/components/alert-dialog.d.ts.map +0 -1
  398. package/dist/components/alert.d.ts +0 -9
  399. package/dist/components/alert.d.ts.map +0 -1
  400. package/dist/components/badge.d.ts +0 -10
  401. package/dist/components/badge.d.ts.map +0 -1
  402. package/dist/components/breadcrumb.d.ts +0 -20
  403. package/dist/components/breadcrumb.d.ts.map +0 -1
  404. package/dist/components/chevron-button.d.ts +0 -14
  405. package/dist/components/chevron-button.d.ts.map +0 -1
  406. package/dist/components/dialog.d.ts +0 -29
  407. package/dist/components/dialog.d.ts.map +0 -1
  408. package/dist/components/dropdown-menu.d.ts +0 -28
  409. package/dist/components/dropdown-menu.d.ts.map +0 -1
  410. package/dist/components/input.d.ts +0 -8
  411. package/dist/components/input.d.ts.map +0 -1
  412. package/dist/components/label.d.ts +0 -6
  413. package/dist/components/label.d.ts.map +0 -1
  414. package/dist/components/menubar.d.ts +0 -34
  415. package/dist/components/menubar.d.ts.map +0 -1
  416. package/dist/components/navigation-menu.d.ts +0 -13
  417. package/dist/components/navigation-menu.d.ts.map +0 -1
  418. package/dist/components/select.d.ts +0 -14
  419. package/dist/components/select.d.ts.map +0 -1
  420. package/dist/components/sidebar.d.ts +0 -67
  421. package/dist/components/sidebar.d.ts.map +0 -1
  422. package/dist/components/square-avatar.d.ts +0 -21
  423. package/dist/components/square-avatar.d.ts.map +0 -1
  424. package/dist/components/table.d.ts +0 -11
  425. package/dist/components/table.d.ts.map +0 -1
  426. package/dist/components/tabs.d.ts +0 -18
  427. package/dist/components/tabs.d.ts.map +0 -1
  428. package/dist/components/toggle.d.ts +0 -13
  429. package/dist/components/toggle.d.ts.map +0 -1
  430. package/src/components/.accordion.md +0 -42
  431. package/src/components/.alert-dialog.md +0 -58
  432. package/src/components/.alert.md +0 -43
  433. package/src/components/.badge.md +0 -40
  434. package/src/components/.breadcrumb.md +0 -54
  435. package/src/components/.chevron-button.md +0 -46
  436. package/src/components/.dialog.md +0 -60
  437. package/src/components/.dropdown-menu.md +0 -51
  438. package/src/components/.input.md +0 -40
  439. package/src/components/.label.md +0 -41
  440. package/src/components/.menubar.md +0 -49
  441. package/src/components/.navigation-menu.md +0 -44
  442. package/src/components/.select.md +0 -54
  443. package/src/components/.sidebar.md +0 -58
  444. package/src/components/.square-avatar.md +0 -42
  445. package/src/components/.table.md +0 -51
  446. package/src/components/.tabs.md +0 -38
  447. package/src/components/.toggle.md +0 -49
  448. package/src/components/accordion.tsx +0 -56
  449. package/src/components/alert-dialog.tsx +0 -141
  450. package/src/components/alert.tsx +0 -59
  451. package/src/components/badge.tsx +0 -30
  452. package/src/components/breadcrumb.tsx +0 -115
  453. package/src/components/chevron-button.tsx +0 -68
  454. package/src/components/dialog.tsx +0 -150
  455. package/src/components/dropdown-menu.tsx +0 -200
  456. package/src/components/input.tsx +0 -39
  457. package/src/components/label.tsx +0 -19
  458. package/src/components/menubar.tsx +0 -236
  459. package/src/components/navigation-menu.tsx +0 -128
  460. package/src/components/select.tsx +0 -160
  461. package/src/components/sidebar.tsx +0 -764
  462. package/src/components/square-avatar.tsx +0 -61
  463. package/src/components/table.tsx +0 -72
  464. package/src/components/tabs.tsx +0 -65
  465. package/src/components/toggle.tsx +0 -45
  466. /package/dist/{chunk-QXYOGJQJ.js.map → chunk-7KDR5P23.js.map} +0 -0
  467. /package/dist/{chunk-PEIR7D25.js.map → chunk-7KNOHGMI.js.map} +0 -0
@@ -108,10 +108,10 @@ export function TranscriptSummaryEditor({
108
108
  />
109
109
  )}
110
110
  </div>
111
- <p className="text-xs text-ods-text-secondary mt-1">{videoSummaryHelperText}</p>
111
+ <p className="text-h6 text-ods-text-secondary mt-1">{videoSummaryHelperText}</p>
112
112
  </div>
113
113
  <div
114
- className="rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden"
114
+ className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
115
115
  style={{ minHeight: `${videoSummaryMinHeight}px` }}
116
116
  >
117
117
  <Textarea
@@ -120,7 +120,7 @@ export function TranscriptSummaryEditor({
120
120
  onChange={(e) => onVideoSummaryChange(e.target.value)}
121
121
  placeholder={videoSummaryPlaceholder}
122
122
  disabled={disabled}
123
- className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 font-mono text-sm"
123
+ className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
124
124
  style={{ minHeight: `${videoSummaryMinHeight}px`, lineHeight: '1.6' }}
125
125
  />
126
126
  </div>
@@ -143,10 +143,10 @@ export function TranscriptSummaryEditor({
143
143
  />
144
144
  )}
145
145
  </div>
146
- <p className="text-xs text-ods-text-secondary mt-1">{transcriptHelperText}</p>
146
+ <p className="text-h6 text-ods-text-secondary mt-1">{transcriptHelperText}</p>
147
147
  </div>
148
148
  <div
149
- className="rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden"
149
+ className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
150
150
  style={{ minHeight: `${transcriptMinHeight}px` }}
151
151
  >
152
152
  <Textarea
@@ -155,7 +155,7 @@ export function TranscriptSummaryEditor({
155
155
  onChange={(e) => onTranscriptChange(e.target.value)}
156
156
  placeholder={transcriptPlaceholder}
157
157
  disabled={disabled}
158
- className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 font-mono text-sm"
158
+ className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
159
159
  style={{ minHeight: `${transcriptMinHeight}px`, lineHeight: '1.6' }}
160
160
  />
161
161
  </div>
@@ -174,10 +174,10 @@ export function TranscriptSummaryEditor({
174
174
  </Badge>
175
175
  )}
176
176
  </div>
177
- <p className="text-xs text-ods-text-secondary mt-1">{subtitlesHelperText}</p>
177
+ <p className="text-h6 text-ods-text-secondary mt-1">{subtitlesHelperText}</p>
178
178
  </div>
179
179
  <div
180
- className="rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden"
180
+ className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
181
181
  style={{ minHeight: `${subtitlesMinHeight}px` }}
182
182
  >
183
183
  <Textarea
@@ -186,7 +186,7 @@ export function TranscriptSummaryEditor({
186
186
  onChange={(e) => onSubtitlesChange?.(e.target.value)}
187
187
  placeholder={subtitlesPlaceholder}
188
188
  disabled={disabled || !onSubtitlesChange}
189
- className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 font-mono text-sm"
189
+ className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
190
190
  style={{ minHeight: `${subtitlesMinHeight}px`, lineHeight: '1.6' }}
191
191
  />
192
192
  </div>
@@ -286,7 +286,7 @@ export function VideoBiteCard({
286
286
  // chevron affordance. The WHOLE footer is the navigation target — it links
287
287
  // to the entity the bite originated from. In the editor the title row is
288
288
  // the inline title editor (edited directly on the card).
289
- const titleClass = "font-['DM_Sans'] text-sm font-medium leading-5 text-ods-text-primary";
289
+ const titleClass = "text-h6 text-ods-text-primary";
290
290
  const overlayContent = (
291
291
  <>
292
292
  {titleEditable ? (
@@ -42,7 +42,7 @@ export type RatioCategory = 'portrait' | 'square' | 'landscape';
42
42
 
43
43
  // Shared tab trigger class — matches `<EntityVideoSection>`'s pattern.
44
44
  const TAB_TRIGGER_CLASS =
45
- 'rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary';
45
+ 'rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-h6 text-ods-text-secondary data-[state=active]:text-ods-text-primary';
46
46
 
47
47
  /** Grid class for each aspect ratio (admin editors — narrower columns). */
48
48
  export const RATIO_GRID_CLASS: Record<RatioCategory, string> = {
@@ -148,7 +148,7 @@ export function VideoSourceSelector({
148
148
  <div className={`space-y-4 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`}>
149
149
  {/* Section Title */}
150
150
  {showTitle && (
151
- <h3 className="font-['Azeret_Mono'] text-[18px] font-semibold uppercase text-ods-text-primary flex items-center gap-2">
151
+ <h3 className="text-h5 text-ods-text-primary flex items-center gap-2">
152
152
  <Video className="h-5 w-5" />
153
153
  {title}
154
154
  </h3>
@@ -188,7 +188,7 @@ export function VideoSourceSelector({
188
188
  disabled={disabled}
189
189
  />
190
190
  {youtubeHelperText && (
191
- <p className="text-xs text-ods-text-secondary">
191
+ <p className="text-h6 text-ods-text-secondary">
192
192
  {youtubeHelperText}
193
193
  </p>
194
194
  )}
@@ -236,15 +236,15 @@ export function VideoSourceSelector({
236
236
  style={{ width: `${uploadProgress}%` }}
237
237
  />
238
238
  </div>
239
- <span className="text-xs text-ods-text-secondary">{uploadProgress}%</span>
239
+ <span className="text-h6 text-ods-text-secondary">{uploadProgress}%</span>
240
240
  </div>
241
- <p className="text-xs text-ods-text-secondary">{uploadMessage}</p>
241
+ <p className="text-h6 text-ods-text-secondary">{uploadMessage}</p>
242
242
  </div>
243
243
  )}
244
244
 
245
245
  {/* Upload Error */}
246
246
  {uploadError && (
247
- <p className="text-sm text-ods-attention-red-error mb-3">{uploadError}</p>
247
+ <p className="text-h6 text-ods-error mb-3">{uploadError}</p>
248
248
  )}
249
249
 
250
250
  {/* Video Preview */}
@@ -265,7 +265,7 @@ export function VideoSourceSelector({
265
265
  />
266
266
  )
267
267
  ) : (
268
- <p className="text-sm text-ods-text-secondary italic">
268
+ <p className="text-h6 text-ods-text-secondary italic">
269
269
  {uploadEmptyText}
270
270
  </p>
271
271
  )}
@@ -332,7 +332,7 @@ function DefaultVideoPreview({ videoUrl, resolveVideoUrl, onDelete, disabled }:
332
332
  className="absolute top-2 right-2 p-1.5 bg-black/60 hover:bg-black/80 rounded-full transition-colors"
333
333
  disabled={disabled}
334
334
  >
335
- <X className="h-4 w-4 text-white" />
335
+ <X className="h-4 w-4 text-ods-text-on-dark" />
336
336
  </button>
337
337
  </div>
338
338
  );
@@ -931,7 +931,7 @@ function YouTubeFacadeInner({
931
931
  className="absolute inset-0 w-full h-full object-cover"
932
932
  />
933
933
  </picture>
934
- <div className="absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30">
934
+ <div className="absolute inset-0 flex items-center justify-center bg-ods-bg bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30">
935
935
  {/* THE shared center play badge (video-center-badge.tsx) — same disc
936
936
  as strip cards / carousel thumbs / unmute chip; hero size + the
937
937
  facade's hover-scale affordance. */}
@@ -222,7 +222,7 @@ export function WaitlistForm({
222
222
  onKeyDown={handleKeyDown}
223
223
  />
224
224
  {showPhoneWarning && (
225
- <p className="text-h6 absolute bottom-0 left-0 translate-y-full text-[var(--ods-attention-yellow-warning)] truncate" title={invalidPhoneHint}>
225
+ <p className="text-h6 absolute bottom-0 left-0 translate-y-full text-ods-warning truncate" title={invalidPhoneHint}>
226
226
  {invalidPhoneHint}
227
227
  </p>
228
228
  )}
@@ -245,7 +245,7 @@ export function WaitlistForm({
245
245
  {consentText}{' View our '}
246
246
  <a
247
247
  href={termsOfServiceUrl || '#'}
248
- className="text-[var(--color-accent-primary)] underline"
248
+ className="text-ods-accent underline"
249
249
  target="_blank"
250
250
  rel="noopener noreferrer"
251
251
  onClick={(e) => e.stopPropagation()}
@@ -255,7 +255,7 @@ export function WaitlistForm({
255
255
  {' and '}
256
256
  <a
257
257
  href={privacyPolicyUrl || '#'}
258
- className="text-[var(--color-accent-primary)] underline"
258
+ className="text-ods-accent underline"
259
259
  target="_blank"
260
260
  rel="noopener noreferrer"
261
261
  onClick={(e) => e.stopPropagation()}
@@ -30,7 +30,7 @@ export function FilterChip({
30
30
  const baseClasses = cn(
31
31
  "inline-flex items-center justify-center rounded-full font-medium transition-all duration-200 shrink-0 group cursor-pointer",
32
32
  "hover:shadow-md hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2",
33
- "font-['DM_Sans'] leading-none",
33
+ "font-body leading-none",
34
34
  // Size variants - enhanced mobile sizing for better visibility and touch targets
35
35
  size === 'sm'
36
36
  ? "text-sm pl-3 pr-3 py-1 md:text-sm md:pl-3 md:pr-3 md:py-1"
@@ -43,14 +43,14 @@ export function FilterChip({
43
43
 
44
44
  const variantClasses = {
45
45
  // Legacy variants (for backward compatibility)
46
- selected: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008] hover:bg-ods-border hover:border-[#FFD951] focus:ring-[#FFC008] focus:ring-offset-[#161616]",
47
- unselected: "bg-[#2A2A2A] text-[#CCCCCC] border border-[#4A4A4A] hover:bg-ods-border hover:border-[#5A5A5A] hover:text-ods-text-primary focus:ring-[#4A4A4A] focus:ring-offset-[#161616]",
48
- info: "bg-ods-border text-[#CCCCCC] border border-[#5A5A5A] cursor-default hover:scale-100 hover:shadow-none focus:ring-[#5A5A5A] focus:ring-offset-[#161616]",
49
-
46
+ selected: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent hover:bg-ods-border hover:border-ods-accent-hover focus:ring-ods-accent focus:ring-offset-ods-bg",
47
+ unselected: "bg-ods-bg-surface text-ods-text-secondary border border-ods-border hover:bg-ods-border hover:border-ods-border-hover hover:text-ods-text-primary focus:ring-ods-border focus:ring-offset-ods-bg",
48
+ info: "bg-ods-border text-ods-text-secondary border border-ods-border-hover cursor-default hover:scale-100 hover:shadow-none focus:ring-ods-border-hover focus:ring-offset-ods-bg",
49
+
50
50
  // New subtle selected variants - same backgrounds/text, only border colors different
51
- category: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008]/40 hover:bg-ods-border hover:border-[#FFC008]/60 hover:text-ods-text-primary focus:ring-[#FFC008]/40 focus:ring-offset-[#161616]",
52
- subcategory: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008]/60 hover:bg-ods-border hover:border-[#FFC008]/80 hover:text-ods-text-primary focus:ring-[#FFC008]/60 focus:ring-offset-[#161616]",
53
- tag: "bg-[#2A2A2A] text-ods-text-primary border border-[#FFC008]/20 hover:bg-ods-border hover:border-[#FFC008]/30 hover:text-ods-text-primary focus:ring-[#FFC008]/20 focus:ring-offset-[#161616]",
51
+ category: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/40 hover:bg-ods-border hover:border-ods-accent/60 hover:text-ods-text-primary focus:ring-ods-accent/40 focus:ring-offset-ods-bg",
52
+ subcategory: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/60 hover:bg-ods-border hover:border-ods-accent/80 hover:text-ods-text-primary focus:ring-ods-accent/60 focus:ring-offset-ods-bg",
53
+ tag: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/20 hover:bg-ods-border hover:border-ods-accent/30 hover:text-ods-text-primary focus:ring-ods-accent/20 focus:ring-offset-ods-bg",
54
54
  }
55
55
 
56
56
  return (
@@ -67,7 +67,7 @@ export function FilterChip({
67
67
  aria-disabled={disabled}
68
68
  >
69
69
  <span className={cn(
70
- "truncate font-['DM_Sans'] font-medium leading-none text-center",
70
+ "truncate font-body font-medium leading-none text-center",
71
71
  size === 'sm' ? "max-w-[100px] md:max-w-[120px]" : "max-w-[120px] md:max-w-[140px]"
72
72
  )} title={label}>
73
73
  {label}
@@ -86,12 +86,12 @@ export function FilterChip({
86
86
  "transition-all duration-200 shrink-0",
87
87
  "group-hover:scale-110 focus:outline-none focus:ring-2 focus:ring-offset-1",
88
88
  variant === 'category'
89
- ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
89
+ ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
90
90
  : variant === 'subcategory'
91
- ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
91
+ ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
92
92
  : variant === 'tag'
93
- ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
94
- : "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]",
93
+ ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
94
+ : "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface",
95
95
  disabled && "opacity-50 cursor-not-allowed hover:scale-100"
96
96
  )}
97
97
  aria-label={`Remove ${label} filter`}
@@ -27,7 +27,7 @@ interface FooterConfig {
27
27
  belowDescriptionContent?: React.ReactNode // Custom content below description
28
28
  moveDescriptionToRight?: boolean // Move description and belowDescriptionContent to right column
29
29
  keepBelowDescriptionLeft?: boolean // Keep belowDescriptionContent on left even when moveDescriptionToRight is true
30
- backgroundColor?: string // ODS background color (e.g., 'bg-ods-bg-card', 'bg-ods-system-greys-black')
30
+ backgroundColor?: string // ODS background color (e.g., 'bg-ods-card', 'bg-ods-bg')
31
31
  social?: {
32
32
  github?: string
33
33
  twitter?: string
@@ -71,7 +71,7 @@ export function Footer({ config, renderLink }: FooterProps) {
71
71
  */
72
72
  function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderLink?: (link: FooterLink) => React.ReactNode }) {
73
73
  const defaultRenderLink = (link: FooterLink) => (
74
- <a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent-primary transition-colors">
74
+ <a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent transition-colors">
75
75
  {link.label}
76
76
  </a>
77
77
  )
@@ -79,7 +79,7 @@ function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderL
79
79
  const linkRenderer = renderLink || defaultRenderLink
80
80
 
81
81
  return (
82
- <footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-bg-card'} px-6 py-10 relative gap-6 md:gap-6 min-h-[auto] md:min-h-[248px] z-[44] border-t border-ods-border`}>
82
+ <footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-card'} px-6 py-10 relative gap-6 md:gap-6 min-h-[auto] md:min-h-[248px] z-[44] border-t border-ods-border`}>
83
83
  <div className="w-full grid grid-cols-2 lg:grid-cols-4 gap-6 md:gap-8 items-start">
84
84
 
85
85
  {/* Column 1: Logo and optionally description */}
@@ -112,7 +112,7 @@ const FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttribu
112
112
  ({ className, ...props }, ref) => {
113
113
  const { formDescriptionId } = useFormField()
114
114
 
115
- return <p ref={ref} id={formDescriptionId} className={cn("text-sm text-muted-foreground", className)} {...props} />
115
+ return <p ref={ref} id={formDescriptionId} className={cn("text-h6 text-muted-foreground", className)} {...props} />
116
116
  },
117
117
  )
118
118
  FormDescription.displayName = "FormDescription"
@@ -127,7 +127,7 @@ const FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<
127
127
  }
128
128
 
129
129
  return (
130
- <p ref={ref} id={formMessageId} className={cn("text-sm font-medium text-destructive", className)} {...props}>
130
+ <p ref={ref} id={formMessageId} className={cn("text-h6 text-destructive", className)} {...props}>
131
131
  {body}
132
132
  </p>
133
133
  )
@@ -158,9 +158,9 @@ export function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height =
158
158
  ) : (
159
159
  <>
160
160
  <ImageIcon className="h-12 w-12 text-ods-text-secondary" />
161
- <span className="text-ods-text-primary font-['DM_Sans'] text-[16px] font-medium mt-2">Upload cover image</span>
162
- <span className="text-ods-text-secondary font-['DM_Sans'] text-[14px] mt-1">Click to upload or drag and drop</span>
163
- <span className="text-ods-text-secondary font-['DM_Sans'] text-[12px]">PNG, JPEG, WebP, GIF up to 5MB</span>
161
+ <span className="text-ods-text-primary text-h6 mt-2">Upload cover image</span>
162
+ <span className="text-ods-text-secondary text-h6 mt-1">Click to upload or drag and drop</span>
163
+ <span className="text-ods-text-secondary text-h6">PNG, JPEG, WebP, GIF up to 5MB</span>
164
164
  </>
165
165
  )}
166
166
  </div>
@@ -213,7 +213,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
213
213
  <div className="flex flex-col gap-4">
214
214
  {/* Zoom */}
215
215
  <div className="flex items-center gap-3">
216
- <span className="min-w-[60px] text-sm">Zoom</span>
216
+ <span className="min-w-[60px] text-h6">Zoom</span>
217
217
  <Slider
218
218
  min={1}
219
219
  max={3}
@@ -226,7 +226,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
226
226
  </div>
227
227
  {/* Rotate */}
228
228
  <div className="flex items-center gap-3">
229
- <span className="min-w-[60px] text-sm">Rotate</span>
229
+ <span className="min-w-[60px] text-h6">Rotate</span>
230
230
  <Slider
231
231
  min={0}
232
232
  max={360}
@@ -248,14 +248,14 @@ function renderAdvancedPageContainer({
248
248
 
249
249
  {/* Title */}
250
250
  {title && (
251
- <h1 className="text-h2 tracking-[-0.64px] text-ods-text-primary">
251
+ <h1 className="text-h2 text-ods-text-primary">
252
252
  {title}
253
253
  </h1>
254
254
  )}
255
255
 
256
256
  {/* Subtitle */}
257
257
  {subtitle && (
258
- <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
258
+ <div className="text-h6 text-ods-text-secondary">
259
259
  {subtitle}
260
260
  </div>
261
261
  )}
@@ -286,12 +286,12 @@ function renderAdvancedPageContainer({
286
286
  )}
287
287
 
288
288
  {title && (
289
- <h1 className="text-h2 tracking-[-0.48px] text-ods-text-primary">
289
+ <h1 className="text-h2 text-ods-text-primary">
290
290
  {title}
291
291
  </h1>
292
292
  )}
293
293
  {subtitle && (
294
- <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
294
+ <div className="text-h6 text-ods-text-secondary">
295
295
  {subtitle}
296
296
  </div>
297
297
  )}
@@ -322,7 +322,7 @@ function renderAdvancedPageContainer({
322
322
  )}
323
323
 
324
324
  {title && (
325
- <h1 className="text-[32px] font-['Azeret_Mono:SemiBold',_sans-serif] font-semibold text-ods-text-primary tracking-[-0.64px]">
325
+ <h1 className="text-h2 text-ods-text-primary">
326
326
  {title}
327
327
  </h1>
328
328
  )}
@@ -350,7 +350,7 @@ function renderAdvancedPageContainer({
350
350
  </h1>
351
351
  )}
352
352
  {subtitle && (
353
- <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
353
+ <div className="text-h6 text-ods-text-secondary">
354
354
  {subtitle}
355
355
  </div>
356
356
  )}
@@ -22,7 +22,7 @@ export const PAGE_HEADING_CLASS = 'text-h1 text-ods-text-primary'
22
22
  export const SECTION_HEADING_CLASS = 'text-h2 text-ods-text-primary'
23
23
 
24
24
  const DESCRIPTION_CLASS =
25
- "mt-6 max-w-[640px] font-['DM_Sans'] text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary"
25
+ "mt-6 max-w-[640px] font-body text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary"
26
26
 
27
27
  export interface PageHeadingProps {
28
28
  /** Heading content — plain text or nodes (e.g. an accent <span>). */
@@ -177,10 +177,10 @@ function BlogCardContent({ showActions, showMetadata }: { showActions: boolean;
177
177
  </div>
178
178
 
179
179
  {/* Date and reading time section - matches BlogMeta right side */}
180
- <div className="flex items-center gap-3 text-[#767676] shrink-0">
180
+ <div className="flex items-center gap-3 text-ods-text-muted shrink-0">
181
181
  <TextSkeleton.Caption className="w-12" />
182
182
  {/* Separator dot */}
183
- <div className="w-1 h-1 bg-[#767676] rounded-full"></div>
183
+ <div className="w-1 h-1 bg-ods-skeleton rounded-full"></div>
184
184
  <TextSkeleton.Caption className="w-16" />
185
185
  </div>
186
186
  </div>
@@ -10,7 +10,7 @@ export function CategoryCardSkeleton({ className }: CategoryCardSkeletonProps) {
10
10
  return (
11
11
  <article
12
12
  className={cn(
13
- 'bg-[#1A1A1A] border border-[#424242] rounded-[12px] p-8 flex flex-col min-w-0 box-border',
13
+ 'bg-ods-card border border-ods-border rounded-[12px] p-8 flex flex-col min-w-0 box-border',
14
14
  className,
15
15
  )}
16
16
  role="status"
@@ -15,8 +15,8 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
15
15
  <div className="max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10">
16
16
  {/* Header */}
17
17
  <div className="space-y-3">
18
- <div className="h-10 w-72 bg-[#2A2A2A] rounded" />
19
- <div className="h-4 w-80 bg-[#2A2A2A] rounded" />
18
+ <div className="h-10 w-72 bg-ods-skeleton rounded" />
19
+ <div className="h-4 w-80 bg-ods-skeleton rounded" />
20
20
  </div>
21
21
 
22
22
  {/* Summary cards */}
@@ -30,10 +30,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
30
30
  <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
31
31
  {/* MSP profile skeleton */}
32
32
  <div className="bg-ods-card border border-ods-border rounded-lg p-6 flex items-center gap-4 animate-pulse">
33
- <div className="w-14 h-14 rounded-lg bg-[#2A2A2A]" />
33
+ <div className="w-14 h-14 rounded-lg bg-ods-skeleton" />
34
34
  <div className="flex-1 space-y-2">
35
- <div className="h-4 bg-[#2A2A2A] rounded w-3/4" />
36
- <div className="h-3 bg-[#2A2A2A] rounded w-1/2" />
35
+ <div className="h-4 bg-ods-skeleton rounded w-3/4" />
36
+ <div className="h-3 bg-ods-skeleton rounded w-1/2" />
37
37
  </div>
38
38
  </div>
39
39
 
@@ -41,15 +41,15 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
41
41
  <div className="bg-ods-card border border-ods-border rounded-lg p-6 flex flex-col gap-4 animate-pulse">
42
42
  <div className="flex items-center justify-between gap-4">
43
43
  <div className="flex items-center gap-2">
44
- <div className="w-10 h-10 rounded-lg bg-[#2A2A2A]" />
44
+ <div className="w-10 h-10 rounded-lg bg-ods-skeleton" />
45
45
  <div className="space-y-1">
46
- <div className="h-4 w-32 bg-[#2A2A2A] rounded" />
47
- <div className="h-3 w-20 bg-[#2A2A2A] rounded" />
46
+ <div className="h-4 w-32 bg-ods-skeleton rounded" />
47
+ <div className="h-3 w-20 bg-ods-skeleton rounded" />
48
48
  </div>
49
49
  </div>
50
- <div className="h-6 w-36 bg-[#2A2A2A] rounded" />
50
+ <div className="h-6 w-36 bg-ods-skeleton rounded" />
51
51
  </div>
52
- <div className="h-4 w-40 bg-[#2A2A2A] rounded mt-4" />
52
+ <div className="h-4 w-40 bg-ods-skeleton rounded mt-4" />
53
53
  </div>
54
54
  </div>
55
55
 
@@ -59,10 +59,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
59
59
  <div key={idx} className="bg-ods-card border border-ods-border rounded-lg overflow-hidden flex flex-col animate-pulse">
60
60
  {/* list header */}
61
61
  <div className="flex items-center justify-between px-6 py-4">
62
- <div className="h-6 w-40 bg-[#2A2A2A] rounded" />
62
+ <div className="h-6 w-40 bg-ods-skeleton rounded" />
63
63
  <div className="flex items-center gap-2">
64
- <div className="h-5 w-20 bg-[#2A2A2A] rounded" />
65
- <div className="h-4 w-10 bg-[#2A2A2A] rounded" />
64
+ <div className="h-5 w-20 bg-ods-skeleton rounded" />
65
+ <div className="h-4 w-10 bg-ods-skeleton rounded" />
66
66
  </div>
67
67
  </div>
68
68
 
@@ -72,16 +72,16 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
72
72
  <div key={j} className="bg-ods-bg border border-ods-border rounded-lg px-4 py-3 flex items-center justify-between">
73
73
  {/* left section: icon + text */}
74
74
  <div className="flex items-center gap-3 min-w-0">
75
- <div className="w-12 h-12 bg-[#2A2A2A] rounded-lg flex-shrink-0" />
75
+ <div className="w-12 h-12 bg-ods-skeleton rounded-lg flex-shrink-0" />
76
76
  <div className="flex flex-col min-w-0">
77
- <div className="h-4 w-32 bg-[#2A2A2A] rounded" />
78
- <div className="hidden md:block h-3 w-24 bg-[#2A2A2A] rounded mt-1" />
77
+ <div className="h-4 w-32 bg-ods-skeleton rounded" />
78
+ <div className="hidden md:block h-3 w-24 bg-ods-skeleton rounded mt-1" />
79
79
  </div>
80
80
  </div>
81
81
  {/* right addon: cost text */}
82
82
  <div className="flex items-center gap-1 flex-shrink-0">
83
- <div className="h-4 w-16 bg-[#2A2A2A] rounded" />
84
- <div className="h-3 w-8 bg-[#2A2A2A] rounded" />
83
+ <div className="h-4 w-16 bg-ods-skeleton rounded" />
84
+ <div className="h-3 w-8 bg-ods-skeleton rounded" />
85
85
  </div>
86
86
  </div>
87
87
  ))}
@@ -91,7 +91,7 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
91
91
  </div>
92
92
 
93
93
  {/* Strategic Recommendations header placeholder */}
94
- <div className="h-6 w-60 bg-[#2A2A2A] rounded" />
94
+ <div className="h-6 w-60 bg-ods-skeleton rounded" />
95
95
 
96
96
  {/* Recommendations grid */}
97
97
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -105,11 +105,11 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
105
105
  {/* Section header */}
106
106
  <div className="flex items-start gap-6">
107
107
  <div className="flex-1 space-y-2 min-w-0">
108
- <div className="h-8 w-72 bg-[#2A2A2A] rounded" />
109
- <div className="h-4 w-3/4 bg-[#2A2A2A] rounded" />
108
+ <div className="h-8 w-72 bg-ods-skeleton rounded" />
109
+ <div className="h-4 w-3/4 bg-ods-skeleton rounded" />
110
110
  </div>
111
111
  {/* Logo placeholder */}
112
- <div className="w-12 h-12 bg-[#2A2A2A] rounded-md shrink-0" />
112
+ <div className="w-12 h-12 bg-ods-skeleton rounded-md shrink-0" />
113
113
  </div>
114
114
 
115
115
  {/* Value cards grid */}
@@ -35,7 +35,7 @@ export function OpenmspHeartbeatLoader({ className = '', progress = 0, label, ba
35
35
  <div className="flex flex-col items-center justify-center w-128">
36
36
  {/* Progress text */}
37
37
  <h2 className="mt-2 text-ods-accent text-center font-bold">
38
- {progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-sm text-ods-text-secondary">/100%</span>
38
+ {progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-h6 text-ods-text-secondary">/100%</span>
39
39
  </h2>
40
40
 
41
41
  {/* Progress text */}