@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
@@ -1,764 +0,0 @@
1
- "use client"
2
-
3
- import { Slot } from "@radix-ui/react-slot"
4
- import { VariantProps, cva } from "class-variance-authority"
5
- import { PanelLeft } from "lucide-react"
6
- import * as React from "react"
7
-
8
- import { useMdUp } from "../hooks/ui/use-media-query"
9
- import { cn } from "../utils/cn"
10
- import { Button } from "./ui/button"
11
- import { Input } from "./ui/input"
12
- import { Separator } from "./ui/separator"
13
- import { Sheet, SheetContent } from "./ui/sheet"
14
- import { Skeleton } from "./ui/skeleton"
15
- import {
16
- Tooltip,
17
- TooltipContent,
18
- TooltipProvider,
19
- TooltipTrigger,
20
- } from "./ui/tooltip"
21
-
22
- const SIDEBAR_COOKIE_NAME = "sidebar:state"
23
- const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
24
- const SIDEBAR_WIDTH = "16rem"
25
- const SIDEBAR_WIDTH_MOBILE = "18rem"
26
- const SIDEBAR_WIDTH_ICON = "3rem"
27
- const SIDEBAR_KEYBOARD_SHORTCUT = "b"
28
-
29
- type SidebarContext = {
30
- state: "expanded" | "collapsed"
31
- open: boolean
32
- setOpen: (open: boolean) => void
33
- openMobile: boolean
34
- setOpenMobile: (open: boolean) => void
35
- isMobile: boolean
36
- toggleSidebar: () => void
37
- }
38
-
39
- const SidebarContext = React.createContext<SidebarContext | null>(null)
40
-
41
- function useSidebar() {
42
- const context = React.useContext(SidebarContext)
43
- if (!context) {
44
- throw new Error("useSidebar must be used within a SidebarProvider.")
45
- }
46
-
47
- return context
48
- }
49
-
50
- const SidebarProvider = React.forwardRef<
51
- HTMLDivElement,
52
- React.ComponentProps<"div"> & {
53
- defaultOpen?: boolean
54
- open?: boolean
55
- onOpenChange?: (open: boolean) => void
56
- }
57
- >(
58
- (
59
- {
60
- defaultOpen = true,
61
- open: openProp,
62
- onOpenChange: setOpenProp,
63
- className,
64
- style,
65
- children,
66
- ...props
67
- },
68
- ref
69
- ) => {
70
- const isMdUp = useMdUp() ?? false
71
- const [openMobile, setOpenMobile] = React.useState(false)
72
-
73
- // This is the internal state of the sidebar.
74
- // We use openProp and setOpenProp for control from outside the component.
75
- const [_open, _setOpen] = React.useState(defaultOpen)
76
- const open = openProp ?? _open
77
- const setOpen = React.useCallback(
78
- (value: boolean | ((value: boolean) => boolean)) => {
79
- const openState = typeof value === "function" ? value(open) : value
80
- if (setOpenProp) {
81
- setOpenProp(openState)
82
- } else {
83
- _setOpen(openState)
84
- }
85
-
86
- // This sets the cookie to keep the sidebar state.
87
- document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`
88
- },
89
- [setOpenProp, open]
90
- )
91
-
92
- // Helper to toggle the sidebar.
93
- const toggleSidebar = React.useCallback(() => {
94
- return !isMdUp
95
- ? setOpenMobile((open) => !open)
96
- : setOpen((open) => !open)
97
- }, [isMdUp, setOpen, setOpenMobile])
98
-
99
- // Adds a keyboard shortcut to toggle the sidebar.
100
- React.useEffect(() => {
101
- const handleKeyDown = (event: KeyboardEvent) => {
102
- if (
103
- event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
104
- (event.metaKey || event.ctrlKey)
105
- ) {
106
- event.preventDefault()
107
- toggleSidebar()
108
- }
109
- }
110
-
111
- window.addEventListener("keydown", handleKeyDown)
112
- return () => window.removeEventListener("keydown", handleKeyDown)
113
- }, [toggleSidebar])
114
-
115
- // We add a state so that we can do data-state="expanded" or "collapsed".
116
- // This makes it easier to style the sidebar with Tailwind classes.
117
- const state = open ? "expanded" : "collapsed"
118
-
119
- const contextValue = React.useMemo<SidebarContext>(
120
- () => ({
121
- state,
122
- open,
123
- setOpen,
124
- isMobile: !isMdUp,
125
- openMobile,
126
- setOpenMobile,
127
- toggleSidebar,
128
- }),
129
- [state, open, setOpen, isMdUp, openMobile, setOpenMobile, toggleSidebar]
130
- )
131
-
132
- return (
133
- <SidebarContext.Provider value={contextValue}>
134
- <TooltipProvider delayDuration={0}>
135
- <div
136
- style={
137
- {
138
- "--sidebar-width": SIDEBAR_WIDTH,
139
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
140
- ...style,
141
- } as React.CSSProperties
142
- }
143
- className={cn(
144
- "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
145
- className
146
- )}
147
- ref={ref}
148
- {...props}
149
- >
150
- {children}
151
- </div>
152
- </TooltipProvider>
153
- </SidebarContext.Provider>
154
- )
155
- }
156
- )
157
- SidebarProvider.displayName = "SidebarProvider"
158
-
159
- const Sidebar = React.forwardRef<
160
- HTMLDivElement,
161
- React.ComponentProps<"div"> & {
162
- side?: "left" | "right"
163
- variant?: "sidebar" | "floating" | "inset"
164
- collapsible?: "offcanvas" | "icon" | "none"
165
- }
166
- >(
167
- (
168
- {
169
- side = "left",
170
- variant = "sidebar",
171
- collapsible = "offcanvas",
172
- className,
173
- children,
174
- ...props
175
- },
176
- ref
177
- ) => {
178
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
179
-
180
- if (collapsible === "none") {
181
- return (
182
- <div
183
- className={cn(
184
- "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
185
- className
186
- )}
187
- ref={ref}
188
- {...props}
189
- >
190
- {children}
191
- </div>
192
- )
193
- }
194
-
195
- if (isMobile) {
196
- return (
197
- <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>
198
- <SheetContent
199
- data-sidebar="sidebar"
200
- data-mobile="true"
201
- className="w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden"
202
- style={
203
- {
204
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE,
205
- } as React.CSSProperties
206
- }
207
- side={side}
208
- >
209
- <div className="flex h-full w-full flex-col">{children}</div>
210
- </SheetContent>
211
- </Sheet>
212
- )
213
- }
214
-
215
- return (
216
- <div
217
- ref={ref}
218
- className="group peer hidden md:block text-sidebar-foreground"
219
- data-state={state}
220
- data-collapsible={state === "collapsed" ? collapsible : ""}
221
- data-variant={variant}
222
- data-side={side}
223
- >
224
- {/* This is what handles the sidebar gap on desktop */}
225
- <div
226
- className={cn(
227
- "duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear",
228
- "group-data-[collapsible=offcanvas]:w-0",
229
- "group-data-[side=right]:rotate-180",
230
- variant === "floating" || variant === "inset"
231
- ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]"
232
- : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
233
- )}
234
- />
235
- <div
236
- className={cn(
237
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex",
238
- side === "left"
239
- ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
240
- : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
241
- // Adjust the padding for floating and inset variants.
242
- variant === "floating" || variant === "inset"
243
- ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]"
244
- : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
245
- className
246
- )}
247
- {...props}
248
- >
249
- <div
250
- data-sidebar="sidebar"
251
- className="flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
252
- >
253
- {children}
254
- </div>
255
- </div>
256
- </div>
257
- )
258
- }
259
- )
260
- Sidebar.displayName = "Sidebar"
261
-
262
- const SidebarTrigger = React.forwardRef<
263
- React.ElementRef<typeof Button>,
264
- React.ComponentProps<typeof Button>
265
- >(({ className, onClick, ...props }, ref) => {
266
- const { toggleSidebar } = useSidebar()
267
-
268
- return (
269
- <Button
270
- ref={ref}
271
- data-sidebar="trigger"
272
- variant="transparent"
273
- size="icon"
274
- className={cn("h-7 w-7", className)}
275
- onClick={(event) => {
276
- onClick?.(event)
277
- toggleSidebar()
278
- }}
279
- {...props}
280
- >
281
- <PanelLeft />
282
- <span className="sr-only">Toggle Sidebar</span>
283
- </Button>
284
- )
285
- })
286
- SidebarTrigger.displayName = "SidebarTrigger"
287
-
288
- const SidebarRail = React.forwardRef<
289
- HTMLButtonElement,
290
- React.ComponentProps<"button">
291
- >(({ className, ...props }, ref) => {
292
- const { toggleSidebar } = useSidebar()
293
-
294
- return (
295
- <button
296
- ref={ref}
297
- data-sidebar="rail"
298
- aria-label="Toggle Sidebar"
299
- tabIndex={-1}
300
- onClick={toggleSidebar}
301
- title="Toggle Sidebar"
302
- className={cn(
303
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 md:flex",
304
- "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
305
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
306
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
307
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
308
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
309
- className
310
- )}
311
- {...props}
312
- />
313
- )
314
- })
315
- SidebarRail.displayName = "SidebarRail"
316
-
317
- const SidebarInset = React.forwardRef<
318
- HTMLDivElement,
319
- React.ComponentProps<"main">
320
- >(({ className, ...props }, ref) => {
321
- return (
322
- <main
323
- ref={ref}
324
- className={cn(
325
- "relative flex min-h-svh flex-1 flex-col bg-background",
326
- "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
327
- className
328
- )}
329
- {...props}
330
- />
331
- )
332
- })
333
- SidebarInset.displayName = "SidebarInset"
334
-
335
- const SidebarInput = React.forwardRef<
336
- React.ElementRef<typeof Input>,
337
- React.ComponentProps<typeof Input>
338
- >(({ className, ...props }, ref) => {
339
- return (
340
- <Input
341
- ref={ref}
342
- data-sidebar="input"
343
- className={cn(
344
- "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
345
- className
346
- )}
347
- {...props}
348
- />
349
- )
350
- })
351
- SidebarInput.displayName = "SidebarInput"
352
-
353
- const SidebarHeader = React.forwardRef<
354
- HTMLDivElement,
355
- React.ComponentProps<"div">
356
- >(({ className, ...props }, ref) => {
357
- return (
358
- <div
359
- ref={ref}
360
- data-sidebar="header"
361
- className={cn("flex flex-col gap-2 p-2", className)}
362
- {...props}
363
- />
364
- )
365
- })
366
- SidebarHeader.displayName = "SidebarHeader"
367
-
368
- const SidebarFooter = React.forwardRef<
369
- HTMLDivElement,
370
- React.ComponentProps<"div">
371
- >(({ className, ...props }, ref) => {
372
- return (
373
- <div
374
- ref={ref}
375
- data-sidebar="footer"
376
- className={cn("flex flex-col gap-2 p-2", className)}
377
- {...props}
378
- />
379
- )
380
- })
381
- SidebarFooter.displayName = "SidebarFooter"
382
-
383
- const SidebarSeparator = React.forwardRef<
384
- React.ElementRef<typeof Separator>,
385
- React.ComponentProps<typeof Separator>
386
- >(({ className, ...props }, ref) => {
387
- return (
388
- <Separator
389
- ref={ref}
390
- data-sidebar="separator"
391
- className={cn("mx-2 w-auto bg-sidebar-border", className)}
392
- {...props}
393
- />
394
- )
395
- })
396
- SidebarSeparator.displayName = "SidebarSeparator"
397
-
398
- const SidebarContent = React.forwardRef<
399
- HTMLDivElement,
400
- React.ComponentProps<"div">
401
- >(({ className, ...props }, ref) => {
402
- return (
403
- <div
404
- ref={ref}
405
- data-sidebar="content"
406
- className={cn(
407
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
408
- className
409
- )}
410
- {...props}
411
- />
412
- )
413
- })
414
- SidebarContent.displayName = "SidebarContent"
415
-
416
- const SidebarGroup = React.forwardRef<
417
- HTMLDivElement,
418
- React.ComponentProps<"div">
419
- >(({ className, ...props }, ref) => {
420
- return (
421
- <div
422
- ref={ref}
423
- data-sidebar="group"
424
- className={cn("relative flex w-full min-w-0 flex-col p-2", className)}
425
- {...props}
426
- />
427
- )
428
- })
429
- SidebarGroup.displayName = "SidebarGroup"
430
-
431
- const SidebarGroupLabel = React.forwardRef<
432
- HTMLDivElement,
433
- React.ComponentProps<"div"> & { asChild?: boolean }
434
- >(({ className, asChild = false, ...props }, ref) => {
435
- const Comp = asChild ? Slot : "div"
436
-
437
- return (
438
- <Comp
439
- ref={ref}
440
- data-sidebar="group-label"
441
- className={cn(
442
- "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
443
- "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
444
- className
445
- )}
446
- {...props}
447
- />
448
- )
449
- })
450
- SidebarGroupLabel.displayName = "SidebarGroupLabel"
451
-
452
- const SidebarGroupAction = React.forwardRef<
453
- HTMLButtonElement,
454
- React.ComponentProps<"button"> & { asChild?: boolean }
455
- >(({ className, asChild = false, ...props }, ref) => {
456
- const Comp = asChild ? Slot : "button"
457
-
458
- return (
459
- <Comp
460
- ref={ref}
461
- data-sidebar="group-action"
462
- className={cn(
463
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
464
- // Increases the hit area of the button on mobile.
465
- "after:absolute after:-inset-2 after:md:hidden",
466
- "group-data-[collapsible=icon]:hidden",
467
- className
468
- )}
469
- {...props}
470
- />
471
- )
472
- })
473
- SidebarGroupAction.displayName = "SidebarGroupAction"
474
-
475
- const SidebarGroupContent = React.forwardRef<
476
- HTMLDivElement,
477
- React.ComponentProps<"div">
478
- >(({ className, ...props }, ref) => (
479
- <div
480
- ref={ref}
481
- data-sidebar="group-content"
482
- className={cn("w-full text-sm", className)}
483
- {...props}
484
- />
485
- ))
486
- SidebarGroupContent.displayName = "SidebarGroupContent"
487
-
488
- const SidebarMenu = React.forwardRef<
489
- HTMLUListElement,
490
- React.ComponentProps<"ul">
491
- >(({ className, ...props }, ref) => (
492
- <ul
493
- ref={ref}
494
- data-sidebar="menu"
495
- className={cn("flex w-full min-w-0 flex-col gap-1", className)}
496
- {...props}
497
- />
498
- ))
499
- SidebarMenu.displayName = "SidebarMenu"
500
-
501
- const SidebarMenuItem = React.forwardRef<
502
- HTMLLIElement,
503
- React.ComponentProps<"li">
504
- >(({ className, ...props }, ref) => (
505
- <li
506
- ref={ref}
507
- data-sidebar="menu-item"
508
- className={cn("group/menu-item relative", className)}
509
- {...props}
510
- />
511
- ))
512
- SidebarMenuItem.displayName = "SidebarMenuItem"
513
-
514
- const sidebarMenuButtonVariants = cva(
515
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
516
- {
517
- variants: {
518
- variant: {
519
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
520
- outline:
521
- "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
522
- },
523
- size: {
524
- default: "h-8 text-sm",
525
- sm: "h-7 text-xs",
526
- lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0",
527
- },
528
- },
529
- defaultVariants: {
530
- variant: "default",
531
- size: "default",
532
- },
533
- }
534
- )
535
-
536
- const SidebarMenuButton = React.forwardRef<
537
- HTMLButtonElement,
538
- React.ComponentProps<"button"> & {
539
- asChild?: boolean
540
- isActive?: boolean
541
- tooltip?: string | React.ComponentProps<typeof TooltipContent>
542
- } & VariantProps<typeof sidebarMenuButtonVariants>
543
- >(
544
- (
545
- {
546
- asChild = false,
547
- isActive = false,
548
- variant = "default",
549
- size = "default",
550
- tooltip,
551
- className,
552
- ...props
553
- },
554
- ref
555
- ) => {
556
- const Comp = asChild ? Slot : "button"
557
- const { isMobile, state } = useSidebar()
558
-
559
- const button = (
560
- <Comp
561
- ref={ref}
562
- data-sidebar="menu-button"
563
- data-size={size}
564
- data-active={isActive}
565
- className={cn(sidebarMenuButtonVariants({ variant, size }), className)}
566
- {...props}
567
- />
568
- )
569
-
570
- if (!tooltip) {
571
- return button
572
- }
573
-
574
- if (typeof tooltip === "string") {
575
- tooltip = {
576
- children: tooltip,
577
- }
578
- }
579
-
580
- return (
581
- <Tooltip>
582
- <TooltipTrigger asChild>{button}</TooltipTrigger>
583
- <TooltipContent
584
- side="right"
585
- align="center"
586
- hidden={state !== "collapsed" || isMobile}
587
- {...tooltip}
588
- />
589
- </Tooltip>
590
- )
591
- }
592
- )
593
- SidebarMenuButton.displayName = "SidebarMenuButton"
594
-
595
- const SidebarMenuAction = React.forwardRef<
596
- HTMLButtonElement,
597
- React.ComponentProps<"button"> & {
598
- asChild?: boolean
599
- showOnHover?: boolean
600
- }
601
- >(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
602
- const Comp = asChild ? Slot : "button"
603
-
604
- return (
605
- <Comp
606
- ref={ref}
607
- data-sidebar="menu-action"
608
- className={cn(
609
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
610
- // Increases the hit area of the button on mobile.
611
- "after:absolute after:-inset-2 after:md:hidden",
612
- "peer-data-[size=sm]/menu-button:top-1",
613
- "peer-data-[size=default]/menu-button:top-1.5",
614
- "peer-data-[size=lg]/menu-button:top-2.5",
615
- "group-data-[collapsible=icon]:hidden",
616
- showOnHover &&
617
- "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
618
- className
619
- )}
620
- {...props}
621
- />
622
- )
623
- })
624
- SidebarMenuAction.displayName = "SidebarMenuAction"
625
-
626
- const SidebarMenuBadge = React.forwardRef<
627
- HTMLDivElement,
628
- React.ComponentProps<"div">
629
- >(({ className, ...props }, ref) => (
630
- <div
631
- ref={ref}
632
- data-sidebar="menu-badge"
633
- className={cn(
634
- "absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none",
635
- "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
636
- "peer-data-[size=sm]/menu-button:top-1",
637
- "peer-data-[size=default]/menu-button:top-1.5",
638
- "peer-data-[size=lg]/menu-button:top-2.5",
639
- "group-data-[collapsible=icon]:hidden",
640
- className
641
- )}
642
- {...props}
643
- />
644
- ))
645
- SidebarMenuBadge.displayName = "SidebarMenuBadge"
646
-
647
- const SidebarMenuSkeleton = React.forwardRef<
648
- HTMLDivElement,
649
- React.ComponentProps<"div"> & {
650
- showIcon?: boolean
651
- }
652
- >(({ className, showIcon = false, ...props }, ref) => {
653
- // Random width between 50 to 90%.
654
- const width = React.useMemo(() => {
655
- return `${Math.floor(Math.random() * 40) + 50}%`
656
- }, [])
657
-
658
- return (
659
- <div
660
- ref={ref}
661
- data-sidebar="menu-skeleton"
662
- className={cn("rounded-md h-8 flex gap-2 px-2 items-center", className)}
663
- {...props}
664
- >
665
- {showIcon && (
666
- <Skeleton
667
- className="size-4 rounded-md"
668
- data-sidebar="menu-skeleton-icon"
669
- />
670
- )}
671
- <Skeleton
672
- className="h-4 flex-1 max-w-[--skeleton-width]"
673
- data-sidebar="menu-skeleton-text"
674
- style={
675
- {
676
- "--skeleton-width": width,
677
- } as React.CSSProperties
678
- }
679
- />
680
- </div>
681
- )
682
- })
683
- SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton"
684
-
685
- const SidebarMenuSub = React.forwardRef<
686
- HTMLUListElement,
687
- React.ComponentProps<"ul">
688
- >(({ className, ...props }, ref) => (
689
- <ul
690
- ref={ref}
691
- data-sidebar="menu-sub"
692
- className={cn(
693
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
694
- "group-data-[collapsible=icon]:hidden",
695
- className
696
- )}
697
- {...props}
698
- />
699
- ))
700
- SidebarMenuSub.displayName = "SidebarMenuSub"
701
-
702
- const SidebarMenuSubItem = React.forwardRef<
703
- HTMLLIElement,
704
- React.ComponentProps<"li">
705
- >(({ ...props }, ref) => <li ref={ref} {...props} />)
706
- SidebarMenuSubItem.displayName = "SidebarMenuSubItem"
707
-
708
- const SidebarMenuSubButton = React.forwardRef<
709
- HTMLAnchorElement,
710
- React.ComponentProps<"a"> & {
711
- asChild?: boolean
712
- size?: "sm" | "md"
713
- isActive?: boolean
714
- }
715
- >(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
716
- const Comp = asChild ? Slot : "a"
717
-
718
- return (
719
- <Comp
720
- ref={ref}
721
- data-sidebar="menu-sub-button"
722
- data-size={size}
723
- data-active={isActive}
724
- className={cn(
725
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
726
- "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
727
- size === "sm" && "text-xs",
728
- size === "md" && "text-sm",
729
- "group-data-[collapsible=icon]:hidden",
730
- className
731
- )}
732
- {...props}
733
- />
734
- )
735
- })
736
- SidebarMenuSubButton.displayName = "SidebarMenuSubButton"
737
-
738
- export {
739
- Sidebar,
740
- SidebarContent,
741
- SidebarFooter,
742
- SidebarGroup,
743
- SidebarGroupAction,
744
- SidebarGroupContent,
745
- SidebarGroupLabel,
746
- SidebarHeader,
747
- SidebarInput,
748
- SidebarInset,
749
- SidebarMenu,
750
- SidebarMenuAction,
751
- SidebarMenuBadge,
752
- SidebarMenuButton,
753
- SidebarMenuItem,
754
- SidebarMenuSkeleton,
755
- SidebarMenuSub,
756
- SidebarMenuSubButton,
757
- SidebarMenuSubItem,
758
- SidebarProvider,
759
- SidebarRail,
760
- SidebarSeparator,
761
- SidebarTrigger,
762
- useSidebar
763
- }
764
-