@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
@@ -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-xl font-semibold text-ods-text-primary truncate" title={title}>{title}</div>
64
+ <div className="text-h3 text-ods-text-primary truncate" title={title}>{title}</div>
65
65
  {subtitle && (
66
- <div className="text-sm text-ods-text-secondary truncate" title={subtitle}>{subtitle}</div>
66
+ <div className="text-h6 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-xs 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-h6 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-sm font-medium text-ods-text-primary">{row.label}</div>
104
+ <div className="w-20 md:w-24 shrink-0 text-h6 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-black/80 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-ods-overlay 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-lg font-semibold text-foreground", className)}
111
+ className={cn("text-h3 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-sm text-muted-foreground", className)}
123
+ className={cn("text-h6 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(--ods-text-primary)',
701
+ color: 'var(--color-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-secondary">
727
+ <blockquote className="border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-surface">
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-attention-red-error">[BROKEN]</sup>
763
+ <sup className="ml-1 text-xs font-bold text-ods-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-secondary">{children}</thead>
901
+ <thead className="bg-ods-bg-surface">{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)}>
@@ -9,6 +9,9 @@ interface SquareAvatarProps extends React.HTMLAttributes<HTMLDivElement> {
9
9
  src?: string;
10
10
  alt?: string;
11
11
  size?: 'sm' | 'md' | 'lg' | 'xl';
12
+ /** Exact pixel size (width & height). Overrides the `size` bucket dimensions —
13
+ * for callers with a numeric-px API (e.g. UserDisplay/MSPDisplay). */
14
+ sizePx?: number;
12
15
  fallback?: string;
13
16
  variant?: 'square' | 'round';
14
17
  /** Override the initials-fallback styling (font size/color). Merged over the
@@ -18,7 +21,7 @@ interface SquareAvatarProps extends React.HTMLAttributes<HTMLDivElement> {
18
21
  }
19
22
 
20
23
  const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarProps>(
21
- ({ className, src, alt, size = 'md', fallback, variant = 'square', initialsClassName, ...props }, ref) => {
24
+ ({ className, src, alt, size = 'md', sizePx, fallback, variant = 'square', initialsClassName, style, ...props }, ref) => {
22
25
  const sizeClasses = {
23
26
  sm: 'h-8 w-8',
24
27
  md: 'h-10 w-10',
@@ -26,7 +29,7 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
26
29
  xl: 'h-16 w-16'
27
30
  };
28
31
 
29
- const sizePx = {
32
+ const sizePxBySize = {
30
33
  sm: 32,
31
34
  md: 40,
32
35
  lg: 48,
@@ -42,10 +45,11 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
42
45
  <div
43
46
  className={cn(
44
47
  "relative flex items-center justify-center shrink-0 overflow-hidden border border-ods-border bg-ods-bg",
45
- sizeClasses[size],
48
+ sizePx === undefined && sizeClasses[size],
46
49
  variantClasses[variant],
47
50
  className
48
51
  )}
52
+ style={sizePx === undefined ? style : { width: sizePx, height: sizePx, ...style }}
49
53
  ref={ref}
50
54
  {...props}
51
55
  >
@@ -71,8 +75,8 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
71
75
  className="absolute -inset-px h-[calc(100%+2px)] w-[calc(100%+2px)] max-w-none object-cover"
72
76
  src={src}
73
77
  alt={alt || ''}
74
- width={sizePx[size]}
75
- height={sizePx[size]}
78
+ width={sizePx ?? sizePxBySize[size]}
79
+ height={sizePx ?? sizePxBySize[size]}
76
80
  onError={(e) => {
77
81
  e.currentTarget.style.display = 'none';
78
82
  const el = e.currentTarget.previousElementSibling as HTMLElement;
@@ -5,26 +5,26 @@ import { cn } from '../../utils/cn';
5
5
  import { cva, type VariantProps } from 'class-variance-authority';
6
6
 
7
7
  const statusBadgeVariants = cva(
8
- "inline-flex items-center justify-center rounded font-mono font-medium uppercase tracking-wide",
8
+ "inline-flex items-center justify-center rounded",
9
9
  {
10
10
  variants: {
11
11
  variant: {
12
- card: "px-3 py-1.5 text-sm",
13
- button: "px-2 py-0.5 text-[10px] leading-none",
12
+ card: "px-3 py-1.5 text-h5",
13
+ button: "px-2 py-0.5 text-h5",
14
14
  },
15
15
  colorScheme: {
16
16
  cyan: "bg-[var(--ods-flamingo-cyan-base)] text-ods-text-on-accent",
17
17
  pink: "bg-[var(--ods-flamingo-pink-base)] text-ods-text-on-accent",
18
- yellow: "bg-[var(--ods-flamingo-yellow-base)] text-ods-text-on-accent border border-[var(--ods-system-greys-black)]",
19
- green: "bg-[var(--ods-flamingo-green-base)] text-ods-text-on-accent",
20
- purple: "bg-[var(--ods-flamingo-purple-base)] text-ods-text-on-accent",
21
- success: "bg-[var(--ods-attention-green-success-secondary)] text-[var(--ods-attention-green-success)]",
22
- error: "bg-[var(--ods-attention-red-error-secondary)] text-[var(--ods-attention-red-error)]",
23
- warning: "bg-[var(--ods-attention-yellow-warning-secondary)] text-[var(--ods-attention-yellow-warning)]",
24
- default: "bg-ods-bg-secondary text-ods-text-primary",
18
+ yellow: "bg-ods-accent text-ods-text-on-accent border border-[var(--ods-system-greys-black)]",
19
+ green: "bg-ods-success text-ods-text-on-accent",
20
+ purple: "bg-ods-flamingo-pink text-ods-text-on-accent",
21
+ success: "bg-ods-success-secondary text-ods-success",
22
+ error: "bg-ods-error-secondary text-ods-error",
23
+ warning: "bg-ods-warning-secondary text-ods-warning",
24
+ default: "bg-ods-bg-surface text-ods-text-primary",
25
25
  // Border-only variants (no background) - for task type badges
26
26
  accentBorder: "bg-transparent border-2 text-ods-accent border-ods-accent",
27
- errorBorder: "bg-transparent border-2 text-[var(--ods-attention-red-error)] border-[var(--ods-attention-red-error)]",
27
+ errorBorder: "bg-transparent border-2 text-ods-error border-ods-error",
28
28
  whiteBorder: "bg-transparent border-2 text-ods-text-primary border-ods-text-primary",
29
29
  },
30
30
  },
@@ -10,15 +10,15 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
10
10
  const getStatusColor = (status: string) => {
11
11
  switch (status) {
12
12
  case 'success':
13
- return 'bg-green-400 text-green-400';
13
+ return 'bg-ods-success text-ods-success';
14
14
  case 'pending':
15
- return 'bg-orange-400 text-orange-400';
15
+ return 'bg-ods-warning text-ods-warning';
16
16
  case 'error':
17
- return 'bg-red-400 text-red-400';
17
+ return 'bg-ods-error text-ods-error';
18
18
  case 'missing':
19
- return 'bg-orange-400 text-orange-400';
19
+ return 'bg-ods-warning text-ods-warning';
20
20
  default:
21
- return 'bg-gray-400 text-gray-400';
21
+ return 'bg-ods-text-muted text-ods-text-muted';
22
22
  }
23
23
  };
24
24
 
@@ -28,7 +28,7 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
28
28
  const content = (
29
29
  <div className="flex items-center gap-1.5">
30
30
  <div className={`h-3 w-3 rounded-full ${dotColor}`} />
31
- <span className={`text-xs font-['DM_Sans'] font-medium ${textColor}`}>
31
+ <span className={`text-h6 ${textColor}`}>
32
32
  {label}
33
33
  </span>
34
34
  </div>
@@ -31,7 +31,7 @@ export function TabContent({
31
31
  ) : (
32
32
  <div className={cn(minHeight, "flex items-center justify-center")}>
33
33
  <div className="text-center">
34
- <h3 className="text-lg font-semibold text-ods-text-primary mb-2">
34
+ <h3 className="text-h3 text-ods-text-primary mb-2">
35
35
  {emptyStateTitle}
36
36
  </h3>
37
37
  <p className="text-ods-text-secondary">
@@ -247,7 +247,7 @@ export function TabNavigation({
247
247
  "absolute right-0 top-[-3px] w-3 h-3 rounded-full border-2 border-ods-bg",
248
248
  tab.indicator === 'error' && 'bg-ods-error',
249
249
  tab.indicator === 'warning' && 'bg-ods-accent',
250
- tab.indicator === 'success' && 'bg-green-500'
250
+ tab.indicator === 'success' && 'bg-ods-success'
251
251
  )} />
252
252
  )}
253
253
  </div>
@@ -258,7 +258,7 @@ export function TabNavigation({
258
258
  "w-3 h-3 shrink-0 rounded-full border-2 border-ods-bg",
259
259
  tab.indicator === 'error' && 'bg-ods-error',
260
260
  tab.indicator === 'warning' && 'bg-ods-accent',
261
- tab.indicator === 'success' && 'bg-green-500'
261
+ tab.indicator === 'success' && 'bg-ods-success'
262
262
  )} />
263
263
  ) : null}
264
264
 
@@ -42,7 +42,7 @@ export function TableColumnFilterDropdown({
42
42
  className="flex items-center gap-1.5 rounded px-1 py-0.5 cursor-pointer hover:bg-ods-bg-active transition-all duration-200"
43
43
  aria-label={`Filter by ${columnLabel}`}
44
44
  >
45
- <span className="font-medium text-[12px] leading-[16px] uppercase text-ods-text-secondary select-none">
45
+ <span className="text-h5 text-ods-text-secondary select-none">
46
46
  {columnLabel}
47
47
  </span>
48
48
  <Filter02Icon
@@ -33,7 +33,7 @@ export function TableDescriptionCell({
33
33
  <div className="flex flex-col justify-center">
34
34
  <span
35
35
  className={cn(
36
- "font-['DM_Sans'] font-medium text-[16px] leading-[20px] text-ods-text-secondary break-words",
36
+ "text-h6 text-ods-text-secondary break-words",
37
37
  maxLines === 1 && "truncate",
38
38
  maxLines === 2 && "line-clamp-2",
39
39
  maxLines === 3 && "line-clamp-3",
@@ -74,7 +74,7 @@ export function TableTimestampCell({
74
74
  <span className="text-h4 text-ods-text-primary truncate">
75
75
  {displayTimestamp}
76
76
  </span>
77
- <span className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate">
77
+ <span className="text-h6 text-ods-text-secondary truncate">
78
78
  {idLabel ? `${idLabel}: ${id}` : id}
79
79
  </span>
80
80
  </div>
@@ -203,7 +203,7 @@ export function Table<T = any>({
203
203
  {/* Toolbar for bulk actions */}
204
204
  {showToolbar && bulkActions && selectedRows.length > 0 && (
205
205
  <div className="flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2">
206
- <span className="text-ods-text-secondary text-sm">
206
+ <span className="text-ods-text-secondary text-h6">
207
207
  {selectedRows.length} item{selectedRows.length !== 1 ? 's' : ''} selected
208
208
  </span>
209
209
  <div className="flex gap-2">
@@ -213,7 +213,7 @@ export function Table<T = any>({
213
213
  onClick={() => action.onClick(selectedRows)}
214
214
  disabled={action.requiresSelection && selectedRows.length === 0}
215
215
  className={cn(
216
- "px-3 py-1.5 text-sm rounded border transition-colors",
216
+ "px-3 py-1.5 text-h6 rounded border transition-colors",
217
217
  "bg-ods-card border-ods-border hover:bg-ods-bg-active text-ods-text-primary",
218
218
  action.className
219
219
  )}
@@ -39,7 +39,7 @@ const TabsTrigger = React.forwardRef<
39
39
  <TabsPrimitive.Trigger
40
40
  ref={ref}
41
41
  className={cn(
42
- "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
42
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-h6 ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
43
43
  className
44
44
  )}
45
45
  {...props}
@@ -177,7 +177,7 @@ export function TagSearchInput<T = string>({
177
177
  className={cn(
178
178
  "flex items-center h-8 px-2",
179
179
  "bg-ods-card border border-ods-border rounded-[6px]",
180
- "font-mono text-[14px] font-medium leading-5 text-ods-text-secondary uppercase tracking-[-0.28px]",
180
+ "text-h5 text-ods-text-secondary",
181
181
  "hover:bg-ods-bg-hover transition-colors cursor-pointer",
182
182
  )}
183
183
  >
@@ -16,54 +16,54 @@ const tagVariants = cva(
16
16
  // is the Figma "Feature Item" chip (48px, h3 bold body label) used by
17
17
  // chip groups acting as tabs (OpenFrame categories).
18
18
  size: {
19
- default: "text-h5 h-8 gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-xsf)]",
19
+ default: "text-h5 h-8 gap-[var(--spacing-system-xs)] p-[var(--spacing-system-xsf)]",
20
20
  large: "text-h3 font-bold h-12 gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]",
21
21
  },
22
22
  variant: {
23
23
  primary: [
24
- "bg-[var(--ods-open-yellow-base)] text-[var(--ods-system-greys-black)]",
25
- "hover:bg-[var(--ods-open-yellow-hover)] active:bg-[var(--ods-open-yellow-action)]",
24
+ "bg-ods-accent text-ods-text-on-accent",
25
+ "hover:bg-ods-accent-hover active:bg-ods-accent-active",
26
26
  ],
27
27
  outline: [
28
- "bg-[var(--ods-system-greys-black)] text-[var(--ods-system-greys-white)] border border-[var(--ods-system-greys-soft-grey)]",
29
- "hover:bg-[var(--ods-system-greys-black-hover)] hover:border-[var(--ods-system-greys-soft-grey-hover)]",
30
- "active:bg-[var(--ods-system-greys-black-action)] active:border-[var(--ods-system-greys-soft-grey-action)]",
28
+ "bg-ods-card text-ods-text-primary border border-ods-border",
29
+ "hover:bg-ods-bg-hover hover:border-ods-border-hover",
30
+ "active:bg-ods-bg-active active:border-ods-border-active",
31
31
  ],
32
32
  success: [
33
- "bg-[var(--ods-attention-green-success-secondary)] text-[var(--ods-attention-green-success)]",
34
- "hover:bg-[#385029] active:bg-[#425a33]",
33
+ "bg-ods-success-secondary text-ods-success",
34
+ "hover:bg-ods-success-secondary-hover active:bg-ods-success-secondary-active",
35
35
  ],
36
36
  warning: [
37
- "bg-[var(--ods-attention-yellow-warning-secondary)] text-[var(--ods-attention-yellow-warning)]",
38
- "hover:bg-[#544729] active:bg-[#5e5133]",
37
+ "bg-ods-warning-secondary text-ods-warning",
38
+ "hover:bg-ods-warning-secondary-hover active:bg-ods-warning-secondary-active",
39
39
  ],
40
40
  error: [
41
- "bg-[var(--ods-attention-red-error-secondary)] text-[var(--ods-attention-red-error)]",
42
- "hover:bg-[#542b2b] active:bg-[#5e3535]",
41
+ "bg-ods-error-secondary text-ods-error",
42
+ "hover:bg-ods-error-secondary-hover active:bg-ods-error-secondary-active",
43
43
  ],
44
44
  critical: [
45
- "bg-[var(--ods-attention-red-error)] text-[var(--ods-attention-red-error-secondary)]",
46
- "hover:bg-[var(--ods-attention-red-error-hover)] active:bg-[var(--ods-attention-red-error-action)]",
45
+ "bg-ods-error text-ods-error-secondary",
46
+ "hover:bg-ods-error-hover active:bg-ods-error-active",
47
47
  ],
48
48
  grey: [
49
- "bg-[var(--ods-system-greys-soft-grey)] text-[var(--ods-system-greys-grey)]",
50
- "hover:bg-[var(--ods-system-greys-soft-grey-hover)] active:bg-[var(--ods-system-greys-soft-grey-action)]",
49
+ "bg-ods-bg-surface text-ods-text-secondary",
50
+ "hover:bg-ods-bg-surface-hover active:bg-ods-bg-surface-active",
51
51
  ],
52
52
  // Active/selected chip state (Figma "Feature Item" active): pink
53
53
  // border + pink-secondary fill. A dedicated variant (not appended
54
54
  // utilities) so its own hover rules win — the outline variant's
55
55
  // hover:bg/hover:border would otherwise repaint an active chip grey.
56
56
  selected: [
57
- "bg-[var(--ods-flamingo-pink-secondary)] text-[var(--ods-system-greys-white)] border border-[var(--ods-flamingo-pink-base)]",
58
- "hover:bg-[var(--ods-flamingo-pink-secondary-hover)] hover:border-[var(--ods-flamingo-pink-base)]",
59
- "active:bg-[var(--ods-flamingo-pink-secondary-action)]",
57
+ "bg-ods-flamingo-pink-secondary text-ods-text-primary border border-ods-flamingo-pink",
58
+ "hover:bg-ods-flamingo-pink-secondary-hover hover:border-ods-flamingo-pink",
59
+ "active:bg-ods-flamingo-pink-secondary-active",
60
60
  ],
61
61
  // Cyan twin of `selected` (Mingo's accent) — same active-chip skin in the
62
62
  // cyan theme so agent chip groups can match their own accent.
63
63
  selectedCyan: [
64
- "bg-[var(--ods-flamingo-cyan-secondary)] text-[var(--ods-system-greys-white)] border border-[var(--ods-flamingo-cyan-base)]",
65
- "hover:bg-[var(--ods-flamingo-cyan-secondary-hover)] hover:border-[var(--ods-flamingo-cyan-base)]",
66
- "active:bg-[var(--ods-flamingo-cyan-secondary-action)]",
64
+ "bg-ods-flamingo-cyan-secondary text-ods-text-primary border border-ods-flamingo-cyan",
65
+ "hover:bg-ods-flamingo-cyan-secondary-hover hover:border-ods-flamingo-cyan",
66
+ "active:bg-ods-flamingo-cyan-secondary-active",
67
67
  ],
68
68
  // Matches the EntityTagBadges / StatusBadge tag skin (ods-card + ods-border,
69
69
  // mono uppercase) so the tag-editor chips render identically to the public
@@ -82,7 +82,7 @@ const tagVariants = cva(
82
82
  )
83
83
 
84
84
  const disabledTagClasses = [
85
- "bg-[var(--ods-system-greys-soft-grey)] text-[var(--ods-system-greys-grey)]",
85
+ "bg-ods-bg-surface text-ods-text-secondary",
86
86
  "border-transparent",
87
87
  "cursor-not-allowed",
88
88
  "pointer-events-none",
@@ -66,7 +66,7 @@ export function TagsInput({
66
66
  return (
67
67
  <div className={cn("space-y-2", className)}>
68
68
  {label && (
69
- <label className="font-['DM_Sans'] text-[16px] font-medium text-ods-text-primary">
69
+ <label className="text-h6 text-ods-text-primary">
70
70
  {label}
71
71
  </label>
72
72
  )}
@@ -121,7 +121,7 @@ export function TagsInput({
121
121
  )}
122
122
 
123
123
  {maxTags && (
124
- <p className="text-xs text-ods-text-secondary">
124
+ <p className="text-h6 text-ods-text-secondary">
125
125
  {value.length}/{maxTags} tags
126
126
  </p>
127
127
  )}
@@ -42,7 +42,7 @@ const STATUS_CONFIG: Record<TicketStatus, TicketStatusConfig> = {
42
42
  RESOLVED: {
43
43
  label: 'Resolved',
44
44
  variant: 'outline',
45
- icon: <CheckCircleIcon size={16} color="var(--ods-attention-green-success)" />,
45
+ icon: <CheckCircleIcon size={16} color="var(--color-success)" />,
46
46
  },
47
47
  ARCHIVED: {
48
48
  label: 'Archived',
@@ -59,12 +59,12 @@ function ToastHeader({
59
59
  <span className={cn('size-[9px] rounded-full', dotColorByVariant[variant])} />
60
60
  </div>
61
61
 
62
- <div className="flex min-w-0 flex-1 flex-col justify-center font-['DM_Sans'] font-medium">
62
+ <div className="flex min-w-0 flex-1 flex-col justify-center">
63
63
  {title ? (
64
- <p className="truncate pr-5 text-[18px] leading-6 text-ods-text-primary" title={typeof title === 'string' ? title : undefined}>{title}</p>
64
+ <p className="truncate pr-5 text-h4 text-ods-text-primary" title={typeof title === 'string' ? title : undefined}>{title}</p>
65
65
  ) : null}
66
66
  {description ? (
67
- <p className="text-[14px] leading-5 text-ods-text-secondary line-clamp-3" title={typeof description === 'string' ? description : undefined}>{description}</p>
67
+ <p className="text-h6 text-ods-text-secondary line-clamp-3" title={typeof description === 'string' ? description : undefined}>{description}</p>
68
68
  ) : null}
69
69
  </div>
70
70
 
@@ -206,7 +206,7 @@ export function CommandApprovalToast({
206
206
  >
207
207
  <div className="overflow-hidden">
208
208
  <div className="flex h-11 w-full items-center gap-2 border-b border-ods-border bg-ods-card px-3 py-2">
209
- <p className="min-w-0 flex-1 truncate font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-primary" title={command}>
209
+ <p className="min-w-0 flex-1 truncate text-h6 text-ods-text-primary" title={command}>
210
210
  {command}
211
211
  </p>
212
212
  {toolType ? <ToolIcon toolType={toolType} size={16} /> : null}
@@ -214,7 +214,7 @@ export function CommandApprovalToast({
214
214
 
215
215
  <div className="flex flex-col gap-2 bg-ods-bg p-3">
216
216
  {approvalDescription ? (
217
- <p className="font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-secondary">
217
+ <p className="text-h6 text-ods-text-secondary">
218
218
  {approvalDescription}
219
219
  </p>
220
220
  ) : null}
@@ -223,7 +223,7 @@ export function CommandApprovalToast({
223
223
  type="button"
224
224
  onClick={handleApprove}
225
225
  tabIndex={expanded ? 0 : -1}
226
- className="flex flex-1 items-center justify-center rounded-md bg-ods-accent px-2 py-2 font-['Azeret_Mono'] text-[14px] font-medium uppercase tracking-[-0.28px] text-ods-text-on-accent transition-colors hover:bg-ods-accent-hover active:bg-ods-accent-active"
226
+ className="flex flex-1 items-center justify-center rounded-md bg-ods-accent px-2 py-2 text-h5 text-ods-text-on-accent transition-colors hover:bg-ods-accent-hover active:bg-ods-accent-active"
227
227
  >
228
228
  {approveLabel}
229
229
  </button>
@@ -231,7 +231,7 @@ export function CommandApprovalToast({
231
231
  type="button"
232
232
  onClick={handleReject}
233
233
  tabIndex={expanded ? 0 : -1}
234
- className="flex flex-1 items-center justify-center rounded-md border border-ods-border bg-ods-card px-2 py-2 font-['Azeret_Mono'] text-[14px] font-medium uppercase tracking-[-0.28px] text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
234
+ className="flex flex-1 items-center justify-center rounded-md border border-ods-border bg-ods-card px-2 py-2 text-h5 text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
235
235
  >
236
236
  {rejectLabel}
237
237
  </button>
@@ -244,7 +244,7 @@ export function CommandApprovalToast({
244
244
  <button
245
245
  type="button"
246
246
  onClick={() => setExpanded(true)}
247
- className="flex w-full items-center gap-2 bg-ods-card px-3 py-2 text-left font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
247
+ className="flex w-full items-center gap-2 bg-ods-card px-3 py-2 text-left text-h6 text-ods-text-primary transition-colors hover:bg-ods-bg-hover"
248
248
  aria-expanded={false}
249
249
  >
250
250
  <span className="flex-1">Show Command</span>
@@ -6,7 +6,7 @@ import { cva, type VariantProps } from "class-variance-authority"
6
6
  import { cn } from "../../utils/cn"
7
7
 
8
8
  const toggleVariants = cva(
9
- "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-ods-accent data-[state=on]:text-ods-text-on-accent",
9
+ "inline-flex items-center justify-center rounded-md text-h6 transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-ods-accent data-[state=on]:text-ods-text-on-accent",
10
10
  {
11
11
  variants: {
12
12
  variant: {
@@ -26,7 +26,7 @@ const TooltipContent = React.forwardRef<
26
26
  className={cn(
27
27
  // `max-h` uses Radix's available-height var so tall content scrolls inside
28
28
  // the tooltip instead of overflowing off-screen (only engages on overflow).
29
- "z-[1400] max-h-[var(--radix-popper-available-height)] overflow-y-auto rounded-md bg-ods-card border border-ods-border px-3 py-2 text-sm text-ods-text-primary shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
29
+ "z-[1400] max-h-[var(--radix-popper-available-height)] overflow-y-auto rounded-md bg-ods-card border border-ods-border px-3 py-2 text-h6 text-ods-text-primary shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
30
30
  className
31
31
  )}
32
32
  {...props}
@@ -2,7 +2,8 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { cn } from "../utils/cn";
5
- import { SquareAvatar } from './square-avatar';
5
+ import { getProxiedImageUrl } from '../utils/image-proxy';
6
+ import { SquareAvatar } from './ui/square-avatar';
6
7
 
7
8
  interface UserDisplayProps {
8
9
  name: string;
@@ -25,18 +26,23 @@ interface UserDisplayProps {
25
26
  export function UserDisplay({ name, avatarUrl, subtitle, size = 32, shape = 'square', compact = false, className }: UserDisplayProps) {
26
27
  return (
27
28
  <div className={cn('flex items-center gap-2 min-w-0', className)}>
28
- <SquareAvatar src={avatarUrl ?? undefined} fallbackName={name} size={size} shape={shape} />
29
+ <SquareAvatar
30
+ src={avatarUrl ? getProxiedImageUrl(avatarUrl) || avatarUrl : undefined}
31
+ fallback={name}
32
+ alt={name}
33
+ sizePx={size}
34
+ variant={shape}
35
+ />
29
36
  <div className="min-w-0 flex-1">
30
37
  <p className={cn(
31
- "font-['DM_Sans'] text-ods-text-primary truncate",
32
- compact ? 'text-xs leading-4 font-medium' : 'text-lg leading-[22px]',
38
+ "text-ods-text-primary truncate",
39
+ compact ? 'text-h6' : 'text-h4',
33
40
  )}>
34
41
  {name}
35
42
  </p>
36
43
  {subtitle && (
37
44
  <span className={cn(
38
- "font-['DM_Sans'] text-ods-text-secondary truncate block",
39
- compact ? 'text-xs leading-4 font-medium' : 'text-md leading-[16px]',
45
+ "text-h6 text-ods-text-secondary truncate block",
40
46
  )}>
41
47
  {subtitle}
42
48
  </span>
@@ -196,7 +196,7 @@ export function UserSummary({
196
196
  {/* top part */}
197
197
  {authProviders && authProviders.length > 0 && (
198
198
  <div className="flex items-center gap-2">
199
- <span className="text-xs text-ods-text-secondary whitespace-nowrap select-none">
199
+ <span className="text-h6 text-ods-text-secondary whitespace-nowrap select-none">
200
200
  Authorized by
201
201
  </span>
202
202
  <div className="flex items-center gap-2">
@@ -211,7 +211,7 @@ export function UserSummary({
211
211
 
212
212
  {/* bottom part - Edit button would go here */}
213
213
  {showEditButton && (
214
- <div className="text-xs text-ods-text-secondary">Edit Profile</div>
214
+ <div className="text-h6 text-ods-text-secondary">Edit Profile</div>
215
215
  )}
216
216
  </div>
217
217
  )}
@@ -223,7 +223,7 @@ export function UserSummary({
223
223
  <div className="flex md:hidden items-center justify-between w-full gap-4">
224
224
  {authProviders && authProviders.length > 0 && (
225
225
  <div className="flex items-center gap-2">
226
- <span className="text-xs text-ods-text-secondary whitespace-nowrap select-none">Authorized by</span>
226
+ <span className="text-h6 text-ods-text-secondary whitespace-nowrap select-none">Authorized by</span>
227
227
  <div className="flex items-center gap-2">
228
228
  {authProviders.map((p) => (
229
229
  <div key={p} className="flex items-center justify-center w-4 h-4">
@@ -235,7 +235,7 @@ export function UserSummary({
235
235
  )}
236
236
 
237
237
  {showEditButton && (
238
- <div className="text-xs text-ods-text-secondary">Edit Profile</div>
238
+ <div className="text-h6 text-ods-text-secondary">Edit Profile</div>
239
239
  )}
240
240
  </div>
241
241
  )}
@@ -50,7 +50,7 @@ export function VendorDisplayButton({ vendor, onClick, variant = 'default', exte
50
50
  </span>
51
51
  </div>
52
52
  )}
53
- <span className="text-sm font-medium text-ods-text-primary">
53
+ <span className="text-h6 text-ods-text-primary">
54
54
  {vendor.title}
55
55
  </span>
56
56
  </button>
@@ -75,7 +75,7 @@ export function VendorDisplayButton({ vendor, onClick, variant = 'default', exte
75
75
  </div>
76
76
  ) : (
77
77
  <div className="w-8 h-8 bg-ods-border border border-ods-border rounded-lg flex items-center justify-center flex-shrink-0">
78
- <span className="text-ods-text-primary text-[12px] font-medium">
78
+ <span className="text-ods-text-primary text-h6">
79
79
  {vendor.title.charAt(0)}
80
80
  </span>
81
81
  </div>
@@ -80,7 +80,7 @@ export function VendorIcon({
80
80
  />
81
81
  ) : (
82
82
  <div className={cn(
83
- 'flex items-center justify-center text-xs font-medium uppercase',
83
+ 'flex items-center justify-center text-h6 uppercase',
84
84
  backgroundStyle === 'white' ? 'text-[#333333]' : 'text-ods-text-secondary'
85
85
  )}>
86
86
  {vendor.title?.substring(0, 2) || '??'}