@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
@@ -257,7 +257,7 @@ export const OGLinkPreview: React.FC<OGLinkPreviewProps> = ({
257
257
  const hasImage = !!resolvedImageUrl
258
258
  const isFallbackImage = resolvedImageUrl === fallbackImage
259
259
  const isPlaceholder = resolvedImageUrl === placeholderImageUrl && !isFallbackImage
260
- const bgColor = useImageEdgeColor(resolvedImageUrl ?? null, 'var(--color-bg-surface)')
260
+ const bgColor = useImageEdgeColor(resolvedImageUrl ?? null, 'var(--ods-bg-secondary)')
261
261
 
262
262
  const renderSkeleton = () => isCompact ? (
263
263
  <div className="my-4">
@@ -359,13 +359,13 @@ export const OGLinkPreview: React.FC<OGLinkPreviewProps> = ({
359
359
  <div className="my-4">
360
360
  <a href={effectiveData.url} target="_blank" rel="noopener noreferrer"
361
361
  className="flex flex-row items-center gap-3 border border-ods-border rounded-lg overflow-hidden bg-ods-card hover:border-ods-accent transition-all duration-200 group px-4 py-3">
362
- <div className="w-8 h-8 bg-ods-bg-surface rounded-lg flex items-center justify-center flex-shrink-0">
362
+ <div className="w-8 h-8 bg-ods-bg-secondary rounded-lg flex items-center justify-center flex-shrink-0">
363
363
  <Favicon src={faviconSrc} size="w-5 h-5" />
364
364
  </div>
365
365
  <div className="flex-1 min-w-0">
366
- <h3 className="text-h6 font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
366
+ <h3 className="font-sans text-sm font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
367
367
  {description && (
368
- <p className="text-h6 text-ods-text-secondary truncate">{description}</p>
368
+ <p className="font-sans text-xs text-ods-text-secondary truncate">{description}</p>
369
369
  )}
370
370
  </div>
371
371
  <ExternalLinkIcon size={14} />
@@ -381,13 +381,13 @@ export const OGLinkPreview: React.FC<OGLinkPreviewProps> = ({
381
381
  {renderImage()}
382
382
  </div>
383
383
  <div className="flex-1 p-3 flex flex-col justify-center min-w-0">
384
- <h3 className="text-h6 font-semibold text-ods-text-primary overflow-hidden group-hover:text-ods-accent transition-colors"
384
+ <h3 className="font-sans text-sm font-semibold text-ods-text-primary overflow-hidden group-hover:text-ods-accent transition-colors"
385
385
  style={{ display: '-webkit-box', WebkitLineClamp: 1, WebkitBoxOrient: 'vertical' }}>{title}</h3>
386
386
  {description && (
387
- <p className="text-h6 text-ods-text-secondary overflow-hidden mt-1"
387
+ <p className="font-sans text-xs text-ods-text-secondary overflow-hidden mt-1"
388
388
  style={{ display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical' }}>{description}</p>
389
389
  )}
390
- <div className="text-h6 text-ods-text-secondary mt-1 truncate">{effectiveData.siteName || ogDomain}</div>
390
+ <div className="text-xs text-ods-text-secondary mt-1 truncate">{effectiveData.siteName || ogDomain}</div>
391
391
  </div>
392
392
  </a>
393
393
  </div>
@@ -399,13 +399,13 @@ export const OGLinkPreview: React.FC<OGLinkPreviewProps> = ({
399
399
  <div className="my-6">
400
400
  <a href={effectiveData.url} target="_blank" rel="noopener noreferrer"
401
401
  className="flex items-center gap-3 border border-ods-border rounded-lg overflow-hidden bg-ods-card hover:border-ods-accent transition-all duration-200 group px-4 py-3">
402
- <div className="w-10 h-10 bg-ods-bg-surface rounded-lg flex items-center justify-center flex-shrink-0">
402
+ <div className="w-10 h-10 bg-ods-bg-secondary rounded-lg flex items-center justify-center flex-shrink-0">
403
403
  <Favicon src={faviconSrc} />
404
404
  </div>
405
405
  <div className="flex-1 min-w-0">
406
- <h3 className="text-h6 font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
406
+ <h3 className="font-sans font-semibold text-ods-text-primary text-base group-hover:text-ods-accent transition-colors truncate">{title}</h3>
407
407
  {description && (
408
- <p className="text-h6 text-ods-text-secondary truncate">{description}</p>
408
+ <p className="font-sans text-sm text-ods-text-secondary truncate">{description}</p>
409
409
  )}
410
410
  </div>
411
411
  <ExternalLinkIcon />
@@ -426,14 +426,14 @@ export const OGLinkPreview: React.FC<OGLinkPreviewProps> = ({
426
426
  <img src={logoSrc} alt={publicationName || ''} className="w-6 h-6 rounded object-contain flex-shrink-0 mt-0.5"
427
427
  onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }} />
428
428
  <div className="flex-1 min-w-0">
429
- <h3 className="text-h6 font-semibold text-ods-text-primary overflow-hidden group-hover:text-ods-accent transition-colors h-[2.5rem] mb-2"
429
+ <h3 className="font-sans font-semibold text-ods-text-primary text-base overflow-hidden group-hover:text-ods-accent transition-colors h-[2.5rem] leading-[1.25rem] mb-2"
430
430
  style={{ display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical' }}>{title}</h3>
431
431
  {description && (
432
- <p className="text-h6 text-ods-text-secondary overflow-hidden h-[2.5rem] mb-2"
432
+ <p className="font-sans text-sm text-ods-text-secondary overflow-hidden h-[2.5rem] leading-[1.25rem] mb-2"
433
433
  style={{ display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical' }}>{description}</p>
434
434
  )}
435
- <div className="flex items-center gap-2 text-h6 text-ods-text-secondary">
436
- <span>{effectiveData.siteName}</span>
435
+ <div className="flex items-center gap-2 text-xs text-ods-text-secondary">
436
+ <span className="font-medium">{effectiveData.siteName}</span>
437
437
  <span>•</span>
438
438
  <span className="truncate">{ogDomain}</span>
439
439
  </div>
@@ -31,7 +31,7 @@ export function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfV
31
31
  <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
32
32
  <div className="flex items-center gap-2 min-w-0">
33
33
  <AdobePdfIcon className="w-5 h-5 shrink-0" />
34
- <h2 className="text-h3 text-ods-text-primary truncate">{displayName}</h2>
34
+ <h2 className="text-xl font-semibold text-ods-text-primary truncate">{displayName}</h2>
35
35
  </div>
36
36
  <div className="flex items-center gap-2 w-full sm:w-auto">
37
37
  <Button
@@ -206,14 +206,14 @@ export function RedditEmbedClient({ url, maxWidth = 700 }: RedditEmbedProps) {
206
206
  </div>
207
207
 
208
208
  <div className="text-center">
209
- <p className="text-ods-text-secondary text-h6 mb-4">
209
+ <p className="text-ods-text-secondary text-sm mb-4">
210
210
  This Reddit post could not be loaded. It may have been deleted, made private, or the subreddit may be restricted.
211
211
  </p>
212
212
  <a
213
213
  href={url}
214
214
  target="_blank"
215
215
  rel="noopener noreferrer"
216
- className="inline-flex items-center space-x-2 px-4 py-2 bg-[#FF4500] text-white rounded-md text-h6 hover:bg-[#E03D00] transition-colors"
216
+ className="inline-flex items-center space-x-2 px-4 py-2 bg-[#FF4500] text-white rounded-md text-sm font-medium hover:bg-[#E03D00] transition-colors"
217
217
  >
218
218
  <RedditIcon />
219
219
  <span>View on Reddit</span>
@@ -479,8 +479,8 @@ export function RedditEmbedClient({ url, maxWidth = 700 }: RedditEmbedProps) {
479
479
  <RedditProfilePic username={redditData.author} />
480
480
  </div>
481
481
  <div>
482
- <p className="text-ods-text-primary text-h6">r/{redditData.subreddit}</p>
483
- <div className="flex items-center space-x-2 text-ods-text-secondary text-h6">
482
+ <p className="text-ods-text-primary font-medium">r/{redditData.subreddit}</p>
483
+ <div className="flex items-center space-x-2 text-ods-text-secondary text-sm">
484
484
  <UserIcon />
485
485
  <span>u/{redditData.author}</span>
486
486
  <ClockIcon />
@@ -493,13 +493,13 @@ export function RedditEmbedClient({ url, maxWidth = 700 }: RedditEmbedProps) {
493
493
 
494
494
  {/* Content - Matching Twitter Style */}
495
495
  <div className="p-4">
496
- <h3 className="text-ods-text-primary text-h3 mb-3">
496
+ <h3 className="text-ods-text-primary font-semibold text-lg mb-3 leading-tight">
497
497
  {redditData.title}
498
498
  </h3>
499
499
 
500
500
  {redditData.selftext && (
501
501
  <div
502
- className="text-ods-text-secondary text-h6 mb-4 overflow-hidden"
502
+ className="text-ods-text-secondary text-sm leading-relaxed mb-4 overflow-hidden"
503
503
  style={{ maxHeight: `${maxWidth - 200}px` }}
504
504
  >
505
505
  <p className="whitespace-pre-wrap">
@@ -517,7 +517,7 @@ export function RedditEmbedClient({ url, maxWidth = 700 }: RedditEmbedProps) {
517
517
  )}
518
518
 
519
519
  {/* Stats - Matching Twitter Style */}
520
- <div className="flex items-center space-x-6 text-ods-text-secondary text-h6">
520
+ <div className="flex items-center space-x-6 text-ods-text-secondary text-sm">
521
521
  <div className="flex items-center space-x-1">
522
522
  <ArrowUpIcon />
523
523
  <span>{formatNumber(redditData.ups)} upvotes</span>
@@ -530,12 +530,12 @@ export function RedditEmbedClient({ url, maxWidth = 700 }: RedditEmbedProps) {
530
530
  </div>
531
531
 
532
532
  {/* Footer - Matching Twitter Style */}
533
- <div className="px-4 py-3 bg-ods-bg-surface border-t border-ods-border">
533
+ <div className="px-4 py-3 bg-ods-bg-secondary border-t border-ods-border">
534
534
  <a
535
535
  href={url}
536
536
  target="_blank"
537
537
  rel="noopener noreferrer"
538
- className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-h6"
538
+ className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-sm font-medium"
539
539
  >
540
540
  <ExternalLinkIcon />
541
541
  <span>View on Reddit</span>
@@ -148,14 +148,14 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
148
148
  </div>
149
149
 
150
150
  <div className="text-center">
151
- <p className="text-ods-text-secondary text-h6 mb-4">
151
+ <p className="text-ods-text-secondary text-sm mb-4">
152
152
  This tweet could not be loaded. It may have been deleted, made private, or the account may be suspended.
153
153
  </p>
154
154
  <a
155
155
  href={url}
156
156
  target="_blank"
157
157
  rel="noopener noreferrer"
158
- className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-bg-surface text-ods-text-primary rounded-md text-h6 hover:bg-ods-bg-active transition-colors"
158
+ className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-bg-secondary text-ods-text-primary rounded-md text-sm font-medium hover:bg-ods-bg-tertiary transition-colors"
159
159
  >
160
160
  <XIcon />
161
161
  <span>View on X</span>
@@ -228,8 +228,8 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
228
228
  />
229
229
  </div>
230
230
  <div>
231
- <p className="text-ods-text-primary text-h6">@{username}</p>
232
- <div className="flex items-center space-x-2 text-ods-text-secondary text-h6">
231
+ <p className="text-ods-text-primary font-medium">@{username}</p>
232
+ <div className="flex items-center space-x-2 text-ods-text-secondary text-sm">
233
233
  <UserIcon />
234
234
  <span>{tweetData.author_name}</span>
235
235
  <ClockIcon />
@@ -244,7 +244,7 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
244
244
  <div className="p-4">
245
245
  {tweetText && (
246
246
  <div
247
- className="text-ods-text-secondary text-h6 mb-4 overflow-hidden"
247
+ className="text-ods-text-secondary text-sm leading-relaxed mb-4 overflow-hidden"
248
248
  style={{ maxHeight: `${maxWidth - 200}px` }}
249
249
  >
250
250
  <p className="whitespace-pre-wrap">
@@ -264,7 +264,7 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
264
264
  href={link.url}
265
265
  target="_blank"
266
266
  rel="noopener noreferrer"
267
- className="inline-flex items-center space-x-2 text-[#1DA1F2] hover:text-ods-accent transition-colors text-h6"
267
+ className="inline-flex items-center space-x-2 text-[#1DA1F2] hover:text-ods-accent transition-colors text-sm"
268
268
  >
269
269
  <ExternalLinkIcon />
270
270
  <span className="underline">{link.text}</span>
@@ -274,7 +274,7 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
274
274
  )}
275
275
 
276
276
  {/* Stats */}
277
- <div className="flex items-center space-x-6 text-ods-text-secondary text-h6">
277
+ <div className="flex items-center space-x-6 text-ods-text-secondary text-sm">
278
278
  <div className="flex items-center space-x-1">
279
279
  <HeartIcon />
280
280
  <span>Likes</span>
@@ -291,12 +291,12 @@ export function TwitterEmbedClient({ url, tweetId, maxWidth = 700 }: TwitterEmbe
291
291
  </div>
292
292
 
293
293
  {/* Footer */}
294
- <div className="px-4 py-3 bg-ods-bg-surface border-t border-ods-border">
294
+ <div className="px-4 py-3 bg-ods-bg-secondary border-t border-ods-border">
295
295
  <a
296
296
  href={url}
297
297
  target="_blank"
298
298
  rel="noopener noreferrer"
299
- className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-h6"
299
+ className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-sm font-medium"
300
300
  >
301
301
  <ExternalLinkIcon />
302
302
  <span>View on X</span>
@@ -163,12 +163,12 @@ export function EmptyState({
163
163
  </div>
164
164
 
165
165
  {/* Title */}
166
- <h2 className="mb-2 md:mb-3 text-h3 text-ods-text-primary">
166
+ <h2 className="mb-2 md:mb-3 text-lg md:text-xl font-semibold font-['DM_Sans'] text-ods-text-primary tracking-[-0.02em]">
167
167
  {displayTitle}
168
168
  </h2>
169
169
 
170
170
  {/* Description */}
171
- <p className="mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary">
171
+ <p className="mb-4 md:mb-8 max-w-md text-sm font-medium font-['DM_Sans'] text-ods-text-secondary leading-[1.43em]">
172
172
  {displayDescription}
173
173
  </p>
174
174
 
@@ -178,8 +178,8 @@ export function EmptyState({
178
178
  <Button
179
179
  onClick={smartCTA.action}
180
180
  className={ctaVariant === 'primary'
181
- ? "w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-body font-medium"
182
- : "w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-body font-medium"
181
+ ? "w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-['DM_Sans'] font-medium"
182
+ : "w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-['DM_Sans'] font-medium"
183
183
  }
184
184
  >
185
185
  {smartCTA.text}
@@ -193,7 +193,7 @@ export function EmptyState({
193
193
  <Button
194
194
  onClick={onGoBack}
195
195
  variant="outline"
196
- className="w-full transition-all duration-150 font-body font-medium"
196
+ className="w-full transition-all duration-150 font-['DM_Sans'] font-medium"
197
197
  >
198
198
  {backButtonText}
199
199
  </Button>
@@ -272,7 +272,7 @@ function GroupedFaqList({
272
272
  aria-current={isActive ? 'true' : undefined}
273
273
  onClick={(e) => handleJump(e, group.slug as string)}
274
274
  className={cn(
275
- "rounded-full border px-4 py-2 text-h6 transition-colors",
275
+ "rounded-full border px-4 py-2 text-sm font-medium font-['DM_Sans'] transition-colors",
276
276
  isActive
277
277
  ? 'border-ods-text-primary bg-ods-card text-ods-text-primary'
278
278
  : 'border-ods-border bg-ods-card text-ods-text-secondary hover:border-ods-text-secondary hover:text-ods-text-primary',
@@ -141,7 +141,7 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
141
141
  {title}
142
142
  </h3>
143
143
  {description && (
144
- <p className="text-ods-text-secondary text-h6 mt-1">
144
+ <p className="text-ods-text-secondary text-sm font-['DM_Sans'] mt-1">
145
145
  {description}
146
146
  </p>
147
147
  )}
@@ -154,12 +154,12 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
154
154
  <div className="flex items-center justify-between">
155
155
  <label
156
156
  htmlFor="ai-enrich-custom-instructions"
157
- className="text-h6 text-ods-text-primary"
157
+ className="text-sm font-medium text-ods-text-primary font-['DM_Sans']"
158
158
  >
159
159
  {customInstructionsLabel}
160
160
  </label>
161
161
  {customInstructionsMaxLength !== undefined && (
162
- <span className="text-h6 text-ods-text-secondary">
162
+ <span className="text-xs text-ods-text-secondary font-['DM_Sans']">
163
163
  {(customInstructions ?? '').length}/{customInstructionsMaxLength}
164
164
  </span>
165
165
  )}
@@ -175,7 +175,7 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
175
175
  className="resize-y"
176
176
  />
177
177
  {customInstructionsHelperText && (
178
- <p className="text-h6 text-ods-text-secondary">
178
+ <p className="text-xs text-ods-text-secondary font-['DM_Sans']">
179
179
  {customInstructionsHelperText}
180
180
  </p>
181
181
  )}
@@ -217,7 +217,7 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
217
217
  {/* Disabled message with unfilled fields */}
218
218
  {shouldDisable && !loading && (
219
219
  <div className="space-y-2">
220
- <p className="text-ods-text-secondary text-h6">
220
+ <p className="text-ods-text-secondary text-sm font-['DM_Sans']">
221
221
  {disabledMessage}
222
222
  </p>
223
223
  {unfilledFields.length > 0 && (
@@ -225,9 +225,9 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
225
225
  {unfilledFields.map(field => (
226
226
  <span
227
227
  key={field.key}
228
- className="inline-flex items-center gap-1 px-2 py-0.5 text-h6 rounded-full bg-ods-flamingo-cyan/10 text-ods-flamingo-cyan/70"
228
+ className="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[--ods-flamingo-cyan-base]/10 text-[--ods-flamingo-cyan-base]/70 font-['DM_Sans']"
229
229
  >
230
- <span className="w-1.5 h-1.5 rounded-full bg-ods-flamingo-cyan/50" />
230
+ <span className="w-1.5 h-1.5 rounded-full bg-[--ods-flamingo-cyan-base]/50" />
231
231
  {field.label}
232
232
  </span>
233
233
  ))}
@@ -238,9 +238,9 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
238
238
 
239
239
  {/* Loading state with status message */}
240
240
  {loading && statusMessage && (
241
- <div className="flex items-center gap-3 p-3 rounded-lg bg-ods-bg-surface">
241
+ <div className="flex items-center gap-3 p-3 rounded-lg bg-ods-card-secondary">
242
242
  <Loader2 className="h-5 w-5 text-ods-accent animate-spin" />
243
- <span className="text-h6 text-ods-text-primary">
243
+ <span className="text-sm text-ods-text-primary font-['DM_Sans']">
244
244
  {statusMessage}
245
245
  </span>
246
246
  </div>
@@ -252,16 +252,16 @@ export const AIEnrichSection: React.FC<AIEnrichSectionProps> = ({
252
252
  {/* Status indicator - simple and clean */}
253
253
  <div className={cn(
254
254
  'flex items-center gap-3 p-3 rounded-lg',
255
- status === 'success' ? 'bg-ods-success/10' : 'bg-ods-error/10'
255
+ status === 'success' ? 'bg-[--ods-attention-green-success]/10' : 'bg-[--ods-attention-red-error]/10'
256
256
  )}>
257
257
  {status === 'success' ? (
258
- <CheckCircle className="h-5 w-5 text-ods-success" />
258
+ <CheckCircle className="h-5 w-5 text-[--ods-attention-green-success]" />
259
259
  ) : (
260
- <AlertCircle className="h-5 w-5 text-ods-error" />
260
+ <AlertCircle className="h-5 w-5 text-[--ods-attention-red-error]" />
261
261
  )}
262
262
  <span className={cn(
263
- 'text-h6',
264
- status === 'success' ? 'text-ods-success' : 'text-ods-error'
263
+ 'text-sm font-medium',
264
+ status === 'success' ? 'text-[--ods-attention-green-success]' : 'text-[--ods-attention-red-error]'
265
265
  )}>
266
266
  {statusMessage || (status === 'success' ? 'Enrichment complete' : 'Enrichment failed')}
267
267
  </span>
@@ -21,15 +21,15 @@ export const AIRequiredBadge: React.FC<AIRequiredBadgeProps> = ({
21
21
  return (
22
22
  <span
23
23
  className={cn(
24
- 'inline-flex items-center gap-1 text-h6 rounded-full',
25
- 'bg-ods-flamingo-cyan/10 text-ods-flamingo-cyan',
26
- size === 'sm' && 'ml-2 px-2 py-0.5',
27
- size === 'md' && 'ml-2 px-2.5 py-1',
24
+ 'inline-flex items-center gap-1 font-medium rounded-full',
25
+ 'bg-[--ods-flamingo-cyan-base]/10 text-[--ods-flamingo-cyan-base]',
26
+ size === 'sm' && 'ml-2 px-2 py-0.5 text-xs',
27
+ size === 'md' && 'ml-2 px-2.5 py-1 text-sm',
28
28
  className
29
29
  )}
30
30
  >
31
31
  <SparklesIcon size={size === 'sm' ? 12 : 14} color="var(--ods-flamingo-cyan-base)" />
32
- <span className="font-body">AI-required</span>
32
+ <span className="font-['DM_Sans']">AI-required</span>
33
33
  </span>
34
34
  )
35
35
  }
@@ -22,18 +22,18 @@ const statusConfig = {
22
22
  label: 'Ready',
23
23
  },
24
24
  loading: {
25
- color: 'text-ods-flamingo-cyan',
26
- bgColor: 'bg-ods-flamingo-cyan/10',
25
+ color: 'text-[var(--ods-flamingo-cyan-base)]',
26
+ bgColor: 'bg-[var(--ods-flamingo-cyan-base)]/10',
27
27
  label: 'Processing...',
28
28
  },
29
29
  success: {
30
- color: 'text-ods-success',
31
- bgColor: 'bg-ods-success/10',
30
+ color: 'text-green-500',
31
+ bgColor: 'bg-green-500/10',
32
32
  label: 'Enriched',
33
33
  },
34
34
  error: {
35
- color: 'text-ods-error',
36
- bgColor: 'bg-ods-error/10',
35
+ color: 'text-red-500',
36
+ bgColor: 'bg-red-500/10',
37
37
  label: 'Failed',
38
38
  },
39
39
  }
@@ -71,7 +71,7 @@ export const AIStatusIndicator: React.FC<AIStatusIndicatorProps> = ({
71
71
  />
72
72
  <span
73
73
  className={cn(
74
- 'text-h6',
74
+ 'text-sm font-medium',
75
75
  confidence !== undefined && status === 'success'
76
76
  ? getConfidenceTextClass(confidence)
77
77
  : config.color
@@ -82,7 +82,7 @@ export const AIStatusIndicator: React.FC<AIStatusIndicatorProps> = ({
82
82
  {confidenceLabel && status === 'success' && (
83
83
  <span
84
84
  className={cn(
85
- 'text-h6 px-2 py-0.5 rounded-full border',
85
+ 'text-xs px-2 py-0.5 rounded-full border',
86
86
  getConfidenceBorderClass(confidence),
87
87
  getConfidenceTextClass(confidence)
88
88
  )}
@@ -21,13 +21,13 @@ export const AIWarningsSection: React.FC<AIWarningsSectionProps> = ({
21
21
  return (
22
22
  <div
23
23
  className={cn(
24
- 'rounded-lg border border-ods-warning/30 bg-ods-warning/10 p-4',
24
+ 'rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-4',
25
25
  className
26
26
  )}
27
27
  >
28
28
  <div className="flex items-start gap-2">
29
29
  <svg
30
- className="w-5 h-5 text-ods-warning flex-shrink-0 mt-0.5"
30
+ className="w-5 h-5 text-yellow-500 flex-shrink-0 mt-0.5"
31
31
  fill="none"
32
32
  viewBox="0 0 24 24"
33
33
  stroke="currentColor"
@@ -40,14 +40,14 @@ export const AIWarningsSection: React.FC<AIWarningsSectionProps> = ({
40
40
  />
41
41
  </svg>
42
42
  <div className="flex-1">
43
- <h4 className="text-h6 font-semibold text-ods-warning mb-2">
43
+ <h4 className="text-sm font-semibold text-yellow-500 mb-2">
44
44
  {title}
45
45
  </h4>
46
46
  <ul className="space-y-1">
47
47
  {warnings.map((warning, index) => (
48
48
  <li
49
49
  key={index}
50
- className="text-h6 text-ods-warning/80 list-disc list-inside"
50
+ className="text-sm text-yellow-500/80 list-disc list-inside"
51
51
  >
52
52
  {warning}
53
53
  </li>
@@ -19,9 +19,9 @@ export interface ConfidenceBadgeProps {
19
19
  }
20
20
 
21
21
  const sizeStyles = {
22
- sm: 'text-h6 px-1.5 py-0.5',
23
- md: 'text-h6 px-2 py-1',
24
- lg: 'text-h6 px-3 py-1.5',
22
+ sm: 'text-xs px-1.5 py-0.5',
23
+ md: 'text-sm px-2 py-1',
24
+ lg: 'text-base px-3 py-1.5',
25
25
  }
26
26
 
27
27
  export const ConfidenceBadge: React.FC<ConfidenceBadgeProps> = ({
@@ -45,7 +45,7 @@ export const ConfidenceBadge: React.FC<ConfidenceBadgeProps> = ({
45
45
  return (
46
46
  <span
47
47
  className={cn(
48
- 'inline-flex items-center gap-1 rounded-full border',
48
+ 'inline-flex items-center gap-1 rounded-full border font-medium',
49
49
  sizeStyles[size],
50
50
  borderClass,
51
51
  textClass,
@@ -124,7 +124,7 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
124
124
  return (
125
125
  <div className={`space-y-3 ${className}`}>
126
126
  <div className="flex items-center justify-between">
127
- <Label className="text-h6 text-ods-text-primary">{title}</Label>
127
+ <Label className="text-[14px] text-ods-text-primary">{title}</Label>
128
128
  <div className="flex items-center gap-2">
129
129
  {requireSave && isDirty && (
130
130
  <Button
@@ -133,7 +133,7 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
133
133
  onClick={handleSave}
134
134
  disabled={isSaving}
135
135
  leftIcon={isSaving ? <Loader2 className="h-4 w-4 animate-spin" /> : <Save className="h-4 w-4" />}
136
- className="text-h6 bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover"
136
+ className="font-['DM_Sans'] text-[14px] bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover"
137
137
  >
138
138
  {isSaving ? 'Saving...' : saveButtonText}
139
139
  </Button>
@@ -144,7 +144,7 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
144
144
  size="small-legacy"
145
145
  onClick={addItem}
146
146
  leftIcon={<Plus className="h-4 w-4" />}
147
- className="text-h6"
147
+ className="font-['DM_Sans'] text-[14px]"
148
148
  >
149
149
  {addButtonText}
150
150
  </Button>
@@ -152,7 +152,7 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
152
152
  </div>
153
153
 
154
154
  {workingItems.map((item, index) => (
155
- <div key={index} className="flex items-center gap-3 p-3 bg-ods-bg-surface rounded-lg border border-ods-border">
155
+ <div key={index} className="flex items-center gap-3 p-3 bg-ods-bg-secondary rounded-lg border border-ods-border">
156
156
  {icon && (
157
157
  <div className="w-8 h-8 flex items-center justify-center">
158
158
  {icon}
@@ -176,7 +176,7 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
176
176
  variant="transparent"
177
177
  size="icon"
178
178
  onClick={() => removeItem(index)}
179
- className="text-ods-error hover:bg-ods-error-secondary"
179
+ className="text-ods-attention-red-error hover:bg-ods-attention-red-error-secondary"
180
180
  >
181
181
  <Trash2 className="h-4 w-4" />
182
182
  </Button>
@@ -184,8 +184,8 @@ export function ArrayEntryManager<T extends { [key: string]: any }>({
184
184
  ))}
185
185
 
186
186
  {workingItems.length === 0 && (
187
- <div className="text-center py-4 px-4 bg-ods-bg-surface border border-ods-border rounded-lg">
188
- <p className="text-ods-text-secondary text-h6">
187
+ <div className="text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg">
188
+ <p className="text-ods-text-secondary text-sm font-['DM_Sans']">
189
189
  {emptyMessage}
190
190
  </p>
191
191
  </div>
@@ -50,7 +50,7 @@ export function AuthProvidersList({
50
50
  <div className="absolute inset-0 flex items-center">
51
51
  <div className="w-full border-t border-ods-border" />
52
52
  </div>
53
- <div className="relative flex justify-center text-h6">
53
+ <div className="relative flex justify-center text-sm">
54
54
  <span className="px-2 bg-ods-card text-ods-text-secondary">{dividerText}</span>
55
55
  </div>
56
56
  </div>
@@ -77,7 +77,7 @@ export function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprov
77
77
  />
78
78
  ))}
79
79
  {ticket.assignees.length > MAX_VISIBLE_ASSIGNEES && (
80
- <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-bg text-h6 text-ods-text-secondary">
80
+ <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-bg text-xs font-medium text-ods-text-secondary">
81
81
  +{ticket.assignees.length - MAX_VISIBLE_ASSIGNEES}
82
82
  </div>
83
83
  )}
@@ -89,7 +89,7 @@ export function ChangelogManager({
89
89
  return (
90
90
  <div className={`space-y-3 ${className}`}>
91
91
  <div className="flex items-center justify-between">
92
- <Label className="text-h6 text-ods-text-primary">
92
+ <Label className="text-[14px] text-ods-text-primary">
93
93
  {title}
94
94
  </Label>
95
95
  <Button
@@ -98,7 +98,7 @@ export function ChangelogManager({
98
98
  size="small-legacy"
99
99
  onClick={addEntry}
100
100
  leftIcon={<Plus className="h-4 w-4" />}
101
- className="text-h6"
101
+ className="font-['DM_Sans'] text-[14px]"
102
102
  >
103
103
  Add Entry
104
104
  </Button>
@@ -109,7 +109,7 @@ export function ChangelogManager({
109
109
  const hasContent = entry.title.trim().length > 0;
110
110
 
111
111
  return (
112
- <div key={index} className="bg-ods-bg-surface rounded-lg border border-ods-border overflow-hidden">
112
+ <div key={index} className="bg-ods-bg-secondary rounded-lg border border-ods-border overflow-hidden">
113
113
  {/* Header - always visible */}
114
114
  <div className="flex items-center gap-3 p-3">
115
115
  <Button
@@ -124,11 +124,11 @@ export function ChangelogManager({
124
124
 
125
125
  <div className="flex-1 min-w-0">
126
126
  {hasContent ? (
127
- <p className="text-h6 text-ods-text-primary truncate">
127
+ <p className="font-['DM_Sans'] font-medium text-[14px] text-ods-text-primary truncate">
128
128
  {entry.title}
129
129
  </p>
130
130
  ) : (
131
- <p className="text-h6 text-ods-text-secondary italic">
131
+ <p className="font-['DM_Sans'] font-medium text-[14px] text-ods-text-secondary italic">
132
132
  New entry (click to edit)
133
133
  </p>
134
134
  )}
@@ -160,7 +160,7 @@ export function ChangelogManager({
160
160
  variant="transparent"
161
161
  size="icon"
162
162
  onClick={() => removeEntry(index)}
163
- className="text-ods-error hover:text-ods-error-hover hover:bg-ods-error-secondary shrink-0"
163
+ className="text-red-400 hover:text-red-300 hover:bg-red-400/10 shrink-0"
164
164
  >
165
165
  <Trash2 className="h-4 w-4" />
166
166
  </Button>
@@ -171,7 +171,7 @@ export function ChangelogManager({
171
171
  <div className="px-3 pb-3 space-y-3 border-t border-ods-border pt-3">
172
172
  {/* Title */}
173
173
  <div className="space-y-1">
174
- <Label className="text-h6 text-ods-text-secondary">Title *</Label>
174
+ <Label className="text-[12px] text-ods-text-secondary">Title *</Label>
175
175
  <Input
176
176
  placeholder="e.g., New dark mode theme support"
177
177
  value={entry.title}
@@ -183,7 +183,7 @@ export function ChangelogManager({
183
183
 
184
184
  {/* Description */}
185
185
  <div className="space-y-1">
186
- <Label className="text-h6 text-ods-text-secondary">Description</Label>
186
+ <Label className="text-[12px] text-ods-text-secondary">Description</Label>
187
187
  <Textarea
188
188
  placeholder="Detailed explanation of the change..."
189
189
  value={entry.description || ''}
@@ -199,8 +199,8 @@ export function ChangelogManager({
199
199
  })}
200
200
 
201
201
  {entries.length === 0 && (
202
- <div className="text-center py-4 px-4 bg-ods-bg-surface border border-ods-border rounded-lg">
203
- <p className="text-ods-text-secondary text-h6">
202
+ <div className="text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg">
203
+ <p className="text-ods-text-secondary text-sm font-['DM_Sans']">
204
204
  No entries added. Click "Add Entry" to create {title.toLowerCase()}.
205
205
  </p>
206
206
  </div>