@flamingo-stack/openframe-frontend-core 0.0.439-snapshot.20260717095442 → 0.0.439

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-QAG357PE.js → chunk-2ELBNZJ3.js} +7 -7
  2. package/dist/chunk-2ELBNZJ3.js.map +1 -0
  3. package/dist/{chunk-IZ6A6K6N.cjs → chunk-3WJQL4DN.cjs} +25 -25
  4. package/dist/chunk-3WJQL4DN.cjs.map +1 -0
  5. package/dist/{chunk-6CITW5BD.js → chunk-4ACSUJ7Q.js} +10 -10
  6. package/dist/chunk-4ACSUJ7Q.js.map +1 -0
  7. package/dist/{chunk-JYI4R25Q.js → chunk-7WM77CSW.js} +5 -5
  8. package/dist/chunk-7WM77CSW.js.map +1 -0
  9. package/dist/{chunk-TAQMYVO6.cjs → chunk-AUJXLVXA.cjs} +42 -42
  10. package/dist/{chunk-TAQMYVO6.cjs.map → chunk-AUJXLVXA.cjs.map} +1 -1
  11. package/dist/{chunk-UFBUQO7Z.cjs → chunk-C3FH53AP.cjs} +19 -19
  12. package/dist/{chunk-UFBUQO7Z.cjs.map → chunk-C3FH53AP.cjs.map} +1 -1
  13. package/dist/{chunk-FPE3SQ5D.js → chunk-COMBYYQY.js} +13 -13
  14. package/dist/chunk-COMBYYQY.js.map +1 -0
  15. package/dist/{chunk-J5NO7PAG.cjs → chunk-EE5NH5SH.cjs} +3 -3
  16. package/dist/{chunk-J5NO7PAG.cjs.map → chunk-EE5NH5SH.cjs.map} +1 -1
  17. package/dist/{chunk-SM26C2L7.js → chunk-EGRZHR7J.js} +9 -9
  18. package/dist/chunk-EGRZHR7J.js.map +1 -0
  19. package/dist/{chunk-W3JZXLJ2.js → chunk-F7YVI54P.js} +10 -10
  20. package/dist/chunk-F7YVI54P.js.map +1 -0
  21. package/dist/{chunk-63TSTDME.js → chunk-G5FALXNO.js} +21 -21
  22. package/dist/chunk-G5FALXNO.js.map +1 -0
  23. package/dist/{chunk-DUQQEQ7G.cjs → chunk-HTVVXVJL.cjs} +1594 -1431
  24. package/dist/chunk-HTVVXVJL.cjs.map +1 -0
  25. package/dist/{chunk-JNC4LVD6.cjs → chunk-IAN7GUIV.cjs} +42 -42
  26. package/dist/chunk-IAN7GUIV.cjs.map +1 -0
  27. package/dist/{chunk-PYR4LVAF.cjs → chunk-IMK6RUEC.cjs} +10 -10
  28. package/dist/chunk-IMK6RUEC.cjs.map +1 -0
  29. package/dist/{chunk-LFWPWIAC.cjs → chunk-M3LD6DNE.cjs} +16 -16
  30. package/dist/{chunk-LFWPWIAC.cjs.map → chunk-M3LD6DNE.cjs.map} +1 -1
  31. package/dist/{chunk-KUXGQ2FQ.cjs → chunk-M6QGB6DC.cjs} +36 -36
  32. package/dist/chunk-M6QGB6DC.cjs.map +1 -0
  33. package/dist/{chunk-QO6MCQYE.cjs → chunk-N2TJ3HAM.cjs} +9 -9
  34. package/dist/chunk-N2TJ3HAM.cjs.map +1 -0
  35. package/dist/{chunk-ZQYFDYWV.js → chunk-NQQ4NLUT.js} +4461 -4298
  36. package/dist/chunk-NQQ4NLUT.js.map +1 -0
  37. package/dist/{chunk-Y3NFB6HR.js → chunk-P7PISHM5.js} +5 -5
  38. package/dist/chunk-P7PISHM5.js.map +1 -0
  39. package/dist/{chunk-YZJUHEPZ.js → chunk-PBTY7AH5.js} +95 -95
  40. package/dist/chunk-PBTY7AH5.js.map +1 -0
  41. package/dist/{chunk-7KNOHGMI.js → chunk-PEIR7D25.js} +2 -2
  42. package/dist/{chunk-7KDR5P23.js → chunk-QXYOGJQJ.js} +2 -2
  43. package/dist/{chunk-LUKRPHEW.cjs → chunk-R46QEE3R.cjs} +96 -96
  44. package/dist/chunk-R46QEE3R.cjs.map +1 -0
  45. package/dist/{chunk-IPEIOR77.cjs → chunk-RQQZF6G6.cjs} +130 -130
  46. package/dist/chunk-RQQZF6G6.cjs.map +1 -0
  47. package/dist/{chunk-2BTDPDME.js → chunk-RVWC4P3H.js} +9 -9
  48. package/dist/chunk-RVWC4P3H.js.map +1 -0
  49. package/dist/{chunk-JOH5D76X.cjs → chunk-VWGF6IFR.cjs} +108 -108
  50. package/dist/chunk-VWGF6IFR.cjs.map +1 -0
  51. package/dist/{chunk-IAZ5AN2E.js → chunk-WAGTZVQN.js} +30 -30
  52. package/dist/chunk-WAGTZVQN.js.map +1 -0
  53. package/dist/{chunk-AGV26PUR.js → chunk-WPVBTVI3.js} +6 -6
  54. package/dist/{chunk-AGV26PUR.js.map → chunk-WPVBTVI3.js.map} +1 -1
  55. package/dist/{chunk-XMCVUYKC.cjs → chunk-WZ6TCAYQ.cjs} +14 -14
  56. package/dist/chunk-WZ6TCAYQ.cjs.map +1 -0
  57. package/dist/{chunk-7QP65IE4.cjs → chunk-ZMUFTGL7.cjs} +5 -5
  58. package/dist/{chunk-7QP65IE4.cjs.map → chunk-ZMUFTGL7.cjs.map} +1 -1
  59. package/dist/components/accordion.d.ts +8 -0
  60. package/dist/components/accordion.d.ts.map +1 -0
  61. package/dist/components/alert-dialog.d.ts +21 -0
  62. package/dist/components/alert-dialog.d.ts.map +1 -0
  63. package/dist/components/alert.d.ts +9 -0
  64. package/dist/components/alert.d.ts.map +1 -0
  65. package/dist/components/badge.d.ts +10 -0
  66. package/dist/components/badge.d.ts.map +1 -0
  67. package/dist/components/breadcrumb.d.ts +20 -0
  68. package/dist/components/breadcrumb.d.ts.map +1 -0
  69. package/dist/components/case-studies/index.cjs +15 -15
  70. package/dist/components/case-studies/index.cjs.map +1 -1
  71. package/dist/components/case-studies/index.js +9 -9
  72. package/dist/components/case-studies/index.js.map +1 -1
  73. package/dist/components/chat/approval-request-message.d.ts.map +1 -1
  74. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  75. package/dist/components/chat/index.cjs +4 -4
  76. package/dist/components/chat/index.js +3 -3
  77. package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
  78. package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
  79. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  80. package/dist/components/chevron-button.d.ts +14 -0
  81. package/dist/components/chevron-button.d.ts.map +1 -0
  82. package/dist/components/contact/index.cjs +5 -5
  83. package/dist/components/contact/index.js +4 -4
  84. package/dist/components/dialog.d.ts +29 -0
  85. package/dist/components/dialog.d.ts.map +1 -0
  86. package/dist/components/docs/index.cjs +7 -7
  87. package/dist/components/docs/index.js +6 -6
  88. package/dist/components/dropdown-menu.d.ts +28 -0
  89. package/dist/components/dropdown-menu.d.ts.map +1 -0
  90. package/dist/components/embeds/index.cjs +5 -5
  91. package/dist/components/embeds/index.js +4 -4
  92. package/dist/components/faq/index.cjs +6 -6
  93. package/dist/components/faq/index.js +5 -5
  94. package/dist/components/features/index.cjs +4 -4
  95. package/dist/components/features/index.js +3 -3
  96. package/dist/components/help-center-pages/index.cjs +23 -23
  97. package/dist/components/help-center-pages/index.js +14 -14
  98. package/dist/components/index.cjs +256 -262
  99. package/dist/components/index.cjs.map +1 -1
  100. package/dist/components/index.js +111 -117
  101. package/dist/components/index.js.map +1 -1
  102. package/dist/components/input.d.ts +8 -0
  103. package/dist/components/input.d.ts.map +1 -0
  104. package/dist/components/label.d.ts +6 -0
  105. package/dist/components/label.d.ts.map +1 -0
  106. package/dist/components/menubar.d.ts +34 -0
  107. package/dist/components/menubar.d.ts.map +1 -0
  108. package/dist/components/msp-display.d.ts.map +1 -1
  109. package/dist/components/navigation/index.cjs +4 -4
  110. package/dist/components/navigation/index.js +3 -3
  111. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  112. package/dist/components/navigation-menu.d.ts +13 -0
  113. package/dist/components/navigation-menu.d.ts.map +1 -0
  114. package/dist/components/onboarding-guides/index.cjs +8 -8
  115. package/dist/components/onboarding-guides/index.js +7 -7
  116. package/dist/components/pricing-display.d.ts +9 -9
  117. package/dist/components/related-content/index.cjs +6 -6
  118. package/dist/components/related-content/index.js +5 -5
  119. package/dist/components/select.d.ts +14 -0
  120. package/dist/components/select.d.ts.map +1 -0
  121. package/dist/components/sidebar.d.ts +67 -0
  122. package/dist/components/sidebar.d.ts.map +1 -0
  123. package/dist/components/square-avatar.d.ts +21 -0
  124. package/dist/components/square-avatar.d.ts.map +1 -0
  125. package/dist/components/table.d.ts +11 -0
  126. package/dist/components/table.d.ts.map +1 -0
  127. package/dist/components/tabs.d.ts +18 -0
  128. package/dist/components/tabs.d.ts.map +1 -0
  129. package/dist/components/tickets/index.cjs +7 -7
  130. package/dist/components/tickets/index.js +6 -6
  131. package/dist/components/toast/index.cjs +5 -5
  132. package/dist/components/toast/index.cjs.map +1 -1
  133. package/dist/components/toast/index.js +5 -5
  134. package/dist/components/toast/index.js.map +1 -1
  135. package/dist/components/toggle.d.ts +13 -0
  136. package/dist/components/toggle.d.ts.map +1 -0
  137. package/dist/components/ui/bullet-list.d.ts.map +1 -1
  138. package/dist/components/ui/drawer.d.ts +1 -1
  139. package/dist/components/ui/drawer.d.ts.map +1 -1
  140. package/dist/components/ui/file-manager/index.cjs +73 -73
  141. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  142. package/dist/components/ui/file-manager/index.js +24 -24
  143. package/dist/components/ui/file-manager/index.js.map +1 -1
  144. package/dist/components/ui/index.cjs +4 -4
  145. package/dist/components/ui/index.js +3 -3
  146. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  147. package/dist/components/ui/square-avatar.d.ts +0 -3
  148. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  149. package/dist/components/user-display.d.ts.map +1 -1
  150. package/dist/components/vendor-tag.d.ts.map +1 -1
  151. package/dist/hooks/index.cjs +2 -2
  152. package/dist/hooks/index.js +1 -1
  153. package/dist/index.cjs +4 -4
  154. package/dist/index.js +3 -3
  155. package/dist/tailwind.config.cjs +5 -38
  156. package/dist/tailwind.config.cjs.map +1 -1
  157. package/dist/tailwind.config.js +5 -38
  158. package/dist/tailwind.config.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/ODS_TOKEN_RULES.md +0 -5
  161. package/src/components/.accordion.md +42 -0
  162. package/src/components/.alert-dialog.md +58 -0
  163. package/src/components/.alert.md +43 -0
  164. package/src/components/.badge.md +40 -0
  165. package/src/components/.breadcrumb.md +54 -0
  166. package/src/components/.chevron-button.md +46 -0
  167. package/src/components/.dialog.md +60 -0
  168. package/src/components/.dropdown-menu.md +51 -0
  169. package/src/components/.footer.md +2 -2
  170. package/src/components/.input.md +40 -0
  171. package/src/components/.label.md +41 -0
  172. package/src/components/.menubar.md +49 -0
  173. package/src/components/.navigation-menu.md +44 -0
  174. package/src/components/.select.md +54 -0
  175. package/src/components/.sidebar.md +58 -0
  176. package/src/components/.square-avatar.md +42 -0
  177. package/src/components/.table.md +51 -0
  178. package/src/components/.tabs.md +38 -0
  179. package/src/components/.toggle.md +49 -0
  180. package/src/components/accordion.tsx +56 -0
  181. package/src/components/alert-dialog.tsx +141 -0
  182. package/src/components/alert.tsx +59 -0
  183. package/src/components/announcement-bar.tsx +1 -1
  184. package/src/components/authors/author-detail-view.tsx +3 -3
  185. package/src/components/badge.tsx +30 -0
  186. package/src/components/breadcrumb.tsx +115 -0
  187. package/src/components/calendar.tsx +2 -2
  188. package/src/components/case-studies/share-experience-section.tsx +5 -5
  189. package/src/components/categories-cart.tsx +6 -6
  190. package/src/components/category-card.tsx +5 -5
  191. package/src/components/chart.tsx +3 -3
  192. package/src/components/chat/approval-request-message.tsx +5 -2
  193. package/src/components/chat/chat-attachment-bar.tsx +3 -3
  194. package/src/components/chat/chat-message-enhanced.tsx +1 -1
  195. package/src/components/chat/chat-message-list.tsx +1 -1
  196. package/src/components/chat/chat-message-row.tsx +3 -3
  197. package/src/components/chat/chat-quick-action.tsx +1 -1
  198. package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
  199. package/src/components/chat/chat-sidebar.tsx +6 -6
  200. package/src/components/chat/chat-typing-indicator.tsx +1 -1
  201. package/src/components/chat/context-compaction-display.tsx +1 -1
  202. package/src/components/chat/embeddable-chat.tsx +3 -3
  203. package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
  204. package/src/components/chat/entity-cards/blog-card.tsx +8 -5
  205. package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
  206. package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
  207. package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
  208. package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
  209. package/src/components/chat/entity-cards/dispatch.tsx +1 -1
  210. package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
  211. package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
  212. package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
  213. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
  214. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
  215. package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
  216. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
  217. package/src/components/chat/entity-cards/program-card.tsx +12 -12
  218. package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
  219. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
  220. package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
  221. package/src/components/chat/error-message-display.tsx +2 -2
  222. package/src/components/chat/mingo-info-card.tsx +2 -2
  223. package/src/components/chat/model-display.tsx +7 -7
  224. package/src/components/chat/quick-action-chip.tsx +1 -1
  225. package/src/components/chat/source-action-button.tsx +2 -2
  226. package/src/components/chat/tool-call-blocks.tsx +5 -3
  227. package/src/components/chat/utils/.chip-action-class.md +1 -1
  228. package/src/components/chat/utils/.chip-styles.md +2 -2
  229. package/src/components/chat/utils/chip-action-class.ts +1 -1
  230. package/src/components/chat/utils/chip-styles.ts +2 -2
  231. package/src/components/chat/utils/compact-card-classes.ts +3 -3
  232. package/src/components/chevron-button.tsx +68 -0
  233. package/src/components/command.tsx +3 -3
  234. package/src/components/comment-card.tsx +1 -1
  235. package/src/components/contact/contact-form.tsx +9 -9
  236. package/src/components/context-menu.tsx +5 -5
  237. package/src/components/date-time-picker.tsx +2 -2
  238. package/src/components/dialog.tsx +150 -0
  239. package/src/components/docs/doc-viewer.tsx +4 -4
  240. package/src/components/dropdown-menu.tsx +200 -0
  241. package/src/components/embeds/figma-embed.tsx +2 -2
  242. package/src/components/embeds/file-download-card.tsx +2 -2
  243. package/src/components/embeds/google-sheets-viewer.tsx +1 -1
  244. package/src/components/embeds/linkedin-embed-client.tsx +3 -3
  245. package/src/components/embeds/og-link-preview.tsx +14 -14
  246. package/src/components/embeds/pdf-viewer.tsx +1 -1
  247. package/src/components/embeds/reddit-embed-client.tsx +9 -9
  248. package/src/components/embeds/twitter-embed-client.tsx +9 -9
  249. package/src/components/empty-state.tsx +5 -5
  250. package/src/components/faq/faq-section.tsx +1 -1
  251. package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
  252. package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
  253. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
  254. package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
  255. package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
  256. package/src/components/features/array-entry-manager.tsx +7 -7
  257. package/src/components/features/auth-providers-list.tsx +1 -1
  258. package/src/components/features/board/ticket-card.tsx +1 -1
  259. package/src/components/features/changelog-manager.tsx +10 -10
  260. package/src/components/features/command-box.tsx +2 -2
  261. package/src/components/features/entity-summary-editor.tsx +3 -3
  262. package/src/components/features/figma-prototype-viewer.tsx +9 -9
  263. package/src/components/features/filters-dropdown.tsx +2 -2
  264. package/src/components/features/highlight-config-section.tsx +3 -3
  265. package/src/components/features/highlight-video-combined-section.tsx +2 -2
  266. package/src/components/features/highlight-video-preview.tsx +2 -2
  267. package/src/components/features/highlight-video-section.tsx +9 -9
  268. package/src/components/features/media-gallery-manager.tsx +14 -14
  269. package/src/components/features/og-editor-preview.tsx +4 -4
  270. package/src/components/features/os-type-badge-group.tsx +1 -1
  271. package/src/components/features/os-type-badge.tsx +2 -2
  272. package/src/components/features/platform-badge.tsx +4 -4
  273. package/src/components/features/policy-configuration-panel.tsx +6 -6
  274. package/src/components/features/provider-button.tsx +1 -1
  275. package/src/components/features/push-button-selector.tsx +21 -21
  276. package/src/components/features/release-media-manager.tsx +16 -16
  277. package/src/components/features/section-selector.tsx +8 -8
  278. package/src/components/features/select-button.tsx +4 -4
  279. package/src/components/features/seo-editor-preview.tsx +20 -20
  280. package/src/components/features/social-links-manager.tsx +3 -3
  281. package/src/components/features/start-with-openframe-button.tsx +3 -3
  282. package/src/components/features/status-filter-component.tsx +1 -1
  283. package/src/components/features/tags-selector.tsx +6 -6
  284. package/src/components/features/transcript-summary-editor.tsx +9 -9
  285. package/src/components/features/video-bites-strip.tsx +1 -1
  286. package/src/components/features/video-ratio-tabs.tsx +1 -1
  287. package/src/components/features/video-source-selector.tsx +7 -7
  288. package/src/components/features/video.tsx +1 -1
  289. package/src/components/features/waitlist-form.tsx +3 -3
  290. package/src/components/filter-chip.tsx +13 -13
  291. package/src/components/footer.tsx +3 -3
  292. package/src/components/form.tsx +2 -2
  293. package/src/components/hero-image-uploader.tsx +3 -3
  294. package/src/components/image-cropper.tsx +2 -2
  295. package/src/components/input.tsx +39 -0
  296. package/src/components/label.tsx +19 -0
  297. package/src/components/layout/page-container.tsx +6 -6
  298. package/src/components/layout/page-heading.tsx +1 -1
  299. package/src/components/loading/card-skeleton.tsx +2 -2
  300. package/src/components/loading/category-card-skeleton.tsx +1 -1
  301. package/src/components/loading/margin-report-skeleton.tsx +22 -22
  302. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  303. package/src/components/loading/page-layout-skeleton.tsx +83 -83
  304. package/src/components/loading/unified-skeleton.tsx +1 -1
  305. package/src/components/loading/users-grid-skeleton.tsx +2 -2
  306. package/src/components/logs-list.tsx +8 -8
  307. package/src/components/media-carousel.tsx +7 -7
  308. package/src/components/menubar.tsx +236 -0
  309. package/src/components/metric-value.tsx +2 -2
  310. package/src/components/msp-display.tsx +2 -8
  311. package/src/components/navigation/app-header.tsx +6 -6
  312. package/src/components/navigation/header-organization-filter.tsx +2 -2
  313. package/src/components/navigation/header.tsx +4 -4
  314. package/src/components/navigation/mobile-burger-menu.tsx +7 -7
  315. package/src/components/navigation/mobile-nav-panel.tsx +1 -1
  316. package/src/components/navigation/multi-level-navigation.tsx +7 -7
  317. package/src/components/navigation/navigation-sidebar.tsx +1 -1
  318. package/src/components/navigation/sticky-section-nav.tsx +2 -2
  319. package/src/components/navigation-menu.tsx +128 -0
  320. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
  321. package/src/components/pagination.tsx +2 -2
  322. package/src/components/persistent-filter-controls.tsx +1 -1
  323. package/src/components/platform/.ShellTypeBadge.md +1 -1
  324. package/src/components/platform/CveLink.tsx +1 -1
  325. package/src/components/platform/ScriptArguments.tsx +2 -2
  326. package/src/components/platform/ScriptInfoSection.tsx +5 -5
  327. package/src/components/platform/ShellTypeBadge.tsx +6 -6
  328. package/src/components/platform/SoftwareInfo.tsx +2 -2
  329. package/src/components/pricing-display.tsx +9 -9
  330. package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
  331. package/src/components/related-content/related-content-section.tsx +3 -3
  332. package/src/components/results-count.tsx +1 -1
  333. package/src/components/select.tsx +160 -0
  334. package/src/components/shared/delivery/delivery-row.tsx +1 -1
  335. package/src/components/shared/delivery/delivery-table.tsx +1 -1
  336. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  337. package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
  338. package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
  339. package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
  340. package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
  341. package/src/components/shared/product-release/product-release-card.tsx +14 -14
  342. package/src/components/shared/product-release/release-detail-page.tsx +16 -16
  343. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
  344. package/src/components/sidebar.tsx +764 -0
  345. package/src/components/smooth-accordion.tsx +1 -1
  346. package/src/components/social-icon-row.tsx +1 -1
  347. package/src/components/sonner.tsx +5 -5
  348. package/src/components/square-avatar.tsx +61 -0
  349. package/src/components/steps.tsx +3 -3
  350. package/src/components/table.tsx +72 -0
  351. package/src/components/tabs.tsx +65 -0
  352. package/src/components/tickets/help-center-create-form.tsx +1 -1
  353. package/src/components/tickets/help-center-list.tsx +1 -1
  354. package/src/components/tickets/ticket-center.tsx +2 -2
  355. package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
  356. package/src/components/tickets/ticket-open-form.tsx +6 -6
  357. package/src/components/toggle.tsx +45 -0
  358. package/src/components/ui/.title-content-block.md +1 -1
  359. package/src/components/ui/accordion.tsx +2 -2
  360. package/src/components/ui/actions-menu.tsx +1 -1
  361. package/src/components/ui/alert-dialog.tsx +3 -3
  362. package/src/components/ui/alert.tsx +2 -2
  363. package/src/components/ui/allowed-domains-input.tsx +3 -3
  364. package/src/components/ui/autocomplete.tsx +3 -3
  365. package/src/components/ui/badge.tsx +2 -2
  366. package/src/components/ui/brand-association-card.tsx +2 -2
  367. package/src/components/ui/breadcrumb.tsx +3 -3
  368. package/src/components/ui/bullet-list.tsx +2 -2
  369. package/src/components/ui/button/button.tsx +1 -1
  370. package/src/components/ui/card.tsx +4 -4
  371. package/src/components/ui/checkbox-with-description.tsx +1 -1
  372. package/src/components/ui/chevron-button.tsx +1 -1
  373. package/src/components/ui/content-loader.tsx +16 -16
  374. package/src/components/ui/cursor-pagination.tsx +1 -1
  375. package/src/components/ui/date-picker.tsx +2 -2
  376. package/src/components/ui/device-card-compact.tsx +2 -2
  377. package/src/components/ui/device-card.tsx +3 -3
  378. package/src/components/ui/dialog.tsx +3 -3
  379. package/src/components/ui/drawer.tsx +4 -4
  380. package/src/components/ui/dropdown-menu.tsx +6 -6
  381. package/src/components/ui/error-state.tsx +9 -9
  382. package/src/components/ui/fade-preview.tsx +1 -1
  383. package/src/components/ui/field-wrapper.tsx +1 -1
  384. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
  385. package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
  386. package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
  387. package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
  388. package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
  389. package/src/components/ui/file-upload.tsx +9 -9
  390. package/src/components/ui/filter-pill-row.tsx +1 -1
  391. package/src/components/ui/floating-tooltip.tsx +1 -1
  392. package/src/components/ui/highlight-card.tsx +1 -1
  393. package/src/components/ui/hover-dropdown.tsx +1 -1
  394. package/src/components/ui/image-gallery-modal.tsx +1 -1
  395. package/src/components/ui/info-row.tsx +1 -1
  396. package/src/components/ui/input.tsx +1 -1
  397. package/src/components/ui/label.tsx +5 -5
  398. package/src/components/ui/markdown-editor.tsx +5 -4
  399. package/src/components/ui/menubar.tsx +7 -7
  400. package/src/components/ui/modal-v2.tsx +1 -1
  401. package/src/components/ui/modal.tsx +1 -1
  402. package/src/components/ui/more-actions-menu.tsx +1 -1
  403. package/src/components/ui/navigation-menu.tsx +1 -1
  404. package/src/components/ui/organization-card.tsx +8 -8
  405. package/src/components/ui/page-loader.tsx +6 -6
  406. package/src/components/ui/phone-input.tsx +1 -1
  407. package/src/components/ui/progress-bar.tsx +5 -5
  408. package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
  409. package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
  410. package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
  411. package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
  412. package/src/components/ui/release-changelog-section.tsx +2 -2
  413. package/src/components/ui/rich-markdown-renderer.tsx +6 -6
  414. package/src/components/ui/search-input.tsx +7 -7
  415. package/src/components/ui/select.tsx +1 -1
  416. package/src/components/ui/service-card.tsx +4 -4
  417. package/src/components/ui/sheet.tsx +3 -3
  418. package/src/components/ui/simple-markdown-renderer.tsx +4 -4
  419. package/src/components/ui/square-avatar.tsx +5 -9
  420. package/src/components/ui/status-badge.tsx +11 -11
  421. package/src/components/ui/status-indicator.tsx +6 -6
  422. package/src/components/ui/tab-content.tsx +1 -1
  423. package/src/components/ui/tab-navigation.tsx +2 -2
  424. package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
  425. package/src/components/ui/table/table-description-cell.tsx +1 -1
  426. package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
  427. package/src/components/ui/table/table.tsx +2 -2
  428. package/src/components/ui/tabs.tsx +1 -1
  429. package/src/components/ui/tag-search-input.tsx +1 -1
  430. package/src/components/ui/tag.tsx +23 -23
  431. package/src/components/ui/tags-input.tsx +2 -2
  432. package/src/components/ui/ticket-status-tag.tsx +1 -1
  433. package/src/components/ui/toaster.tsx +8 -8
  434. package/src/components/ui/toggle.tsx +1 -1
  435. package/src/components/ui/tooltip.tsx +1 -1
  436. package/src/components/user-display.tsx +6 -12
  437. package/src/components/user-summary-stub.tsx +4 -4
  438. package/src/components/vendor-display-button.tsx +2 -2
  439. package/src/components/vendor-icon.tsx +1 -1
  440. package/src/components/vendor-tag.tsx +10 -9
  441. package/src/components/yes-no-display.tsx +3 -3
  442. package/src/styles/ods-colors.css +0 -2
  443. package/tailwind.config.ts +4 -49
  444. package/dist/chunk-2BTDPDME.js.map +0 -1
  445. package/dist/chunk-63TSTDME.js.map +0 -1
  446. package/dist/chunk-6CITW5BD.js.map +0 -1
  447. package/dist/chunk-DUQQEQ7G.cjs.map +0 -1
  448. package/dist/chunk-FPE3SQ5D.js.map +0 -1
  449. package/dist/chunk-IAZ5AN2E.js.map +0 -1
  450. package/dist/chunk-IPEIOR77.cjs.map +0 -1
  451. package/dist/chunk-IZ6A6K6N.cjs.map +0 -1
  452. package/dist/chunk-JNC4LVD6.cjs.map +0 -1
  453. package/dist/chunk-JOH5D76X.cjs.map +0 -1
  454. package/dist/chunk-JYI4R25Q.js.map +0 -1
  455. package/dist/chunk-KUXGQ2FQ.cjs.map +0 -1
  456. package/dist/chunk-LUKRPHEW.cjs.map +0 -1
  457. package/dist/chunk-PYR4LVAF.cjs.map +0 -1
  458. package/dist/chunk-QAG357PE.js.map +0 -1
  459. package/dist/chunk-QO6MCQYE.cjs.map +0 -1
  460. package/dist/chunk-SM26C2L7.js.map +0 -1
  461. package/dist/chunk-W3JZXLJ2.js.map +0 -1
  462. package/dist/chunk-XMCVUYKC.cjs.map +0 -1
  463. package/dist/chunk-Y3NFB6HR.js.map +0 -1
  464. package/dist/chunk-YZJUHEPZ.js.map +0 -1
  465. package/dist/chunk-ZQYFDYWV.js.map +0 -1
  466. /package/dist/{chunk-7KNOHGMI.js.map → chunk-PEIR7D25.js.map} +0 -0
  467. /package/dist/{chunk-7KDR5P23.js.map → chunk-QXYOGJQJ.js.map} +0 -0
@@ -41,7 +41,7 @@ export function HighlightCard({
41
41
  width: `${desktopWidth}px`
42
42
  }}
43
43
  />
44
- <h3 className="text-h2 text-ods-text-primary relative z-10">
44
+ <h3 className="font-['Azeret_Mono'] font-semibold text-[24px] md:text-[28px] lg:text-[32px] leading-[1.25] tracking-[-0.64px] text-ods-text-primary relative z-10">
45
45
  Your{' '}
46
46
  <span style={{ color: item.categoryColor }}>
47
47
  {item.category}
@@ -190,7 +190,7 @@ export function HoverDropdown({
190
190
  // occupies the left expanding region; the optional secondary
191
191
  // action ("Ask") sits at the right as a sibling icon-button so
192
192
  // its click is independent of the primary navigation.
193
- const rowClass = 'group flex w-full items-center gap-1.5 pl-2 pr-1 py-1.5 rounded text-h6 text-ods-text-secondary hover:bg-ods-accent/10 transition-colors text-left'
193
+ const rowClass = 'group flex w-full items-center gap-1.5 pl-2 pr-1 py-1.5 rounded text-[11px] text-ods-text-secondary hover:bg-ods-accent/10 transition-colors text-left'
194
194
  const primaryClass = 'flex flex-1 items-center gap-1.5 min-w-0 hover:text-ods-accent cursor-pointer no-underline'
195
195
 
196
196
  const secondary = item.secondaryAction ? (
@@ -147,7 +147,7 @@ export function ImageGalleryModal({
147
147
 
148
148
  {/* Image Counter */}
149
149
  {images.length > 1 && (
150
- <div className="absolute bottom-4 left-1/2 -translate-x-1/2 z-[10000] px-4 py-2 rounded-full bg-black/50 text-white text-h6">
150
+ <div className="absolute bottom-4 left-1/2 -translate-x-1/2 z-[10000] px-4 py-2 rounded-full bg-black/50 text-white text-sm">
151
151
  {selectedImageIndex + 1} / {images.length}
152
152
  </div>
153
153
  )}
@@ -12,7 +12,7 @@ export function InfoRow({ label, value, icon }: InfoRowProps) {
12
12
  <div className="text-h4 text-ods-text-primary overflow-hidden text-ellipsis whitespace-nowrap">
13
13
  {label}
14
14
  </div>
15
- <div className="flex-1 bg-ods-border h-px min-h-px min-w-px" />
15
+ <div className="flex-1 bg-[#3a3a3a] h-px min-h-px min-w-px" />
16
16
  <div className="text-h4 text-ods-text-primary overflow-hidden text-ellipsis whitespace-nowrap flex items-center gap-1">
17
17
  {value}
18
18
  {icon}
@@ -26,7 +26,7 @@ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>
26
26
 
27
27
  const invalidBorderClasses = {
28
28
  error: "border-ods-error hover:border-ods-error has-[:focus]:border-ods-error",
29
- warning: "!border-ods-warning hover:!border-ods-warning has-[:focus]:!border-ods-warning",
29
+ warning: "!border-[var(--ods-attention-yellow-warning)] hover:!border-[var(--ods-attention-yellow-warning)] has-[:focus]:!border-[var(--ods-attention-yellow-warning)]",
30
30
  } as const;
31
31
 
32
32
  const Input = React.forwardRef<HTMLInputElement, InputProps>(
@@ -7,14 +7,14 @@ import { cva, type VariantProps } from "class-variance-authority"
7
7
  import { cn } from "../../utils/cn"
8
8
 
9
9
  const labelVariants = cva(
10
- "block text-ods-text-primary",
10
+ "block font-body font-medium text-ods-text-primary leading-6",
11
11
  {
12
12
  variants: {
13
13
  variant: {
14
- default: "text-h4",
15
- small: "text-h6",
16
- medium: "text-h6",
17
- large: "text-h4"
14
+ default: "text-[18px]",
15
+ small: "text-[14px]",
16
+ medium: "text-[16px]",
17
+ large: "text-[20px]"
18
18
  },
19
19
  spacing: {
20
20
  default: "mb-1",
@@ -12,8 +12,8 @@ const MARKDOWN_EDITOR_STYLE_ID = "ods-markdown-editor-styles"
12
12
  const mdEditorCSS = `
13
13
  :root { --md-editor-text-color: var(--color-text-primary) !important; }
14
14
  body .w-md-editor { background-color: var(--color-bg) !important; border: 1px solid var(--ods-system-greys-soft-grey) !important; border-radius: 6px !important; --md-editor-text-color: var(--color-text-primary) !important; --md-editor-box-shadow-color: transparent !important; box-shadow: none !important; }
15
- body .w-md-editor-area, body .w-md-editor-input, body .w-md-editor-text, body .w-md-editor-text-pre, body .w-md-editor-text-input, body .w-md-editor-text-textarea { background-color: var(--color-bg-card) !important; color: var(--color-text-primary) !important; font-family: var(--font-family-body) !important; font-size: 18px !important; font-weight: 500 !important; line-height: 24px !important; padding: 16px !important; }
16
- body .w-md-editor-text-textarea::placeholder { color: var(--color-text-secondary) !important; font-family: var(--font-family-body) !important; font-size: 18px !important; font-weight: 500 !important; }
15
+ body .w-md-editor-area, body .w-md-editor-input, body .w-md-editor-text, body .w-md-editor-text-pre, body .w-md-editor-text-input, body .w-md-editor-text-textarea { background-color: var(--color-bg-card) !important; color: var(--color-text-primary) !important; font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important; font-size: 18px !important; font-weight: 500 !important; line-height: 24px !important; padding: 16px !important; }
16
+ body .w-md-editor-text-textarea::placeholder { color: var(--color-text-secondary) !important; font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important; font-size: 18px !important; font-weight: 500 !important; }
17
17
  body .w-md-editor-text .token, body .w-md-editor-text-pre .token, body .w-md-editor-text-textarea, body .w-md-editor-text-input { color: var(--color-text-primary) !important; }
18
18
  body .w-md-editor-text-pre *, body .w-md-editor-text-textarea *, body .w-md-editor-text-input *, body .w-md-editor-text * { color: var(--color-text-primary) !important; }
19
19
  body .w-md-editor-text-pre .token.title, body .w-md-editor-text-pre .token.bold, body .w-md-editor-text-pre .token.code, body .w-md-editor-text-pre .token.string, body .w-md-editor-text-pre .token.keyword { color: var(--color-text-primary) !important; }
@@ -331,7 +331,8 @@ export function MarkdownEditor({
331
331
  placeholder,
332
332
  disabled,
333
333
  style: {
334
- fontFamily: 'var(--font-family-body)',
334
+ fontFamily:
335
+ 'DM Sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
335
336
  fontSize: "18px",
336
337
  fontWeight: 500,
337
338
  lineHeight: "24px",
@@ -344,7 +345,7 @@ export function MarkdownEditor({
344
345
  )}
345
346
 
346
347
  {uploadProgress && (
347
- <p className="text-h6 text-ods-text-secondary mt-1">{uploadProgress}</p>
348
+ <p className="text-xs text-ods-text-secondary mt-1">{uploadProgress}</p>
348
349
  )}
349
350
 
350
351
  <MarkdownEditorStyles />
@@ -38,7 +38,7 @@ const MenubarTrigger = React.forwardRef<
38
38
  <MenubarPrimitive.Trigger
39
39
  ref={ref}
40
40
  className={cn(
41
- "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
41
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
42
42
  className
43
43
  )}
44
44
  {...props}
@@ -55,7 +55,7 @@ const MenubarSubTrigger = React.forwardRef<
55
55
  <MenubarPrimitive.SubTrigger
56
56
  ref={ref}
57
57
  className={cn(
58
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
58
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
59
59
  inset && "pl-8",
60
60
  className
61
61
  )}
@@ -116,7 +116,7 @@ const MenubarItem = React.forwardRef<
116
116
  <MenubarPrimitive.Item
117
117
  ref={ref}
118
118
  className={cn(
119
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
119
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
120
120
  inset && "pl-8",
121
121
  className
122
122
  )}
@@ -132,7 +132,7 @@ const MenubarCheckboxItem = React.forwardRef<
132
132
  <MenubarPrimitive.CheckboxItem
133
133
  ref={ref}
134
134
  className={cn(
135
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
135
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
136
136
  className
137
137
  )}
138
138
  checked={checked}
@@ -155,7 +155,7 @@ const MenubarRadioItem = React.forwardRef<
155
155
  <MenubarPrimitive.RadioItem
156
156
  ref={ref}
157
157
  className={cn(
158
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
158
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
159
159
  className
160
160
  )}
161
161
  {...props}
@@ -179,7 +179,7 @@ const MenubarLabel = React.forwardRef<
179
179
  <MenubarPrimitive.Label
180
180
  ref={ref}
181
181
  className={cn(
182
- "px-2 py-1.5 text-h6 font-semibold",
182
+ "px-2 py-1.5 text-sm font-semibold",
183
183
  inset && "pl-8",
184
184
  className
185
185
  )}
@@ -207,7 +207,7 @@ const MenubarShortcut = ({
207
207
  return (
208
208
  <span
209
209
  className={cn(
210
- "ml-auto text-h6 text-muted-foreground",
210
+ "ml-auto text-xs tracking-widest text-muted-foreground",
211
211
  className
212
212
  )}
213
213
  {...props}
@@ -80,7 +80,7 @@ const Modal = React.forwardRef<HTMLDivElement, ModalProps>(
80
80
  <div
81
81
  data-state={state}
82
82
  className={cn(
83
- "absolute inset-0 bg-ods-overlay backdrop-blur-[2px] md:backdrop-blur-none",
83
+ "absolute inset-0 bg-black/50 backdrop-blur-[2px] md:backdrop-blur-none",
84
84
  "duration-200 fill-mode-forwards",
85
85
  "data-[state=open]:animate-in data-[state=open]:fade-in-0",
86
86
  "data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
@@ -58,7 +58,7 @@ const Modal = React.forwardRef<HTMLDivElement, ModalProps>(
58
58
  return (
59
59
  <div className="fixed inset-0 z-[1300] flex items-center justify-center">
60
60
  <div
61
- className="absolute inset-0 bg-ods-overlay"
61
+ className="absolute inset-0 bg-black/50"
62
62
  onClick={onClose}
63
63
  aria-hidden="true"
64
64
  />
@@ -112,7 +112,7 @@ export function MoreActionsMenu({
112
112
  {item.icon}
113
113
  </div>
114
114
  )}
115
- <span className="text-h4 text-ods-text-primary">
115
+ <span className="font-medium text-[18px] leading-6 text-ods-text-primary">
116
116
  {item.label}
117
117
  </span>
118
118
  </>
@@ -43,7 +43,7 @@ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
43
43
  const NavigationMenuItem = NavigationMenuPrimitive.Item
44
44
 
45
45
  const navigationMenuTriggerStyle = cva(
46
- "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-h6 transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
46
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
47
47
  )
48
48
 
49
49
  const NavigationMenuTrigger = React.forwardRef<
@@ -73,7 +73,7 @@ export function OrganizationCard({
73
73
  {deviceCount !== undefined && (
74
74
  <div className="absolute top-4 right-4 flex items-center gap-2 shrink-0">
75
75
  <Monitor className="w-4 h-4 text-ods-text-secondary" />
76
- <span className="text-h6 text-ods-text-secondary">
76
+ <span className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary">
77
77
  {deviceCount.toLocaleString()} devices
78
78
  </span>
79
79
  </div>
@@ -85,8 +85,8 @@ export function OrganizationCard({
85
85
  className={cn(
86
86
  "absolute top-2 right-2 h-8 w-8 rounded flex items-center justify-center z-10 transition-colors",
87
87
  actionButton.variant === 'primary'
88
- ? "bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover"
89
- : "text-ods-text-secondary hover:text-ods-error hover:bg-ods-error-secondary"
88
+ ? "bg-ods-accent text-black hover:bg-ods-accent-hover"
89
+ : "text-ods-text-secondary hover:text-red-500 hover:bg-red-100/10"
90
90
  )}
91
91
  onClick={handleActionClick}
92
92
  disabled={actionButton.disabled}
@@ -104,10 +104,10 @@ export function OrganizationCard({
104
104
  />
105
105
 
106
106
  <div className="flex-1 flex flex-col justify-center py-2 min-w-0">
107
- <h3 className="text-h3 text-ods-text-primary transition-colors truncate" title={organization.name}>
107
+ <h3 className="font-['DM_Sans'] font-bold text-lg leading-[1.33] tracking-[-0.02em] text-ods-text-primary transition-colors truncate" title={organization.name}>
108
108
  {organization.name}
109
109
  </h3>
110
- <p className="text-h6 text-ods-text-secondary truncate" title={organization.industry || organization.tier || organization.websiteUrl || "Organization"}>
110
+ <p className="font-['DM_Sans'] font-medium text-sm leading-[1.43] text-ods-text-secondary truncate" title={organization.industry || organization.tier || organization.websiteUrl || "Organization"}>
111
111
  {organization.industry || organization.tier || organization.websiteUrl || "Organization"}
112
112
  </p>
113
113
  </div>
@@ -116,7 +116,7 @@ export function OrganizationCard({
116
116
  {/* Description */}
117
117
  {organization.description && (
118
118
  <div className="w-full h-12 overflow-hidden">
119
- <p className="text-h4 text-ods-text-primary line-clamp-2" title={organization.description}>
119
+ <p className="font-['DM_Sans'] font-medium text-lg leading-[1.33] text-ods-text-primary line-clamp-2" title={organization.description}>
120
120
  {organization.description}
121
121
  </p>
122
122
  </div>
@@ -131,11 +131,11 @@ export function OrganizationCard({
131
131
  {footerStats.map((stat, index) => (
132
132
  <div key={index} className="flex items-center gap-1 flex-shrink-0">
133
133
  {stat.icon}
134
- <span className="text-h6 text-ods-text-primary">
134
+ <span className="font-['DM_Sans'] font-medium text-base text-ods-text-primary">
135
135
  {typeof stat.value === 'number' ? stat.value.toLocaleString() : stat.value}
136
136
  </span>
137
137
  {stat.label && (
138
- <span className="text-h6 text-ods-text-secondary">
138
+ <span className="font-['DM_Sans'] font-medium text-sm text-ods-text-secondary">
139
139
  {stat.label}
140
140
  </span>
141
141
  )}
@@ -46,15 +46,15 @@ export function PageLoader({
46
46
  <OpenFrameLogo
47
47
  className="w-6 h-6 animate-pulse text-ods-accent"
48
48
  upperPathColor="currentColor"
49
- lowerPathColor="var(--color-text-tertiary)"
49
+ lowerPathColor="var(--ods-text-tertiary)"
50
50
  />
51
51
  </div>
52
52
  )}
53
53
  <div className="flex flex-col items-center text-center">
54
- <p className="text-h4 text-ods-text-tertiary">
54
+ <p className="text-lg font-medium text-ods-text-tertiary leading-6">
55
55
  {title}
56
56
  </p>
57
- <p className="text-h6 text-ods-text-tertiary opacity-70 mt-1">
57
+ <p className="text-sm font-medium text-ods-text-tertiary opacity-70 leading-5 mt-1">
58
58
  {description}
59
59
  </p>
60
60
  </div>
@@ -85,16 +85,16 @@ export function CompactPageLoader({
85
85
  <OpenFrameLogo
86
86
  className="w-6 h-6 animate-pulse text-ods-accent"
87
87
  upperPathColor="currentColor"
88
- lowerPathColor="var(--color-text-tertiary)"
88
+ lowerPathColor="var(--ods-text-tertiary)"
89
89
  />
90
90
  </div>
91
91
  )}
92
92
  <div className="flex flex-col items-center text-center">
93
- <p className="text-h6 text-ods-text-tertiary">
93
+ <p className="text-base font-medium text-ods-text-tertiary">
94
94
  {title}
95
95
  </p>
96
96
  {description && (
97
- <p className="text-h6 text-ods-text-tertiary opacity-70 mt-1">
97
+ <p className="text-sm text-ods-text-tertiary opacity-70 mt-1">
98
98
  {description}
99
99
  </p>
100
100
  )}
@@ -114,7 +114,7 @@ export function PhoneInput({
114
114
  disabled={disabled}
115
115
  placeholder={placeholder}
116
116
  onKeyDown={onKeyDown}
117
- className={`min-w-0 flex-1 ${isInvalid ? '!border-ods-warning' : ''}`}
117
+ className={`min-w-0 flex-1 ${isInvalid ? '!border-[var(--ods-attention-yellow-warning)]' : ''}`}
118
118
  />
119
119
  </div>
120
120
  )
@@ -56,15 +56,15 @@ export const ProgressBar: React.FC<ProgressBarProps> = ({
56
56
  if (inverted) {
57
57
  // Inverted: high values = good (green), low values = bad (red)
58
58
  // For battery health: 100% = green, <30% = red
59
- if (progress >= criticalThreshold) return "var(--color-success)"; // high = green
59
+ if (progress >= criticalThreshold) return "var(--ods-attention-green-success)"; // high = green
60
60
  if (progress >= warningThreshold) return "var(--color-warning)"; // medium = warning
61
- return "var(--color-error)"; // low = red
61
+ return "var(--ods-attention-red-error)"; // low = red
62
62
  } else {
63
63
  // Normal: high values = bad (red), low values = good (green)
64
64
  // For disk usage: 100% = red, <70% = green
65
- if (progress >= criticalThreshold) return "var(--color-error)"; // critical red
65
+ if (progress >= criticalThreshold) return "var(--ods-attention-red-error)"; // critical red
66
66
  if (progress >= warningThreshold) return "var(--color-warning)"; // warning yellow
67
- return "var(--color-success)"; // base green
67
+ return "var(--ods-attention-green-success)"; // base green
68
68
  }
69
69
  };
70
70
 
@@ -84,7 +84,7 @@ export const ProgressBar: React.FC<ProgressBarProps> = ({
84
84
  backgroundColor:
85
85
  i < Math.round((progress / 100) * segmentCount)
86
86
  ? getColor()
87
- : "var(--color-bg-surface-active)", // unfilled segments
87
+ : "var(--ods-system-greys-soft-grey-action)", // unfilled segments
88
88
  }}
89
89
  />
90
90
  ))}
@@ -24,7 +24,7 @@ import { QueryReportTableHeader } from './query-report-table-header'
24
24
  columns={['hostname', 'ip_address', 'os_version', 'last_seen']}
25
25
  columnWidth={160}
26
26
  variant="compact"
27
- className="bg-ods-bg-surface"
27
+ className="bg-ods-surface"
28
28
  />
29
29
  ```
30
30
 
@@ -58,7 +58,7 @@ function TruncatedHeaderCell({ value, width }: { value: string; width: number })
58
58
  >
59
59
  <div
60
60
  ref={textRef}
61
- className="text-h5 text-ods-text-secondary truncate"
61
+ className="font-mono font-medium text-[14px] leading-[20px] text-ods-text-secondary uppercase tracking-[-0.28px] truncate"
62
62
  >
63
63
  {value}
64
64
  </div>
@@ -45,8 +45,8 @@ export function QueryReportTableRow({
45
45
  className={cn(
46
46
  'text-ods-text-primary',
47
47
  isCompact
48
- ? 'text-h6'
49
- : 'text-h4'
48
+ ? 'font-sans font-normal text-[14px] leading-[20px]'
49
+ : 'font-sans font-medium text-[18px] leading-[24px]'
50
50
  )}
51
51
  value={displayValue}
52
52
  />
@@ -62,7 +62,7 @@ export function QueryReportTable({
62
62
  {/* Title bar — hidden in compact mode and when empty */}
63
63
  {!isCompact && (title || headerActions || (showExport && data.length > 0)) && (
64
64
  <div className="flex items-end justify-between pt-6">
65
- <h2 className="text-h2 text-ods-text-primary">
65
+ <h2 className="font-mono font-semibold text-[32px] leading-[40px] text-ods-text-primary">
66
66
  {title}
67
67
  </h2>
68
68
  <div className="flex items-center gap-3">
@@ -72,7 +72,7 @@ export function ReleaseChangelogSection({
72
72
  onClick={() => setCollapsed(!collapsed)}
73
73
  className="flex items-center justify-between w-full cursor-pointer"
74
74
  >
75
- <h2 className={`flex items-center gap-2 text-h2 ${isBreaking ? 'text-ods-error' : 'text-ods-text-primary'}`}>
75
+ <h2 className={`flex items-center gap-2 text-2xl font-bold ${isBreaking ? 'text-red-500' : 'text-ods-text-primary'}`}>
76
76
  {icon}
77
77
  {title}
78
78
  <Badge variant="secondary" className="ml-2">{entries.length}</Badge>
@@ -84,7 +84,7 @@ export function ReleaseChangelogSection({
84
84
  />
85
85
  </button>
86
86
  ) : (
87
- <h2 className={`flex items-center gap-2 text-h2 ${isBreaking ? 'text-ods-error' : 'text-ods-text-primary'}`}>
87
+ <h2 className={`flex items-center gap-2 text-2xl font-bold ${isBreaking ? 'text-red-500' : 'text-ods-text-primary'}`}>
88
88
  {icon}
89
89
  {title}
90
90
  <Badge variant="secondary" className="ml-2">{entries.length}</Badge>
@@ -713,7 +713,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
713
713
  <div className={`code-block-container border rounded-lg my-6 overflow-hidden ${
714
714
  isDarkMode
715
715
  ? 'bg-ods-card border-ods-border'
716
- : 'bg-ods-bg-surface border-ods-border'
716
+ : 'bg-ods-bg-secondary border-ods-border'
717
717
  }`}>
718
718
  <div className={`code-header border-b px-4 py-2 ${
719
719
  isDarkMode
@@ -734,7 +734,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
734
734
  fontSize: '14px',
735
735
  fontFamily: "'JetBrains Mono', 'SF Mono', Consolas, monospace",
736
736
  background: 'transparent',
737
- color: isDarkMode ? 'var(--color-text-primary)' : 'var(--color-text-primary)'
737
+ color: isDarkMode ? 'var(--ods-text-primary)' : 'var(--ods-text-primary)'
738
738
  }}
739
739
  {...props}
740
740
  >
@@ -751,7 +751,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
751
751
  className={`font-mono text-[0.9em] px-1.5 py-0.5 rounded border ${
752
752
  isDarkMode
753
753
  ? 'bg-ods-card text-ods-text-primary border-ods-border'
754
- : 'bg-ods-bg-surface text-ods-text-primary border-ods-border'
754
+ : 'bg-ods-bg-secondary text-ods-text-primary border-ods-border'
755
755
  }`}
756
756
  {...props}
757
757
  >
@@ -821,7 +821,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
821
821
 
822
822
  // Style blockquotes
823
823
  blockquote: ({ children }: any) => (
824
- <blockquote className={`border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg ${
824
+ <blockquote className={`border-l-4 border-[#FFC008] ml-0 pl-6 my-8 py-4 rounded-r-lg ${
825
825
  isDarkMode
826
826
  ? 'bg-[#1F1F1F]'
827
827
  : 'bg-[#F8F9FA]'
@@ -1013,7 +1013,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
1013
1013
  return (
1014
1014
  <span className="text-ods-accent cursor-not-allowed">
1015
1015
  {children}
1016
- <sup className="ml-1 text-xs font-bold text-ods-error">[BROKEN]</sup>
1016
+ <sup className="ml-1 text-xs font-bold text-red-500">[BROKEN]</sup>
1017
1017
  </span>
1018
1018
  );
1019
1019
  }
@@ -1136,7 +1136,7 @@ const RichMarkdownInner: React.FC<InnerProps> = ({
1136
1136
  </div>
1137
1137
  ),
1138
1138
  thead: ({ children }: any) => (
1139
- <thead className={isDarkMode ? 'bg-ods-bg-surface' : 'bg-ods-bg-surface'}>
1139
+ <thead className={isDarkMode ? 'bg-ods-bg-secondary' : 'bg-ods-bg-secondary'}>
1140
1140
  {children}
1141
1141
  </thead>
1142
1142
  ),
@@ -326,19 +326,19 @@ export function SearchInput({
326
326
  )}
327
327
  <div className="min-w-0 flex-1">
328
328
  <div className={cn(
329
- "text-h6 truncate",
329
+ "text-sm font-medium leading-5 truncate",
330
330
  isHighlighted ? "text-ods-accent" : "text-ods-text-primary"
331
331
  )} title={result.title}>
332
332
  {result.title}
333
333
  </div>
334
334
  {result.description && (
335
- <div className="text-h6 text-ods-text-secondary truncate mt-0.5" title={result.description}>
335
+ <div className="text-xs leading-4 text-ods-text-secondary truncate mt-0.5" title={result.description}>
336
336
  {result.description}
337
337
  </div>
338
338
  )}
339
339
  </div>
340
340
  {result.type && (
341
- <span className="flex-shrink-0 text-h6 text-ods-text-muted uppercase">
341
+ <span className="flex-shrink-0 text-[11px] font-medium text-ods-text-muted uppercase tracking-wider">
342
342
  {result.type}
343
343
  </span>
344
344
  )}
@@ -370,7 +370,7 @@ export function SearchInput({
370
370
  const renderDropdownContent = () => {
371
371
  if (isLoading) {
372
372
  return (
373
- <div className="px-4 py-3 text-ods-text-secondary text-h6">
373
+ <div className="px-4 py-3 text-ods-text-secondary text-[14px]">
374
374
  Loading...
375
375
  </div>
376
376
  )
@@ -378,7 +378,7 @@ export function SearchInput({
378
378
 
379
379
  if (flatResults.length === 0) {
380
380
  return (
381
- <div className="px-4 py-3 text-ods-text-secondary text-h6">
381
+ <div className="px-4 py-3 text-ods-text-secondary text-[14px]">
382
382
  {emptyResultsText}
383
383
  </div>
384
384
  )
@@ -388,7 +388,7 @@ export function SearchInput({
388
388
  let globalIndex = 0
389
389
  return Array.from(groups.entries()).map(([groupLabel, groupResults]) => (
390
390
  <div key={groupLabel}>
391
- <div className="px-4 py-2 text-h6 font-semibold text-ods-text-secondary uppercase bg-ods-bg">
391
+ <div className="px-4 py-2 text-[12px] font-semibold text-ods-text-secondary uppercase tracking-wide bg-ods-bg">
392
392
  {groupLabel}
393
393
  </div>
394
394
  {groupResults.map((result) => {
@@ -451,7 +451,7 @@ export function SearchInput({
451
451
  className={cn(
452
452
  "flex items-center h-8 px-2",
453
453
  "bg-ods-card border border-ods-border rounded-[6px]",
454
- "text-h5 text-ods-text-secondary",
454
+ "font-mono text-[14px] font-medium leading-5 text-ods-text-secondary uppercase tracking-[-0.28px]",
455
455
  "hover:bg-ods-bg-hover transition-colors cursor-pointer",
456
456
  )}
457
457
  aria-label={`${hiddenCount} more selected filters`}
@@ -137,7 +137,7 @@ const SelectLabel = React.forwardRef<
137
137
  >(({ className, ...props }, ref) => (
138
138
  <SelectPrimitive.Label
139
139
  ref={ref}
140
- className={cn("py-1.5 pl-8 pr-2 text-h6 font-semibold", className)}
140
+ className={cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
141
141
  {...props}
142
142
  />
143
143
  ))
@@ -61,14 +61,14 @@ export function ServiceCard({ title, subtitle, icon, tag, rows, className }: Ser
61
61
  {resolvedIcon}
62
62
  </div>
63
63
  <div className="min-w-0">
64
- <div className="text-h3 text-ods-text-primary truncate" title={title}>{title}</div>
64
+ <div className="text-xl font-semibold text-ods-text-primary truncate" title={title}>{title}</div>
65
65
  {subtitle && (
66
- <div className="text-h6 text-ods-text-secondary truncate" title={subtitle}>{subtitle}</div>
66
+ <div className="text-sm text-ods-text-secondary truncate" title={subtitle}>{subtitle}</div>
67
67
  )}
68
68
  </div>
69
69
  </div>
70
70
  {tag && (
71
- <div className="px-3 py-1 rounded-full bg-ods-bg text-ods-text-primary text-h6 font-semibold whitespace-nowrap self-start border border-ods-border">
71
+ <div className="px-3 py-1 rounded-full bg-ods-bg text-ods-text-primary text-xs font-semibold whitespace-nowrap self-start border border-ods-border">
72
72
  {tag.label}
73
73
  </div>
74
74
  )}
@@ -101,7 +101,7 @@ function ServiceCardRowItem({ row }: { row: ServiceCardRow }) {
101
101
  return (
102
102
  <div className="flex items-center gap-3 min-w-0">
103
103
  {row.label && (
104
- <div className="w-20 md:w-24 shrink-0 text-h6 text-ods-text-primary">{row.label}</div>
104
+ <div className="w-20 md:w-24 shrink-0 text-sm font-medium text-ods-text-primary">{row.label}</div>
105
105
  )}
106
106
  <div className={cn('flex-1 h-12 rounded-md border border-ods-border bg-ods-bg px-3 md:px-4 flex items-center justify-between min-w-0', row.monospace ? 'font-mono' : '')}>
107
107
  <div className="truncate text-ods-text-primary min-w-0" title={typeof row.value === 'string' ? row.value : undefined}>{displayValue}</div>
@@ -21,7 +21,7 @@ const SheetOverlay = React.forwardRef<
21
21
  >(({ className, ...props }, ref) => (
22
22
  <SheetPrimitive.Overlay
23
23
  className={cn(
24
- "fixed inset-0 z-[9997] bg-ods-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
24
+ "fixed inset-0 z-[9997] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
25
25
  className
26
26
  )}
27
27
  {...props}
@@ -108,7 +108,7 @@ const SheetTitle = React.forwardRef<
108
108
  >(({ className, ...props }, ref) => (
109
109
  <SheetPrimitive.Title
110
110
  ref={ref}
111
- className={cn("text-h3 text-foreground", className)}
111
+ className={cn("text-lg font-semibold text-foreground", className)}
112
112
  {...props}
113
113
  />
114
114
  ))
@@ -120,7 +120,7 @@ const SheetDescription = React.forwardRef<
120
120
  >(({ className, ...props }, ref) => (
121
121
  <SheetPrimitive.Description
122
122
  ref={ref}
123
- className={cn("text-h6 text-muted-foreground", className)}
123
+ className={cn("text-sm text-muted-foreground", className)}
124
124
  {...props}
125
125
  />
126
126
  ))
@@ -698,7 +698,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
698
698
  style={{
699
699
  fontFamily: "JetBrains Mono', 'SF Mono', Consolas, monospace",
700
700
  background: 'transparent',
701
- color: 'var(--color-text-primary)',
701
+ color: 'var(--ods-text-primary)',
702
702
  }}
703
703
  {...props}
704
704
  >
@@ -724,7 +724,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
724
724
 
725
725
  // --- blockquote ---
726
726
  blockquote: ({ children }: any) => (
727
- <blockquote className="border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-surface">
727
+ <blockquote className="border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-secondary">
728
728
  <div className={cn('font-sans leading-relaxed text-ods-text-secondary', textSizes.blockquote)}>
729
729
  {children}
730
730
  </div>
@@ -760,7 +760,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
760
760
  return (
761
761
  <span className="text-ods-accent cursor-not-allowed">
762
762
  {children}
763
- <sup className="ml-1 text-xs font-bold text-ods-error">[BROKEN]</sup>
763
+ <sup className="ml-1 text-xs font-bold text-ods-attention-red-error">[BROKEN]</sup>
764
764
  </span>
765
765
  );
766
766
  }
@@ -898,7 +898,7 @@ const SimpleMarkdownRendererImpl: React.FC<SimpleMarkdownRendererProps> = ({
898
898
  </div>
899
899
  ),
900
900
  thead: ({ children }: any) => (
901
- <thead className="bg-ods-bg-surface">{children}</thead>
901
+ <thead className="bg-ods-bg-secondary">{children}</thead>
902
902
  ),
903
903
  th: ({ children }: any) => (
904
904
  <th className={cn('px-2 md:px-4 py-3 text-left font-semibold text-ods-accent border-r last:border-r-0 break-words border-ods-border', textSizes.th)}>