@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
@@ -183,12 +183,12 @@ export const AppHeader = React.memo(function AppHeader({
183
183
  />
184
184
  <div className="flex-1 min-w-0">
185
185
  {userName && (
186
- <div className="text-[18px] font-medium text-ods-text-primary truncate leading-6">
186
+ <div className="text-h4 text-ods-text-primary truncate">
187
187
  {userName}
188
188
  </div>
189
189
  )}
190
190
  {userEmail && (
191
- <div className="text-[14px] text-ods-text-secondary truncate leading-5">
191
+ <div className="text-h6 text-ods-text-secondary truncate">
192
192
  {userEmail}
193
193
  </div>
194
194
  )}
@@ -198,21 +198,21 @@ export const AppHeader = React.memo(function AppHeader({
198
198
  {/* Menu items */}
199
199
  <DropdownMenuItem
200
200
  onClick={onProfile}
201
- className="bg-ods-card border-b border-ods-border rounded-none px-3 py-3 hover:bg-ods-bg-card/80 focus:bg-ods-bg-card/80 cursor-pointer"
201
+ className="bg-ods-card border-b border-ods-border rounded-none px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80 cursor-pointer"
202
202
  >
203
203
  <div className="flex items-center gap-2">
204
204
  <UserIcon className="h-6 w-6 text-ods-text-primary shrink-0" />
205
- <span className="text-[18px] font-medium text-ods-text-primary">Profile Settings</span>
205
+ <span className="text-h4 text-ods-text-primary">Profile Settings</span>
206
206
  </div>
207
207
  </DropdownMenuItem>
208
208
 
209
209
  <DropdownMenuItem
210
210
  onClick={onLogout}
211
- className="bg-ods-card rounded-none px-3 py-3 hover:bg-ods-bg-card/80 focus:bg-ods-bg-card/80 cursor-pointer"
211
+ className="bg-ods-card rounded-none px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80 cursor-pointer"
212
212
  >
213
213
  <div className="flex items-center gap-2">
214
214
  <LogOutIcon className="text-ods-error shrink-0" size={24} />
215
- <span className="text-[18px] font-medium text-ods-text-primary">Log Out</span>
215
+ <span className="text-h4 text-ods-text-primary">Log Out</span>
216
216
  </div>
217
217
  </DropdownMenuItem>
218
218
  </DropdownMenuContent>
@@ -48,11 +48,11 @@ export function HeaderOrganizationFilter({
48
48
  >
49
49
  <Filter02Icon className="w-4 h-4 shrink-0 text-ods-text-secondary" />
50
50
  <div className="flex flex-col items-start justify-center min-w-0">
51
- <span className="font-mono text-sm font-medium leading-5 text-ods-text-primary uppercase tracking-tight truncate" title={displayName}>
51
+ <span className="text-h5 text-ods-text-primary truncate" title={displayName}>
52
52
  {displayName}
53
53
  </span>
54
54
  {deviceCount !== undefined && (
55
- <span className="text-sm font-medium leading-5 text-ods-text-secondary truncate">
55
+ <span className="text-h6 text-ods-text-secondary truncate">
56
56
  {deviceCount.toLocaleString()} Devices
57
57
  </span>
58
58
  )}
@@ -133,7 +133,7 @@ export function Header({ config, platform }: HeaderProps) {
133
133
  }}
134
134
  size="small-legacy"
135
135
  className={cn(
136
- "font-bold text-[16px] leading-none tracking-[-0.32px]",
136
+ "text-h6 font-bold",
137
137
  item.isActive && 'bg-ods-bg-hover', // Active items get subtle gray background
138
138
  isOpen && 'bg-ods-bg-hover', // Open dropdowns get gray background
139
139
  item.className
@@ -189,7 +189,7 @@ export function Header({ config, platform }: HeaderProps) {
189
189
  }}
190
190
  className={cn(
191
191
  "flex justify-start w-full",
192
- "font-bold text-[16px] leading-none tracking-[-0.32px]",
192
+ "text-h6 font-bold",
193
193
  index < (item.children?.length ?? 0) - 1 && "mb-1",
194
194
  "text-ods-text-primary", // All dropdown items use primary text color
195
195
  child.isActive && 'bg-ods-bg-hover' // Active dropdown items get gray background
@@ -225,7 +225,7 @@ export function Header({ config, platform }: HeaderProps) {
225
225
  rightIcon={item.badge}
226
226
  size="small-legacy"
227
227
  className={cn(
228
- "font-bold text-[16px] leading-none tracking-[-0.32px]",
228
+ "text-h6 font-bold",
229
229
  "hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
230
230
  "whitespace-nowrap",
231
231
  "text-ods-text-primary", // All items use primary text color
@@ -249,7 +249,7 @@ export function Header({ config, platform }: HeaderProps) {
249
249
  rightIcon={item.badge}
250
250
  size="small-legacy"
251
251
  className={cn(
252
- "font-bold text-[16px] leading-none tracking-[-0.32px]",
252
+ "text-h6 font-bold",
253
253
  "hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
254
254
  "whitespace-nowrap",
255
255
  "text-ods-text-primary", // All items use primary text color
@@ -81,7 +81,7 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
81
81
  "flex items-center gap-1 p-3 relative",
82
82
  "transition-colors duration-200",
83
83
  "bg-ods-card border border-ods-border rounded-md",
84
- !disabled && "hover:bg-ods-hover",
84
+ !disabled && "hover:bg-ods-bg-hover",
85
85
  isGridItem ? "flex-1 min-w-0" : "w-full",
86
86
  // Active state
87
87
  isActive && !disabled && "border-ods-accent",
@@ -102,7 +102,7 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
102
102
 
103
103
  {/* Label */}
104
104
  <span className={cn(
105
- "font-['DM_Sans'] font-medium text-sm leading-5 flex-1 text-left truncate",
105
+ "text-h6 flex-1 text-left truncate",
106
106
  isActive && !disabled ? "text-ods-accent" : "text-ods-text-primary"
107
107
  )}>
108
108
  {item.label}
@@ -204,17 +204,17 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
204
204
  {/* User Info */}
205
205
  <div className="flex-1 min-w-0 flex flex-col">
206
206
  <div className="flex items-center gap-2">
207
- <span className="font-medium text-sm text-ods-text-primary truncate">
207
+ <span className="text-h6 text-ods-text-primary truncate">
208
208
  {user.userName || 'User'}
209
209
  </span>
210
210
  {user.userRole && (
211
- <span className="shrink-0 px-2 py-0.5 bg-ods-card border border-ods-border rounded-md font-medium text-xs text-ods-text-primary uppercase tracking-tight">
211
+ <span className="shrink-0 px-2 py-0.5 bg-ods-card border border-ods-border rounded-md text-h6 uppercase text-ods-text-primary">
212
212
  {user.userRole}
213
213
  </span>
214
214
  )}
215
215
  </div>
216
216
  {user.userEmail && (
217
- <span className="font-medium text-xs text-ods-text-secondary truncate">
217
+ <span className="text-h6 text-ods-text-secondary truncate">
218
218
  {user.userEmail}
219
219
  </span>
220
220
  )}
@@ -269,12 +269,12 @@ export const MobileBurgerMenu = React.memo(function MobileBurgerMenu({
269
269
  disabled={disabled}
270
270
  className={cn(
271
271
  "w-full flex items-center gap-1 p-3 bg-ods-card border border-ods-border rounded-md transition-colors",
272
- !disabled && "hover:bg-ods-hover",
272
+ !disabled && "hover:bg-ods-bg-hover",
273
273
  disabled && "cursor-not-allowed opacity-50"
274
274
  )}
275
275
  >
276
276
  <Logout02Icon className="size-4 text-ods-error" />
277
- <span className="font-['DM_Sans'] font-medium text-sm leading-5 flex-1 text-left text-ods-text-primary">
277
+ <span className="text-h6 flex-1 text-left text-ods-text-primary">
278
278
  Log Out
279
279
  </span>
280
280
  </button>
@@ -134,7 +134,7 @@ export function MobileNavPanel({ isOpen, config }: MobileNavPanelProps) {
134
134
  {config.sections.map((section, index) => (
135
135
  <div key={index}>
136
136
  {section.title && (
137
- <div className="px-4 pt-2 pb-1 text-xs font-semibold text-ods-text-secondary uppercase tracking-wide">
137
+ <div className="px-4 pt-2 pb-1 text-h6 font-semibold uppercase text-ods-text-secondary">
138
138
  {section.title}
139
139
  </div>
140
140
  )}
@@ -157,8 +157,8 @@ function NavigationItem({
157
157
  <div className="flex items-center relative">
158
158
  <button
159
159
  className={cn(
160
- "w-full flex items-center h-12 px-2 rounded-lg text-[16px] font-medium font-['DM_Sans'] transition-all duration-150 leading-[1.33em] text-ods-text-primary",
161
- !isSelected && "hover:bg-ods-bg-secondary",
160
+ "w-full flex items-center h-12 px-2 rounded-lg text-h6 transition-all duration-150 text-ods-text-primary",
161
+ !isSelected && "hover:bg-ods-bg-hover",
162
162
  hasChildren && "pr-12"
163
163
  )}
164
164
  onClick={() => onNodeClick(node)}
@@ -175,7 +175,7 @@ function NavigationItem({
175
175
  {node.name.endsWith('.md') ? node.name.replace('.md', '') : node.name}
176
176
  </span>
177
177
  {node.type === 'folder' && node.hasReadme && (
178
- <span className="text-[10px] bg-ods-bg-secondary text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
178
+ <span className="text-h6 bg-ods-bg-surface text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
179
179
  README
180
180
  </span>
181
181
  )}
@@ -290,8 +290,8 @@ function MobileNavigationItem({
290
290
  <div className="flex items-center relative">
291
291
  <button
292
292
  className={cn(
293
- "w-full flex items-center h-11 px-2 rounded-lg text-[15px] font-medium font-['DM_Sans'] transition-all duration-150 leading-[1.33em] text-ods-text-primary",
294
- !isSelected && "hover:bg-ods-bg-secondary",
293
+ "w-full flex items-center h-11 px-2 rounded-lg text-h6 transition-all duration-150 text-ods-text-primary",
294
+ !isSelected && "hover:bg-ods-bg-hover",
295
295
  hasChildren && "pr-11"
296
296
  )}
297
297
  onClick={() => onNodeClick(node)}
@@ -303,11 +303,11 @@ function MobileNavigationItem({
303
303
  <FileText className="h-4 w-4" />
304
304
  )}
305
305
  </span>
306
- <span className="text-left truncate flex-1 min-w-0 text-sm">
306
+ <span className="text-left truncate flex-1 min-w-0">
307
307
  {node.name.endsWith('.md') ? node.name.replace('.md', '') : node.name}
308
308
  </span>
309
309
  {node.type === 'folder' && node.hasReadme && (
310
- <span className="text-[10px] bg-ods-bg-secondary text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
310
+ <span className="text-h6 bg-ods-bg-surface text-ods-text-tertiary px-1.5 py-0.5 rounded mr-2">
311
311
  README
312
312
  </span>
313
313
  )}
@@ -113,7 +113,7 @@ export function NavigationSidebar({ config, disabled = false }: NavigationSideba
113
113
  {/* Backdrop scrim — only visible on tablet while the overlay is open */}
114
114
  <div
115
115
  className={cn(
116
- "fixed inset-0 z-[40] bg-black/50",
116
+ "fixed inset-0 z-[40] bg-ods-overlay",
117
117
  "hidden md:block lg:hidden",
118
118
  "transition-opacity duration-300",
119
119
  isOverlayOpen ? "opacity-100" : "opacity-0 pointer-events-none",
@@ -28,7 +28,7 @@ export function StickySectionNav({
28
28
  onSectionClick,
29
29
  className,
30
30
  ribbonPosition = 'left',
31
- ribbonColor = '#FFC008'
31
+ ribbonColor = 'var(--color-accent-primary)'
32
32
  }: StickySectionNavProps) {
33
33
  const navHeight = sections.length * 40 // 40px per item (h-10)
34
34
 
@@ -71,7 +71,7 @@ export function StickySectionNav({
71
71
  className="flex-1 flex items-center gap-2 px-3 py-2 cursor-pointer relative"
72
72
  >
73
73
  <span className={cn(
74
- "text-left font-['DM_Sans'] text-[14px] font-medium tracking-[-0.02em] leading-[1.43em] transition-all duration-200",
74
+ "text-left text-h6 transition-all duration-200",
75
75
  activeSection === section.id
76
76
  ? "text-ods-text-primary"
77
77
  : "text-ods-text-secondary hover:text-ods-text-primary"
@@ -206,10 +206,10 @@ export function OnboardingGuidesCatalogView({
206
206
  {guides.length === 0 ? (
207
207
  <div className="text-center py-16">
208
208
  <GraduationCap className="h-12 w-12 text-ods-text-secondary mx-auto mb-4" />
209
- <h2 className="text-ods-text-primary font-['DM_Sans'] text-[20px] font-semibold mb-2">
209
+ <h2 className="text-ods-text-primary text-h3 mb-2">
210
210
  No onboarding guides found
211
211
  </h2>
212
- <p className="text-ods-text-secondary font-['DM_Sans'] text-[14px]">
212
+ <p className="text-ods-text-secondary text-h6">
213
213
  {activeSection !== 'all'
214
214
  ? 'No guides in this section yet.'
215
215
  : "We're working on the onboarding library. Check back soon."}
@@ -219,9 +219,9 @@ export function OnboardingGuidesCatalogView({
219
219
  <div className={isPending || isLoading ? 'opacity-60 transition-opacity space-y-10' : 'space-y-10'}>
220
220
  {grouped.map((sec) => (
221
221
  <section key={sec.section} className="space-y-4">
222
- <h2 className="text-h3 tracking-[-0.36px] text-ods-text-primary flex items-center gap-2">
222
+ <h2 className="text-h3 text-ods-text-primary flex items-center gap-2">
223
223
  {sec.section}
224
- <span className="inline-flex items-center justify-center rounded-full bg-ods-text-secondary/20 text-ods-text-secondary text-xs font-medium px-2 py-0.5">
224
+ <span className="inline-flex items-center justify-center rounded-full bg-ods-text-secondary/20 text-ods-text-secondary text-h6 px-2 py-0.5">
225
225
  {sec.guides.length}
226
226
  </span>
227
227
  </h2>
@@ -85,7 +85,7 @@ const Pagination = ({ currentPage, totalPages, onPageChange, className }: Pagina
85
85
  // Render ellipsis
86
86
  return (
87
87
  <li key={`ellipsis-${index}`}>
88
- <span className="flex h-9 w-9 items-center justify-center text-sm text-muted-foreground">
88
+ <span className="flex h-9 w-9 items-center justify-center text-h6 text-muted-foreground">
89
89
  <MoreHorizontal className="h-4 w-4" />
90
90
  <span className="sr-only">More pages</span>
91
91
  </span>
@@ -147,7 +147,7 @@ const PaginationLink = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttri
147
147
  <button
148
148
  ref={ref}
149
149
  className={cn(
150
- "inline-flex items-center justify-center h-10 w-10 rounded-md border border-input bg-background text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
150
+ "inline-flex items-center justify-center h-10 w-10 rounded-md border border-input bg-background text-h6 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
151
151
  className,
152
152
  )}
153
153
  {...props}
@@ -107,7 +107,7 @@ export function PersistentFilterControls({
107
107
  role="status"
108
108
  aria-label="Loading filters"
109
109
  >
110
- <div className="w-4 h-4 border-2 border-ods-border border-t-[#FFC008] rounded-full animate-spin" />
110
+ <div className="w-4 h-4 border-2 border-ods-border border-t-ods-accent rounded-full animate-spin" />
111
111
  </div>
112
112
  )}
113
113
  </div>
@@ -20,7 +20,7 @@ import { ShellTypeValues } from './types/shell.types'
20
20
  // With custom wrapper and icon class overrides
21
21
  <ShellTypeBadge
22
22
  shellType={ShellTypeValues.PYTHON}
23
- className="bg-ods-surface-secondary px-2 py-1 rounded"
23
+ className="bg-ods-bg-surface px-2 py-1 rounded"
24
24
  iconClassName="opacity-75"
25
25
  />
26
26
 
@@ -33,7 +33,7 @@ export const CveLink: React.FC<CveLinkProps> = ({
33
33
  target="_blank"
34
34
  rel="noopener noreferrer"
35
35
  className={cn(
36
- 'inline-flex items-center gap-2 font-medium text-[18px] leading-[20px] text-ods-text-primary font-mono hover:text-ods-accent transition-colors group',
36
+ 'inline-flex items-center gap-2 text-code text-ods-text-primary hover:text-ods-accent transition-colors group',
37
37
  className
38
38
  )}
39
39
  >
@@ -136,7 +136,7 @@ export const ScriptArguments: React.FC<ScriptArgumentsProps> = ({
136
136
  placeholder={valuePlaceholder}
137
137
  disabled={disabled}
138
138
  className={cn(
139
- !arg.value && 'placeholder:text-[#888]'
139
+ !arg.value && 'placeholder:text-ods-text-muted'
140
140
  )}
141
141
  />
142
142
  </div>
@@ -147,7 +147,7 @@ export const ScriptArguments: React.FC<ScriptArgumentsProps> = ({
147
147
  onClick={() => handleDelete(arg.id)}
148
148
  disabled={disabled}
149
149
  aria-label="Delete argument"
150
- leftIcon={<Trash2 className="size-4 md:size-6 " color="var(--ods-attention-red-error)" />}
150
+ leftIcon={<Trash2 className="size-4 md:size-6 " color="var(--color-error)" />}
151
151
  />
152
152
  </div>
153
153
  </div>
@@ -91,7 +91,7 @@ function InfoCell({ label, value, avatar, className }: InfoCellProps) {
91
91
  className="size-full object-cover"
92
92
  />
93
93
  ) : (
94
- <div className="size-full flex items-center justify-center text-ods-text-secondary text-sm font-medium">
94
+ <div className="size-full flex items-center justify-center text-ods-text-secondary text-h6">
95
95
  {avatar.initials || getInitials(avatar.name)}
96
96
  </div>
97
97
  )}
@@ -100,10 +100,10 @@ function InfoCell({ label, value, avatar, className }: InfoCellProps) {
100
100
 
101
101
  {/* Text content */}
102
102
  <div className="flex flex-col min-w-0">
103
- <span className="text-ods-text-primary font-['DM_Sans'] text-[14px] leading-[20px] md:text-[18px] md:leading-[24px] font-medium truncate" title={value}>
103
+ <span className="text-ods-text-primary text-h4 truncate" title={value}>
104
104
  {value}
105
105
  </span>
106
- <span className="text-ods-text-secondary font-['DM_Sans'] text-[12px] leading-[16px] md:text-[14px] md:leading-[20px] font-medium truncate">
106
+ <span className="text-ods-text-secondary text-h6 truncate">
107
107
  {label}
108
108
  </span>
109
109
  </div>
@@ -148,11 +148,11 @@ export const ScriptInfoSection: React.FC<ScriptInfoSectionProps> = ({
148
148
  {/* Header row with title and description */}
149
149
  <div className="p-4 border-b border-ods-border">
150
150
  <div className="flex flex-col gap-1">
151
- <h3 className="text-ods-text-primary font-['DM_Sans'] text-[14px] leading-[20px] md:text-[18px] md:leading-[24px] font-medium">
151
+ <h3 className="text-ods-text-primary text-h4">
152
152
  {headline}
153
153
  </h3>
154
154
  {subheadline && (
155
- <p className="text-ods-text-secondary font-['DM_Sans'] text-[12px] leading-[16px] md:text-[14px] md:leading-[20px] font-medium break-words">
155
+ <p className="text-ods-text-secondary text-h6 break-words">
156
156
  {subheadline}
157
157
  </p>
158
158
  )}
@@ -39,11 +39,11 @@ const shellIconMap: Record<ShellType, ShellIconConfig> = {
39
39
  },
40
40
  [ShellTypeValues.CMD]: {
41
41
  icon: CmdIcon,
42
- props: { size: 16, color: '#888888' }
42
+ props: { size: 16, color: 'var(--color-text-secondary)' }
43
43
  },
44
44
  [ShellTypeValues.BASH]: {
45
45
  icon: BashIcon,
46
- props: { size: 16, color: '#888888' }
46
+ props: { size: 16, color: 'var(--color-text-secondary)' }
47
47
  },
48
48
  [ShellTypeValues.PYTHON]: {
49
49
  icon: PythonLogoIcon,
@@ -51,21 +51,21 @@ const shellIconMap: Record<ShellType, ShellIconConfig> = {
51
51
  },
52
52
  [ShellTypeValues.NUSHELL]: {
53
53
  icon: NushellIcon,
54
- props: { size: 16, color: '#888888' }
54
+ props: { size: 16, color: 'var(--color-text-secondary)' }
55
55
  },
56
56
  [ShellTypeValues.DENO]: {
57
57
  icon: DenoIcon,
58
- props: { size: 16, color: '#888888' }
58
+ props: { size: 16, color: 'var(--color-text-secondary)' }
59
59
  },
60
60
  [ShellTypeValues.SHELL]: {
61
61
  icon: ShellIcon,
62
- props: { size: 16, color: '#888888' }
62
+ props: { size: 16, color: 'var(--color-text-secondary)' }
63
63
  }
64
64
  } as const
65
65
 
66
66
  const defaultIconConfig: ShellIconConfig = {
67
67
  icon: ShellIcon,
68
- props: { size: 16, color: '#888888' }
68
+ props: { size: 16, color: 'var(--color-text-secondary)' }
69
69
  }
70
70
 
71
71
  export interface ShellTypeBadgeProps {
@@ -38,13 +38,13 @@ export const SoftwareInfo: React.FC<SoftwareInfoProps> = ({
38
38
  {name}
39
39
  </div>
40
40
  {version && (
41
- <div className="px-2 py-1 bg-ods-system-greys-soft-grey-action rounded text-ods-text-secondary font-['DM_Sans'] font-normal text-[16px] leading-[20px]">
41
+ <div className="px-2 py-1 bg-ods-bg-surface rounded text-ods-text-secondary text-h6">
42
42
  {version}
43
43
  </div>
44
44
  )}
45
45
  </div>
46
46
  {vendor && (
47
- <div className="font-['DM_Sans'] font-normal text-[16px] leading-[16px] text-ods-text-secondary">
47
+ <div className="text-h6 text-ods-text-secondary">
48
48
  {vendor}
49
49
  </div>
50
50
  )}
@@ -23,30 +23,30 @@ interface PricingDisplayProps {
23
23
  export const PRICING_STYLES = {
24
24
  // Comparison table style (current default)
25
25
  comparison: {
26
- priceTextSize: 'text-[16px]',
26
+ priceTextSize: 'text-h6',
27
27
  priceTextColor: 'text-ods-text-primary',
28
- secondaryTextSize: 'text-[16px]',
28
+ secondaryTextSize: 'text-h6',
29
29
  secondaryTextColor: 'text-ods-text-secondary',
30
30
  showTildePrefix: false,
31
- fontFamily: "font-['DM_Sans']"
31
+ fontFamily: 'font-body'
32
32
  },
33
33
  // Vendor dropdown compact style (Figma design)
34
34
  compact: {
35
- priceTextSize: 'text-[12px]',
35
+ priceTextSize: 'text-h6',
36
36
  priceTextColor: 'text-ods-text-secondary',
37
- secondaryTextSize: 'text-[12px]',
37
+ secondaryTextSize: 'text-h6',
38
38
  secondaryTextColor: 'text-ods-text-secondary',
39
39
  showTildePrefix: true,
40
- fontFamily: "font-['DM_Sans']"
40
+ fontFamily: 'font-body'
41
41
  },
42
42
  // Card style for vendor cards
43
43
  card: {
44
- priceTextSize: 'text-[14px]',
44
+ priceTextSize: 'text-h6',
45
45
  priceTextColor: 'text-ods-text-primary',
46
- secondaryTextSize: 'text-[14px]',
46
+ secondaryTextSize: 'text-h6',
47
47
  secondaryTextColor: 'text-ods-text-secondary',
48
48
  showTildePrefix: true,
49
- fontFamily: "font-['DM_Sans']"
49
+ fontFamily: 'font-body'
50
50
  }
51
51
  } as const
52
52
 
@@ -10,18 +10,18 @@ export function ProfileLoadingSkeleton({ className }: ProfileLoadingSkeletonProp
10
10
  <div className={cn("space-y-6", className)}>
11
11
  {/* Header skeleton */}
12
12
  <div className="flex items-center space-x-4">
13
- <div className="h-16 w-16 bg-gray-200 rounded-full animate-pulse" />
13
+ <div className="h-16 w-16 bg-ods-skeleton rounded-full animate-pulse" />
14
14
  <div className="space-y-2">
15
- <div className="h-4 w-32 bg-gray-200 rounded animate-pulse" />
16
- <div className="h-3 w-24 bg-gray-200 rounded animate-pulse" />
15
+ <div className="h-4 w-32 bg-ods-skeleton rounded animate-pulse" />
16
+ <div className="h-3 w-24 bg-ods-skeleton rounded animate-pulse" />
17
17
  </div>
18
18
  </div>
19
19
 
20
20
  {/* Content skeleton */}
21
21
  <div className="space-y-4">
22
- <div className="h-4 w-full bg-gray-200 rounded animate-pulse" />
23
- <div className="h-4 w-3/4 bg-gray-200 rounded animate-pulse" />
24
- <div className="h-4 w-1/2 bg-gray-200 rounded animate-pulse" />
22
+ <div className="h-4 w-full bg-ods-skeleton rounded animate-pulse" />
23
+ <div className="h-4 w-3/4 bg-ods-skeleton rounded animate-pulse" />
24
+ <div className="h-4 w-1/2 bg-ods-skeleton rounded animate-pulse" />
25
25
  </div>
26
26
  </div>
27
27
  )
@@ -730,7 +730,7 @@ export function RelatedContentSection({
730
730
  const skeletonType = includeTypes?.[0] ?? entityType ?? 'blog_post_existing';
731
731
  return (
732
732
  <div className="space-y-8">
733
- <h2 className="text-2xl font-bold text-ods-text-primary">{title}</h2>
733
+ <h2 className="text-h2 text-ods-text-primary">{title}</h2>
734
734
  <div className={gridClassFor(columns)}>
735
735
  {Array.from({ length: 3 }).map((_, i) => (
736
736
  <div key={i}>{renderSkeletonForType(skeletonType, 'default', adminCampaignCard)}</div>
@@ -774,7 +774,7 @@ export function RelatedContentSection({
774
774
 
775
775
  return (
776
776
  <div className="space-y-8">
777
- <h2 className="text-2xl font-bold text-ods-text-primary">{title}</h2>
777
+ <h2 className="text-h2 text-ods-text-primary">{title}</h2>
778
778
  {orderedTypes.map((type) => (
779
779
  <ContentGroup
780
780
  key={type}
@@ -787,7 +787,7 @@ export function RelatedContentSection({
787
787
  extras={extras}
788
788
  adminCampaignCard={adminCampaignCard}
789
789
  heading={
790
- <h3 className="font-['Azeret_Mono'] text-[14px] font-semibold uppercase text-ods-text-secondary tracking-wider">
790
+ <h3 className="text-h5 font-semibold text-ods-text-secondary">
791
791
  {getContentRefLabelOrTitleCase(type)}
792
792
  </h3>
793
793
  }
@@ -27,7 +27,7 @@ export function ResultsCount({
27
27
 
28
28
  return (
29
29
  <div className="mb-6">
30
- <p className="text-ods-text-secondary text-sm font-['DM_Sans']">
30
+ <p className="text-ods-text-secondary text-h6">
31
31
  {totalResults > 0 && (
32
32
  <>
33
33
  Showing {startIndex}-{endIndex} of {totalResults} {displayType}
@@ -89,7 +89,7 @@ export function DeliveryRow({
89
89
  {/* Left: caption (optional) + title + subtitle + description */}
90
90
  <div className="flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]">
91
91
  {caption && (
92
- <p className="text-xs font-medium uppercase tracking-wider text-ods-text-secondary">
92
+ <p className="text-h5 text-ods-text-secondary">
93
93
  {caption}
94
94
  </p>
95
95
  )}
@@ -85,7 +85,7 @@ export function DeliveryTable({ items, isLoading = false }: DeliveryTableProps)
85
85
  if (items.length === 0) {
86
86
  return (
87
87
  <div className="bg-ods-card border border-ods-border rounded-[6px] p-[40px] text-center w-full">
88
- <p className="text-ods-text-secondary text-[14px] font-['DM_Sans'] font-medium">
88
+ <p className="text-h6 text-ods-text-secondary">
89
89
  No tasks available
90
90
  </p>
91
91
  </div>
@@ -107,7 +107,7 @@ export function DevSectionView({ sectionKey, hero, preControls, children, showHe
107
107
  {hero.icon}
108
108
  {hero.title ?? section.hero.title}
109
109
  </h1>
110
- <p className="font-['DM_Sans'] font-medium text-[18px] leading-[28px] text-ods-text-secondary max-w-3xl">
110
+ <p className="text-h4 text-ods-text-secondary max-w-3xl">
111
111
  {hero.description}
112
112
  </p>
113
113
  </div>
@@ -56,14 +56,14 @@ export function DocSearchResultRow({
56
56
  </span>
57
57
  <div className="min-w-0 flex-1">
58
58
  <div
59
- className={`text-sm font-medium leading-5 truncate ${
59
+ className={`text-h6 truncate ${
60
60
  isHighlighted ? 'text-ods-accent' : 'text-ods-text-primary'
61
61
  }`}
62
62
  >
63
63
  {result.title || result.path}
64
64
  </div>
65
65
  {!isGroup && result.path?.includes('/') && (
66
- <div className="text-xs leading-4 text-ods-text-secondary truncate mt-0.5">
66
+ <div className="text-h6 text-ods-text-secondary truncate mt-0.5">
67
67
  {formatRelativePath(result.path)}
68
68
  </div>
69
69
  )}
@@ -110,7 +110,7 @@ export function LegalDocumentPage({
110
110
  const inner = (
111
111
  <PageLayout title={title} subtitle={subtitle} backButton={backCfg} titleSize="h1" titleWrap>
112
112
  {data?.sourceFile && (
113
- <p className="font-['DM_Sans'] text-sm text-ods-text-secondary opacity-75">Source: {data.sourceFile}</p>
113
+ <p className="text-h6 text-ods-text-secondary opacity-75">Source: {data.sourceFile}</p>
114
114
  )}
115
115
 
116
116
  <div className="flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1">
@@ -134,9 +134,9 @@ export function LegalDocumentPage({
134
134
  </div>
135
135
  ) : error ? (
136
136
  <div className="text-center space-y-4">
137
- <div className="bg-red-900/20 border border-red-700 rounded-lg p-6">
138
- <p className="text-red-400 mb-2">{errorTitle}</p>
139
- <p className="text-red-300 text-sm">{error}</p>
137
+ <div className="bg-ods-error-secondary border border-ods-error rounded-lg p-6">
138
+ <p className="text-ods-error mb-2">{errorTitle}</p>
139
+ <p className="text-ods-error text-h6">{error}</p>
140
140
  </div>
141
141
  <div className="text-ods-text-secondary">
142
142
  <p>{errorContactPrompt}</p>
@@ -153,7 +153,7 @@ export function LegalDocumentPage({
153
153
  />
154
154
  ) : (
155
155
  <div className="text-center text-ods-text-secondary py-16">
156
- <p className="text-xl">{emptyStateMessage}</p>
156
+ <p className="text-h4">{emptyStateMessage}</p>
157
157
  <p className="mt-2">
158
158
  Please contact{' '}
159
159
  <a href={`mailto:${contactEmail}`} className="text-ods-accent hover:underline">
@@ -69,7 +69,7 @@ export function OnboardingStepCard({
69
69
  <h3 className="text-h4 text-ods-text-primary truncate" title={step.title}>
70
70
  {step.title}
71
71
  </h3>
72
- <p className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate h-[20px]" title={step.description}>
72
+ <p className="text-h6 text-ods-text-secondary truncate h-[20px]" title={step.description}>
73
73
  {step.description}
74
74
  </p>
75
75
  </div>