@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
@@ -222,7 +222,7 @@ export function WaitlistForm({
222
222
  onKeyDown={handleKeyDown}
223
223
  />
224
224
  {showPhoneWarning && (
225
- <p className="text-h6 absolute bottom-0 left-0 translate-y-full text-ods-warning truncate" title={invalidPhoneHint}>
225
+ <p className="text-h6 absolute bottom-0 left-0 translate-y-full text-[var(--ods-attention-yellow-warning)] truncate" title={invalidPhoneHint}>
226
226
  {invalidPhoneHint}
227
227
  </p>
228
228
  )}
@@ -245,7 +245,7 @@ export function WaitlistForm({
245
245
  {consentText}{' View our '}
246
246
  <a
247
247
  href={termsOfServiceUrl || '#'}
248
- className="text-ods-accent underline"
248
+ className="text-[var(--color-accent-primary)] underline"
249
249
  target="_blank"
250
250
  rel="noopener noreferrer"
251
251
  onClick={(e) => e.stopPropagation()}
@@ -255,7 +255,7 @@ export function WaitlistForm({
255
255
  {' and '}
256
256
  <a
257
257
  href={privacyPolicyUrl || '#'}
258
- className="text-ods-accent underline"
258
+ className="text-[var(--color-accent-primary)] underline"
259
259
  target="_blank"
260
260
  rel="noopener noreferrer"
261
261
  onClick={(e) => e.stopPropagation()}
@@ -30,7 +30,7 @@ export function FilterChip({
30
30
  const baseClasses = cn(
31
31
  "inline-flex items-center justify-center rounded-full font-medium transition-all duration-200 shrink-0 group cursor-pointer",
32
32
  "hover:shadow-md hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2",
33
- "font-body leading-none",
33
+ "font-['DM_Sans'] leading-none",
34
34
  // Size variants - enhanced mobile sizing for better visibility and touch targets
35
35
  size === 'sm'
36
36
  ? "text-sm pl-3 pr-3 py-1 md:text-sm md:pl-3 md:pr-3 md:py-1"
@@ -43,14 +43,14 @@ export function FilterChip({
43
43
 
44
44
  const variantClasses = {
45
45
  // Legacy variants (for backward compatibility)
46
- selected: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent hover:bg-ods-border hover:border-ods-accent-hover focus:ring-ods-accent focus:ring-offset-ods-bg",
47
- unselected: "bg-ods-bg-surface text-ods-text-secondary border border-ods-border hover:bg-ods-border hover:border-ods-border-hover hover:text-ods-text-primary focus:ring-ods-border focus:ring-offset-ods-bg",
48
- info: "bg-ods-border text-ods-text-secondary border border-ods-border-hover cursor-default hover:scale-100 hover:shadow-none focus:ring-ods-border-hover focus:ring-offset-ods-bg",
49
-
46
+ selected: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008] hover:bg-ods-border hover:border-[#FFD951] focus:ring-[#FFC008] focus:ring-offset-[#161616]",
47
+ unselected: "bg-[#2A2A2A] text-[#CCCCCC] border border-[#4A4A4A] hover:bg-ods-border hover:border-[#5A5A5A] hover:text-ods-text-primary focus:ring-[#4A4A4A] focus:ring-offset-[#161616]",
48
+ info: "bg-ods-border text-[#CCCCCC] border border-[#5A5A5A] cursor-default hover:scale-100 hover:shadow-none focus:ring-[#5A5A5A] focus:ring-offset-[#161616]",
49
+
50
50
  // New subtle selected variants - same backgrounds/text, only border colors different
51
- category: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/40 hover:bg-ods-border hover:border-ods-accent/60 hover:text-ods-text-primary focus:ring-ods-accent/40 focus:ring-offset-ods-bg",
52
- subcategory: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/60 hover:bg-ods-border hover:border-ods-accent/80 hover:text-ods-text-primary focus:ring-ods-accent/60 focus:ring-offset-ods-bg",
53
- tag: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/20 hover:bg-ods-border hover:border-ods-accent/30 hover:text-ods-text-primary focus:ring-ods-accent/20 focus:ring-offset-ods-bg",
51
+ category: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008]/40 hover:bg-ods-border hover:border-[#FFC008]/60 hover:text-ods-text-primary focus:ring-[#FFC008]/40 focus:ring-offset-[#161616]",
52
+ subcategory: "bg-[#2A2A2A] text-[#E8E8E8] border border-[#FFC008]/60 hover:bg-ods-border hover:border-[#FFC008]/80 hover:text-ods-text-primary focus:ring-[#FFC008]/60 focus:ring-offset-[#161616]",
53
+ tag: "bg-[#2A2A2A] text-ods-text-primary border border-[#FFC008]/20 hover:bg-ods-border hover:border-[#FFC008]/30 hover:text-ods-text-primary focus:ring-[#FFC008]/20 focus:ring-offset-[#161616]",
54
54
  }
55
55
 
56
56
  return (
@@ -67,7 +67,7 @@ export function FilterChip({
67
67
  aria-disabled={disabled}
68
68
  >
69
69
  <span className={cn(
70
- "truncate font-body font-medium leading-none text-center",
70
+ "truncate font-['DM_Sans'] font-medium leading-none text-center",
71
71
  size === 'sm' ? "max-w-[100px] md:max-w-[120px]" : "max-w-[120px] md:max-w-[140px]"
72
72
  )} title={label}>
73
73
  {label}
@@ -86,12 +86,12 @@ export function FilterChip({
86
86
  "transition-all duration-200 shrink-0",
87
87
  "group-hover:scale-110 focus:outline-none focus:ring-2 focus:ring-offset-1",
88
88
  variant === 'category'
89
- ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
89
+ ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
90
90
  : variant === 'subcategory'
91
- ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
91
+ ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
92
92
  : variant === 'tag'
93
- ? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
94
- : "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface",
93
+ ? "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]"
94
+ : "hover:bg-[#4A4A4A] text-[#E8E8E8] focus:ring-[#E8E8E8] focus:ring-offset-[#2A2A2A]",
95
95
  disabled && "opacity-50 cursor-not-allowed hover:scale-100"
96
96
  )}
97
97
  aria-label={`Remove ${label} filter`}
@@ -27,7 +27,7 @@ interface FooterConfig {
27
27
  belowDescriptionContent?: React.ReactNode // Custom content below description
28
28
  moveDescriptionToRight?: boolean // Move description and belowDescriptionContent to right column
29
29
  keepBelowDescriptionLeft?: boolean // Keep belowDescriptionContent on left even when moveDescriptionToRight is true
30
- backgroundColor?: string // ODS background color (e.g., 'bg-ods-card', 'bg-ods-bg')
30
+ backgroundColor?: string // ODS background color (e.g., 'bg-ods-bg-card', 'bg-ods-system-greys-black')
31
31
  social?: {
32
32
  github?: string
33
33
  twitter?: string
@@ -71,7 +71,7 @@ export function Footer({ config, renderLink }: FooterProps) {
71
71
  */
72
72
  function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderLink?: (link: FooterLink) => React.ReactNode }) {
73
73
  const defaultRenderLink = (link: FooterLink) => (
74
- <a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent transition-colors">
74
+ <a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent-primary transition-colors">
75
75
  {link.label}
76
76
  </a>
77
77
  )
@@ -79,7 +79,7 @@ function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderL
79
79
  const linkRenderer = renderLink || defaultRenderLink
80
80
 
81
81
  return (
82
- <footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-card'} px-6 py-10 relative gap-6 md:gap-6 min-h-[auto] md:min-h-[248px] z-[44] border-t border-ods-border`}>
82
+ <footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-bg-card'} px-6 py-10 relative gap-6 md:gap-6 min-h-[auto] md:min-h-[248px] z-[44] border-t border-ods-border`}>
83
83
  <div className="w-full grid grid-cols-2 lg:grid-cols-4 gap-6 md:gap-8 items-start">
84
84
 
85
85
  {/* Column 1: Logo and optionally description */}
@@ -112,7 +112,7 @@ const FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttribu
112
112
  ({ className, ...props }, ref) => {
113
113
  const { formDescriptionId } = useFormField()
114
114
 
115
- return <p ref={ref} id={formDescriptionId} className={cn("text-h6 text-muted-foreground", className)} {...props} />
115
+ return <p ref={ref} id={formDescriptionId} className={cn("text-sm text-muted-foreground", className)} {...props} />
116
116
  },
117
117
  )
118
118
  FormDescription.displayName = "FormDescription"
@@ -127,7 +127,7 @@ const FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<
127
127
  }
128
128
 
129
129
  return (
130
- <p ref={ref} id={formMessageId} className={cn("text-h6 text-destructive", className)} {...props}>
130
+ <p ref={ref} id={formMessageId} className={cn("text-sm font-medium text-destructive", className)} {...props}>
131
131
  {body}
132
132
  </p>
133
133
  )
@@ -158,9 +158,9 @@ export function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height =
158
158
  ) : (
159
159
  <>
160
160
  <ImageIcon className="h-12 w-12 text-ods-text-secondary" />
161
- <span className="text-ods-text-primary text-h6 mt-2">Upload cover image</span>
162
- <span className="text-ods-text-secondary text-h6 mt-1">Click to upload or drag and drop</span>
163
- <span className="text-ods-text-secondary text-h6">PNG, JPEG, WebP, GIF up to 5MB</span>
161
+ <span className="text-ods-text-primary font-['DM_Sans'] text-[16px] font-medium mt-2">Upload cover image</span>
162
+ <span className="text-ods-text-secondary font-['DM_Sans'] text-[14px] mt-1">Click to upload or drag and drop</span>
163
+ <span className="text-ods-text-secondary font-['DM_Sans'] text-[12px]">PNG, JPEG, WebP, GIF up to 5MB</span>
164
164
  </>
165
165
  )}
166
166
  </div>
@@ -213,7 +213,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
213
213
  <div className="flex flex-col gap-4">
214
214
  {/* Zoom */}
215
215
  <div className="flex items-center gap-3">
216
- <span className="min-w-[60px] text-h6">Zoom</span>
216
+ <span className="min-w-[60px] text-sm">Zoom</span>
217
217
  <Slider
218
218
  min={1}
219
219
  max={3}
@@ -226,7 +226,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
226
226
  </div>
227
227
  {/* Rotate */}
228
228
  <div className="flex items-center gap-3">
229
- <span className="min-w-[60px] text-h6">Rotate</span>
229
+ <span className="min-w-[60px] text-sm">Rotate</span>
230
230
  <Slider
231
231
  min={0}
232
232
  max={360}
@@ -0,0 +1,39 @@
1
+ import * as React from "react"
2
+
3
+ import { cn } from "../utils/cn"
4
+
5
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
6
+ /** When true, renders red error border & ring */
7
+ invalid?: boolean;
8
+ }
9
+
10
+ const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, type, invalid = false, ...props }, ref) => {
11
+ return (
12
+ <input
13
+ type={type}
14
+ className={cn(
15
+ // Layout & spacing identical to VendorSelector
16
+ "flex w-full min-h-[60px] rounded-lg border p-2",
17
+ // Typography
18
+ "text-h4",
19
+ // File input adjustments
20
+ "ring-offset-background file:border-0 file:bg-transparent file:text-h4",
21
+ // Focus & disabled states
22
+ "placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ods-accent/20 focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:bg-ods-bg",
23
+ // Animations & touch UX
24
+ "transition-colors duration-200 touch-manipulation",
25
+ // Theme palette
26
+ "bg-ods-card border-ods-border text-ods-text-primary placeholder:text-ods-text-secondary hover:border-ods-accent/30 focus:border-ods-accent",
27
+ // Ensure proper cursor/stacking
28
+ "cursor-text relative z-10",
29
+ invalid && "border-red-500 focus-visible:ring-red-500",
30
+ className
31
+ )}
32
+ ref={ref}
33
+ {...props}
34
+ />
35
+ )
36
+ })
37
+ Input.displayName = "Input"
38
+
39
+ export { Input }
@@ -0,0 +1,19 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as LabelPrimitive from "@radix-ui/react-label"
5
+ import { cva, type VariantProps } from "class-variance-authority"
6
+
7
+ import { cn } from "../utils/cn"
8
+
9
+ const labelVariants = cva("h4 text-ods-text-primary font-['DM_Sans'] text-[14px] mb-2 font-semibold uppercase tracking-[-0.02em] leading-[1.3] line-clamp-2 text-sm md:text")
10
+
11
+ const Label = React.forwardRef<
12
+ React.ElementRef<typeof LabelPrimitive.Root>,
13
+ React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>
14
+ >(({ className, ...props }, ref) => (
15
+ <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />
16
+ ))
17
+ Label.displayName = LabelPrimitive.Root.displayName
18
+
19
+ export { Label }
@@ -248,14 +248,14 @@ function renderAdvancedPageContainer({
248
248
 
249
249
  {/* Title */}
250
250
  {title && (
251
- <h1 className="text-h2 text-ods-text-primary">
251
+ <h1 className="text-h2 tracking-[-0.64px] text-ods-text-primary">
252
252
  {title}
253
253
  </h1>
254
254
  )}
255
255
 
256
256
  {/* Subtitle */}
257
257
  {subtitle && (
258
- <div className="text-h6 text-ods-text-secondary">
258
+ <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
259
259
  {subtitle}
260
260
  </div>
261
261
  )}
@@ -286,12 +286,12 @@ function renderAdvancedPageContainer({
286
286
  )}
287
287
 
288
288
  {title && (
289
- <h1 className="text-h2 text-ods-text-primary">
289
+ <h1 className="text-h2 tracking-[-0.48px] text-ods-text-primary">
290
290
  {title}
291
291
  </h1>
292
292
  )}
293
293
  {subtitle && (
294
- <div className="text-h6 text-ods-text-secondary">
294
+ <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
295
295
  {subtitle}
296
296
  </div>
297
297
  )}
@@ -322,7 +322,7 @@ function renderAdvancedPageContainer({
322
322
  )}
323
323
 
324
324
  {title && (
325
- <h1 className="text-h2 text-ods-text-primary">
325
+ <h1 className="text-[32px] font-['Azeret_Mono:SemiBold',_sans-serif] font-semibold text-ods-text-primary tracking-[-0.64px]">
326
326
  {title}
327
327
  </h1>
328
328
  )}
@@ -350,7 +350,7 @@ function renderAdvancedPageContainer({
350
350
  </h1>
351
351
  )}
352
352
  {subtitle && (
353
- <div className="text-h6 text-ods-text-secondary">
353
+ <div className="text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]">
354
354
  {subtitle}
355
355
  </div>
356
356
  )}
@@ -22,7 +22,7 @@ export const PAGE_HEADING_CLASS = 'text-h1 text-ods-text-primary'
22
22
  export const SECTION_HEADING_CLASS = 'text-h2 text-ods-text-primary'
23
23
 
24
24
  const DESCRIPTION_CLASS =
25
- "mt-6 max-w-[640px] font-body text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary"
25
+ "mt-6 max-w-[640px] font-['DM_Sans'] text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary"
26
26
 
27
27
  export interface PageHeadingProps {
28
28
  /** Heading content — plain text or nodes (e.g. an accent <span>). */
@@ -177,10 +177,10 @@ function BlogCardContent({ showActions, showMetadata }: { showActions: boolean;
177
177
  </div>
178
178
 
179
179
  {/* Date and reading time section - matches BlogMeta right side */}
180
- <div className="flex items-center gap-3 text-ods-text-muted shrink-0">
180
+ <div className="flex items-center gap-3 text-[#767676] shrink-0">
181
181
  <TextSkeleton.Caption className="w-12" />
182
182
  {/* Separator dot */}
183
- <div className="w-1 h-1 bg-ods-skeleton rounded-full"></div>
183
+ <div className="w-1 h-1 bg-[#767676] rounded-full"></div>
184
184
  <TextSkeleton.Caption className="w-16" />
185
185
  </div>
186
186
  </div>
@@ -10,7 +10,7 @@ export function CategoryCardSkeleton({ className }: CategoryCardSkeletonProps) {
10
10
  return (
11
11
  <article
12
12
  className={cn(
13
- 'bg-ods-card border border-ods-border rounded-[12px] p-8 flex flex-col min-w-0 box-border',
13
+ 'bg-[#1A1A1A] border border-[#424242] rounded-[12px] p-8 flex flex-col min-w-0 box-border',
14
14
  className,
15
15
  )}
16
16
  role="status"
@@ -15,8 +15,8 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
15
15
  <div className="max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10">
16
16
  {/* Header */}
17
17
  <div className="space-y-3">
18
- <div className="h-10 w-72 bg-ods-skeleton rounded" />
19
- <div className="h-4 w-80 bg-ods-skeleton rounded" />
18
+ <div className="h-10 w-72 bg-[#2A2A2A] rounded" />
19
+ <div className="h-4 w-80 bg-[#2A2A2A] rounded" />
20
20
  </div>
21
21
 
22
22
  {/* Summary cards */}
@@ -30,10 +30,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
30
30
  <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
31
31
  {/* MSP profile skeleton */}
32
32
  <div className="bg-ods-card border border-ods-border rounded-lg p-6 flex items-center gap-4 animate-pulse">
33
- <div className="w-14 h-14 rounded-lg bg-ods-skeleton" />
33
+ <div className="w-14 h-14 rounded-lg bg-[#2A2A2A]" />
34
34
  <div className="flex-1 space-y-2">
35
- <div className="h-4 bg-ods-skeleton rounded w-3/4" />
36
- <div className="h-3 bg-ods-skeleton rounded w-1/2" />
35
+ <div className="h-4 bg-[#2A2A2A] rounded w-3/4" />
36
+ <div className="h-3 bg-[#2A2A2A] rounded w-1/2" />
37
37
  </div>
38
38
  </div>
39
39
 
@@ -41,15 +41,15 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
41
41
  <div className="bg-ods-card border border-ods-border rounded-lg p-6 flex flex-col gap-4 animate-pulse">
42
42
  <div className="flex items-center justify-between gap-4">
43
43
  <div className="flex items-center gap-2">
44
- <div className="w-10 h-10 rounded-lg bg-ods-skeleton" />
44
+ <div className="w-10 h-10 rounded-lg bg-[#2A2A2A]" />
45
45
  <div className="space-y-1">
46
- <div className="h-4 w-32 bg-ods-skeleton rounded" />
47
- <div className="h-3 w-20 bg-ods-skeleton rounded" />
46
+ <div className="h-4 w-32 bg-[#2A2A2A] rounded" />
47
+ <div className="h-3 w-20 bg-[#2A2A2A] rounded" />
48
48
  </div>
49
49
  </div>
50
- <div className="h-6 w-36 bg-ods-skeleton rounded" />
50
+ <div className="h-6 w-36 bg-[#2A2A2A] rounded" />
51
51
  </div>
52
- <div className="h-4 w-40 bg-ods-skeleton rounded mt-4" />
52
+ <div className="h-4 w-40 bg-[#2A2A2A] rounded mt-4" />
53
53
  </div>
54
54
  </div>
55
55
 
@@ -59,10 +59,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
59
59
  <div key={idx} className="bg-ods-card border border-ods-border rounded-lg overflow-hidden flex flex-col animate-pulse">
60
60
  {/* list header */}
61
61
  <div className="flex items-center justify-between px-6 py-4">
62
- <div className="h-6 w-40 bg-ods-skeleton rounded" />
62
+ <div className="h-6 w-40 bg-[#2A2A2A] rounded" />
63
63
  <div className="flex items-center gap-2">
64
- <div className="h-5 w-20 bg-ods-skeleton rounded" />
65
- <div className="h-4 w-10 bg-ods-skeleton rounded" />
64
+ <div className="h-5 w-20 bg-[#2A2A2A] rounded" />
65
+ <div className="h-4 w-10 bg-[#2A2A2A] rounded" />
66
66
  </div>
67
67
  </div>
68
68
 
@@ -72,16 +72,16 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
72
72
  <div key={j} className="bg-ods-bg border border-ods-border rounded-lg px-4 py-3 flex items-center justify-between">
73
73
  {/* left section: icon + text */}
74
74
  <div className="flex items-center gap-3 min-w-0">
75
- <div className="w-12 h-12 bg-ods-skeleton rounded-lg flex-shrink-0" />
75
+ <div className="w-12 h-12 bg-[#2A2A2A] rounded-lg flex-shrink-0" />
76
76
  <div className="flex flex-col min-w-0">
77
- <div className="h-4 w-32 bg-ods-skeleton rounded" />
78
- <div className="hidden md:block h-3 w-24 bg-ods-skeleton rounded mt-1" />
77
+ <div className="h-4 w-32 bg-[#2A2A2A] rounded" />
78
+ <div className="hidden md:block h-3 w-24 bg-[#2A2A2A] rounded mt-1" />
79
79
  </div>
80
80
  </div>
81
81
  {/* right addon: cost text */}
82
82
  <div className="flex items-center gap-1 flex-shrink-0">
83
- <div className="h-4 w-16 bg-ods-skeleton rounded" />
84
- <div className="h-3 w-8 bg-ods-skeleton rounded" />
83
+ <div className="h-4 w-16 bg-[#2A2A2A] rounded" />
84
+ <div className="h-3 w-8 bg-[#2A2A2A] rounded" />
85
85
  </div>
86
86
  </div>
87
87
  ))}
@@ -91,7 +91,7 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
91
91
  </div>
92
92
 
93
93
  {/* Strategic Recommendations header placeholder */}
94
- <div className="h-6 w-60 bg-ods-skeleton rounded" />
94
+ <div className="h-6 w-60 bg-[#2A2A2A] rounded" />
95
95
 
96
96
  {/* Recommendations grid */}
97
97
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -105,11 +105,11 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
105
105
  {/* Section header */}
106
106
  <div className="flex items-start gap-6">
107
107
  <div className="flex-1 space-y-2 min-w-0">
108
- <div className="h-8 w-72 bg-ods-skeleton rounded" />
109
- <div className="h-4 w-3/4 bg-ods-skeleton rounded" />
108
+ <div className="h-8 w-72 bg-[#2A2A2A] rounded" />
109
+ <div className="h-4 w-3/4 bg-[#2A2A2A] rounded" />
110
110
  </div>
111
111
  {/* Logo placeholder */}
112
- <div className="w-12 h-12 bg-ods-skeleton rounded-md shrink-0" />
112
+ <div className="w-12 h-12 bg-[#2A2A2A] rounded-md shrink-0" />
113
113
  </div>
114
114
 
115
115
  {/* Value cards grid */}
@@ -35,7 +35,7 @@ export function OpenmspHeartbeatLoader({ className = '', progress = 0, label, ba
35
35
  <div className="flex flex-col items-center justify-center w-128">
36
36
  {/* Progress text */}
37
37
  <h2 className="mt-2 text-ods-accent text-center font-bold">
38
- {progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-h6 text-ods-text-secondary">/100%</span>
38
+ {progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-sm text-ods-text-secondary">/100%</span>
39
39
  </h2>
40
40
 
41
41
  {/* Progress text */}