@flamingo-stack/openframe-frontend-core 0.0.439 → 0.0.440

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/dist/{chunk-RVWC4P3H.js → chunk-2BTDPDME.js} +9 -9
  2. package/dist/chunk-2BTDPDME.js.map +1 -0
  3. package/dist/{chunk-G5FALXNO.js → chunk-63TSTDME.js} +21 -21
  4. package/dist/chunk-63TSTDME.js.map +1 -0
  5. package/dist/{chunk-4ACSUJ7Q.js → chunk-6CITW5BD.js} +10 -10
  6. package/dist/chunk-6CITW5BD.js.map +1 -0
  7. package/dist/{chunk-QXYOGJQJ.js → chunk-7KDR5P23.js} +2 -2
  8. package/dist/{chunk-PEIR7D25.js → chunk-7KNOHGMI.js} +2 -2
  9. package/dist/{chunk-ZMUFTGL7.cjs → chunk-7QP65IE4.cjs} +5 -5
  10. package/dist/{chunk-ZMUFTGL7.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
  11. package/dist/{chunk-WPVBTVI3.js → chunk-AGV26PUR.js} +6 -6
  12. package/dist/{chunk-WPVBTVI3.js.map → chunk-AGV26PUR.js.map} +1 -1
  13. package/dist/{chunk-HTVVXVJL.cjs → chunk-DUQQEQ7G.cjs} +1431 -1594
  14. package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
  15. package/dist/{chunk-COMBYYQY.js → chunk-FPE3SQ5D.js} +13 -13
  16. package/dist/chunk-FPE3SQ5D.js.map +1 -0
  17. package/dist/{chunk-WAGTZVQN.js → chunk-IAZ5AN2E.js} +30 -30
  18. package/dist/chunk-IAZ5AN2E.js.map +1 -0
  19. package/dist/{chunk-RQQZF6G6.cjs → chunk-IPEIOR77.cjs} +130 -130
  20. package/dist/chunk-IPEIOR77.cjs.map +1 -0
  21. package/dist/{chunk-3WJQL4DN.cjs → chunk-IZ6A6K6N.cjs} +25 -25
  22. package/dist/chunk-IZ6A6K6N.cjs.map +1 -0
  23. package/dist/{chunk-EE5NH5SH.cjs → chunk-J5NO7PAG.cjs} +3 -3
  24. package/dist/{chunk-EE5NH5SH.cjs.map → chunk-J5NO7PAG.cjs.map} +1 -1
  25. package/dist/{chunk-IAN7GUIV.cjs → chunk-JNC4LVD6.cjs} +42 -42
  26. package/dist/chunk-JNC4LVD6.cjs.map +1 -0
  27. package/dist/{chunk-VWGF6IFR.cjs → chunk-JOH5D76X.cjs} +108 -108
  28. package/dist/chunk-JOH5D76X.cjs.map +1 -0
  29. package/dist/{chunk-7WM77CSW.js → chunk-JYI4R25Q.js} +5 -5
  30. package/dist/chunk-JYI4R25Q.js.map +1 -0
  31. package/dist/{chunk-M6QGB6DC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
  32. package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
  33. package/dist/{chunk-M3LD6DNE.cjs → chunk-LFWPWIAC.cjs} +16 -16
  34. package/dist/{chunk-M3LD6DNE.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
  35. package/dist/{chunk-R46QEE3R.cjs → chunk-LUKRPHEW.cjs} +96 -96
  36. package/dist/chunk-LUKRPHEW.cjs.map +1 -0
  37. package/dist/{chunk-IMK6RUEC.cjs → chunk-PYR4LVAF.cjs} +10 -10
  38. package/dist/chunk-PYR4LVAF.cjs.map +1 -0
  39. package/dist/{chunk-2ELBNZJ3.js → chunk-QAG357PE.js} +7 -7
  40. package/dist/chunk-QAG357PE.js.map +1 -0
  41. package/dist/{chunk-N2TJ3HAM.cjs → chunk-QO6MCQYE.cjs} +9 -9
  42. package/dist/chunk-QO6MCQYE.cjs.map +1 -0
  43. package/dist/{chunk-EGRZHR7J.js → chunk-SM26C2L7.js} +9 -9
  44. package/dist/chunk-SM26C2L7.js.map +1 -0
  45. package/dist/{chunk-AUJXLVXA.cjs → chunk-TAQMYVO6.cjs} +42 -42
  46. package/dist/{chunk-AUJXLVXA.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
  47. package/dist/{chunk-C3FH53AP.cjs → chunk-UFBUQO7Z.cjs} +19 -19
  48. package/dist/{chunk-C3FH53AP.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
  49. package/dist/{chunk-F7YVI54P.js → chunk-W3JZXLJ2.js} +10 -10
  50. package/dist/chunk-W3JZXLJ2.js.map +1 -0
  51. package/dist/{chunk-WZ6TCAYQ.cjs → chunk-XMCVUYKC.cjs} +14 -14
  52. package/dist/chunk-XMCVUYKC.cjs.map +1 -0
  53. package/dist/{chunk-P7PISHM5.js → chunk-Y3NFB6HR.js} +5 -5
  54. package/dist/chunk-Y3NFB6HR.js.map +1 -0
  55. package/dist/{chunk-PBTY7AH5.js → chunk-YZJUHEPZ.js} +95 -95
  56. package/dist/chunk-YZJUHEPZ.js.map +1 -0
  57. package/dist/{chunk-NQQ4NLUT.js → chunk-ZQYFDYWV.js} +4298 -4461
  58. package/dist/chunk-ZQYFDYWV.js.map +1 -0
  59. package/dist/components/case-studies/index.cjs +15 -15
  60. package/dist/components/case-studies/index.cjs.map +1 -1
  61. package/dist/components/case-studies/index.js +9 -9
  62. package/dist/components/case-studies/index.js.map +1 -1
  63. package/dist/components/chat/approval-request-message.d.ts.map +1 -1
  64. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  65. package/dist/components/chat/index.cjs +4 -4
  66. package/dist/components/chat/index.js +3 -3
  67. package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
  68. package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
  69. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  70. package/dist/components/contact/index.cjs +5 -5
  71. package/dist/components/contact/index.js +4 -4
  72. package/dist/components/docs/index.cjs +7 -7
  73. package/dist/components/docs/index.js +6 -6
  74. package/dist/components/embeds/index.cjs +5 -5
  75. package/dist/components/embeds/index.js +4 -4
  76. package/dist/components/faq/index.cjs +6 -6
  77. package/dist/components/faq/index.js +5 -5
  78. package/dist/components/features/index.cjs +4 -4
  79. package/dist/components/features/index.js +3 -3
  80. package/dist/components/help-center-pages/index.cjs +23 -23
  81. package/dist/components/help-center-pages/index.js +14 -14
  82. package/dist/components/index.cjs +262 -256
  83. package/dist/components/index.cjs.map +1 -1
  84. package/dist/components/index.js +117 -111
  85. package/dist/components/index.js.map +1 -1
  86. package/dist/components/msp-display.d.ts.map +1 -1
  87. package/dist/components/navigation/index.cjs +4 -4
  88. package/dist/components/navigation/index.js +3 -3
  89. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  90. package/dist/components/onboarding-guides/index.cjs +8 -8
  91. package/dist/components/onboarding-guides/index.js +7 -7
  92. package/dist/components/pricing-display.d.ts +9 -9
  93. package/dist/components/related-content/index.cjs +6 -6
  94. package/dist/components/related-content/index.js +5 -5
  95. package/dist/components/tickets/index.cjs +7 -7
  96. package/dist/components/tickets/index.js +6 -6
  97. package/dist/components/toast/index.cjs +5 -5
  98. package/dist/components/toast/index.cjs.map +1 -1
  99. package/dist/components/toast/index.js +5 -5
  100. package/dist/components/toast/index.js.map +1 -1
  101. package/dist/components/ui/bullet-list.d.ts.map +1 -1
  102. package/dist/components/ui/drawer.d.ts +1 -1
  103. package/dist/components/ui/drawer.d.ts.map +1 -1
  104. package/dist/components/ui/file-manager/index.cjs +73 -73
  105. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  106. package/dist/components/ui/file-manager/index.js +24 -24
  107. package/dist/components/ui/file-manager/index.js.map +1 -1
  108. package/dist/components/ui/index.cjs +4 -4
  109. package/dist/components/ui/index.js +3 -3
  110. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  111. package/dist/components/ui/square-avatar.d.ts +3 -0
  112. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  113. package/dist/components/user-display.d.ts.map +1 -1
  114. package/dist/components/vendor-tag.d.ts.map +1 -1
  115. package/dist/hooks/index.cjs +2 -2
  116. package/dist/hooks/index.js +1 -1
  117. package/dist/index.cjs +4 -4
  118. package/dist/index.js +3 -3
  119. package/dist/tailwind.config.cjs +38 -5
  120. package/dist/tailwind.config.cjs.map +1 -1
  121. package/dist/tailwind.config.js +38 -5
  122. package/dist/tailwind.config.js.map +1 -1
  123. package/package.json +1 -1
  124. package/src/ODS_TOKEN_RULES.md +5 -0
  125. package/src/components/.footer.md +2 -2
  126. package/src/components/announcement-bar.tsx +1 -1
  127. package/src/components/authors/author-detail-view.tsx +3 -3
  128. package/src/components/calendar.tsx +2 -2
  129. package/src/components/case-studies/share-experience-section.tsx +5 -5
  130. package/src/components/categories-cart.tsx +6 -6
  131. package/src/components/category-card.tsx +5 -5
  132. package/src/components/chart.tsx +3 -3
  133. package/src/components/chat/approval-request-message.tsx +2 -5
  134. package/src/components/chat/chat-attachment-bar.tsx +3 -3
  135. package/src/components/chat/chat-message-enhanced.tsx +1 -1
  136. package/src/components/chat/chat-message-list.tsx +1 -1
  137. package/src/components/chat/chat-message-row.tsx +3 -3
  138. package/src/components/chat/chat-quick-action.tsx +1 -1
  139. package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
  140. package/src/components/chat/chat-sidebar.tsx +6 -6
  141. package/src/components/chat/chat-typing-indicator.tsx +1 -1
  142. package/src/components/chat/context-compaction-display.tsx +1 -1
  143. package/src/components/chat/embeddable-chat.tsx +3 -3
  144. package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
  145. package/src/components/chat/entity-cards/blog-card.tsx +5 -8
  146. package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
  147. package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
  148. package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
  149. package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
  150. package/src/components/chat/entity-cards/dispatch.tsx +1 -1
  151. package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
  152. package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
  153. package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
  154. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
  155. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
  156. package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
  157. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
  158. package/src/components/chat/entity-cards/program-card.tsx +12 -12
  159. package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
  160. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
  161. package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
  162. package/src/components/chat/error-message-display.tsx +2 -2
  163. package/src/components/chat/mingo-info-card.tsx +2 -2
  164. package/src/components/chat/model-display.tsx +7 -7
  165. package/src/components/chat/quick-action-chip.tsx +1 -1
  166. package/src/components/chat/source-action-button.tsx +2 -2
  167. package/src/components/chat/tool-call-blocks.tsx +3 -5
  168. package/src/components/chat/utils/.chip-action-class.md +1 -1
  169. package/src/components/chat/utils/.chip-styles.md +2 -2
  170. package/src/components/chat/utils/chip-action-class.ts +1 -1
  171. package/src/components/chat/utils/chip-styles.ts +2 -2
  172. package/src/components/chat/utils/compact-card-classes.ts +3 -3
  173. package/src/components/command.tsx +3 -3
  174. package/src/components/comment-card.tsx +1 -1
  175. package/src/components/contact/contact-form.tsx +9 -9
  176. package/src/components/context-menu.tsx +5 -5
  177. package/src/components/date-time-picker.tsx +2 -2
  178. package/src/components/docs/doc-viewer.tsx +4 -4
  179. package/src/components/embeds/figma-embed.tsx +2 -2
  180. package/src/components/embeds/file-download-card.tsx +2 -2
  181. package/src/components/embeds/google-sheets-viewer.tsx +1 -1
  182. package/src/components/embeds/linkedin-embed-client.tsx +3 -3
  183. package/src/components/embeds/og-link-preview.tsx +14 -14
  184. package/src/components/embeds/pdf-viewer.tsx +1 -1
  185. package/src/components/embeds/reddit-embed-client.tsx +9 -9
  186. package/src/components/embeds/twitter-embed-client.tsx +9 -9
  187. package/src/components/empty-state.tsx +5 -5
  188. package/src/components/faq/faq-section.tsx +1 -1
  189. package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
  190. package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
  191. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
  192. package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
  193. package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
  194. package/src/components/features/array-entry-manager.tsx +7 -7
  195. package/src/components/features/auth-providers-list.tsx +1 -1
  196. package/src/components/features/board/ticket-card.tsx +1 -1
  197. package/src/components/features/changelog-manager.tsx +10 -10
  198. package/src/components/features/command-box.tsx +2 -2
  199. package/src/components/features/entity-summary-editor.tsx +3 -3
  200. package/src/components/features/figma-prototype-viewer.tsx +9 -9
  201. package/src/components/features/filters-dropdown.tsx +2 -2
  202. package/src/components/features/highlight-config-section.tsx +3 -3
  203. package/src/components/features/highlight-video-combined-section.tsx +2 -2
  204. package/src/components/features/highlight-video-preview.tsx +2 -2
  205. package/src/components/features/highlight-video-section.tsx +9 -9
  206. package/src/components/features/media-gallery-manager.tsx +14 -14
  207. package/src/components/features/og-editor-preview.tsx +4 -4
  208. package/src/components/features/os-type-badge-group.tsx +1 -1
  209. package/src/components/features/os-type-badge.tsx +2 -2
  210. package/src/components/features/platform-badge.tsx +4 -4
  211. package/src/components/features/policy-configuration-panel.tsx +6 -6
  212. package/src/components/features/provider-button.tsx +1 -1
  213. package/src/components/features/push-button-selector.tsx +21 -21
  214. package/src/components/features/release-media-manager.tsx +16 -16
  215. package/src/components/features/section-selector.tsx +8 -8
  216. package/src/components/features/select-button.tsx +4 -4
  217. package/src/components/features/seo-editor-preview.tsx +20 -20
  218. package/src/components/features/social-links-manager.tsx +3 -3
  219. package/src/components/features/start-with-openframe-button.tsx +3 -3
  220. package/src/components/features/status-filter-component.tsx +1 -1
  221. package/src/components/features/tags-selector.tsx +6 -6
  222. package/src/components/features/transcript-summary-editor.tsx +9 -9
  223. package/src/components/features/video-bites-strip.tsx +1 -1
  224. package/src/components/features/video-ratio-tabs.tsx +1 -1
  225. package/src/components/features/video-source-selector.tsx +7 -7
  226. package/src/components/features/video.tsx +1 -1
  227. package/src/components/features/waitlist-form.tsx +3 -3
  228. package/src/components/filter-chip.tsx +13 -13
  229. package/src/components/footer.tsx +3 -3
  230. package/src/components/form.tsx +2 -2
  231. package/src/components/hero-image-uploader.tsx +3 -3
  232. package/src/components/image-cropper.tsx +2 -2
  233. package/src/components/layout/page-container.tsx +6 -6
  234. package/src/components/layout/page-heading.tsx +1 -1
  235. package/src/components/loading/card-skeleton.tsx +2 -2
  236. package/src/components/loading/category-card-skeleton.tsx +1 -1
  237. package/src/components/loading/margin-report-skeleton.tsx +22 -22
  238. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  239. package/src/components/loading/page-layout-skeleton.tsx +83 -83
  240. package/src/components/loading/unified-skeleton.tsx +1 -1
  241. package/src/components/loading/users-grid-skeleton.tsx +2 -2
  242. package/src/components/logs-list.tsx +8 -8
  243. package/src/components/media-carousel.tsx +7 -7
  244. package/src/components/metric-value.tsx +2 -2
  245. package/src/components/msp-display.tsx +8 -2
  246. package/src/components/navigation/app-header.tsx +6 -6
  247. package/src/components/navigation/header-organization-filter.tsx +2 -2
  248. package/src/components/navigation/header.tsx +4 -4
  249. package/src/components/navigation/mobile-burger-menu.tsx +7 -7
  250. package/src/components/navigation/mobile-nav-panel.tsx +1 -1
  251. package/src/components/navigation/multi-level-navigation.tsx +7 -7
  252. package/src/components/navigation/navigation-sidebar.tsx +1 -1
  253. package/src/components/navigation/sticky-section-nav.tsx +2 -2
  254. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
  255. package/src/components/pagination.tsx +2 -2
  256. package/src/components/persistent-filter-controls.tsx +1 -1
  257. package/src/components/platform/.ShellTypeBadge.md +1 -1
  258. package/src/components/platform/CveLink.tsx +1 -1
  259. package/src/components/platform/ScriptArguments.tsx +2 -2
  260. package/src/components/platform/ScriptInfoSection.tsx +5 -5
  261. package/src/components/platform/ShellTypeBadge.tsx +6 -6
  262. package/src/components/platform/SoftwareInfo.tsx +2 -2
  263. package/src/components/pricing-display.tsx +9 -9
  264. package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
  265. package/src/components/related-content/related-content-section.tsx +3 -3
  266. package/src/components/results-count.tsx +1 -1
  267. package/src/components/shared/delivery/delivery-row.tsx +1 -1
  268. package/src/components/shared/delivery/delivery-table.tsx +1 -1
  269. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  270. package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
  271. package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
  272. package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
  273. package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
  274. package/src/components/shared/product-release/product-release-card.tsx +14 -14
  275. package/src/components/shared/product-release/release-detail-page.tsx +16 -16
  276. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
  277. package/src/components/smooth-accordion.tsx +1 -1
  278. package/src/components/social-icon-row.tsx +1 -1
  279. package/src/components/sonner.tsx +5 -5
  280. package/src/components/steps.tsx +3 -3
  281. package/src/components/tickets/help-center-create-form.tsx +1 -1
  282. package/src/components/tickets/help-center-list.tsx +1 -1
  283. package/src/components/tickets/ticket-center.tsx +2 -2
  284. package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
  285. package/src/components/tickets/ticket-open-form.tsx +6 -6
  286. package/src/components/ui/.title-content-block.md +1 -1
  287. package/src/components/ui/accordion.tsx +2 -2
  288. package/src/components/ui/actions-menu.tsx +1 -1
  289. package/src/components/ui/alert-dialog.tsx +3 -3
  290. package/src/components/ui/alert.tsx +2 -2
  291. package/src/components/ui/allowed-domains-input.tsx +3 -3
  292. package/src/components/ui/autocomplete.tsx +3 -3
  293. package/src/components/ui/badge.tsx +2 -2
  294. package/src/components/ui/brand-association-card.tsx +2 -2
  295. package/src/components/ui/breadcrumb.tsx +3 -3
  296. package/src/components/ui/bullet-list.tsx +2 -2
  297. package/src/components/ui/button/button.tsx +1 -1
  298. package/src/components/ui/card.tsx +4 -4
  299. package/src/components/ui/checkbox-with-description.tsx +1 -1
  300. package/src/components/ui/chevron-button.tsx +1 -1
  301. package/src/components/ui/content-loader.tsx +16 -16
  302. package/src/components/ui/cursor-pagination.tsx +1 -1
  303. package/src/components/ui/date-picker.tsx +2 -2
  304. package/src/components/ui/device-card-compact.tsx +2 -2
  305. package/src/components/ui/device-card.tsx +3 -3
  306. package/src/components/ui/dialog.tsx +3 -3
  307. package/src/components/ui/drawer.tsx +4 -4
  308. package/src/components/ui/dropdown-menu.tsx +6 -6
  309. package/src/components/ui/error-state.tsx +9 -9
  310. package/src/components/ui/fade-preview.tsx +1 -1
  311. package/src/components/ui/field-wrapper.tsx +1 -1
  312. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
  313. package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
  314. package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
  315. package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
  316. package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
  317. package/src/components/ui/file-upload.tsx +9 -9
  318. package/src/components/ui/filter-pill-row.tsx +1 -1
  319. package/src/components/ui/floating-tooltip.tsx +1 -1
  320. package/src/components/ui/highlight-card.tsx +1 -1
  321. package/src/components/ui/hover-dropdown.tsx +1 -1
  322. package/src/components/ui/image-gallery-modal.tsx +1 -1
  323. package/src/components/ui/info-row.tsx +1 -1
  324. package/src/components/ui/input.tsx +1 -1
  325. package/src/components/ui/label.tsx +5 -5
  326. package/src/components/ui/markdown-editor.tsx +4 -5
  327. package/src/components/ui/menubar.tsx +7 -7
  328. package/src/components/ui/modal-v2.tsx +1 -1
  329. package/src/components/ui/modal.tsx +1 -1
  330. package/src/components/ui/more-actions-menu.tsx +1 -1
  331. package/src/components/ui/navigation-menu.tsx +1 -1
  332. package/src/components/ui/organization-card.tsx +8 -8
  333. package/src/components/ui/page-loader.tsx +6 -6
  334. package/src/components/ui/phone-input.tsx +1 -1
  335. package/src/components/ui/progress-bar.tsx +5 -5
  336. package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
  337. package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
  338. package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
  339. package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
  340. package/src/components/ui/release-changelog-section.tsx +2 -2
  341. package/src/components/ui/rich-markdown-renderer.tsx +6 -6
  342. package/src/components/ui/search-input.tsx +7 -7
  343. package/src/components/ui/select.tsx +1 -1
  344. package/src/components/ui/service-card.tsx +4 -4
  345. package/src/components/ui/sheet.tsx +3 -3
  346. package/src/components/ui/simple-markdown-renderer.tsx +4 -4
  347. package/src/components/ui/square-avatar.tsx +9 -5
  348. package/src/components/ui/status-badge.tsx +11 -11
  349. package/src/components/ui/status-indicator.tsx +6 -6
  350. package/src/components/ui/tab-content.tsx +1 -1
  351. package/src/components/ui/tab-navigation.tsx +2 -2
  352. package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
  353. package/src/components/ui/table/table-description-cell.tsx +1 -1
  354. package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
  355. package/src/components/ui/table/table.tsx +2 -2
  356. package/src/components/ui/tabs.tsx +1 -1
  357. package/src/components/ui/tag-search-input.tsx +1 -1
  358. package/src/components/ui/tag.tsx +23 -23
  359. package/src/components/ui/tags-input.tsx +2 -2
  360. package/src/components/ui/ticket-status-tag.tsx +1 -1
  361. package/src/components/ui/toaster.tsx +8 -8
  362. package/src/components/ui/toggle.tsx +1 -1
  363. package/src/components/ui/tooltip.tsx +1 -1
  364. package/src/components/user-display.tsx +12 -6
  365. package/src/components/user-summary-stub.tsx +4 -4
  366. package/src/components/vendor-display-button.tsx +2 -2
  367. package/src/components/vendor-icon.tsx +1 -1
  368. package/src/components/vendor-tag.tsx +9 -10
  369. package/src/components/yes-no-display.tsx +3 -3
  370. package/src/styles/ods-colors.css +2 -0
  371. package/tailwind.config.ts +49 -4
  372. package/dist/chunk-2ELBNZJ3.js.map +0 -1
  373. package/dist/chunk-3WJQL4DN.cjs.map +0 -1
  374. package/dist/chunk-4ACSUJ7Q.js.map +0 -1
  375. package/dist/chunk-7WM77CSW.js.map +0 -1
  376. package/dist/chunk-COMBYYQY.js.map +0 -1
  377. package/dist/chunk-EGRZHR7J.js.map +0 -1
  378. package/dist/chunk-F7YVI54P.js.map +0 -1
  379. package/dist/chunk-G5FALXNO.js.map +0 -1
  380. package/dist/chunk-HTVVXVJL.cjs.map +0 -1
  381. package/dist/chunk-IAN7GUIV.cjs.map +0 -1
  382. package/dist/chunk-IMK6RUEC.cjs.map +0 -1
  383. package/dist/chunk-M6QGB6DC.cjs.map +0 -1
  384. package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
  385. package/dist/chunk-NQQ4NLUT.js.map +0 -1
  386. package/dist/chunk-P7PISHM5.js.map +0 -1
  387. package/dist/chunk-PBTY7AH5.js.map +0 -1
  388. package/dist/chunk-R46QEE3R.cjs.map +0 -1
  389. package/dist/chunk-RQQZF6G6.cjs.map +0 -1
  390. package/dist/chunk-RVWC4P3H.js.map +0 -1
  391. package/dist/chunk-VWGF6IFR.cjs.map +0 -1
  392. package/dist/chunk-WAGTZVQN.js.map +0 -1
  393. package/dist/chunk-WZ6TCAYQ.cjs.map +0 -1
  394. package/dist/components/accordion.d.ts +0 -8
  395. package/dist/components/accordion.d.ts.map +0 -1
  396. package/dist/components/alert-dialog.d.ts +0 -21
  397. package/dist/components/alert-dialog.d.ts.map +0 -1
  398. package/dist/components/alert.d.ts +0 -9
  399. package/dist/components/alert.d.ts.map +0 -1
  400. package/dist/components/badge.d.ts +0 -10
  401. package/dist/components/badge.d.ts.map +0 -1
  402. package/dist/components/breadcrumb.d.ts +0 -20
  403. package/dist/components/breadcrumb.d.ts.map +0 -1
  404. package/dist/components/chevron-button.d.ts +0 -14
  405. package/dist/components/chevron-button.d.ts.map +0 -1
  406. package/dist/components/dialog.d.ts +0 -29
  407. package/dist/components/dialog.d.ts.map +0 -1
  408. package/dist/components/dropdown-menu.d.ts +0 -28
  409. package/dist/components/dropdown-menu.d.ts.map +0 -1
  410. package/dist/components/input.d.ts +0 -8
  411. package/dist/components/input.d.ts.map +0 -1
  412. package/dist/components/label.d.ts +0 -6
  413. package/dist/components/label.d.ts.map +0 -1
  414. package/dist/components/menubar.d.ts +0 -34
  415. package/dist/components/menubar.d.ts.map +0 -1
  416. package/dist/components/navigation-menu.d.ts +0 -13
  417. package/dist/components/navigation-menu.d.ts.map +0 -1
  418. package/dist/components/select.d.ts +0 -14
  419. package/dist/components/select.d.ts.map +0 -1
  420. package/dist/components/sidebar.d.ts +0 -67
  421. package/dist/components/sidebar.d.ts.map +0 -1
  422. package/dist/components/square-avatar.d.ts +0 -21
  423. package/dist/components/square-avatar.d.ts.map +0 -1
  424. package/dist/components/table.d.ts +0 -11
  425. package/dist/components/table.d.ts.map +0 -1
  426. package/dist/components/tabs.d.ts +0 -18
  427. package/dist/components/tabs.d.ts.map +0 -1
  428. package/dist/components/toggle.d.ts +0 -13
  429. package/dist/components/toggle.d.ts.map +0 -1
  430. package/src/components/.accordion.md +0 -42
  431. package/src/components/.alert-dialog.md +0 -58
  432. package/src/components/.alert.md +0 -43
  433. package/src/components/.badge.md +0 -40
  434. package/src/components/.breadcrumb.md +0 -54
  435. package/src/components/.chevron-button.md +0 -46
  436. package/src/components/.dialog.md +0 -60
  437. package/src/components/.dropdown-menu.md +0 -51
  438. package/src/components/.input.md +0 -40
  439. package/src/components/.label.md +0 -41
  440. package/src/components/.menubar.md +0 -49
  441. package/src/components/.navigation-menu.md +0 -44
  442. package/src/components/.select.md +0 -54
  443. package/src/components/.sidebar.md +0 -58
  444. package/src/components/.square-avatar.md +0 -42
  445. package/src/components/.table.md +0 -51
  446. package/src/components/.tabs.md +0 -38
  447. package/src/components/.toggle.md +0 -49
  448. package/src/components/accordion.tsx +0 -56
  449. package/src/components/alert-dialog.tsx +0 -141
  450. package/src/components/alert.tsx +0 -59
  451. package/src/components/badge.tsx +0 -30
  452. package/src/components/breadcrumb.tsx +0 -115
  453. package/src/components/chevron-button.tsx +0 -68
  454. package/src/components/dialog.tsx +0 -150
  455. package/src/components/dropdown-menu.tsx +0 -200
  456. package/src/components/input.tsx +0 -39
  457. package/src/components/label.tsx +0 -19
  458. package/src/components/menubar.tsx +0 -236
  459. package/src/components/navigation-menu.tsx +0 -128
  460. package/src/components/select.tsx +0 -160
  461. package/src/components/sidebar.tsx +0 -764
  462. package/src/components/square-avatar.tsx +0 -61
  463. package/src/components/table.tsx +0 -72
  464. package/src/components/tabs.tsx +0 -65
  465. package/src/components/toggle.tsx +0 -45
  466. /package/dist/{chunk-QXYOGJQJ.js.map → chunk-7KDR5P23.js.map} +0 -0
  467. /package/dist/{chunk-PEIR7D25.js.map → chunk-7KNOHGMI.js.map} +0 -0
@@ -27,7 +27,7 @@ const ContextMenuSubTrigger = React.forwardRef<
27
27
  <ContextMenuPrimitive.SubTrigger
28
28
  ref={ref}
29
29
  className={cn(
30
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
30
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
31
31
  inset && "pl-8",
32
32
  className
33
33
  )}
@@ -80,7 +80,7 @@ const ContextMenuItem = React.forwardRef<
80
80
  <ContextMenuPrimitive.Item
81
81
  ref={ref}
82
82
  className={cn(
83
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
83
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
84
84
  inset && "pl-8",
85
85
  className
86
86
  )}
@@ -96,7 +96,7 @@ const ContextMenuCheckboxItem = React.forwardRef<
96
96
  <ContextMenuPrimitive.CheckboxItem
97
97
  ref={ref}
98
98
  className={cn(
99
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
99
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
100
100
  className
101
101
  )}
102
102
  checked={checked}
@@ -120,7 +120,7 @@ const ContextMenuRadioItem = React.forwardRef<
120
120
  <ContextMenuPrimitive.RadioItem
121
121
  ref={ref}
122
122
  className={cn(
123
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
123
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
124
124
  className
125
125
  )}
126
126
  {...props}
@@ -144,7 +144,7 @@ const ContextMenuLabel = React.forwardRef<
144
144
  <ContextMenuPrimitive.Label
145
145
  ref={ref}
146
146
  className={cn(
147
- "px-2 py-1.5 text-sm font-semibold text-foreground",
147
+ "px-2 py-1.5 text-h6 font-semibold text-foreground",
148
148
  inset && "pl-8",
149
149
  className
150
150
  )}
@@ -25,7 +25,7 @@ const inputClassName = cn(
25
25
  "disabled:cursor-not-allowed disabled:opacity-50 touch-manipulation",
26
26
  // Admin theme colors
27
27
  "bg-ods-card border-ods-border text-ods-text-primary",
28
- "placeholder:text-[#767676] focus-visible:ring-[#FFC008]",
28
+ "placeholder:text-ods-text-muted focus-visible:ring-ods-accent",
29
29
  "md:text-sm text-base" // Mobile zoom prevention
30
30
  );
31
31
 
@@ -44,7 +44,7 @@ export function DateTimePicker({
44
44
  return (
45
45
  <div className={cn("space-y-2", className)}>
46
46
  {label && (
47
- <Label className="font-['Azeret_Mono'] text-[12px] font-semibold leading-[1em] tracking-[-0.02em] text-ods-text-secondary uppercase">
47
+ <Label className="text-h5 font-semibold text-ods-text-secondary">
48
48
  {label}
49
49
  </Label>
50
50
  )}
@@ -291,7 +291,7 @@ function DocViewerContent({
291
291
  {error && (
292
292
  <div className="flex justify-center">
293
293
  <div className="rounded-lg border bg-ods-card p-8 text-center max-w-md border-ods-border">
294
- <h2 className="text-xl font-semibold text-ods-text-primary">
294
+ <h2 className="text-h3 text-ods-text-primary">
295
295
  Error Loading Documents
296
296
  </h2>
297
297
  <p className="mt-2 text-ods-text-secondary">{error}. Please try again later.</p>
@@ -322,7 +322,7 @@ function DocViewerContent({
322
322
  <PersistentSidebar isLoading={false}>
323
323
  <div className="hidden lg:block">
324
324
  <div className="space-y-4">
325
- <h3 className="text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em]">
325
+ <h3 className="text-h5 font-semibold text-ods-text-secondary">
326
326
  {sidebarLabel}
327
327
  </h3>
328
328
  <MultiLevelNavigation
@@ -369,7 +369,7 @@ function DocViewerContent({
369
369
  renderSkeleton(selectedNodeDocType)
370
370
  ) : !content ? (
371
371
  <div className="text-center py-16">
372
- <p className="text-xl text-ods-text-secondary">{resolvedEmptyText}</p>
372
+ <p className="text-h4 text-ods-text-secondary">{resolvedEmptyText}</p>
373
373
  </div>
374
374
  ) : (
375
375
  renderedContent
@@ -406,7 +406,7 @@ function DocViewerContent({
406
406
  !isLoadingContent && (
407
407
  <div className="hidden lg:block">
408
408
  <div className="sticky top-24">
409
- <h3 className="text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em] mb-4">
409
+ <h3 className="text-h5 font-semibold text-ods-text-secondary mb-4">
410
410
  ON THIS PAGE
411
411
  </h3>
412
412
  <StickySectionNav
@@ -57,7 +57,7 @@ function SlidesViewToggle({
57
57
  key={key}
58
58
  value={key}
59
59
  aria-label={label}
60
- className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-sm font-medium transition-colors ${
60
+ className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-h6 transition-colors ${
61
61
  active
62
62
  ? 'bg-ods-accent text-ods-text-on-accent'
63
63
  : 'text-ods-text-secondary hover:text-ods-text-primary hover:bg-ods-bg-hover'
@@ -106,7 +106,7 @@ export function FigmaEmbed({ url, title, height, loading = 'lazy' }: FigmaEmbedP
106
106
  <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
107
107
  <div className="flex items-center gap-2 min-w-0">
108
108
  <FigmaIcon className="w-5 h-5 shrink-0" />
109
- <span className="font-sans text-base font-semibold text-ods-text-primary truncate">
109
+ <span className="text-h6 font-semibold text-ods-text-primary truncate">
110
110
  {heading}
111
111
  </span>
112
112
  </div>
@@ -30,10 +30,10 @@ export function FileDownloadCard({
30
30
  <div className="bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4">
31
31
  <FileText className="w-16 h-16 text-ods-text-secondary mx-auto" />
32
32
  <div>
33
- <h3 className="text-lg font-semibold text-ods-text-primary">
33
+ <h3 className="text-h3 text-ods-text-primary">
34
34
  {fileName || 'File'}
35
35
  </h3>
36
- <div className="flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary">
36
+ <div className="flex items-center justify-center gap-3 mt-2 text-h6 text-ods-text-secondary">
37
37
  {mimeType && <span>{mimeType}</span>}
38
38
  {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}
39
39
  </div>
@@ -30,7 +30,7 @@ export function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleShee
30
30
  <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
31
31
  <div className="flex items-center gap-2 min-w-0">
32
32
  <GoogleSheetsIcon className="w-5 h-5 shrink-0" />
33
- <h2 className="text-xl font-semibold text-ods-text-primary truncate">{displayName}</h2>
33
+ <h2 className="text-h3 text-ods-text-primary truncate">{displayName}</h2>
34
34
  </div>
35
35
  <Button
36
36
  variant="outline"
@@ -46,7 +46,7 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
46
46
  href={url}
47
47
  target="_blank"
48
48
  rel="noopener noreferrer"
49
- className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-card border border-ods-border text-ods-text-primary rounded-md text-sm font-medium hover:bg-ods-bg-secondary transition-colors"
49
+ className="inline-flex items-center space-x-2 px-4 py-2 bg-ods-card border border-ods-border text-ods-text-primary rounded-md text-h6 hover:bg-ods-bg-hover transition-colors"
50
50
  >
51
51
  <LinkedinIcon className="w-4 h-4" />
52
52
  <span>View on LinkedIn</span>
@@ -84,12 +84,12 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
84
84
  onLoad={() => setLoaded(true)}
85
85
  />
86
86
  </div>
87
- <div className="px-4 py-3 bg-ods-bg-secondary border-t border-ods-border">
87
+ <div className="px-4 py-3 bg-ods-bg-surface border-t border-ods-border">
88
88
  <a
89
89
  href={url}
90
90
  target="_blank"
91
91
  rel="noopener noreferrer"
92
- className="inline-flex items-center space-x-2 text-ods-accent hover:text-ods-accent/80 transition-colors text-sm font-medium"
92
+ className="inline-flex items-center space-x-2 text-ods-accent hover:text-ods-accent/80 transition-colors text-h6"
93
93
  >
94
94
  <ExternalLink className="w-4 h-4" />
95
95
  <span>View on LinkedIn</span>
@@ -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(--ods-bg-secondary)')
260
+ const bgColor = useImageEdgeColor(resolvedImageUrl ?? null, 'var(--color-bg-surface)')
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-secondary rounded-lg flex items-center justify-center flex-shrink-0">
362
+ <div className="w-8 h-8 bg-ods-bg-surface 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="font-sans text-sm font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
366
+ <h3 className="text-h6 font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
367
367
  {description && (
368
- <p className="font-sans text-xs text-ods-text-secondary truncate">{description}</p>
368
+ <p className="text-h6 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="font-sans text-sm font-semibold text-ods-text-primary overflow-hidden group-hover:text-ods-accent transition-colors"
384
+ <h3 className="text-h6 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="font-sans text-xs text-ods-text-secondary overflow-hidden mt-1"
387
+ <p className="text-h6 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-xs text-ods-text-secondary mt-1 truncate">{effectiveData.siteName || ogDomain}</div>
390
+ <div className="text-h6 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-secondary rounded-lg flex items-center justify-center flex-shrink-0">
402
+ <div className="w-10 h-10 bg-ods-bg-surface 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="font-sans font-semibold text-ods-text-primary text-base group-hover:text-ods-accent transition-colors truncate">{title}</h3>
406
+ <h3 className="text-h6 font-semibold text-ods-text-primary group-hover:text-ods-accent transition-colors truncate">{title}</h3>
407
407
  {description && (
408
- <p className="font-sans text-sm text-ods-text-secondary truncate">{description}</p>
408
+ <p className="text-h6 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="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"
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"
430
430
  style={{ display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical' }}>{title}</h3>
431
431
  {description && (
432
- <p className="font-sans text-sm text-ods-text-secondary overflow-hidden h-[2.5rem] leading-[1.25rem] mb-2"
432
+ <p className="text-h6 text-ods-text-secondary overflow-hidden h-[2.5rem] 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-xs text-ods-text-secondary">
436
- <span className="font-medium">{effectiveData.siteName}</span>
435
+ <div className="flex items-center gap-2 text-h6 text-ods-text-secondary">
436
+ <span>{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-xl font-semibold text-ods-text-primary truncate">{displayName}</h2>
34
+ <h2 className="text-h3 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-sm mb-4">
209
+ <p className="text-ods-text-secondary text-h6 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-sm font-medium 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-h6 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 font-medium">r/{redditData.subreddit}</p>
483
- <div className="flex items-center space-x-2 text-ods-text-secondary text-sm">
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">
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 font-semibold text-lg mb-3 leading-tight">
496
+ <h3 className="text-ods-text-primary text-h3 mb-3">
497
497
  {redditData.title}
498
498
  </h3>
499
499
 
500
500
  {redditData.selftext && (
501
501
  <div
502
- className="text-ods-text-secondary text-sm leading-relaxed mb-4 overflow-hidden"
502
+ className="text-ods-text-secondary text-h6 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-sm">
520
+ <div className="flex items-center space-x-6 text-ods-text-secondary text-h6">
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-secondary border-t border-ods-border">
533
+ <div className="px-4 py-3 bg-ods-bg-surface 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-sm font-medium"
538
+ className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-h6"
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-sm mb-4">
151
+ <p className="text-ods-text-secondary text-h6 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-secondary text-ods-text-primary rounded-md text-sm font-medium hover:bg-ods-bg-tertiary transition-colors"
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"
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 font-medium">@{username}</p>
232
- <div className="flex items-center space-x-2 text-ods-text-secondary text-sm">
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">
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-sm leading-relaxed mb-4 overflow-hidden"
247
+ className="text-ods-text-secondary text-h6 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-sm"
267
+ className="inline-flex items-center space-x-2 text-[#1DA1F2] hover:text-ods-accent transition-colors text-h6"
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-sm">
277
+ <div className="flex items-center space-x-6 text-ods-text-secondary text-h6">
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-secondary border-t border-ods-border">
294
+ <div className="px-4 py-3 bg-ods-bg-surface 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-sm font-medium"
299
+ className="inline-flex items-center space-x-2 text-ods-accent hover:opacity-80 transition-colors text-h6"
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-lg md:text-xl font-semibold font-['DM_Sans'] text-ods-text-primary tracking-[-0.02em]">
166
+ <h2 className="mb-2 md:mb-3 text-h3 text-ods-text-primary">
167
167
  {displayTitle}
168
168
  </h2>
169
169
 
170
170
  {/* Description */}
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]">
171
+ <p className="mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary">
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-['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"
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"
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-['DM_Sans'] font-medium"
196
+ className="w-full transition-all duration-150 font-body 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-sm font-medium font-['DM_Sans'] transition-colors",
275
+ "rounded-full border px-4 py-2 text-h6 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-sm font-['DM_Sans'] mt-1">
144
+ <p className="text-ods-text-secondary text-h6 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-sm font-medium text-ods-text-primary font-['DM_Sans']"
157
+ className="text-h6 text-ods-text-primary"
158
158
  >
159
159
  {customInstructionsLabel}
160
160
  </label>
161
161
  {customInstructionsMaxLength !== undefined && (
162
- <span className="text-xs text-ods-text-secondary font-['DM_Sans']">
162
+ <span className="text-h6 text-ods-text-secondary">
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-xs text-ods-text-secondary font-['DM_Sans']">
178
+ <p className="text-h6 text-ods-text-secondary">
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-sm font-['DM_Sans']">
220
+ <p className="text-ods-text-secondary text-h6">
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-xs font-medium rounded-full bg-[--ods-flamingo-cyan-base]/10 text-[--ods-flamingo-cyan-base]/70 font-['DM_Sans']"
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"
229
229
  >
230
- <span className="w-1.5 h-1.5 rounded-full bg-[--ods-flamingo-cyan-base]/50" />
230
+ <span className="w-1.5 h-1.5 rounded-full bg-ods-flamingo-cyan/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-card-secondary">
241
+ <div className="flex items-center gap-3 p-3 rounded-lg bg-ods-bg-surface">
242
242
  <Loader2 className="h-5 w-5 text-ods-accent animate-spin" />
243
- <span className="text-sm text-ods-text-primary font-['DM_Sans']">
243
+ <span className="text-h6 text-ods-text-primary">
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-attention-green-success]/10' : 'bg-[--ods-attention-red-error]/10'
255
+ status === 'success' ? 'bg-ods-success/10' : 'bg-ods-error/10'
256
256
  )}>
257
257
  {status === 'success' ? (
258
- <CheckCircle className="h-5 w-5 text-[--ods-attention-green-success]" />
258
+ <CheckCircle className="h-5 w-5 text-ods-success" />
259
259
  ) : (
260
- <AlertCircle className="h-5 w-5 text-[--ods-attention-red-error]" />
260
+ <AlertCircle className="h-5 w-5 text-ods-error" />
261
261
  )}
262
262
  <span className={cn(
263
- 'text-sm font-medium',
264
- status === 'success' ? 'text-[--ods-attention-green-success]' : 'text-[--ods-attention-red-error]'
263
+ 'text-h6',
264
+ status === 'success' ? 'text-ods-success' : 'text-ods-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 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',
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',
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-['DM_Sans']">AI-required</span>
32
+ <span className="font-body">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-[var(--ods-flamingo-cyan-base)]',
26
- bgColor: 'bg-[var(--ods-flamingo-cyan-base)]/10',
25
+ color: 'text-ods-flamingo-cyan',
26
+ bgColor: 'bg-ods-flamingo-cyan/10',
27
27
  label: 'Processing...',
28
28
  },
29
29
  success: {
30
- color: 'text-green-500',
31
- bgColor: 'bg-green-500/10',
30
+ color: 'text-ods-success',
31
+ bgColor: 'bg-ods-success/10',
32
32
  label: 'Enriched',
33
33
  },
34
34
  error: {
35
- color: 'text-red-500',
36
- bgColor: 'bg-red-500/10',
35
+ color: 'text-ods-error',
36
+ bgColor: 'bg-ods-error/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-sm font-medium',
74
+ 'text-h6',
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-xs px-2 py-0.5 rounded-full border',
85
+ 'text-h6 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-yellow-500/30 bg-yellow-500/10 p-4',
24
+ 'rounded-lg border border-ods-warning/30 bg-ods-warning/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-yellow-500 flex-shrink-0 mt-0.5"
30
+ className="w-5 h-5 text-ods-warning 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-sm font-semibold text-yellow-500 mb-2">
43
+ <h4 className="text-h6 font-semibold text-ods-warning 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-sm text-yellow-500/80 list-disc list-inside"
50
+ className="text-h6 text-ods-warning/80 list-disc list-inside"
51
51
  >
52
52
  {warning}
53
53
  </li>