@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
@@ -9,9 +9,6 @@ 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;
15
12
  fallback?: string;
16
13
  variant?: 'square' | 'round';
17
14
  /** Override the initials-fallback styling (font size/color). Merged over the
@@ -21,7 +18,7 @@ interface SquareAvatarProps extends React.HTMLAttributes<HTMLDivElement> {
21
18
  }
22
19
 
23
20
  const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarProps>(
24
- ({ className, src, alt, size = 'md', sizePx, fallback, variant = 'square', initialsClassName, style, ...props }, ref) => {
21
+ ({ className, src, alt, size = 'md', fallback, variant = 'square', initialsClassName, ...props }, ref) => {
25
22
  const sizeClasses = {
26
23
  sm: 'h-8 w-8',
27
24
  md: 'h-10 w-10',
@@ -29,7 +26,7 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
29
26
  xl: 'h-16 w-16'
30
27
  };
31
28
 
32
- const sizePxBySize = {
29
+ const sizePx = {
33
30
  sm: 32,
34
31
  md: 40,
35
32
  lg: 48,
@@ -45,11 +42,10 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
45
42
  <div
46
43
  className={cn(
47
44
  "relative flex items-center justify-center shrink-0 overflow-hidden border border-ods-border bg-ods-bg",
48
- sizePx === undefined && sizeClasses[size],
45
+ sizeClasses[size],
49
46
  variantClasses[variant],
50
47
  className
51
48
  )}
52
- style={sizePx === undefined ? style : { width: sizePx, height: sizePx, ...style }}
53
49
  ref={ref}
54
50
  {...props}
55
51
  >
@@ -75,8 +71,8 @@ const SquareAvatar = React.memo(React.forwardRef<HTMLDivElement, SquareAvatarPro
75
71
  className="absolute -inset-px h-[calc(100%+2px)] w-[calc(100%+2px)] max-w-none object-cover"
76
72
  src={src}
77
73
  alt={alt || ''}
78
- width={sizePx ?? sizePxBySize[size]}
79
- height={sizePx ?? sizePxBySize[size]}
74
+ width={sizePx[size]}
75
+ height={sizePx[size]}
80
76
  onError={(e) => {
81
77
  e.currentTarget.style.display = 'none';
82
78
  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",
8
+ "inline-flex items-center justify-center rounded font-mono font-medium uppercase tracking-wide",
9
9
  {
10
10
  variants: {
11
11
  variant: {
12
- card: "px-3 py-1.5 text-h5",
13
- button: "px-2 py-0.5 text-h5",
12
+ card: "px-3 py-1.5 text-sm",
13
+ button: "px-2 py-0.5 text-[10px] leading-none",
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-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",
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",
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-ods-error border-ods-error",
27
+ errorBorder: "bg-transparent border-2 text-[var(--ods-attention-red-error)] border-[var(--ods-attention-red-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-ods-success text-ods-success';
13
+ return 'bg-green-400 text-green-400';
14
14
  case 'pending':
15
- return 'bg-ods-warning text-ods-warning';
15
+ return 'bg-orange-400 text-orange-400';
16
16
  case 'error':
17
- return 'bg-ods-error text-ods-error';
17
+ return 'bg-red-400 text-red-400';
18
18
  case 'missing':
19
- return 'bg-ods-warning text-ods-warning';
19
+ return 'bg-orange-400 text-orange-400';
20
20
  default:
21
- return 'bg-ods-text-muted text-ods-text-muted';
21
+ return 'bg-gray-400 text-gray-400';
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-h6 ${textColor}`}>
31
+ <span className={`text-xs font-['DM_Sans'] font-medium ${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-h3 text-ods-text-primary mb-2">
34
+ <h3 className="text-lg font-semibold 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-ods-success'
250
+ tab.indicator === 'success' && 'bg-green-500'
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-ods-success'
261
+ tab.indicator === 'success' && 'bg-green-500'
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="text-h5 text-ods-text-secondary select-none">
45
+ <span className="font-medium text-[12px] leading-[16px] uppercase 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
- "text-h6 text-ods-text-secondary break-words",
36
+ "font-['DM_Sans'] font-medium text-[16px] leading-[20px] 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="text-h6 text-ods-text-secondary truncate">
77
+ <span className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] 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-h6">
206
+ <span className="text-ods-text-secondary text-sm">
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-h6 rounded border transition-colors",
216
+ "px-3 py-1.5 text-sm 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-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",
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",
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
- "text-h5 text-ods-text-secondary",
180
+ "font-mono text-[14px] font-medium leading-5 text-ods-text-secondary uppercase tracking-[-0.28px]",
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-xs)] p-[var(--spacing-system-xsf)]",
19
+ default: "text-h5 h-8 gap-[var(--spacing-system-xxs)] 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-ods-accent text-ods-text-on-accent",
25
- "hover:bg-ods-accent-hover active:bg-ods-accent-active",
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)]",
26
26
  ],
27
27
  outline: [
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",
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)]",
31
31
  ],
32
32
  success: [
33
- "bg-ods-success-secondary text-ods-success",
34
- "hover:bg-ods-success-secondary-hover active:bg-ods-success-secondary-active",
33
+ "bg-[var(--ods-attention-green-success-secondary)] text-[var(--ods-attention-green-success)]",
34
+ "hover:bg-[#385029] active:bg-[#425a33]",
35
35
  ],
36
36
  warning: [
37
- "bg-ods-warning-secondary text-ods-warning",
38
- "hover:bg-ods-warning-secondary-hover active:bg-ods-warning-secondary-active",
37
+ "bg-[var(--ods-attention-yellow-warning-secondary)] text-[var(--ods-attention-yellow-warning)]",
38
+ "hover:bg-[#544729] active:bg-[#5e5133]",
39
39
  ],
40
40
  error: [
41
- "bg-ods-error-secondary text-ods-error",
42
- "hover:bg-ods-error-secondary-hover active:bg-ods-error-secondary-active",
41
+ "bg-[var(--ods-attention-red-error-secondary)] text-[var(--ods-attention-red-error)]",
42
+ "hover:bg-[#542b2b] active:bg-[#5e3535]",
43
43
  ],
44
44
  critical: [
45
- "bg-ods-error text-ods-error-secondary",
46
- "hover:bg-ods-error-hover active:bg-ods-error-active",
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)]",
47
47
  ],
48
48
  grey: [
49
- "bg-ods-bg-surface text-ods-text-secondary",
50
- "hover:bg-ods-bg-surface-hover active:bg-ods-bg-surface-active",
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)]",
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-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",
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)]",
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-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",
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)]",
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-ods-bg-surface text-ods-text-secondary",
85
+ "bg-[var(--ods-system-greys-soft-grey)] text-[var(--ods-system-greys-grey)]",
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="text-h6 text-ods-text-primary">
69
+ <label className="font-['DM_Sans'] text-[16px] font-medium 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-h6 text-ods-text-secondary">
124
+ <p className="text-xs 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(--color-success)" />,
45
+ icon: <CheckCircleIcon size={16} color="var(--ods-attention-green-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">
62
+ <div className="flex min-w-0 flex-1 flex-col justify-center font-['DM_Sans'] font-medium">
63
63
  {title ? (
64
- <p className="truncate pr-5 text-h4 text-ods-text-primary" title={typeof title === 'string' ? title : undefined}>{title}</p>
64
+ <p className="truncate pr-5 text-[18px] leading-6 text-ods-text-primary" title={typeof title === 'string' ? title : undefined}>{title}</p>
65
65
  ) : null}
66
66
  {description ? (
67
- <p className="text-h6 text-ods-text-secondary line-clamp-3" title={typeof description === 'string' ? description : undefined}>{description}</p>
67
+ <p className="text-[14px] leading-5 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 text-h6 text-ods-text-primary" title={command}>
209
+ <p className="min-w-0 flex-1 truncate font-['DM_Sans'] text-[14px] font-medium leading-5 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="text-h6 text-ods-text-secondary">
217
+ <p className="font-['DM_Sans'] text-[14px] font-medium leading-5 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 text-h5 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 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"
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 text-h5 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 font-['Azeret_Mono'] text-[14px] font-medium uppercase tracking-[-0.28px] 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 text-h6 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 font-['DM_Sans'] text-[14px] font-medium leading-5 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-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",
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",
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-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",
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",
30
30
  className
31
31
  )}
32
32
  {...props}
@@ -2,8 +2,7 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { cn } from "../utils/cn";
5
- import { getProxiedImageUrl } from '../utils/image-proxy';
6
- import { SquareAvatar } from './ui/square-avatar';
5
+ import { SquareAvatar } from './square-avatar';
7
6
 
8
7
  interface UserDisplayProps {
9
8
  name: string;
@@ -26,23 +25,18 @@ interface UserDisplayProps {
26
25
  export function UserDisplay({ name, avatarUrl, subtitle, size = 32, shape = 'square', compact = false, className }: UserDisplayProps) {
27
26
  return (
28
27
  <div className={cn('flex items-center gap-2 min-w-0', className)}>
29
- <SquareAvatar
30
- src={avatarUrl ? getProxiedImageUrl(avatarUrl) || avatarUrl : undefined}
31
- fallback={name}
32
- alt={name}
33
- sizePx={size}
34
- variant={shape}
35
- />
28
+ <SquareAvatar src={avatarUrl ?? undefined} fallbackName={name} size={size} shape={shape} />
36
29
  <div className="min-w-0 flex-1">
37
30
  <p className={cn(
38
- "text-ods-text-primary truncate",
39
- compact ? 'text-h6' : 'text-h4',
31
+ "font-['DM_Sans'] text-ods-text-primary truncate",
32
+ compact ? 'text-xs leading-4 font-medium' : 'text-lg leading-[22px]',
40
33
  )}>
41
34
  {name}
42
35
  </p>
43
36
  {subtitle && (
44
37
  <span className={cn(
45
- "text-h6 text-ods-text-secondary truncate block",
38
+ "font-['DM_Sans'] text-ods-text-secondary truncate block",
39
+ compact ? 'text-xs leading-4 font-medium' : 'text-md leading-[16px]',
46
40
  )}>
47
41
  {subtitle}
48
42
  </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-h6 text-ods-text-secondary whitespace-nowrap select-none">
199
+ <span className="text-xs 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-h6 text-ods-text-secondary">Edit Profile</div>
214
+ <div className="text-xs 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-h6 text-ods-text-secondary whitespace-nowrap select-none">Authorized by</span>
226
+ <span className="text-xs 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-h6 text-ods-text-secondary">Edit Profile</div>
238
+ <div className="text-xs 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-h6 text-ods-text-primary">
53
+ <span className="text-sm font-medium 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-h6">
78
+ <span className="text-ods-text-primary text-[12px] font-medium">
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-h6 uppercase',
83
+ 'flex items-center justify-center text-xs font-medium uppercase',
84
84
  backgroundStyle === 'white' ? 'text-[#333333]' : 'text-ods-text-secondary'
85
85
  )}>
86
86
  {vendor.title?.substring(0, 2) || '??'}
@@ -70,7 +70,7 @@ export function VendorTag({
70
70
  className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0"
71
71
  style={accentColor ? { backgroundColor: accentColor } : undefined}
72
72
  >
73
- <OpenSourceIcon width={10} height={10} className="text-ods-text-on-accent" />
73
+ <OpenSourceIcon width={10} height={10} className="text-[#1A1A1A]" />
74
74
  </div>
75
75
  )
76
76
  }
@@ -125,7 +125,7 @@ export function VendorTag({
125
125
  text: text || "Free",
126
126
  icon: (
127
127
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
128
- <span className="text-ods-text-on-accent text-[8px] font-bold">$</span>
128
+ <span className="text-[#1A1A1A] text-[8px] font-bold">$</span>
129
129
  </div>
130
130
  )
131
131
  }
@@ -134,7 +134,7 @@ export function VendorTag({
134
134
  text: text || "Freemium",
135
135
  icon: (
136
136
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
137
- <span className="text-ods-text-on-accent text-[8px] font-bold">$</span>
137
+ <span className="text-[#1A1A1A] text-[8px] font-bold">$</span>
138
138
  </div>
139
139
  )
140
140
  }
@@ -152,7 +152,7 @@ export function VendorTag({
152
152
  text: text || "Enterprise",
153
153
  icon: (
154
154
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
155
- <span className="text-ods-text-on-accent text-[8px] font-bold">E</span>
155
+ <span className="text-[#1A1A1A] text-[8px] font-bold">E</span>
156
156
  </div>
157
157
  )
158
158
  }
@@ -161,7 +161,7 @@ export function VendorTag({
161
161
  text: text || "Recommended",
162
162
  icon: (
163
163
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
164
- <span className="text-ods-text-on-accent text-[8px] font-bold">★</span>
164
+ <span className="text-[#1A1A1A] text-[8px] font-bold">★</span>
165
165
  </div>
166
166
  )
167
167
  }
@@ -174,7 +174,7 @@ export function VendorTag({
174
174
  text: "Open Source",
175
175
  icon: (
176
176
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
177
- <OpenSourceIcon width={10} height={10} className="text-ods-text-on-accent" />
177
+ <OpenSourceIcon width={10} height={10} className="text-[#1A1A1A]" />
178
178
  </div>
179
179
  )
180
180
  }
@@ -198,7 +198,7 @@ export function VendorTag({
198
198
  text: text || "Classification",
199
199
  icon: (
200
200
  <div className="w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0">
201
- <span className="text-ods-text-on-accent text-[8px] font-bold">C</span>
201
+ <span className="text-[#1A1A1A] text-[8px] font-bold">C</span>
202
202
  </div>
203
203
  )
204
204
  }
@@ -222,8 +222,9 @@ export function VendorTag({
222
222
  <div className={cn(baseClasses, className, hidden && "invisible")}>
223
223
  {icon}
224
224
  <span className={cn(
225
- "text-h5 font-semibold",
226
- textColor ? textColor : "text-ods-text-primary"
225
+ "font-mono font-semibold uppercase",
226
+ textColor ? textColor : "text-ods-text-primary",
227
+ size === 'sm' ? "text-[10px]" : "text-xs"
227
228
  )}>
228
229
  {displayText}
229
230
  </span>
@@ -22,7 +22,7 @@ export function YesNoDisplay({
22
22
  return (
23
23
  <div className={`flex items-center gap-2 ${className}`}>
24
24
  <LucideCheckCircleIcon className="h-6 w-6" />
25
- <span className="text-ods-text-primary text-h6">{customText}</span>
25
+ <span className="text-ods-text-primary text-[16px]">{customText}</span>
26
26
  </div>
27
27
  )
28
28
  }
@@ -32,7 +32,7 @@ export function YesNoDisplay({
32
32
  return (
33
33
  <div className={`flex items-center gap-2 ${className}`}>
34
34
  <LucideCheckCircleIcon className="h-6 w-6" />
35
- <span className="text-ods-text-primary text-h6">{yesText}</span>
35
+ <span className="text-ods-text-primary text-[16px]">{yesText}</span>
36
36
  </div>
37
37
  )
38
38
  }
@@ -40,7 +40,7 @@ export function YesNoDisplay({
40
40
  return (
41
41
  <div className={`flex items-center gap-2 ${className}`}>
42
42
  <XCircleIcon className="h-6 w-6" />
43
- <span className="text-ods-text-secondary text-h6">{noText}</span>
43
+ <span className="text-ods-text-secondary text-[16px]">{noText}</span>
44
44
  </div>
45
45
  )
46
46
  }