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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/dist/{chunk-RVWC4P3H.js → chunk-2BTDPDME.js} +9 -9
  2. package/dist/chunk-2BTDPDME.js.map +1 -0
  3. package/dist/{chunk-G5FALXNO.js → chunk-63TSTDME.js} +21 -21
  4. package/dist/chunk-63TSTDME.js.map +1 -0
  5. package/dist/{chunk-4ACSUJ7Q.js → chunk-6CITW5BD.js} +10 -10
  6. package/dist/chunk-6CITW5BD.js.map +1 -0
  7. package/dist/{chunk-QXYOGJQJ.js → chunk-7KDR5P23.js} +2 -2
  8. package/dist/{chunk-PEIR7D25.js → chunk-7KNOHGMI.js} +2 -2
  9. package/dist/{chunk-ZMUFTGL7.cjs → chunk-7QP65IE4.cjs} +5 -5
  10. package/dist/{chunk-ZMUFTGL7.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
  11. package/dist/{chunk-WPVBTVI3.js → chunk-AGV26PUR.js} +6 -6
  12. package/dist/{chunk-WPVBTVI3.js.map → chunk-AGV26PUR.js.map} +1 -1
  13. package/dist/{chunk-HTVVXVJL.cjs → chunk-DUQQEQ7G.cjs} +1431 -1594
  14. package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
  15. package/dist/{chunk-COMBYYQY.js → chunk-FPE3SQ5D.js} +13 -13
  16. package/dist/chunk-FPE3SQ5D.js.map +1 -0
  17. package/dist/{chunk-WAGTZVQN.js → chunk-IAZ5AN2E.js} +30 -30
  18. package/dist/chunk-IAZ5AN2E.js.map +1 -0
  19. package/dist/{chunk-RQQZF6G6.cjs → chunk-IPEIOR77.cjs} +130 -130
  20. package/dist/chunk-IPEIOR77.cjs.map +1 -0
  21. package/dist/{chunk-3WJQL4DN.cjs → chunk-IZ6A6K6N.cjs} +25 -25
  22. package/dist/chunk-IZ6A6K6N.cjs.map +1 -0
  23. package/dist/{chunk-EE5NH5SH.cjs → chunk-J5NO7PAG.cjs} +3 -3
  24. package/dist/{chunk-EE5NH5SH.cjs.map → chunk-J5NO7PAG.cjs.map} +1 -1
  25. package/dist/{chunk-IAN7GUIV.cjs → chunk-JNC4LVD6.cjs} +42 -42
  26. package/dist/chunk-JNC4LVD6.cjs.map +1 -0
  27. package/dist/{chunk-VWGF6IFR.cjs → chunk-JOH5D76X.cjs} +108 -108
  28. package/dist/chunk-JOH5D76X.cjs.map +1 -0
  29. package/dist/{chunk-7WM77CSW.js → chunk-JYI4R25Q.js} +5 -5
  30. package/dist/chunk-JYI4R25Q.js.map +1 -0
  31. package/dist/{chunk-M6QGB6DC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
  32. package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
  33. package/dist/{chunk-M3LD6DNE.cjs → chunk-LFWPWIAC.cjs} +16 -16
  34. package/dist/{chunk-M3LD6DNE.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
  35. package/dist/{chunk-R46QEE3R.cjs → chunk-LUKRPHEW.cjs} +96 -96
  36. package/dist/chunk-LUKRPHEW.cjs.map +1 -0
  37. package/dist/{chunk-IMK6RUEC.cjs → chunk-PYR4LVAF.cjs} +10 -10
  38. package/dist/chunk-PYR4LVAF.cjs.map +1 -0
  39. package/dist/{chunk-2ELBNZJ3.js → chunk-QAG357PE.js} +7 -7
  40. package/dist/chunk-QAG357PE.js.map +1 -0
  41. package/dist/{chunk-N2TJ3HAM.cjs → chunk-QO6MCQYE.cjs} +9 -9
  42. package/dist/chunk-QO6MCQYE.cjs.map +1 -0
  43. package/dist/{chunk-EGRZHR7J.js → chunk-SM26C2L7.js} +9 -9
  44. package/dist/chunk-SM26C2L7.js.map +1 -0
  45. package/dist/{chunk-AUJXLVXA.cjs → chunk-TAQMYVO6.cjs} +42 -42
  46. package/dist/{chunk-AUJXLVXA.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
  47. package/dist/{chunk-C3FH53AP.cjs → chunk-UFBUQO7Z.cjs} +19 -19
  48. package/dist/{chunk-C3FH53AP.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
  49. package/dist/{chunk-F7YVI54P.js → chunk-W3JZXLJ2.js} +10 -10
  50. package/dist/chunk-W3JZXLJ2.js.map +1 -0
  51. package/dist/{chunk-WZ6TCAYQ.cjs → chunk-XMCVUYKC.cjs} +14 -14
  52. package/dist/chunk-XMCVUYKC.cjs.map +1 -0
  53. package/dist/{chunk-P7PISHM5.js → chunk-Y3NFB6HR.js} +5 -5
  54. package/dist/chunk-Y3NFB6HR.js.map +1 -0
  55. package/dist/{chunk-PBTY7AH5.js → chunk-YZJUHEPZ.js} +95 -95
  56. package/dist/chunk-YZJUHEPZ.js.map +1 -0
  57. package/dist/{chunk-NQQ4NLUT.js → chunk-ZQYFDYWV.js} +4298 -4461
  58. package/dist/chunk-ZQYFDYWV.js.map +1 -0
  59. package/dist/components/case-studies/index.cjs +15 -15
  60. package/dist/components/case-studies/index.cjs.map +1 -1
  61. package/dist/components/case-studies/index.js +9 -9
  62. package/dist/components/case-studies/index.js.map +1 -1
  63. package/dist/components/chat/approval-request-message.d.ts.map +1 -1
  64. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  65. package/dist/components/chat/index.cjs +4 -4
  66. package/dist/components/chat/index.js +3 -3
  67. package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
  68. package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
  69. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  70. package/dist/components/contact/index.cjs +5 -5
  71. package/dist/components/contact/index.js +4 -4
  72. package/dist/components/docs/index.cjs +7 -7
  73. package/dist/components/docs/index.js +6 -6
  74. package/dist/components/embeds/index.cjs +5 -5
  75. package/dist/components/embeds/index.js +4 -4
  76. package/dist/components/faq/index.cjs +6 -6
  77. package/dist/components/faq/index.js +5 -5
  78. package/dist/components/features/index.cjs +4 -4
  79. package/dist/components/features/index.js +3 -3
  80. package/dist/components/help-center-pages/index.cjs +23 -23
  81. package/dist/components/help-center-pages/index.js +14 -14
  82. package/dist/components/index.cjs +262 -256
  83. package/dist/components/index.cjs.map +1 -1
  84. package/dist/components/index.js +117 -111
  85. package/dist/components/index.js.map +1 -1
  86. package/dist/components/msp-display.d.ts.map +1 -1
  87. package/dist/components/navigation/index.cjs +4 -4
  88. package/dist/components/navigation/index.js +3 -3
  89. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  90. package/dist/components/onboarding-guides/index.cjs +8 -8
  91. package/dist/components/onboarding-guides/index.js +7 -7
  92. package/dist/components/pricing-display.d.ts +9 -9
  93. package/dist/components/related-content/index.cjs +6 -6
  94. package/dist/components/related-content/index.js +5 -5
  95. package/dist/components/tickets/index.cjs +7 -7
  96. package/dist/components/tickets/index.js +6 -6
  97. package/dist/components/toast/index.cjs +5 -5
  98. package/dist/components/toast/index.cjs.map +1 -1
  99. package/dist/components/toast/index.js +5 -5
  100. package/dist/components/toast/index.js.map +1 -1
  101. package/dist/components/ui/bullet-list.d.ts.map +1 -1
  102. package/dist/components/ui/drawer.d.ts +1 -1
  103. package/dist/components/ui/drawer.d.ts.map +1 -1
  104. package/dist/components/ui/file-manager/index.cjs +73 -73
  105. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  106. package/dist/components/ui/file-manager/index.js +24 -24
  107. package/dist/components/ui/file-manager/index.js.map +1 -1
  108. package/dist/components/ui/index.cjs +4 -4
  109. package/dist/components/ui/index.js +3 -3
  110. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  111. package/dist/components/ui/square-avatar.d.ts +3 -0
  112. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  113. package/dist/components/user-display.d.ts.map +1 -1
  114. package/dist/components/vendor-tag.d.ts.map +1 -1
  115. package/dist/hooks/index.cjs +2 -2
  116. package/dist/hooks/index.js +1 -1
  117. package/dist/index.cjs +4 -4
  118. package/dist/index.js +3 -3
  119. package/dist/tailwind.config.cjs +38 -5
  120. package/dist/tailwind.config.cjs.map +1 -1
  121. package/dist/tailwind.config.js +38 -5
  122. package/dist/tailwind.config.js.map +1 -1
  123. package/package.json +1 -1
  124. package/src/ODS_TOKEN_RULES.md +5 -0
  125. package/src/components/.footer.md +2 -2
  126. package/src/components/announcement-bar.tsx +1 -1
  127. package/src/components/authors/author-detail-view.tsx +3 -3
  128. package/src/components/calendar.tsx +2 -2
  129. package/src/components/case-studies/share-experience-section.tsx +5 -5
  130. package/src/components/categories-cart.tsx +6 -6
  131. package/src/components/category-card.tsx +5 -5
  132. package/src/components/chart.tsx +3 -3
  133. package/src/components/chat/approval-request-message.tsx +2 -5
  134. package/src/components/chat/chat-attachment-bar.tsx +3 -3
  135. package/src/components/chat/chat-message-enhanced.tsx +1 -1
  136. package/src/components/chat/chat-message-list.tsx +1 -1
  137. package/src/components/chat/chat-message-row.tsx +3 -3
  138. package/src/components/chat/chat-quick-action.tsx +1 -1
  139. package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
  140. package/src/components/chat/chat-sidebar.tsx +6 -6
  141. package/src/components/chat/chat-typing-indicator.tsx +1 -1
  142. package/src/components/chat/context-compaction-display.tsx +1 -1
  143. package/src/components/chat/embeddable-chat.tsx +3 -3
  144. package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
  145. package/src/components/chat/entity-cards/blog-card.tsx +5 -8
  146. package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
  147. package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
  148. package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
  149. package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
  150. package/src/components/chat/entity-cards/dispatch.tsx +1 -1
  151. package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
  152. package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
  153. package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
  154. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
  155. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
  156. package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
  157. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
  158. package/src/components/chat/entity-cards/program-card.tsx +12 -12
  159. package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
  160. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
  161. package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
  162. package/src/components/chat/error-message-display.tsx +2 -2
  163. package/src/components/chat/mingo-info-card.tsx +2 -2
  164. package/src/components/chat/model-display.tsx +7 -7
  165. package/src/components/chat/quick-action-chip.tsx +1 -1
  166. package/src/components/chat/source-action-button.tsx +2 -2
  167. package/src/components/chat/tool-call-blocks.tsx +3 -5
  168. package/src/components/chat/utils/.chip-action-class.md +1 -1
  169. package/src/components/chat/utils/.chip-styles.md +2 -2
  170. package/src/components/chat/utils/chip-action-class.ts +1 -1
  171. package/src/components/chat/utils/chip-styles.ts +2 -2
  172. package/src/components/chat/utils/compact-card-classes.ts +3 -3
  173. package/src/components/command.tsx +3 -3
  174. package/src/components/comment-card.tsx +1 -1
  175. package/src/components/contact/contact-form.tsx +9 -9
  176. package/src/components/context-menu.tsx +5 -5
  177. package/src/components/date-time-picker.tsx +2 -2
  178. package/src/components/docs/doc-viewer.tsx +4 -4
  179. package/src/components/embeds/figma-embed.tsx +2 -2
  180. package/src/components/embeds/file-download-card.tsx +2 -2
  181. package/src/components/embeds/google-sheets-viewer.tsx +1 -1
  182. package/src/components/embeds/linkedin-embed-client.tsx +3 -3
  183. package/src/components/embeds/og-link-preview.tsx +14 -14
  184. package/src/components/embeds/pdf-viewer.tsx +1 -1
  185. package/src/components/embeds/reddit-embed-client.tsx +9 -9
  186. package/src/components/embeds/twitter-embed-client.tsx +9 -9
  187. package/src/components/empty-state.tsx +5 -5
  188. package/src/components/faq/faq-section.tsx +1 -1
  189. package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
  190. package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
  191. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
  192. package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
  193. package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
  194. package/src/components/features/array-entry-manager.tsx +7 -7
  195. package/src/components/features/auth-providers-list.tsx +1 -1
  196. package/src/components/features/board/ticket-card.tsx +1 -1
  197. package/src/components/features/changelog-manager.tsx +10 -10
  198. package/src/components/features/command-box.tsx +2 -2
  199. package/src/components/features/entity-summary-editor.tsx +3 -3
  200. package/src/components/features/figma-prototype-viewer.tsx +9 -9
  201. package/src/components/features/filters-dropdown.tsx +2 -2
  202. package/src/components/features/highlight-config-section.tsx +3 -3
  203. package/src/components/features/highlight-video-combined-section.tsx +2 -2
  204. package/src/components/features/highlight-video-preview.tsx +2 -2
  205. package/src/components/features/highlight-video-section.tsx +9 -9
  206. package/src/components/features/media-gallery-manager.tsx +14 -14
  207. package/src/components/features/og-editor-preview.tsx +4 -4
  208. package/src/components/features/os-type-badge-group.tsx +1 -1
  209. package/src/components/features/os-type-badge.tsx +2 -2
  210. package/src/components/features/platform-badge.tsx +4 -4
  211. package/src/components/features/policy-configuration-panel.tsx +6 -6
  212. package/src/components/features/provider-button.tsx +1 -1
  213. package/src/components/features/push-button-selector.tsx +21 -21
  214. package/src/components/features/release-media-manager.tsx +16 -16
  215. package/src/components/features/section-selector.tsx +8 -8
  216. package/src/components/features/select-button.tsx +4 -4
  217. package/src/components/features/seo-editor-preview.tsx +20 -20
  218. package/src/components/features/social-links-manager.tsx +3 -3
  219. package/src/components/features/start-with-openframe-button.tsx +3 -3
  220. package/src/components/features/status-filter-component.tsx +1 -1
  221. package/src/components/features/tags-selector.tsx +6 -6
  222. package/src/components/features/transcript-summary-editor.tsx +9 -9
  223. package/src/components/features/video-bites-strip.tsx +1 -1
  224. package/src/components/features/video-ratio-tabs.tsx +1 -1
  225. package/src/components/features/video-source-selector.tsx +7 -7
  226. package/src/components/features/video.tsx +1 -1
  227. package/src/components/features/waitlist-form.tsx +3 -3
  228. package/src/components/filter-chip.tsx +13 -13
  229. package/src/components/footer.tsx +3 -3
  230. package/src/components/form.tsx +2 -2
  231. package/src/components/hero-image-uploader.tsx +3 -3
  232. package/src/components/image-cropper.tsx +2 -2
  233. package/src/components/layout/page-container.tsx +6 -6
  234. package/src/components/layout/page-heading.tsx +1 -1
  235. package/src/components/loading/card-skeleton.tsx +2 -2
  236. package/src/components/loading/category-card-skeleton.tsx +1 -1
  237. package/src/components/loading/margin-report-skeleton.tsx +22 -22
  238. package/src/components/loading/openmsp-heartbeat.tsx +1 -1
  239. package/src/components/loading/page-layout-skeleton.tsx +83 -83
  240. package/src/components/loading/unified-skeleton.tsx +1 -1
  241. package/src/components/loading/users-grid-skeleton.tsx +2 -2
  242. package/src/components/logs-list.tsx +8 -8
  243. package/src/components/media-carousel.tsx +7 -7
  244. package/src/components/metric-value.tsx +2 -2
  245. package/src/components/msp-display.tsx +8 -2
  246. package/src/components/navigation/app-header.tsx +6 -6
  247. package/src/components/navigation/header-organization-filter.tsx +2 -2
  248. package/src/components/navigation/header.tsx +4 -4
  249. package/src/components/navigation/mobile-burger-menu.tsx +7 -7
  250. package/src/components/navigation/mobile-nav-panel.tsx +1 -1
  251. package/src/components/navigation/multi-level-navigation.tsx +7 -7
  252. package/src/components/navigation/navigation-sidebar.tsx +1 -1
  253. package/src/components/navigation/sticky-section-nav.tsx +2 -2
  254. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
  255. package/src/components/pagination.tsx +2 -2
  256. package/src/components/persistent-filter-controls.tsx +1 -1
  257. package/src/components/platform/.ShellTypeBadge.md +1 -1
  258. package/src/components/platform/CveLink.tsx +1 -1
  259. package/src/components/platform/ScriptArguments.tsx +2 -2
  260. package/src/components/platform/ScriptInfoSection.tsx +5 -5
  261. package/src/components/platform/ShellTypeBadge.tsx +6 -6
  262. package/src/components/platform/SoftwareInfo.tsx +2 -2
  263. package/src/components/pricing-display.tsx +9 -9
  264. package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
  265. package/src/components/related-content/related-content-section.tsx +3 -3
  266. package/src/components/results-count.tsx +1 -1
  267. package/src/components/shared/delivery/delivery-row.tsx +1 -1
  268. package/src/components/shared/delivery/delivery-table.tsx +1 -1
  269. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  270. package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
  271. package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
  272. package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
  273. package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
  274. package/src/components/shared/product-release/product-release-card.tsx +14 -14
  275. package/src/components/shared/product-release/release-detail-page.tsx +16 -16
  276. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
  277. package/src/components/smooth-accordion.tsx +1 -1
  278. package/src/components/social-icon-row.tsx +1 -1
  279. package/src/components/sonner.tsx +5 -5
  280. package/src/components/steps.tsx +3 -3
  281. package/src/components/tickets/help-center-create-form.tsx +1 -1
  282. package/src/components/tickets/help-center-list.tsx +1 -1
  283. package/src/components/tickets/ticket-center.tsx +2 -2
  284. package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
  285. package/src/components/tickets/ticket-open-form.tsx +6 -6
  286. package/src/components/ui/.title-content-block.md +1 -1
  287. package/src/components/ui/accordion.tsx +2 -2
  288. package/src/components/ui/actions-menu.tsx +1 -1
  289. package/src/components/ui/alert-dialog.tsx +3 -3
  290. package/src/components/ui/alert.tsx +2 -2
  291. package/src/components/ui/allowed-domains-input.tsx +3 -3
  292. package/src/components/ui/autocomplete.tsx +3 -3
  293. package/src/components/ui/badge.tsx +2 -2
  294. package/src/components/ui/brand-association-card.tsx +2 -2
  295. package/src/components/ui/breadcrumb.tsx +3 -3
  296. package/src/components/ui/bullet-list.tsx +2 -2
  297. package/src/components/ui/button/button.tsx +1 -1
  298. package/src/components/ui/card.tsx +4 -4
  299. package/src/components/ui/checkbox-with-description.tsx +1 -1
  300. package/src/components/ui/chevron-button.tsx +1 -1
  301. package/src/components/ui/content-loader.tsx +16 -16
  302. package/src/components/ui/cursor-pagination.tsx +1 -1
  303. package/src/components/ui/date-picker.tsx +2 -2
  304. package/src/components/ui/device-card-compact.tsx +2 -2
  305. package/src/components/ui/device-card.tsx +3 -3
  306. package/src/components/ui/dialog.tsx +3 -3
  307. package/src/components/ui/drawer.tsx +4 -4
  308. package/src/components/ui/dropdown-menu.tsx +6 -6
  309. package/src/components/ui/error-state.tsx +9 -9
  310. package/src/components/ui/fade-preview.tsx +1 -1
  311. package/src/components/ui/field-wrapper.tsx +1 -1
  312. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
  313. package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
  314. package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
  315. package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
  316. package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
  317. package/src/components/ui/file-upload.tsx +9 -9
  318. package/src/components/ui/filter-pill-row.tsx +1 -1
  319. package/src/components/ui/floating-tooltip.tsx +1 -1
  320. package/src/components/ui/highlight-card.tsx +1 -1
  321. package/src/components/ui/hover-dropdown.tsx +1 -1
  322. package/src/components/ui/image-gallery-modal.tsx +1 -1
  323. package/src/components/ui/info-row.tsx +1 -1
  324. package/src/components/ui/input.tsx +1 -1
  325. package/src/components/ui/label.tsx +5 -5
  326. package/src/components/ui/markdown-editor.tsx +4 -5
  327. package/src/components/ui/menubar.tsx +7 -7
  328. package/src/components/ui/modal-v2.tsx +1 -1
  329. package/src/components/ui/modal.tsx +1 -1
  330. package/src/components/ui/more-actions-menu.tsx +1 -1
  331. package/src/components/ui/navigation-menu.tsx +1 -1
  332. package/src/components/ui/organization-card.tsx +8 -8
  333. package/src/components/ui/page-loader.tsx +6 -6
  334. package/src/components/ui/phone-input.tsx +1 -1
  335. package/src/components/ui/progress-bar.tsx +5 -5
  336. package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
  337. package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
  338. package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
  339. package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
  340. package/src/components/ui/release-changelog-section.tsx +2 -2
  341. package/src/components/ui/rich-markdown-renderer.tsx +6 -6
  342. package/src/components/ui/search-input.tsx +7 -7
  343. package/src/components/ui/select.tsx +1 -1
  344. package/src/components/ui/service-card.tsx +4 -4
  345. package/src/components/ui/sheet.tsx +3 -3
  346. package/src/components/ui/simple-markdown-renderer.tsx +4 -4
  347. package/src/components/ui/square-avatar.tsx +9 -5
  348. package/src/components/ui/status-badge.tsx +11 -11
  349. package/src/components/ui/status-indicator.tsx +6 -6
  350. package/src/components/ui/tab-content.tsx +1 -1
  351. package/src/components/ui/tab-navigation.tsx +2 -2
  352. package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
  353. package/src/components/ui/table/table-description-cell.tsx +1 -1
  354. package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
  355. package/src/components/ui/table/table.tsx +2 -2
  356. package/src/components/ui/tabs.tsx +1 -1
  357. package/src/components/ui/tag-search-input.tsx +1 -1
  358. package/src/components/ui/tag.tsx +23 -23
  359. package/src/components/ui/tags-input.tsx +2 -2
  360. package/src/components/ui/ticket-status-tag.tsx +1 -1
  361. package/src/components/ui/toaster.tsx +8 -8
  362. package/src/components/ui/toggle.tsx +1 -1
  363. package/src/components/ui/tooltip.tsx +1 -1
  364. package/src/components/user-display.tsx +12 -6
  365. package/src/components/user-summary-stub.tsx +4 -4
  366. package/src/components/vendor-display-button.tsx +2 -2
  367. package/src/components/vendor-icon.tsx +1 -1
  368. package/src/components/vendor-tag.tsx +9 -10
  369. package/src/components/yes-no-display.tsx +3 -3
  370. package/src/styles/ods-colors.css +2 -0
  371. package/tailwind.config.ts +49 -4
  372. package/dist/chunk-2ELBNZJ3.js.map +0 -1
  373. package/dist/chunk-3WJQL4DN.cjs.map +0 -1
  374. package/dist/chunk-4ACSUJ7Q.js.map +0 -1
  375. package/dist/chunk-7WM77CSW.js.map +0 -1
  376. package/dist/chunk-COMBYYQY.js.map +0 -1
  377. package/dist/chunk-EGRZHR7J.js.map +0 -1
  378. package/dist/chunk-F7YVI54P.js.map +0 -1
  379. package/dist/chunk-G5FALXNO.js.map +0 -1
  380. package/dist/chunk-HTVVXVJL.cjs.map +0 -1
  381. package/dist/chunk-IAN7GUIV.cjs.map +0 -1
  382. package/dist/chunk-IMK6RUEC.cjs.map +0 -1
  383. package/dist/chunk-M6QGB6DC.cjs.map +0 -1
  384. package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
  385. package/dist/chunk-NQQ4NLUT.js.map +0 -1
  386. package/dist/chunk-P7PISHM5.js.map +0 -1
  387. package/dist/chunk-PBTY7AH5.js.map +0 -1
  388. package/dist/chunk-R46QEE3R.cjs.map +0 -1
  389. package/dist/chunk-RQQZF6G6.cjs.map +0 -1
  390. package/dist/chunk-RVWC4P3H.js.map +0 -1
  391. package/dist/chunk-VWGF6IFR.cjs.map +0 -1
  392. package/dist/chunk-WAGTZVQN.js.map +0 -1
  393. package/dist/chunk-WZ6TCAYQ.cjs.map +0 -1
  394. package/dist/components/accordion.d.ts +0 -8
  395. package/dist/components/accordion.d.ts.map +0 -1
  396. package/dist/components/alert-dialog.d.ts +0 -21
  397. package/dist/components/alert-dialog.d.ts.map +0 -1
  398. package/dist/components/alert.d.ts +0 -9
  399. package/dist/components/alert.d.ts.map +0 -1
  400. package/dist/components/badge.d.ts +0 -10
  401. package/dist/components/badge.d.ts.map +0 -1
  402. package/dist/components/breadcrumb.d.ts +0 -20
  403. package/dist/components/breadcrumb.d.ts.map +0 -1
  404. package/dist/components/chevron-button.d.ts +0 -14
  405. package/dist/components/chevron-button.d.ts.map +0 -1
  406. package/dist/components/dialog.d.ts +0 -29
  407. package/dist/components/dialog.d.ts.map +0 -1
  408. package/dist/components/dropdown-menu.d.ts +0 -28
  409. package/dist/components/dropdown-menu.d.ts.map +0 -1
  410. package/dist/components/input.d.ts +0 -8
  411. package/dist/components/input.d.ts.map +0 -1
  412. package/dist/components/label.d.ts +0 -6
  413. package/dist/components/label.d.ts.map +0 -1
  414. package/dist/components/menubar.d.ts +0 -34
  415. package/dist/components/menubar.d.ts.map +0 -1
  416. package/dist/components/navigation-menu.d.ts +0 -13
  417. package/dist/components/navigation-menu.d.ts.map +0 -1
  418. package/dist/components/select.d.ts +0 -14
  419. package/dist/components/select.d.ts.map +0 -1
  420. package/dist/components/sidebar.d.ts +0 -67
  421. package/dist/components/sidebar.d.ts.map +0 -1
  422. package/dist/components/square-avatar.d.ts +0 -21
  423. package/dist/components/square-avatar.d.ts.map +0 -1
  424. package/dist/components/table.d.ts +0 -11
  425. package/dist/components/table.d.ts.map +0 -1
  426. package/dist/components/tabs.d.ts +0 -18
  427. package/dist/components/tabs.d.ts.map +0 -1
  428. package/dist/components/toggle.d.ts +0 -13
  429. package/dist/components/toggle.d.ts.map +0 -1
  430. package/src/components/.accordion.md +0 -42
  431. package/src/components/.alert-dialog.md +0 -58
  432. package/src/components/.alert.md +0 -43
  433. package/src/components/.badge.md +0 -40
  434. package/src/components/.breadcrumb.md +0 -54
  435. package/src/components/.chevron-button.md +0 -46
  436. package/src/components/.dialog.md +0 -60
  437. package/src/components/.dropdown-menu.md +0 -51
  438. package/src/components/.input.md +0 -40
  439. package/src/components/.label.md +0 -41
  440. package/src/components/.menubar.md +0 -49
  441. package/src/components/.navigation-menu.md +0 -44
  442. package/src/components/.select.md +0 -54
  443. package/src/components/.sidebar.md +0 -58
  444. package/src/components/.square-avatar.md +0 -42
  445. package/src/components/.table.md +0 -51
  446. package/src/components/.tabs.md +0 -38
  447. package/src/components/.toggle.md +0 -49
  448. package/src/components/accordion.tsx +0 -56
  449. package/src/components/alert-dialog.tsx +0 -141
  450. package/src/components/alert.tsx +0 -59
  451. package/src/components/badge.tsx +0 -30
  452. package/src/components/breadcrumb.tsx +0 -115
  453. package/src/components/chevron-button.tsx +0 -68
  454. package/src/components/dialog.tsx +0 -150
  455. package/src/components/dropdown-menu.tsx +0 -200
  456. package/src/components/input.tsx +0 -39
  457. package/src/components/label.tsx +0 -19
  458. package/src/components/menubar.tsx +0 -236
  459. package/src/components/navigation-menu.tsx +0 -128
  460. package/src/components/select.tsx +0 -160
  461. package/src/components/sidebar.tsx +0 -764
  462. package/src/components/square-avatar.tsx +0 -61
  463. package/src/components/table.tsx +0 -72
  464. package/src/components/tabs.tsx +0 -65
  465. package/src/components/toggle.tsx +0 -45
  466. /package/dist/{chunk-QXYOGJQJ.js.map → chunk-7KDR5P23.js.map} +0 -0
  467. /package/dist/{chunk-PEIR7D25.js.map → chunk-7KNOHGMI.js.map} +0 -0
@@ -12,7 +12,7 @@ interface PageLayoutSkeletonProps {
12
12
  */
13
13
  export function AnnouncementBarSkeleton() {
14
14
  return (
15
- <div className="bg-[#2A2A2A] relative w-full animate-pulse">
15
+ <div className="bg-ods-skeleton relative w-full animate-pulse">
16
16
  <div className="flex flex-row items-center relative w-full">
17
17
  <div className="box-border flex flex-row gap-4 md:gap-6 items-center justify-start pl-4 md:pl-6 pr-12 md:pr-16 py-3 md:py-4 relative w-full">
18
18
  {/* Logo skeleton */}
@@ -40,7 +40,7 @@ export function HeaderSkeleton() {
40
40
  <header className="sticky top-0 z-40 w-full flex items-center justify-between border-b border-ods-border bg-ods-card backdrop-blur-sm bg-ods-card/95 px-4 md:px-[80px] py-3 md:py-[12px] animate-pulse">
41
41
  {/* Left: Logo skeleton */}
42
42
  <div className="flex items-center justify-start flex-1 min-w-0">
43
- <div className="w-[110px] h-[26px] md:w-[137px] md:h-8 bg-[#2A2A2A] rounded"></div>
43
+ <div className="w-[110px] h-[26px] md:w-[137px] md:h-8 bg-ods-skeleton rounded"></div>
44
44
  </div>
45
45
 
46
46
  {/* Center: Navigation skeleton - hidden on mobile, visible on desktop */}
@@ -327,15 +327,15 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
327
327
  <div className="flex flex-col gap-3">
328
328
  <div className="flex flex-col gap-2">
329
329
  {/* Large title skeleton */}
330
- <div className="h-12 md:h-16 lg:h-20 bg-[#2A2A2A] rounded animate-pulse w-80 max-w-full"></div>
330
+ <div className="h-12 md:h-16 lg:h-20 bg-ods-skeleton rounded animate-pulse w-80 max-w-full"></div>
331
331
  {/* Category text */}
332
- <div className="h-5 md:h-6 bg-[#2A2A2A] rounded animate-pulse w-32"></div>
332
+ <div className="h-5 md:h-6 bg-ods-skeleton rounded animate-pulse w-32"></div>
333
333
  </div>
334
334
 
335
335
  {/* Pricing tags */}
336
336
  <div className="flex items-center gap-2">
337
- <div className="h-8 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
338
- <div className="h-8 bg-[#2A2A2A] rounded animate-pulse w-16"></div>
337
+ <div className="h-8 bg-ods-skeleton rounded animate-pulse w-20"></div>
338
+ <div className="h-8 bg-ods-skeleton rounded animate-pulse w-16"></div>
339
339
  </div>
340
340
  </div>
341
341
  </div>
@@ -343,7 +343,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
343
343
  {/* Vendor Image Display Skeleton */}
344
344
  <div className="w-full h-[300px] md:h-[400px] lg:h-[500px] bg-ods-card border border-ods-border rounded-lg animate-pulse mb-2"></div>
345
345
  <div className="text-center">
346
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-24 mx-auto"></div>
346
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-24 mx-auto"></div>
347
347
  </div>
348
348
  </div>
349
349
 
@@ -363,10 +363,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
363
363
  <div className="border border-ods-border rounded-lg overflow-hidden">
364
364
  {/* Header */}
365
365
  <div className="bg-ods-card p-4 flex items-center gap-3">
366
- <div className="w-8 h-8 bg-[#2A2A2A] rounded animate-pulse"></div>
366
+ <div className="w-8 h-8 bg-ods-skeleton rounded animate-pulse"></div>
367
367
  <div className="flex flex-col gap-1">
368
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
369
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-12"></div>
368
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
369
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-12"></div>
370
370
  </div>
371
371
  </div>
372
372
 
@@ -374,10 +374,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
374
374
  <div className="p-4 space-y-3">
375
375
  {Array.from({ length: 4 }).map((_, i) => (
376
376
  <div key={i} className="flex items-center gap-3">
377
- <div className="w-6 h-6 bg-[#2A2A2A] rounded animate-pulse"></div>
377
+ <div className="w-6 h-6 bg-ods-skeleton rounded animate-pulse"></div>
378
378
  <div className="flex items-end gap-1">
379
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-12"></div>
380
- <div className="h-3 bg-[#2A2A2A] rounded animate-pulse w-8"></div>
379
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
380
+ <div className="h-3 bg-ods-skeleton rounded animate-pulse w-8"></div>
381
381
  </div>
382
382
  </div>
383
383
  ))}
@@ -395,11 +395,11 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
395
395
 
396
396
  {/* Alternatives Container */}
397
397
  <div className="flex flex-col gap-6 mb-20">
398
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-48"></div>
398
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-48"></div>
399
399
 
400
400
  {/* Open Source Alternatives */}
401
401
  <div className="flex flex-col gap-4">
402
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-48"></div>
402
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-48"></div>
403
403
  <div className="flex flex-wrap gap-2">
404
404
  {Array.from({ length: 6 }).map((_, i) => (
405
405
  <div key={i} className="h-10 bg-ods-card border border-ods-border rounded-lg animate-pulse w-24"></div>
@@ -409,7 +409,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
409
409
 
410
410
  {/* Commercial Alternatives */}
411
411
  <div className="flex flex-col gap-4">
412
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-52"></div>
412
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-52"></div>
413
413
  <div className="flex flex-wrap gap-2">
414
414
  {Array.from({ length: 4 }).map((_, i) => (
415
415
  <div key={i} className="h-10 bg-ods-card border border-ods-border rounded-lg animate-pulse w-28"></div>
@@ -420,28 +420,28 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
420
420
 
421
421
  {/* About Section */}
422
422
  <div className="flex flex-col gap-6 mb-20">
423
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-64"></div>
423
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-64"></div>
424
424
 
425
425
  <div className="bg-ods-card border border-ods-border rounded-lg p-6 md:p-8">
426
426
  <div className="space-y-4">
427
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse"></div>
428
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse"></div>
429
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-5/6"></div>
430
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-4/5"></div>
427
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse"></div>
428
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse"></div>
429
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-5/6"></div>
430
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
431
431
  </div>
432
432
  </div>
433
433
  </div>
434
434
 
435
435
  {/* Key Features Section */}
436
436
  <div className="flex flex-col gap-6 mb-20">
437
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-72"></div>
437
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-72"></div>
438
438
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
439
439
  {Array.from({ length: 6 }).map((_, i) => (
440
440
  <div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-4">
441
- <div className="w-12 h-12 bg-[#2A2A2A] rounded flex-shrink-0 animate-pulse"></div>
441
+ <div className="w-12 h-12 bg-ods-skeleton rounded flex-shrink-0 animate-pulse"></div>
442
442
  <div className="flex-1 space-y-2">
443
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-3/4"></div>
444
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse"></div>
443
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
444
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
445
445
  </div>
446
446
  </div>
447
447
  ))}
@@ -450,30 +450,30 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
450
450
 
451
451
  {/* Pros and Cons Section */}
452
452
  <div className="flex flex-col gap-6 mb-20">
453
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-80"></div>
453
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-80"></div>
454
454
  <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
455
455
  {/* Pros Column */}
456
456
  <div className="flex flex-col gap-6">
457
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-16"></div>
457
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-16"></div>
458
458
  {Array.from({ length: 3 }).map((_, i) => (
459
459
  <div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-3">
460
460
  <div className="w-12 h-12 bg-ods-bg border border-ods-border rounded flex-shrink-0 animate-pulse"></div>
461
461
  <div className="flex-1 space-y-2">
462
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-2/3"></div>
463
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse"></div>
462
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
463
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
464
464
  </div>
465
465
  </div>
466
466
  ))}
467
467
  </div>
468
468
  {/* Cons Column */}
469
469
  <div className="flex flex-col gap-6">
470
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-16"></div>
470
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-16"></div>
471
471
  {Array.from({ length: 3 }).map((_, i) => (
472
472
  <div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-3">
473
473
  <div className="w-12 h-12 bg-ods-bg border border-ods-border rounded flex-shrink-0 animate-pulse"></div>
474
474
  <div className="flex-1 space-y-2">
475
- <div className="h-5 bg-[#2A2A2A] rounded animate-pulse w-2/3"></div>
476
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse"></div>
475
+ <div className="h-5 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
476
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
477
477
  </div>
478
478
  </div>
479
479
  ))}
@@ -483,7 +483,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
483
483
 
484
484
  {/* Alternatives Section */}
485
485
  <div className="flex flex-col gap-6 mb-20">
486
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-72"></div>
486
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-72"></div>
487
487
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
488
488
  {Array.from({ length: 6 }).map((_, i) => (
489
489
  <div key={i} className="bg-ods-card border border-ods-border rounded-lg p-6 space-y-4">
@@ -491,34 +491,34 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
491
491
  <div className="flex items-start gap-4">
492
492
  <div className="w-16 h-16 bg-ods-bg border border-ods-border rounded-lg animate-pulse flex-shrink-0"></div>
493
493
  <div className="flex-1 space-y-2">
494
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-3/4"></div>
495
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-1/2"></div>
494
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
495
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-1/2"></div>
496
496
  </div>
497
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
497
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-20"></div>
498
498
  </div>
499
499
 
500
500
  {/* Description */}
501
501
  <div className="space-y-2">
502
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse"></div>
503
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-5/6"></div>
504
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-4/5"></div>
502
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
503
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-5/6"></div>
504
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
505
505
  </div>
506
506
 
507
507
  {/* Footer */}
508
508
  <div className="flex items-center justify-between pt-2 border-t border-ods-border">
509
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-16"></div>
510
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
509
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-16"></div>
510
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
511
511
  </div>
512
512
  </div>
513
513
  ))}
514
514
  </div>
515
515
  {/* Show All Button */}
516
- <div className="h-12 bg-[#2A2A2A] rounded-md animate-pulse"></div>
516
+ <div className="h-12 bg-ods-skeleton rounded-md animate-pulse"></div>
517
517
  </div>
518
518
 
519
519
  {/* Comments Section */}
520
520
  <div className="flex flex-col gap-6 mb-20">
521
- <div className="h-8 md:h-10 bg-[#2A2A2A] rounded animate-pulse w-64"></div>
521
+ <div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-64"></div>
522
522
 
523
523
  {/* Comment Form Skeleton */}
524
524
  <div className="space-y-3">
@@ -526,24 +526,24 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
526
526
  <div className="flex-1 bg-ods-bg border border-ods-border rounded-lg overflow-hidden">
527
527
  {/* Title Section */}
528
528
  <div className="border-b border-ods-border p-3">
529
- <div className="h-3 bg-[#2A2A2A] rounded animate-pulse w-8 mb-2"></div>
530
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-full"></div>
529
+ <div className="h-3 bg-ods-skeleton rounded animate-pulse w-8 mb-2"></div>
530
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-full"></div>
531
531
  </div>
532
532
 
533
533
  {/* Description Section */}
534
534
  <div className="p-3">
535
- <div className="h-3 bg-[#2A2A2A] rounded animate-pulse w-16 mb-2"></div>
535
+ <div className="h-3 bg-ods-skeleton rounded animate-pulse w-16 mb-2"></div>
536
536
  <div className="space-y-2">
537
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-full"></div>
538
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-3/4"></div>
539
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-1/2"></div>
537
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-full"></div>
538
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
539
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-1/2"></div>
540
540
  </div>
541
541
  </div>
542
542
  </div>
543
543
 
544
544
  {/* Send Button */}
545
545
  <div className="flex items-stretch">
546
- <div className="h-[120px] w-20 bg-[#2A2A2A] rounded-lg animate-pulse"></div>
546
+ <div className="h-[120px] w-20 bg-ods-skeleton rounded-lg animate-pulse"></div>
547
547
  </div>
548
548
  </div>
549
549
  </div>
@@ -557,22 +557,22 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
557
557
  <div className="flex items-center gap-2">
558
558
  {/* User Info */}
559
559
  <div className="flex items-center gap-2 bg-ods-card border border-ods-border rounded-lg py-2 px-3">
560
- <div className="w-8 h-8 bg-[#2A2A2A] rounded-lg animate-pulse"></div>
561
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
560
+ <div className="w-8 h-8 bg-ods-skeleton rounded-lg animate-pulse"></div>
561
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
562
562
  </div>
563
563
 
564
564
  {/* Timestamp */}
565
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-12"></div>
565
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
566
566
  </div>
567
567
  </div>
568
568
 
569
569
  {/* Comment Content */}
570
570
  <div className="space-y-2">
571
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-2/3"></div>
571
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
572
572
  <div className="space-y-1">
573
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-full"></div>
574
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-4/5"></div>
575
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-3/5"></div>
573
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-full"></div>
574
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
575
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-3/5"></div>
576
576
  </div>
577
577
  </div>
578
578
  </div>
@@ -597,10 +597,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
597
597
  <div className="border border-ods-border rounded-lg overflow-hidden">
598
598
  {/* Header */}
599
599
  <div className="bg-ods-card p-4 flex items-center gap-3">
600
- <div className="w-8 h-8 bg-[#2A2A2A] rounded animate-pulse"></div>
600
+ <div className="w-8 h-8 bg-ods-skeleton rounded animate-pulse"></div>
601
601
  <div className="flex flex-col gap-1">
602
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-20"></div>
603
- <div className="h-6 bg-[#2A2A2A] rounded animate-pulse w-12"></div>
602
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
603
+ <div className="h-6 bg-ods-skeleton rounded animate-pulse w-12"></div>
604
604
  </div>
605
605
  </div>
606
606
 
@@ -608,10 +608,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
608
608
  <div className="p-4 space-y-3">
609
609
  {Array.from({ length: 4 }).map((_, i) => (
610
610
  <div key={i} className="flex items-center gap-3">
611
- <div className="w-6 h-6 bg-[#2A2A2A] rounded animate-pulse"></div>
611
+ <div className="w-6 h-6 bg-ods-skeleton rounded animate-pulse"></div>
612
612
  <div className="flex items-end gap-1">
613
- <div className="h-4 bg-[#2A2A2A] rounded animate-pulse w-12"></div>
614
- <div className="h-3 bg-[#2A2A2A] rounded animate-pulse w-8"></div>
613
+ <div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
614
+ <div className="h-3 bg-ods-skeleton rounded animate-pulse w-8"></div>
615
615
  </div>
616
616
  </div>
617
617
  ))}
@@ -710,7 +710,7 @@ export function SlackCommunitySkeleton() {
710
710
 
711
711
  {/* Title Skeleton */}
712
712
  <div className="w-full">
713
- <div className="h-8 md:h-12 lg:h-14 bg-[#2A2A2A] rounded-lg animate-pulse max-w-md"></div>
713
+ <div className="h-8 md:h-12 lg:h-14 bg-ods-skeleton rounded-lg animate-pulse max-w-md"></div>
714
714
  </div>
715
715
 
716
716
  {/* Content Area - Channel List + Chat Interface */}
@@ -722,21 +722,21 @@ export function SlackCommunitySkeleton() {
722
722
  {/* Header */}
723
723
  <div className="flex flex-col gap-2">
724
724
  <div className="flex items-center justify-between">
725
- <div className="h-4 bg-[#2A2A2A] rounded w-24"></div>
726
- <div className="h-3 bg-[#2A2A2A] rounded w-16"></div>
725
+ <div className="h-4 bg-ods-skeleton rounded w-24"></div>
726
+ <div className="h-3 bg-ods-skeleton rounded w-16"></div>
727
727
  </div>
728
- <div className="h-3 bg-[#2A2A2A] rounded w-32"></div>
728
+ <div className="h-3 bg-ods-skeleton rounded w-32"></div>
729
729
  </div>
730
730
 
731
731
  {/* Channels */}
732
732
  <div className="flex flex-col gap-1">
733
- <div className="h-3 bg-[#2A2A2A] rounded w-16 mb-2"></div>
733
+ <div className="h-3 bg-ods-skeleton rounded w-16 mb-2"></div>
734
734
  {Array.from({ length: 5 }).map((_, i) => (
735
735
  <div key={i} className="flex items-center gap-2 px-2 py-3 min-h-[48px]">
736
- <div className="w-4 h-4 bg-[#2A2A2A] rounded"></div>
736
+ <div className="w-4 h-4 bg-ods-skeleton rounded"></div>
737
737
  <div className="flex-1">
738
- <div className="h-3 bg-[#2A2A2A] rounded w-24 mb-1"></div>
739
- <div className="h-2 bg-[#2A2A2A] rounded w-16"></div>
738
+ <div className="h-3 bg-ods-skeleton rounded w-24 mb-1"></div>
739
+ <div className="h-2 bg-ods-skeleton rounded w-16"></div>
740
740
  </div>
741
741
  </div>
742
742
  ))}
@@ -746,12 +746,12 @@ export function SlackCommunitySkeleton() {
746
746
  <div className="border-t border-ods-border pt-3 mt-2">
747
747
  <div className="space-y-2">
748
748
  <div className="flex justify-between">
749
- <div className="h-3 bg-[#2A2A2A] rounded w-16"></div>
750
- <div className="h-3 bg-[#2A2A2A] rounded w-8"></div>
749
+ <div className="h-3 bg-ods-skeleton rounded w-16"></div>
750
+ <div className="h-3 bg-ods-skeleton rounded w-8"></div>
751
751
  </div>
752
752
  <div className="flex justify-between">
753
- <div className="h-3 bg-[#2A2A2A] rounded w-20"></div>
754
- <div className="h-3 bg-[#2A2A2A] rounded w-8"></div>
753
+ <div className="h-3 bg-ods-skeleton rounded w-20"></div>
754
+ <div className="h-3 bg-ods-skeleton rounded w-8"></div>
755
755
  </div>
756
756
  </div>
757
757
  </div>
@@ -764,23 +764,23 @@ export function SlackCommunitySkeleton() {
764
764
  {/* Header */}
765
765
  <div className="flex items-center justify-between p-4 md:p-6 border-b border-ods-border bg-ods-bg h-[56px] md:h-[60px] flex-shrink-0">
766
766
  <div className="flex items-center gap-2">
767
- <div className="h-3 md:h-4 bg-[#2A2A2A] rounded w-3 md:w-4"></div>
768
- <div className="h-3 md:h-4 bg-[#2A2A2A] rounded w-24 md:w-32"></div>
767
+ <div className="h-3 md:h-4 bg-ods-skeleton rounded w-3 md:w-4"></div>
768
+ <div className="h-3 md:h-4 bg-ods-skeleton rounded w-24 md:w-32"></div>
769
769
  </div>
770
- <div className="h-3 bg-[#2A2A2A] rounded w-12 md:w-16"></div>
770
+ <div className="h-3 bg-ods-skeleton rounded w-12 md:w-16"></div>
771
771
  </div>
772
772
 
773
773
  {/* Messages */}
774
774
  <div className="flex-1 bg-ods-bg p-4 md:p-6 space-y-3 md:space-y-4 overflow-hidden min-h-[280px] md:min-h-[320px] lg:min-h-[420px]">
775
775
  {Array.from({ length: 6 }).map((_, i) => (
776
776
  <div key={i} className="flex gap-2 md:gap-3">
777
- <div className="w-10 h-10 md:w-12 md:h-12 bg-[#2A2A2A] rounded-lg flex-shrink-0"></div>
777
+ <div className="w-10 h-10 md:w-12 md:h-12 bg-ods-skeleton rounded-lg flex-shrink-0"></div>
778
778
  <div className="flex-1">
779
779
  <div className="flex items-center gap-2 mb-1">
780
- <div className="h-3 bg-[#2A2A2A] rounded w-16 md:w-20"></div>
781
- <div className="h-3 bg-[#2A2A2A] rounded w-12 md:w-16"></div>
780
+ <div className="h-3 bg-ods-skeleton rounded w-16 md:w-20"></div>
781
+ <div className="h-3 bg-ods-skeleton rounded w-12 md:w-16"></div>
782
782
  </div>
783
- <div className="h-3 md:h-4 bg-[#2A2A2A] rounded w-full"></div>
783
+ <div className="h-3 md:h-4 bg-ods-skeleton rounded w-full"></div>
784
784
  </div>
785
785
  </div>
786
786
  ))}
@@ -789,7 +789,7 @@ export function SlackCommunitySkeleton() {
789
789
  {/* Input Area */}
790
790
  <div className="p-4 md:p-6 border-t border-ods-border bg-ods-card h-[72px] md:h-[80px] flex-shrink-0">
791
791
  <div className="flex items-end gap-3 justify-center md:justify-end">
792
- <div className="h-10 md:h-12 bg-[#2A2A2A] rounded-lg w-28 md:w-32"></div>
792
+ <div className="h-10 md:h-12 bg-ods-skeleton rounded-lg w-28 md:w-32"></div>
793
793
  </div>
794
794
  </div>
795
795
  </div>
@@ -42,7 +42,7 @@ export function UnifiedSkeleton({
42
42
  'aria-label': ariaLabel,
43
43
  ...props
44
44
  }: UnifiedSkeletonProps) {
45
- const baseClasses = "bg-[#2A2A2A]"
45
+ const baseClasses = "bg-ods-skeleton"
46
46
 
47
47
  const variantClasses = {
48
48
  default: "rounded-md",
@@ -10,10 +10,10 @@ export function UsersGridSkeleton({ rows = 10, className }: Props) {
10
10
  return (
11
11
  <div className={cn('overflow-x-auto rounded-lg border border-ods-border bg-ods-card animate-pulse', className)}>
12
12
  <table className="min-w-full divide-y divide-ods-border">
13
- <thead className="bg-[#2A2A2A]">
13
+ <thead className="bg-ods-skeleton">
14
14
  <tr>
15
15
  {['Name', 'Email', 'Role', 'Created', 'Last Sign-In'].map((h) => (
16
- <th key={h} className="px-4 py-3 text-left text-[12px] font-medium text-ods-text-primary font-['DM_Sans']">{h}</th>
16
+ <th key={h} className="px-4 py-3 text-left text-h6 text-ods-text-primary">{h}</th>
17
17
  ))}
18
18
  </tr>
19
19
  </thead>
@@ -29,7 +29,7 @@ const LogCard: React.FC<{
29
29
  <div
30
30
  className={cn(
31
31
  'box-border flex gap-3 items-start py-2 px-1 relative rounded w-full',
32
- 'hover:bg-[#2a2a2a]/50 transition-colors cursor-pointer'
32
+ 'hover:bg-ods-bg-hover/50 transition-colors cursor-pointer'
33
33
  )}
34
34
  onClick={onClick}
35
35
  role="button"
@@ -44,11 +44,11 @@ const LogCard: React.FC<{
44
44
  <LogSeverityDot severity={log.severity} size="md" />
45
45
 
46
46
  <div className="flex-1 min-w-0 space-y-1">
47
- <p className="font-['DM_Sans'] font-medium text-[14px] leading-5 text-white">
47
+ <p className="text-h6 text-ods-text-primary">
48
48
  {log.title}
49
49
  </p>
50
50
  <div className="flex items-center gap-2">
51
- <p className="font-['Azeret_Mono'] font-normal text-[13px] leading-4 text-ods-text-secondary uppercase tracking-wider">
51
+ <p className="text-h5 text-ods-text-secondary">
52
52
  {formatTimestamp(log.timestamp)}
53
53
  </p>
54
54
  {log.toolType && (
@@ -60,7 +60,7 @@ const LogCard: React.FC<{
60
60
 
61
61
  {showConnector && !isLast && (
62
62
  <div
63
- className="absolute bg-[#3a3a3a] left-[15px] w-[2px]"
63
+ className="absolute bg-ods-border left-[15px] w-[2px]"
64
64
  style={{
65
65
  top: '28px',
66
66
  bottom: '-10px'
@@ -103,14 +103,14 @@ export const LogsList = React.forwardRef<
103
103
  <div
104
104
  ref={ref}
105
105
  className={cn(
106
- 'bg-[#1a1a1a] border border-[#2a2a2a] rounded-lg p-4',
106
+ 'bg-ods-card border border-ods-border rounded-lg p-4',
107
107
  'flex items-center justify-center',
108
108
  getContainerClasses(),
109
109
  className
110
110
  )}
111
111
  style={getContainerStyles()}
112
112
  >
113
- <div className="text-[#666666] text-sm font-['DM_Sans']">Loading logs...</div>
113
+ <div className="text-ods-text-muted text-h6">Loading logs...</div>
114
114
  </div>
115
115
  )
116
116
  }
@@ -120,14 +120,14 @@ export const LogsList = React.forwardRef<
120
120
  <div
121
121
  ref={ref}
122
122
  className={cn(
123
- 'bg-[#1a1a1a] border border-[#2a2a2a] rounded-lg p-4',
123
+ 'bg-ods-card border border-ods-border rounded-lg p-4',
124
124
  'flex items-center justify-center',
125
125
  getContainerClasses(),
126
126
  className
127
127
  )}
128
128
  style={getContainerStyles()}
129
129
  >
130
- <div className="text-[#666666] text-sm font-['DM_Sans']">{emptyMessage}</div>
130
+ <div className="text-ods-text-muted text-h6">{emptyMessage}</div>
131
131
  </div>
132
132
  )
133
133
  }
@@ -180,14 +180,14 @@ export const MediaCarousel = memo(function MediaCarousel({
180
180
  const renderImageUnavailable = (failedUrl: string) => (
181
181
  <div className="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-ods-card px-6 text-center">
182
182
  <ImageOffIcon className="size-8 text-ods-text-secondary" />
183
- <p className="text-ods-text-secondary text-sm max-w-md">
183
+ <p className="text-ods-text-secondary text-h6 max-w-md">
184
184
  This image is no longer available at the original URL.
185
185
  </p>
186
186
  <Link
187
187
  href={failedUrl}
188
188
  target="_blank"
189
189
  rel="noopener noreferrer"
190
- className="text-ods-accent text-sm underline break-all"
190
+ className="text-ods-accent text-h6 underline break-all"
191
191
  >
192
192
  Open link
193
193
  </Link>
@@ -201,7 +201,7 @@ export const MediaCarousel = memo(function MediaCarousel({
201
201
  if (!rawSrc) {
202
202
  return (
203
203
  <div className="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-ods-card px-6 text-center">
204
- <p className="text-ods-text-secondary text-sm max-w-md">No image URL for this slide.</p>
204
+ <p className="text-ods-text-secondary text-h6 max-w-md">No image URL for this slide.</p>
205
205
  </div>
206
206
  );
207
207
  }
@@ -296,7 +296,7 @@ export const MediaCarousel = memo(function MediaCarousel({
296
296
  <Button
297
297
  variant="transparent"
298
298
  onClick={prevSlide}
299
- className="absolute left-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-white opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
299
+ className="absolute left-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-ods-text-on-dark opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
300
300
  aria-label="Previous media"
301
301
  >
302
302
  <ChevronLeftIcon />
@@ -305,7 +305,7 @@ export const MediaCarousel = memo(function MediaCarousel({
305
305
  <Button
306
306
  variant="transparent"
307
307
  onClick={nextSlide}
308
- className="absolute right-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-white opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
308
+ className="absolute right-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-ods-text-on-dark opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
309
309
  aria-label="Next media"
310
310
  >
311
311
  <ChevronRightIcon />
@@ -334,8 +334,8 @@ export const MediaCarousel = memo(function MediaCarousel({
334
334
  className={cn(
335
335
  "size-2 rounded-full transition-colors duration-150",
336
336
  isActive
337
- ? "bg-[var(--ods-flamingo-pink-base)]"
338
- : "bg-[var(--ods-system-greys-soft-grey)] hover:bg-[var(--ods-system-greys-soft-grey-hover)]"
337
+ ? "bg-ods-flamingo-pink"
338
+ : "bg-ods-bg-surface hover:bg-ods-bg-surface-hover"
339
339
  )}
340
340
  />
341
341
  </Button>
@@ -15,9 +15,9 @@ interface MetricValueProps {
15
15
  */
16
16
  export function MetricValue({ value, label, className }: MetricValueProps) {
17
17
  return (
18
- <div className={cn('flex items-end gap-2 whitespace-nowrap font-["DM_Sans"] text-lg leading-[24px] text-ods-text-primary', className)}>
18
+ <div className={cn('flex items-end gap-2 whitespace-nowrap text-h4 text-ods-text-primary', className)}>
19
19
  {value}
20
- <span className="text-sm text-ods-text-secondary">
20
+ <span className="text-h6 text-ods-text-secondary">
21
21
  {label}
22
22
  </span>
23
23
  </div>
@@ -2,7 +2,8 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { cn } from "../utils/cn";
5
- import { SquareAvatar } from './square-avatar';
5
+ import { getProxiedImageUrl } from '../utils/image-proxy';
6
+ import { SquareAvatar } from './ui/square-avatar';
6
7
 
7
8
  interface MSPDisplayProps {
8
9
  name: string;
@@ -14,7 +15,12 @@ interface MSPDisplayProps {
14
15
  export function MSPDisplay({ name, logoUrl, size = 40, className }: MSPDisplayProps) {
15
16
  return (
16
17
  <div className={cn('flex items-center gap-2 min-w-0', className)}>
17
- <SquareAvatar src={logoUrl ?? undefined} fallbackName={name} size={size} />
18
+ <SquareAvatar
19
+ src={logoUrl ? getProxiedImageUrl(logoUrl) || logoUrl : undefined}
20
+ fallback={name}
21
+ alt={name}
22
+ sizePx={size}
23
+ />
18
24
  <h2 className="truncate pl-2">
19
25
  {name}
20
26
  </h2>