@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
@@ -85,7 +85,7 @@ const Pagination = ({ currentPage, totalPages, onPageChange, className }: Pagina
85
85
  // Render ellipsis
86
86
  return (
87
87
  <li key={`ellipsis-${index}`}>
88
- <span className="flex h-9 w-9 items-center justify-center text-h6 text-muted-foreground">
88
+ <span className="flex h-9 w-9 items-center justify-center text-sm text-muted-foreground">
89
89
  <MoreHorizontal className="h-4 w-4" />
90
90
  <span className="sr-only">More pages</span>
91
91
  </span>
@@ -147,7 +147,7 @@ const PaginationLink = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttri
147
147
  <button
148
148
  ref={ref}
149
149
  className={cn(
150
- "inline-flex items-center justify-center h-10 w-10 rounded-md border border-input bg-background text-h6 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
150
+ "inline-flex items-center justify-center h-10 w-10 rounded-md border border-input bg-background text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
151
151
  className,
152
152
  )}
153
153
  {...props}
@@ -107,7 +107,7 @@ export function PersistentFilterControls({
107
107
  role="status"
108
108
  aria-label="Loading filters"
109
109
  >
110
- <div className="w-4 h-4 border-2 border-ods-border border-t-ods-accent rounded-full animate-spin" />
110
+ <div className="w-4 h-4 border-2 border-ods-border border-t-[#FFC008] rounded-full animate-spin" />
111
111
  </div>
112
112
  )}
113
113
  </div>
@@ -20,7 +20,7 @@ import { ShellTypeValues } from './types/shell.types'
20
20
  // With custom wrapper and icon class overrides
21
21
  <ShellTypeBadge
22
22
  shellType={ShellTypeValues.PYTHON}
23
- className="bg-ods-bg-surface px-2 py-1 rounded"
23
+ className="bg-ods-surface-secondary px-2 py-1 rounded"
24
24
  iconClassName="opacity-75"
25
25
  />
26
26
 
@@ -33,7 +33,7 @@ export const CveLink: React.FC<CveLinkProps> = ({
33
33
  target="_blank"
34
34
  rel="noopener noreferrer"
35
35
  className={cn(
36
- 'inline-flex items-center gap-2 text-code text-ods-text-primary hover:text-ods-accent transition-colors group',
36
+ 'inline-flex items-center gap-2 font-medium text-[18px] leading-[20px] text-ods-text-primary font-mono hover:text-ods-accent transition-colors group',
37
37
  className
38
38
  )}
39
39
  >
@@ -136,7 +136,7 @@ export const ScriptArguments: React.FC<ScriptArgumentsProps> = ({
136
136
  placeholder={valuePlaceholder}
137
137
  disabled={disabled}
138
138
  className={cn(
139
- !arg.value && 'placeholder:text-ods-text-muted'
139
+ !arg.value && 'placeholder:text-[#888]'
140
140
  )}
141
141
  />
142
142
  </div>
@@ -147,7 +147,7 @@ export const ScriptArguments: React.FC<ScriptArgumentsProps> = ({
147
147
  onClick={() => handleDelete(arg.id)}
148
148
  disabled={disabled}
149
149
  aria-label="Delete argument"
150
- leftIcon={<Trash2 className="size-4 md:size-6 " color="var(--color-error)" />}
150
+ leftIcon={<Trash2 className="size-4 md:size-6 " color="var(--ods-attention-red-error)" />}
151
151
  />
152
152
  </div>
153
153
  </div>
@@ -91,7 +91,7 @@ function InfoCell({ label, value, avatar, className }: InfoCellProps) {
91
91
  className="size-full object-cover"
92
92
  />
93
93
  ) : (
94
- <div className="size-full flex items-center justify-center text-ods-text-secondary text-h6">
94
+ <div className="size-full flex items-center justify-center text-ods-text-secondary text-sm font-medium">
95
95
  {avatar.initials || getInitials(avatar.name)}
96
96
  </div>
97
97
  )}
@@ -100,10 +100,10 @@ function InfoCell({ label, value, avatar, className }: InfoCellProps) {
100
100
 
101
101
  {/* Text content */}
102
102
  <div className="flex flex-col min-w-0">
103
- <span className="text-ods-text-primary text-h4 truncate" title={value}>
103
+ <span className="text-ods-text-primary font-['DM_Sans'] text-[14px] leading-[20px] md:text-[18px] md:leading-[24px] font-medium truncate" title={value}>
104
104
  {value}
105
105
  </span>
106
- <span className="text-ods-text-secondary text-h6 truncate">
106
+ <span className="text-ods-text-secondary font-['DM_Sans'] text-[12px] leading-[16px] md:text-[14px] md:leading-[20px] font-medium truncate">
107
107
  {label}
108
108
  </span>
109
109
  </div>
@@ -148,11 +148,11 @@ export const ScriptInfoSection: React.FC<ScriptInfoSectionProps> = ({
148
148
  {/* Header row with title and description */}
149
149
  <div className="p-4 border-b border-ods-border">
150
150
  <div className="flex flex-col gap-1">
151
- <h3 className="text-ods-text-primary text-h4">
151
+ <h3 className="text-ods-text-primary font-['DM_Sans'] text-[14px] leading-[20px] md:text-[18px] md:leading-[24px] font-medium">
152
152
  {headline}
153
153
  </h3>
154
154
  {subheadline && (
155
- <p className="text-ods-text-secondary text-h6 break-words">
155
+ <p className="text-ods-text-secondary font-['DM_Sans'] text-[12px] leading-[16px] md:text-[14px] md:leading-[20px] font-medium break-words">
156
156
  {subheadline}
157
157
  </p>
158
158
  )}
@@ -39,11 +39,11 @@ const shellIconMap: Record<ShellType, ShellIconConfig> = {
39
39
  },
40
40
  [ShellTypeValues.CMD]: {
41
41
  icon: CmdIcon,
42
- props: { size: 16, color: 'var(--color-text-secondary)' }
42
+ props: { size: 16, color: '#888888' }
43
43
  },
44
44
  [ShellTypeValues.BASH]: {
45
45
  icon: BashIcon,
46
- props: { size: 16, color: 'var(--color-text-secondary)' }
46
+ props: { size: 16, color: '#888888' }
47
47
  },
48
48
  [ShellTypeValues.PYTHON]: {
49
49
  icon: PythonLogoIcon,
@@ -51,21 +51,21 @@ const shellIconMap: Record<ShellType, ShellIconConfig> = {
51
51
  },
52
52
  [ShellTypeValues.NUSHELL]: {
53
53
  icon: NushellIcon,
54
- props: { size: 16, color: 'var(--color-text-secondary)' }
54
+ props: { size: 16, color: '#888888' }
55
55
  },
56
56
  [ShellTypeValues.DENO]: {
57
57
  icon: DenoIcon,
58
- props: { size: 16, color: 'var(--color-text-secondary)' }
58
+ props: { size: 16, color: '#888888' }
59
59
  },
60
60
  [ShellTypeValues.SHELL]: {
61
61
  icon: ShellIcon,
62
- props: { size: 16, color: 'var(--color-text-secondary)' }
62
+ props: { size: 16, color: '#888888' }
63
63
  }
64
64
  } as const
65
65
 
66
66
  const defaultIconConfig: ShellIconConfig = {
67
67
  icon: ShellIcon,
68
- props: { size: 16, color: 'var(--color-text-secondary)' }
68
+ props: { size: 16, color: '#888888' }
69
69
  }
70
70
 
71
71
  export interface ShellTypeBadgeProps {
@@ -38,13 +38,13 @@ export const SoftwareInfo: React.FC<SoftwareInfoProps> = ({
38
38
  {name}
39
39
  </div>
40
40
  {version && (
41
- <div className="px-2 py-1 bg-ods-bg-surface rounded text-ods-text-secondary text-h6">
41
+ <div className="px-2 py-1 bg-ods-system-greys-soft-grey-action rounded text-ods-text-secondary font-['DM_Sans'] font-normal text-[16px] leading-[20px]">
42
42
  {version}
43
43
  </div>
44
44
  )}
45
45
  </div>
46
46
  {vendor && (
47
- <div className="text-h6 text-ods-text-secondary">
47
+ <div className="font-['DM_Sans'] font-normal text-[16px] leading-[16px] text-ods-text-secondary">
48
48
  {vendor}
49
49
  </div>
50
50
  )}
@@ -23,30 +23,30 @@ interface PricingDisplayProps {
23
23
  export const PRICING_STYLES = {
24
24
  // Comparison table style (current default)
25
25
  comparison: {
26
- priceTextSize: 'text-h6',
26
+ priceTextSize: 'text-[16px]',
27
27
  priceTextColor: 'text-ods-text-primary',
28
- secondaryTextSize: 'text-h6',
28
+ secondaryTextSize: 'text-[16px]',
29
29
  secondaryTextColor: 'text-ods-text-secondary',
30
30
  showTildePrefix: false,
31
- fontFamily: 'font-body'
31
+ fontFamily: "font-['DM_Sans']"
32
32
  },
33
33
  // Vendor dropdown compact style (Figma design)
34
34
  compact: {
35
- priceTextSize: 'text-h6',
35
+ priceTextSize: 'text-[12px]',
36
36
  priceTextColor: 'text-ods-text-secondary',
37
- secondaryTextSize: 'text-h6',
37
+ secondaryTextSize: 'text-[12px]',
38
38
  secondaryTextColor: 'text-ods-text-secondary',
39
39
  showTildePrefix: true,
40
- fontFamily: 'font-body'
40
+ fontFamily: "font-['DM_Sans']"
41
41
  },
42
42
  // Card style for vendor cards
43
43
  card: {
44
- priceTextSize: 'text-h6',
44
+ priceTextSize: 'text-[14px]',
45
45
  priceTextColor: 'text-ods-text-primary',
46
- secondaryTextSize: 'text-h6',
46
+ secondaryTextSize: 'text-[14px]',
47
47
  secondaryTextColor: 'text-ods-text-secondary',
48
48
  showTildePrefix: true,
49
- fontFamily: 'font-body'
49
+ fontFamily: "font-['DM_Sans']"
50
50
  }
51
51
  } as const
52
52
 
@@ -10,18 +10,18 @@ export function ProfileLoadingSkeleton({ className }: ProfileLoadingSkeletonProp
10
10
  <div className={cn("space-y-6", className)}>
11
11
  {/* Header skeleton */}
12
12
  <div className="flex items-center space-x-4">
13
- <div className="h-16 w-16 bg-ods-skeleton rounded-full animate-pulse" />
13
+ <div className="h-16 w-16 bg-gray-200 rounded-full animate-pulse" />
14
14
  <div className="space-y-2">
15
- <div className="h-4 w-32 bg-ods-skeleton rounded animate-pulse" />
16
- <div className="h-3 w-24 bg-ods-skeleton rounded animate-pulse" />
15
+ <div className="h-4 w-32 bg-gray-200 rounded animate-pulse" />
16
+ <div className="h-3 w-24 bg-gray-200 rounded animate-pulse" />
17
17
  </div>
18
18
  </div>
19
19
 
20
20
  {/* Content skeleton */}
21
21
  <div className="space-y-4">
22
- <div className="h-4 w-full bg-ods-skeleton rounded animate-pulse" />
23
- <div className="h-4 w-3/4 bg-ods-skeleton rounded animate-pulse" />
24
- <div className="h-4 w-1/2 bg-ods-skeleton rounded animate-pulse" />
22
+ <div className="h-4 w-full bg-gray-200 rounded animate-pulse" />
23
+ <div className="h-4 w-3/4 bg-gray-200 rounded animate-pulse" />
24
+ <div className="h-4 w-1/2 bg-gray-200 rounded animate-pulse" />
25
25
  </div>
26
26
  </div>
27
27
  )
@@ -730,7 +730,7 @@ export function RelatedContentSection({
730
730
  const skeletonType = includeTypes?.[0] ?? entityType ?? 'blog_post_existing';
731
731
  return (
732
732
  <div className="space-y-8">
733
- <h2 className="text-h2 text-ods-text-primary">{title}</h2>
733
+ <h2 className="text-2xl font-bold text-ods-text-primary">{title}</h2>
734
734
  <div className={gridClassFor(columns)}>
735
735
  {Array.from({ length: 3 }).map((_, i) => (
736
736
  <div key={i}>{renderSkeletonForType(skeletonType, 'default', adminCampaignCard)}</div>
@@ -774,7 +774,7 @@ export function RelatedContentSection({
774
774
 
775
775
  return (
776
776
  <div className="space-y-8">
777
- <h2 className="text-h2 text-ods-text-primary">{title}</h2>
777
+ <h2 className="text-2xl font-bold text-ods-text-primary">{title}</h2>
778
778
  {orderedTypes.map((type) => (
779
779
  <ContentGroup
780
780
  key={type}
@@ -787,7 +787,7 @@ export function RelatedContentSection({
787
787
  extras={extras}
788
788
  adminCampaignCard={adminCampaignCard}
789
789
  heading={
790
- <h3 className="text-h5 font-semibold text-ods-text-secondary">
790
+ <h3 className="font-['Azeret_Mono'] text-[14px] font-semibold uppercase text-ods-text-secondary tracking-wider">
791
791
  {getContentRefLabelOrTitleCase(type)}
792
792
  </h3>
793
793
  }
@@ -27,7 +27,7 @@ export function ResultsCount({
27
27
 
28
28
  return (
29
29
  <div className="mb-6">
30
- <p className="text-ods-text-secondary text-h6">
30
+ <p className="text-ods-text-secondary text-sm font-['DM_Sans']">
31
31
  {totalResults > 0 && (
32
32
  <>
33
33
  Showing {startIndex}-{endIndex} of {totalResults} {displayType}
@@ -0,0 +1,160 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as SelectPrimitive from "@radix-ui/react-select"
5
+ import { Check, ChevronDown, ChevronUp } from "lucide-react"
6
+
7
+ import { cn } from "../utils/cn"
8
+
9
+ const Select = SelectPrimitive.Root
10
+
11
+ const SelectGroup = SelectPrimitive.Group
12
+
13
+ const SelectValue = SelectPrimitive.Value
14
+
15
+ const SelectTrigger = React.forwardRef<
16
+ React.ElementRef<typeof SelectPrimitive.Trigger>,
17
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>
18
+ >(({ className, children, ...props }, ref) => (
19
+ <SelectPrimitive.Trigger
20
+ ref={ref}
21
+ className={cn(
22
+ "flex h-10 w-full items-center justify-between rounded-md border border-ods-border bg-ods-card px-3 py-2 text-h4 placeholder:text-ods-text-secondary focus:outline-none focus:ring-2 focus:ring-ods-accent focus:ring-offset-2 disabled:cursor-not-allowed disabled:bg-ods-bg [&>span]:line-clamp-1",
23
+ className
24
+ )}
25
+ {...props}
26
+ >
27
+ {children}
28
+ <SelectPrimitive.Icon asChild>
29
+ <ChevronDown className="h-4 w-4 opacity-50" />
30
+ </SelectPrimitive.Icon>
31
+ </SelectPrimitive.Trigger>
32
+ ))
33
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
34
+
35
+ const SelectScrollUpButton = React.forwardRef<
36
+ React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
37
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>
38
+ >(({ className, ...props }, ref) => (
39
+ <SelectPrimitive.ScrollUpButton
40
+ ref={ref}
41
+ className={cn(
42
+ "flex cursor-default items-center justify-center py-1",
43
+ className
44
+ )}
45
+ {...props}
46
+ >
47
+ <ChevronUp className="h-4 w-4" />
48
+ </SelectPrimitive.ScrollUpButton>
49
+ ))
50
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
51
+
52
+ const SelectScrollDownButton = React.forwardRef<
53
+ React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
54
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>
55
+ >(({ className, ...props }, ref) => (
56
+ <SelectPrimitive.ScrollDownButton
57
+ ref={ref}
58
+ className={cn(
59
+ "flex cursor-default items-center justify-center py-1",
60
+ className
61
+ )}
62
+ {...props}
63
+ >
64
+ <ChevronDown className="h-4 w-4" />
65
+ </SelectPrimitive.ScrollDownButton>
66
+ ))
67
+ SelectScrollDownButton.displayName =
68
+ SelectPrimitive.ScrollDownButton.displayName
69
+
70
+ const SelectContent = React.forwardRef<
71
+ React.ElementRef<typeof SelectPrimitive.Content>,
72
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
73
+ >(({ className, children, position = "popper", ...props }, ref) => (
74
+ <SelectPrimitive.Portal>
75
+ <SelectPrimitive.Content
76
+ ref={ref}
77
+ className={cn(
78
+ "relative z-[1400] max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
79
+ position === "popper" &&
80
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
81
+ className
82
+ )}
83
+ position={position}
84
+ {...props}
85
+ >
86
+ <SelectScrollUpButton />
87
+ <SelectPrimitive.Viewport
88
+ className={cn(
89
+ "p-1",
90
+ position === "popper" &&
91
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
92
+ )}
93
+ >
94
+ {children}
95
+ </SelectPrimitive.Viewport>
96
+ <SelectScrollDownButton />
97
+ </SelectPrimitive.Content>
98
+ </SelectPrimitive.Portal>
99
+ ))
100
+ SelectContent.displayName = SelectPrimitive.Content.displayName
101
+
102
+ const SelectLabel = React.forwardRef<
103
+ React.ElementRef<typeof SelectPrimitive.Label>,
104
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>
105
+ >(({ className, ...props }, ref) => (
106
+ <SelectPrimitive.Label
107
+ ref={ref}
108
+ className={cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
109
+ {...props}
110
+ />
111
+ ))
112
+ SelectLabel.displayName = SelectPrimitive.Label.displayName
113
+
114
+ const SelectItem = React.forwardRef<
115
+ React.ElementRef<typeof SelectPrimitive.Item>,
116
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>
117
+ >(({ className, children, ...props }, ref) => (
118
+ <SelectPrimitive.Item
119
+ ref={ref}
120
+ className={cn(
121
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h4 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
122
+ className
123
+ )}
124
+ {...props}
125
+ >
126
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
127
+ <SelectPrimitive.ItemIndicator>
128
+ <Check className="h-4 w-4" />
129
+ </SelectPrimitive.ItemIndicator>
130
+ </span>
131
+
132
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
133
+ </SelectPrimitive.Item>
134
+ ))
135
+ SelectItem.displayName = SelectPrimitive.Item.displayName
136
+
137
+ const SelectSeparator = React.forwardRef<
138
+ React.ElementRef<typeof SelectPrimitive.Separator>,
139
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>
140
+ >(({ className, ...props }, ref) => (
141
+ <SelectPrimitive.Separator
142
+ ref={ref}
143
+ className={cn("-mx-1 my-1 h-px bg-muted", className)}
144
+ {...props}
145
+ />
146
+ ))
147
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName
148
+
149
+ export {
150
+ Select,
151
+ SelectGroup,
152
+ SelectValue,
153
+ SelectTrigger,
154
+ SelectContent,
155
+ SelectLabel,
156
+ SelectItem,
157
+ SelectSeparator,
158
+ SelectScrollUpButton,
159
+ SelectScrollDownButton,
160
+ }
@@ -89,7 +89,7 @@ export function DeliveryRow({
89
89
  {/* Left: caption (optional) + title + subtitle + description */}
90
90
  <div className="flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]">
91
91
  {caption && (
92
- <p className="text-h5 text-ods-text-secondary">
92
+ <p className="text-xs font-medium uppercase tracking-wider text-ods-text-secondary">
93
93
  {caption}
94
94
  </p>
95
95
  )}
@@ -85,7 +85,7 @@ export function DeliveryTable({ items, isLoading = false }: DeliveryTableProps)
85
85
  if (items.length === 0) {
86
86
  return (
87
87
  <div className="bg-ods-card border border-ods-border rounded-[6px] p-[40px] text-center w-full">
88
- <p className="text-h6 text-ods-text-secondary">
88
+ <p className="text-ods-text-secondary text-[14px] font-['DM_Sans'] font-medium">
89
89
  No tasks available
90
90
  </p>
91
91
  </div>
@@ -107,7 +107,7 @@ export function DevSectionView({ sectionKey, hero, preControls, children, showHe
107
107
  {hero.icon}
108
108
  {hero.title ?? section.hero.title}
109
109
  </h1>
110
- <p className="text-h4 text-ods-text-secondary max-w-3xl">
110
+ <p className="font-['DM_Sans'] font-medium text-[18px] leading-[28px] text-ods-text-secondary max-w-3xl">
111
111
  {hero.description}
112
112
  </p>
113
113
  </div>
@@ -56,14 +56,14 @@ export function DocSearchResultRow({
56
56
  </span>
57
57
  <div className="min-w-0 flex-1">
58
58
  <div
59
- className={`text-h6 truncate ${
59
+ className={`text-sm font-medium leading-5 truncate ${
60
60
  isHighlighted ? 'text-ods-accent' : 'text-ods-text-primary'
61
61
  }`}
62
62
  >
63
63
  {result.title || result.path}
64
64
  </div>
65
65
  {!isGroup && result.path?.includes('/') && (
66
- <div className="text-h6 text-ods-text-secondary truncate mt-0.5">
66
+ <div className="text-xs leading-4 text-ods-text-secondary truncate mt-0.5">
67
67
  {formatRelativePath(result.path)}
68
68
  </div>
69
69
  )}
@@ -110,7 +110,7 @@ export function LegalDocumentPage({
110
110
  const inner = (
111
111
  <PageLayout title={title} subtitle={subtitle} backButton={backCfg} titleSize="h1" titleWrap>
112
112
  {data?.sourceFile && (
113
- <p className="text-h6 text-ods-text-secondary opacity-75">Source: {data.sourceFile}</p>
113
+ <p className="font-['DM_Sans'] text-sm text-ods-text-secondary opacity-75">Source: {data.sourceFile}</p>
114
114
  )}
115
115
 
116
116
  <div className="flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1">
@@ -134,9 +134,9 @@ export function LegalDocumentPage({
134
134
  </div>
135
135
  ) : error ? (
136
136
  <div className="text-center space-y-4">
137
- <div className="bg-ods-error-secondary border border-ods-error rounded-lg p-6">
138
- <p className="text-ods-error mb-2">{errorTitle}</p>
139
- <p className="text-ods-error text-h6">{error}</p>
137
+ <div className="bg-red-900/20 border border-red-700 rounded-lg p-6">
138
+ <p className="text-red-400 mb-2">{errorTitle}</p>
139
+ <p className="text-red-300 text-sm">{error}</p>
140
140
  </div>
141
141
  <div className="text-ods-text-secondary">
142
142
  <p>{errorContactPrompt}</p>
@@ -153,7 +153,7 @@ export function LegalDocumentPage({
153
153
  />
154
154
  ) : (
155
155
  <div className="text-center text-ods-text-secondary py-16">
156
- <p className="text-h4">{emptyStateMessage}</p>
156
+ <p className="text-xl">{emptyStateMessage}</p>
157
157
  <p className="mt-2">
158
158
  Please contact{' '}
159
159
  <a href={`mailto:${contactEmail}`} className="text-ods-accent hover:underline">
@@ -69,7 +69,7 @@ export function OnboardingStepCard({
69
69
  <h3 className="text-h4 text-ods-text-primary truncate" title={step.title}>
70
70
  {step.title}
71
71
  </h3>
72
- <p className="text-h6 text-ods-text-secondary truncate h-[20px]" title={step.description}>
72
+ <p className="font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate h-[20px]" title={step.description}>
73
73
  {step.description}
74
74
  </p>
75
75
  </div>
@@ -13,7 +13,7 @@ export interface ProductReleaseCardSkeletonProps {
13
13
 
14
14
  export function ProductReleaseCardSkeleton({ className, size = 'lg' }: ProductReleaseCardSkeletonProps) {
15
15
  // ----- LG branch — must match ProductReleaseCard size='lg'.
16
- // Same outer frame (`bg-ods-card border border-ods-border …
16
+ // Same outer frame (`bg-ods-system-greys-black border border-ods-border …
17
17
  // p-6 gap-4`). Inner: hero (16:9 cover + version pill + title + summary),
18
18
  // changelog strip placeholder, metadata-grid footer (4 cells via grid).
19
19
  // Heights chosen to match the loaded card's rendered metrics so the
@@ -25,14 +25,14 @@ export function ProductReleaseCardSkeleton({ className, size = 'lg' }: ProductRe
25
25
  return (
26
26
  <div
27
27
  className={cn(
28
- 'bg-ods-card border border-ods-border rounded-lg overflow-hidden',
28
+ 'bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden',
29
29
  'flex flex-col p-6 gap-4',
30
30
  'animate-pulse',
31
31
  className,
32
32
  )}
33
33
  >
34
34
  {/* HERO — placeholders use `bg-ods-border` (#3a3a3a) so they
35
- contrast against the card's `bg-ods-card`
35
+ contrast against the card's `bg-ods-system-greys-black`
36
36
  (#212121) container. The metadata grid cells below use
37
37
  `bg-ods-card` containers so `bg-ods-bg` placeholders work
38
38
  there, but in the hero the card IS `bg-ods-card`-equivalent —