@kortix/ui 0.0.0-bootstrap.0 → 0.14.3

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 (416) hide show
  1. package/README.md +153 -2
  2. package/dist/_vendor/kortix-shared.js +341 -0
  3. package/dist/chat/agent-picker.d.ts +8 -0
  4. package/dist/chat/agent-picker.js +18 -0
  5. package/dist/chat/composer.d.ts +31 -0
  6. package/dist/chat/composer.js +114 -0
  7. package/dist/chat/index.d.ts +22 -0
  8. package/dist/chat/index.js +22 -0
  9. package/dist/chat/markdown.d.ts +10 -0
  10. package/dist/chat/markdown.js +36 -0
  11. package/dist/chat/message-list.d.ts +25 -0
  12. package/dist/chat/message-list.js +73 -0
  13. package/dist/chat/message-view.d.ts +17 -0
  14. package/dist/chat/message-view.js +86 -0
  15. package/dist/chat/model-picker.d.ts +10 -0
  16. package/dist/chat/model-picker.js +68 -0
  17. package/dist/chat/permission-prompt.d.ts +10 -0
  18. package/dist/chat/permission-prompt.js +40 -0
  19. package/dist/chat/question-prompt.d.ts +8 -0
  20. package/dist/chat/question-prompt.js +60 -0
  21. package/dist/chat/send-failure.d.ts +9 -0
  22. package/dist/chat/send-failure.js +21 -0
  23. package/dist/chat/session-thread.d.ts +28 -0
  24. package/dist/chat/session-thread.js +47 -0
  25. package/dist/chat/streaming-markdown.d.ts +21 -0
  26. package/dist/chat/streaming-markdown.js +59 -0
  27. package/dist/chat/tool-call.d.ts +4 -0
  28. package/dist/chat/tool-call.js +150 -0
  29. package/dist/chat/user-message-parts.d.ts +6 -0
  30. package/dist/chat/user-message-parts.js +11 -0
  31. package/dist/components/ui/accordion.d.ts +7 -0
  32. package/dist/components/ui/accordion.js +18 -0
  33. package/dist/components/ui/alert-dialog.d.ts +19 -0
  34. package/dist/components/ui/alert-dialog.js +48 -0
  35. package/dist/components/ui/alert.d.ts +13 -0
  36. package/dist/components/ui/alert.js +67 -0
  37. package/dist/components/ui/avatar.d.ts +11 -0
  38. package/dist/components/ui/avatar.js +23 -0
  39. package/dist/components/ui/back-pill.d.ts +13 -0
  40. package/dist/components/ui/back-pill.js +18 -0
  41. package/dist/components/ui/badge.d.ts +10 -0
  42. package/dist/components/ui/badge.js +42 -0
  43. package/dist/components/ui/breadcrumb.d.ts +11 -0
  44. package/dist/components/ui/breadcrumb.js +28 -0
  45. package/dist/components/ui/bubble.d.ts +20 -0
  46. package/dist/components/ui/bubble.js +38 -0
  47. package/dist/components/ui/button-group.d.ts +9 -0
  48. package/dist/components/ui/button-group.js +32 -0
  49. package/dist/components/ui/button.d.ts +13 -0
  50. package/dist/components/ui/button.js +67 -0
  51. package/dist/components/ui/calendar.d.ts +4 -0
  52. package/dist/components/ui/calendar.js +39 -0
  53. package/dist/components/ui/card.d.ts +96 -0
  54. package/dist/components/ui/card.js +291 -0
  55. package/dist/components/ui/chain-of-thought.d.ts +75 -0
  56. package/dist/components/ui/chain-of-thought.js +66 -0
  57. package/dist/components/ui/chart.d.ts +65 -0
  58. package/dist/components/ui/chart.js +118 -0
  59. package/dist/components/ui/checkbox-group.d.ts +19 -0
  60. package/dist/components/ui/checkbox-group.js +41 -0
  61. package/dist/components/ui/checkbox.d.ts +14 -0
  62. package/dist/components/ui/checkbox.js +27 -0
  63. package/dist/components/ui/collapsible.d.ts +5 -0
  64. package/dist/components/ui/collapsible.js +14 -0
  65. package/dist/components/ui/command.d.ts +58 -0
  66. package/dist/components/ui/command.js +135 -0
  67. package/dist/components/ui/confirm-dialog.d.ts +19 -0
  68. package/dist/components/ui/confirm-dialog.js +30 -0
  69. package/dist/components/ui/context-menu.d.ts +45 -0
  70. package/dist/components/ui/context-menu.js +93 -0
  71. package/dist/components/ui/count-badge.d.ts +26 -0
  72. package/dist/components/ui/count-badge.js +26 -0
  73. package/dist/components/ui/data-grid.d.ts +24 -0
  74. package/dist/components/ui/data-grid.js +107 -0
  75. package/dist/components/ui/date-range-picker.d.ts +119 -0
  76. package/dist/components/ui/date-range-picker.js +190 -0
  77. package/dist/components/ui/definition-list.d.ts +15 -0
  78. package/dist/components/ui/definition-list.js +26 -0
  79. package/dist/components/ui/dialog.d.ts +29 -0
  80. package/dist/components/ui/dialog.js +52 -0
  81. package/dist/components/ui/disclosure.d.ts +121 -0
  82. package/dist/components/ui/disclosure.js +138 -0
  83. package/dist/components/ui/dot-matrix/dotm-3x3-10.d.ts +4 -0
  84. package/dist/components/ui/dot-matrix/dotm-3x3-10.js +29 -0
  85. package/dist/components/ui/dot-matrix/dotm-3x3-12.d.ts +4 -0
  86. package/dist/components/ui/dot-matrix/dotm-3x3-12.js +19 -0
  87. package/dist/components/ui/dot-matrix/dotm-3x3-13.d.ts +4 -0
  88. package/dist/components/ui/dot-matrix/dotm-3x3-13.js +19 -0
  89. package/dist/components/ui/dot-matrix/dotm-3x3-15.d.ts +4 -0
  90. package/dist/components/ui/dot-matrix/dotm-3x3-15.js +22 -0
  91. package/dist/components/ui/dot-matrix/dotm-3x3-16.d.ts +4 -0
  92. package/dist/components/ui/dot-matrix/dotm-3x3-16.js +5 -0
  93. package/dist/components/ui/dot-matrix/dotm-3x3-18.d.ts +4 -0
  94. package/dist/components/ui/dot-matrix/dotm-3x3-18.js +5 -0
  95. package/dist/components/ui/dot-matrix/dotm-3x3-19.d.ts +4 -0
  96. package/dist/components/ui/dot-matrix/dotm-3x3-19.js +5 -0
  97. package/dist/components/ui/dot-matrix/dotm-3x3-2.d.ts +4 -0
  98. package/dist/components/ui/dot-matrix/dotm-3x3-2.js +3 -0
  99. package/dist/components/ui/dot-matrix/dotm-3x3-20.d.ts +4 -0
  100. package/dist/components/ui/dot-matrix/dotm-3x3-20.js +5 -0
  101. package/dist/components/ui/dot-matrix/dotm-3x3-21.d.ts +4 -0
  102. package/dist/components/ui/dot-matrix/dotm-3x3-21.js +5 -0
  103. package/dist/components/ui/dot-matrix/dotm-3x3-3.d.ts +4 -0
  104. package/dist/components/ui/dot-matrix/dotm-3x3-3.js +3 -0
  105. package/dist/components/ui/dot-matrix/dotm-3x3-4.d.ts +4 -0
  106. package/dist/components/ui/dot-matrix/dotm-3x3-4.js +3 -0
  107. package/dist/components/ui/dot-matrix/dotm-3x3-5.d.ts +4 -0
  108. package/dist/components/ui/dot-matrix/dotm-3x3-5.js +3 -0
  109. package/dist/components/ui/dot-matrix/dotm-3x3-6.d.ts +4 -0
  110. package/dist/components/ui/dot-matrix/dotm-3x3-6.js +19 -0
  111. package/dist/components/ui/dot-matrix/dotm-3x3-7.d.ts +4 -0
  112. package/dist/components/ui/dot-matrix/dotm-3x3-7.js +19 -0
  113. package/dist/components/ui/dot-matrix/dotm-3x3-8.d.ts +4 -0
  114. package/dist/components/ui/dot-matrix/dotm-3x3-8.js +19 -0
  115. package/dist/components/ui/dot-matrix/dotm-3x3-9.d.ts +4 -0
  116. package/dist/components/ui/dot-matrix/dotm-3x3-9.js +23 -0
  117. package/dist/components/ui/dot-matrix/dotm-circular-1.d.ts +4 -0
  118. package/dist/components/ui/dot-matrix/dotm-circular-1.js +28 -0
  119. package/dist/components/ui/dot-matrix/dotm-circular-10.d.ts +4 -0
  120. package/dist/components/ui/dot-matrix/dotm-circular-10.js +40 -0
  121. package/dist/components/ui/dot-matrix/dotm-circular-11.d.ts +4 -0
  122. package/dist/components/ui/dot-matrix/dotm-circular-11.js +37 -0
  123. package/dist/components/ui/dot-matrix/dotm-circular-12.d.ts +4 -0
  124. package/dist/components/ui/dot-matrix/dotm-circular-12.js +42 -0
  125. package/dist/components/ui/dot-matrix/dotm-circular-14.d.ts +4 -0
  126. package/dist/components/ui/dot-matrix/dotm-circular-14.js +37 -0
  127. package/dist/components/ui/dot-matrix/dotm-circular-15.d.ts +4 -0
  128. package/dist/components/ui/dot-matrix/dotm-circular-15.js +49 -0
  129. package/dist/components/ui/dot-matrix/dotm-circular-17.d.ts +4 -0
  130. package/dist/components/ui/dot-matrix/dotm-circular-17.js +31 -0
  131. package/dist/components/ui/dot-matrix/dotm-circular-2.d.ts +4 -0
  132. package/dist/components/ui/dot-matrix/dotm-circular-2.js +37 -0
  133. package/dist/components/ui/dot-matrix/dotm-circular-3.d.ts +4 -0
  134. package/dist/components/ui/dot-matrix/dotm-circular-3.js +54 -0
  135. package/dist/components/ui/dot-matrix/dotm-circular-4.d.ts +4 -0
  136. package/dist/components/ui/dot-matrix/dotm-circular-4.js +35 -0
  137. package/dist/components/ui/dot-matrix/dotm-circular-5.d.ts +4 -0
  138. package/dist/components/ui/dot-matrix/dotm-circular-5.js +30 -0
  139. package/dist/components/ui/dot-matrix/dotm-circular-6.d.ts +4 -0
  140. package/dist/components/ui/dot-matrix/dotm-circular-6.js +37 -0
  141. package/dist/components/ui/dot-matrix/dotm-circular-7.d.ts +4 -0
  142. package/dist/components/ui/dot-matrix/dotm-circular-7.js +25 -0
  143. package/dist/components/ui/dot-matrix/dotm-circular-8.d.ts +4 -0
  144. package/dist/components/ui/dot-matrix/dotm-circular-8.js +26 -0
  145. package/dist/components/ui/dot-matrix/dotm-circular-9.d.ts +4 -0
  146. package/dist/components/ui/dot-matrix/dotm-circular-9.js +41 -0
  147. package/dist/components/ui/dot-matrix/dotm-square-1.d.ts +4 -0
  148. package/dist/components/ui/dot-matrix/dotm-square-1.js +27 -0
  149. package/dist/components/ui/dot-matrix/dotm-square-10.d.ts +4 -0
  150. package/dist/components/ui/dot-matrix/dotm-square-10.js +27 -0
  151. package/dist/components/ui/dot-matrix/dotm-square-11.d.ts +4 -0
  152. package/dist/components/ui/dot-matrix/dotm-square-11.js +25 -0
  153. package/dist/components/ui/dot-matrix/dotm-square-12.d.ts +4 -0
  154. package/dist/components/ui/dot-matrix/dotm-square-12.js +28 -0
  155. package/dist/components/ui/dot-matrix/dotm-square-13.d.ts +4 -0
  156. package/dist/components/ui/dot-matrix/dotm-square-13.js +45 -0
  157. package/dist/components/ui/dot-matrix/dotm-square-14.d.ts +4 -0
  158. package/dist/components/ui/dot-matrix/dotm-square-14.js +38 -0
  159. package/dist/components/ui/dot-matrix/dotm-square-15.d.ts +4 -0
  160. package/dist/components/ui/dot-matrix/dotm-square-15.js +31 -0
  161. package/dist/components/ui/dot-matrix/dotm-square-16.d.ts +4 -0
  162. package/dist/components/ui/dot-matrix/dotm-square-16.js +33 -0
  163. package/dist/components/ui/dot-matrix/dotm-square-17.d.ts +4 -0
  164. package/dist/components/ui/dot-matrix/dotm-square-17.js +27 -0
  165. package/dist/components/ui/dot-matrix/dotm-square-18.d.ts +4 -0
  166. package/dist/components/ui/dot-matrix/dotm-square-18.js +29 -0
  167. package/dist/components/ui/dot-matrix/dotm-square-19.d.ts +4 -0
  168. package/dist/components/ui/dot-matrix/dotm-square-19.js +74 -0
  169. package/dist/components/ui/dot-matrix/dotm-square-2.d.ts +4 -0
  170. package/dist/components/ui/dot-matrix/dotm-square-2.js +72 -0
  171. package/dist/components/ui/dot-matrix/dotm-square-20.d.ts +4 -0
  172. package/dist/components/ui/dot-matrix/dotm-square-20.js +79 -0
  173. package/dist/components/ui/dot-matrix/dotm-square-3.d.ts +4 -0
  174. package/dist/components/ui/dot-matrix/dotm-square-3.js +23 -0
  175. package/dist/components/ui/dot-matrix/dotm-square-4.d.ts +4 -0
  176. package/dist/components/ui/dot-matrix/dotm-square-4.js +41 -0
  177. package/dist/components/ui/dot-matrix/dotm-square-5.d.ts +4 -0
  178. package/dist/components/ui/dot-matrix/dotm-square-5.js +23 -0
  179. package/dist/components/ui/dot-matrix/dotm-square-6.d.ts +4 -0
  180. package/dist/components/ui/dot-matrix/dotm-square-6.js +20 -0
  181. package/dist/components/ui/dot-matrix/dotm-square-7.d.ts +4 -0
  182. package/dist/components/ui/dot-matrix/dotm-square-7.js +43 -0
  183. package/dist/components/ui/dot-matrix/dotm-square-8.d.ts +4 -0
  184. package/dist/components/ui/dot-matrix/dotm-square-8.js +57 -0
  185. package/dist/components/ui/dot-matrix/dotm-square-9.d.ts +4 -0
  186. package/dist/components/ui/dot-matrix/dotm-square-9.js +89 -0
  187. package/dist/components/ui/dot-matrix/session-dot-matrix.d.ts +46 -0
  188. package/dist/components/ui/dot-matrix/session-dot-matrix.js +153 -0
  189. package/dist/components/ui/drawer.d.ts +15 -0
  190. package/dist/components/ui/drawer.js +35 -0
  191. package/dist/components/ui/dropdown-menu.d.ts +49 -0
  192. package/dist/components/ui/dropdown-menu.js +113 -0
  193. package/dist/components/ui/emoji-picker.d.ts +15 -0
  194. package/dist/components/ui/emoji-picker.js +137 -0
  195. package/dist/components/ui/emoji-tint.d.ts +41 -0
  196. package/dist/components/ui/emoji-tint.js +131 -0
  197. package/dist/components/ui/empty.d.ts +11 -0
  198. package/dist/components/ui/empty.js +33 -0
  199. package/dist/components/ui/entity-avatar.d.ts +84 -0
  200. package/dist/components/ui/entity-avatar.js +106 -0
  201. package/dist/components/ui/faded-scroll-area.d.ts +8 -0
  202. package/dist/components/ui/faded-scroll-area.js +80 -0
  203. package/dist/components/ui/favicon-avatar.d.ts +32 -0
  204. package/dist/components/ui/favicon-avatar.js +18 -0
  205. package/dist/components/ui/field.d.ts +15 -0
  206. package/dist/components/ui/field.js +48 -0
  207. package/dist/components/ui/file-tree.d.ts +32 -0
  208. package/dist/components/ui/file-tree.js +30 -0
  209. package/dist/components/ui/glyph-face.d.ts +18 -0
  210. package/dist/components/ui/glyph-face.js +37 -0
  211. package/dist/components/ui/glyph-paths-source.d.ts +2 -0
  212. package/dist/components/ui/glyph-paths-source.js +40 -0
  213. package/dist/components/ui/glyph-paths.generated.d.ts +2 -0
  214. package/dist/components/ui/glyph-paths.generated.js +207 -0
  215. package/dist/components/ui/glyph-picker.d.ts +22 -0
  216. package/dist/components/ui/glyph-picker.js +118 -0
  217. package/dist/components/ui/glyph-registry.d.ts +36 -0
  218. package/dist/components/ui/glyph-registry.js +479 -0
  219. package/dist/components/ui/glyph-tint.d.ts +6 -0
  220. package/dist/components/ui/glyph-tint.js +93 -0
  221. package/dist/components/ui/hint.d.ts +14 -0
  222. package/dist/components/ui/hint.js +12 -0
  223. package/dist/components/ui/histogram-bars.d.ts +38 -0
  224. package/dist/components/ui/histogram-bars.js +93 -0
  225. package/dist/components/ui/hover-card.d.ts +28 -0
  226. package/dist/components/ui/hover-card.js +35 -0
  227. package/dist/components/ui/icon-provider.d.ts +23 -0
  228. package/dist/components/ui/icon-provider.js +30 -0
  229. package/dist/components/ui/info-banner.d.ts +14 -0
  230. package/dist/components/ui/info-banner.js +72 -0
  231. package/dist/components/ui/inline-meta.d.ts +6 -0
  232. package/dist/components/ui/inline-meta.js +8 -0
  233. package/dist/components/ui/input-group.d.ts +19 -0
  234. package/dist/components/ui/input-group.js +73 -0
  235. package/dist/components/ui/input.d.ts +26 -0
  236. package/dist/components/ui/input.js +23 -0
  237. package/dist/components/ui/item.d.ts +23 -0
  238. package/dist/components/ui/item.js +67 -0
  239. package/dist/components/ui/kbd.d.ts +3 -0
  240. package/dist/components/ui/kbd.js +20 -0
  241. package/dist/components/ui/kortix-asterisk.d.ts +6 -0
  242. package/dist/components/ui/kortix-asterisk.js +17 -0
  243. package/dist/components/ui/kortix-icons.d.ts +2 -0
  244. package/dist/components/ui/kortix-icons.js +17 -0
  245. package/dist/components/ui/kortix-loader.d.ts +76 -0
  246. package/dist/components/ui/kortix-loader.js +74 -0
  247. package/dist/components/ui/kortix-logo.d.ts +30 -0
  248. package/dist/components/ui/kortix-logo.js +47 -0
  249. package/dist/components/ui/label.d.ts +4 -0
  250. package/dist/components/ui/label.js +9 -0
  251. package/dist/components/ui/list.d.ts +15 -0
  252. package/dist/components/ui/list.js +25 -0
  253. package/dist/components/ui/loading.d.ts +19 -0
  254. package/dist/components/ui/loading.js +31 -0
  255. package/dist/components/ui/local-time.d.ts +34 -0
  256. package/dist/components/ui/local-time.js +60 -0
  257. package/dist/components/ui/map.d.ts +101 -0
  258. package/dist/components/ui/map.js +257 -0
  259. package/dist/components/ui/marker.d.ts +14 -0
  260. package/dist/components/ui/marker.js +28 -0
  261. package/dist/components/ui/menu-recipe.d.ts +102 -0
  262. package/dist/components/ui/menu-recipe.js +129 -0
  263. package/dist/components/ui/mermaid-render.d.ts +51 -0
  264. package/dist/components/ui/mermaid-render.js +65 -0
  265. package/dist/components/ui/mermaid-renderer.d.ts +13 -0
  266. package/dist/components/ui/mermaid-renderer.js +340 -0
  267. package/dist/components/ui/message.d.ts +15 -0
  268. package/dist/components/ui/message.js +26 -0
  269. package/dist/components/ui/modal.d.ts +104 -0
  270. package/dist/components/ui/modal.js +180 -0
  271. package/dist/components/ui/navigation-menu.d.ts +16 -0
  272. package/dist/components/ui/navigation-menu.js +35 -0
  273. package/dist/components/ui/page-search-bar.d.ts +11 -0
  274. package/dist/components/ui/page-search-bar.js +13 -0
  275. package/dist/components/ui/phone-input.d.ts +7 -0
  276. package/dist/components/ui/phone-input.js +59 -0
  277. package/dist/components/ui/pixel-kortix-mark.d.ts +13 -0
  278. package/dist/components/ui/pixel-kortix-mark.js +40 -0
  279. package/dist/components/ui/popover.d.ts +10 -0
  280. package/dist/components/ui/popover.js +38 -0
  281. package/dist/components/ui/portal.d.ts +5 -0
  282. package/dist/components/ui/portal.js +15 -0
  283. package/dist/components/ui/preview-image.d.ts +14 -0
  284. package/dist/components/ui/preview-image.js +58 -0
  285. package/dist/components/ui/progress-ring.d.ts +6 -0
  286. package/dist/components/ui/progress-ring.js +9 -0
  287. package/dist/components/ui/progress.d.ts +6 -0
  288. package/dist/components/ui/progress.js +8 -0
  289. package/dist/components/ui/radio-group.d.ts +12 -0
  290. package/dist/components/ui/radio-group.js +20 -0
  291. package/dist/components/ui/resizable.d.ts +24 -0
  292. package/dist/components/ui/resizable.js +16 -0
  293. package/dist/components/ui/scroll-area.d.ts +5 -0
  294. package/dist/components/ui/scroll-area.js +11 -0
  295. package/dist/components/ui/section-card.d.ts +37 -0
  296. package/dist/components/ui/section-card.js +14 -0
  297. package/dist/components/ui/section.d.ts +10 -0
  298. package/dist/components/ui/section.js +22 -0
  299. package/dist/components/ui/select.d.ts +25 -0
  300. package/dist/components/ui/select.js +59 -0
  301. package/dist/components/ui/separator.d.ts +4 -0
  302. package/dist/components/ui/separator.js +8 -0
  303. package/dist/components/ui/shader-safe.d.ts +48 -0
  304. package/dist/components/ui/shader-safe.js +74 -0
  305. package/dist/components/ui/sheet.d.ts +32 -0
  306. package/dist/components/ui/sheet.js +55 -0
  307. package/dist/components/ui/sidebar-context.d.ts +72 -0
  308. package/dist/components/ui/sidebar-context.js +36 -0
  309. package/dist/components/ui/sidebar-menu-primitives.d.ts +38 -0
  310. package/dist/components/ui/sidebar-menu-primitives.js +97 -0
  311. package/dist/components/ui/sidebar-panel.d.ts +36 -0
  312. package/dist/components/ui/sidebar-panel.js +265 -0
  313. package/dist/components/ui/sidebar-peek.d.ts +27 -0
  314. package/dist/components/ui/sidebar-peek.js +70 -0
  315. package/dist/components/ui/sidebar-width.d.ts +48 -0
  316. package/dist/components/ui/sidebar-width.js +62 -0
  317. package/dist/components/ui/sidebar.d.ts +18 -0
  318. package/dist/components/ui/sidebar.js +194 -0
  319. package/dist/components/ui/skeleton.d.ts +3 -0
  320. package/dist/components/ui/skeleton.js +6 -0
  321. package/dist/components/ui/slider-native.d.ts +7 -0
  322. package/dist/components/ui/slider-native.js +16 -0
  323. package/dist/components/ui/slider.d.ts +14 -0
  324. package/dist/components/ui/slider.js +48 -0
  325. package/dist/components/ui/sliding-tab-indicator.d.ts +61 -0
  326. package/dist/components/ui/sliding-tab-indicator.js +128 -0
  327. package/dist/components/ui/split-sheet.d.ts +61 -0
  328. package/dist/components/ui/split-sheet.js +239 -0
  329. package/dist/components/ui/spotlight-card.d.ts +8 -0
  330. package/dist/components/ui/spotlight-card.js +43 -0
  331. package/dist/components/ui/status-ring.d.ts +38 -0
  332. package/dist/components/ui/status-ring.js +38 -0
  333. package/dist/components/ui/status.d.ts +58 -0
  334. package/dist/components/ui/status.js +76 -0
  335. package/dist/components/ui/stepper.d.ts +28 -0
  336. package/dist/components/ui/stepper.js +73 -0
  337. package/dist/components/ui/switch.d.ts +8 -0
  338. package/dist/components/ui/switch.js +131 -0
  339. package/dist/components/ui/system-message.d.ts +23 -0
  340. package/dist/components/ui/system-message.js +51 -0
  341. package/dist/components/ui/table.d.ts +10 -0
  342. package/dist/components/ui/table.js +28 -0
  343. package/dist/components/ui/tabs.d.ts +73 -0
  344. package/dist/components/ui/tabs.js +207 -0
  345. package/dist/components/ui/tag.d.ts +7 -0
  346. package/dist/components/ui/tag.js +22 -0
  347. package/dist/components/ui/text-shimmer.d.ts +13 -0
  348. package/dist/components/ui/text-shimmer.js +91 -0
  349. package/dist/components/ui/textarea.d.ts +33 -0
  350. package/dist/components/ui/textarea.js +87 -0
  351. package/dist/components/ui/toast.d.ts +105 -0
  352. package/dist/components/ui/toast.js +233 -0
  353. package/dist/components/ui/toggle.d.ts +12 -0
  354. package/dist/components/ui/toggle.js +26 -0
  355. package/dist/components/ui/tooltip.d.ts +9 -0
  356. package/dist/components/ui/tooltip.js +16 -0
  357. package/dist/components/ui/trigger-variants.d.ts +14 -0
  358. package/dist/components/ui/trigger-variants.js +67 -0
  359. package/dist/components/ui/type-to-confirm-dialog.d.ts +88 -0
  360. package/dist/components/ui/type-to-confirm-dialog.js +101 -0
  361. package/dist/components/ui/typed-title-logic.d.ts +22 -0
  362. package/dist/components/ui/typed-title-logic.js +33 -0
  363. package/dist/components/ui/typed-title.d.ts +38 -0
  364. package/dist/components/ui/typed-title.js +66 -0
  365. package/dist/components/ui/typing-animation.d.ts +36 -0
  366. package/dist/components/ui/typing-animation.js +141 -0
  367. package/dist/components/ui/user-avatar.d.ts +47 -0
  368. package/dist/components/ui/user-avatar.js +46 -0
  369. package/dist/hooks/use-debounce.d.ts +4 -0
  370. package/dist/hooks/use-debounce.js +17 -0
  371. package/dist/hooks/use-is-dark.d.ts +2 -0
  372. package/dist/hooks/use-is-dark.js +27 -0
  373. package/dist/hooks/use-mobile.d.ts +2 -0
  374. package/dist/hooks/use-mobile.js +15 -0
  375. package/dist/hooks/use-proximity-hover.d.ts +52 -0
  376. package/dist/hooks/use-proximity-hover.js +232 -0
  377. package/dist/icons/close.d.ts +2 -0
  378. package/dist/icons/close.js +7 -0
  379. package/dist/icons/copy.d.ts +3 -0
  380. package/dist/icons/copy.js +6 -0
  381. package/dist/icons/sidebar-toggle.d.ts +13 -0
  382. package/dist/icons/sidebar-toggle.js +13 -0
  383. package/dist/index.d.ts +24 -0
  384. package/dist/index.js +33 -0
  385. package/dist/lib/dotmatrix-core.d.ts +113 -0
  386. package/dist/lib/dotmatrix-core.js +920 -0
  387. package/dist/lib/dotmatrix-hooks.d.ts +28 -0
  388. package/dist/lib/dotmatrix-hooks.js +151 -0
  389. package/dist/lib/favicon.d.ts +4 -0
  390. package/dist/lib/favicon.js +21 -0
  391. package/dist/lib/font-weight.d.ts +6 -0
  392. package/dist/lib/font-weight.js +6 -0
  393. package/dist/lib/icon-config.d.ts +33 -0
  394. package/dist/lib/icon-config.js +22 -0
  395. package/dist/lib/icon-context.d.ts +34 -0
  396. package/dist/lib/icon-context.js +81 -0
  397. package/dist/lib/portal-root.d.ts +8 -0
  398. package/dist/lib/portal-root.js +26 -0
  399. package/dist/lib/settle.d.ts +16 -0
  400. package/dist/lib/settle.js +29 -0
  401. package/dist/lib/springs.d.ts +31 -0
  402. package/dist/lib/springs.js +29 -0
  403. package/dist/lib/utils.d.ts +2 -0
  404. package/dist/lib/utils.js +5 -0
  405. package/dist/lib/z-stack.d.ts +55 -0
  406. package/dist/lib/z-stack.js +130 -0
  407. package/dist/providers/ui-provider.d.ts +141 -0
  408. package/dist/providers/ui-provider.js +93 -0
  409. package/dist/styles/dotmatrix-loader.css +1239 -0
  410. package/dist/styles/fonts.css +46 -0
  411. package/dist/styles/tailwind.css +10 -0
  412. package/dist/styles/theme.css +1019 -0
  413. package/dist/styles/tokens.css +146 -0
  414. package/dist/styles.css +2 -0
  415. package/package.json +874 -4
  416. package/skills/kortix-ui/SKILL.md +150 -0
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import * as ResizablePrimitive from 'react-resizable-panels';
3
+ declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): React.JSX.Element;
4
+ declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<Omit<React.HTMLAttributes<HTMLAnchorElement | HTMLElement | HTMLButtonElement | HTMLFormElement | HTMLSpanElement | HTMLDivElement | HTMLParagraphElement | HTMLImageElement | HTMLInputElement | HTMLTextAreaElement | HTMLLabelElement | HTMLObjectElement | HTMLSlotElement | HTMLStyleElement | HTMLTitleElement | HTMLDialogElement | HTMLLinkElement | HTMLOptionElement | HTMLTableElement | HTMLTimeElement | HTMLMapElement | HTMLBaseElement | HTMLAreaElement | HTMLAudioElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadingElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLIElement | HTMLMetaElement | HTMLMeterElement | HTMLOListElement | HTMLOptGroupElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLScriptElement | HTMLSelectElement | HTMLSourceElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTableRowElement | HTMLTrackElement | HTMLUListElement | HTMLVideoElement | HTMLMenuElement | HTMLTableCaptionElement | HTMLPictureElement>, "id" | "onResize"> & {
5
+ className?: string;
6
+ collapsedSize?: number | undefined;
7
+ collapsible?: boolean | undefined;
8
+ defaultSize?: number | undefined;
9
+ id?: string;
10
+ maxSize?: number | undefined;
11
+ minSize?: number | undefined;
12
+ onCollapse?: ResizablePrimitive.PanelOnCollapse;
13
+ onExpand?: ResizablePrimitive.PanelOnExpand;
14
+ onResize?: ResizablePrimitive.PanelOnResize;
15
+ order?: number;
16
+ style?: object;
17
+ tagName?: keyof HTMLElementTagNameMap | undefined;
18
+ } & {
19
+ children?: import("react").ReactNode | undefined;
20
+ } & React.RefAttributes<ResizablePrimitive.ImperativePanelHandle>, "ref"> & React.RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
21
+ declare function ResizableHandle({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
22
+ withHandle?: boolean;
23
+ }): React.JSX.Element;
24
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as ResizablePrimitive from 'react-resizable-panels';
5
+ import { cn } from '../../lib/utils.js';
6
+ function ResizablePanelGroup({ className, ...props }) {
7
+ return (_jsx(ResizablePrimitive.PanelGroup, { "data-slot": "resizable-panel-group", className: cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className), ...props }));
8
+ }
9
+ const ResizablePanel = React.forwardRef((props, ref) => {
10
+ return _jsx(ResizablePrimitive.Panel, { ref: ref, "data-slot": "resizable-panel", ...props });
11
+ });
12
+ ResizablePanel.displayName = 'ResizablePanel';
13
+ function ResizableHandle({ withHandle, className, ...props }) {
14
+ return (_jsx(ResizablePrimitive.PanelResizeHandle, { "data-slot": "resizable-handle", className: cn('focus-visible:ring-ring relative flex cursor-col-resize items-center justify-center focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:cursor-row-resize [&[data-panel-group-direction=vertical]>div]:rotate-90', className), ...props, children: withHandle && (_jsx("div", { className: "group z-10 flex cursor-col-resize items-center justify-center", children: _jsx("span", { className: "bg-muted-foreground/40 group-hover:bg-muted-foreground/70 h-[15px] w-[3px] rounded-full transition-colors" }) })) }));
15
+ }
16
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,5 @@
1
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
2
+ import * as React from 'react';
3
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>): React.JSX.Element;
4
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>): React.JSX.Element;
5
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
4
+ import { cn } from '../../lib/utils.js';
5
+ function ScrollArea({ className, children, ...props }) {
6
+ return (_jsxs(ScrollAreaPrimitive.Root, { "data-slot": "scroll-area", className: cn('relative', className), ...props, children: [_jsx(ScrollAreaPrimitive.Viewport, { "data-slot": "scroll-area-viewport", className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&>div]:!block", children: children }), _jsx(ScrollBar, {}), _jsx(ScrollBar, { orientation: "horizontal" }), _jsx(ScrollAreaPrimitive.Corner, {})] }));
7
+ }
8
+ function ScrollBar({ className, orientation = 'vertical', ...props }) {
9
+ return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { "data-slot": "scroll-area-scrollbar", orientation: orientation, className: cn('flex touch-none p-px transition-colors select-none', orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent', orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent', className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { "data-slot": "scroll-area-thumb", className: "bg-border relative flex-1 cursor-grab rounded-full active:cursor-grabbing" }) }));
10
+ }
11
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Kortix <SectionCard>. Deprecated: new panels use <Card> and its slots
4
+ * (`@kortix/ui/card`). It stays for the screens that already render it.
5
+ *
6
+ * Composes the design-system <Card> (rounded-2xl surface) and adds the
7
+ * divided header every settings/list panel needs: a title, an optional
8
+ * muted count, a description, and a trailing action. Use `flush` to let a
9
+ * <List> sit edge-to-edge; otherwise the body gets standard padding.
10
+ * `tone="destructive"` is the standard danger-zone — no separate component.
11
+ *
12
+ * <SectionCard title="Members" count={3} description="People with access"
13
+ * action={<Button size="sm">Invite</Button>} flush>
14
+ * <List>…</List>
15
+ * </SectionCard>
16
+ *
17
+ * <SectionCard tone="destructive" title="Danger zone"
18
+ * description="Irreversible actions.">
19
+ * …
20
+ * </SectionCard>
21
+ */
22
+ export interface SectionCardProps {
23
+ title?: React.ReactNode;
24
+ /** Muted "(n)" rendered next to the title. */
25
+ count?: number;
26
+ description?: React.ReactNode;
27
+ /** Trailing header slot — usually a button. */
28
+ action?: React.ReactNode;
29
+ tone?: 'default' | 'destructive';
30
+ /** Render children edge-to-edge (for <List>) instead of a padded body. */
31
+ flush?: boolean;
32
+ className?: string;
33
+ bodyClassName?: string;
34
+ children?: React.ReactNode;
35
+ }
36
+ /** @deprecated Use `Card` and its slots (`@kortix/ui/card`). */
37
+ export declare function SectionCard({ title, count, description, action, tone, flush, className, bodyClassName, children, }: SectionCardProps): React.JSX.Element;
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
+ import { Card } from './card.js';
4
+ import { cn } from '../../lib/utils.js';
5
+ /** @deprecated Use `Card` and its slots (`@kortix/ui/card`). */
6
+ export function SectionCard({ title, count, description, action, tone = 'default', flush = false, className, bodyClassName, children, }) {
7
+ const destructive = tone === 'destructive';
8
+ const hasHeader = title != null || description != null || action != null;
9
+ // Danger zones stay calm: red is the brake, not the paint. The panel is a
10
+ // neutral surface with only a faint warm hairline to mark it — the title and
11
+ // description read normally, and the single red action lives on the final
12
+ // confirm (a ConfirmDialog/AlertDialog), never on the panel itself.
13
+ return (_jsxs(Card, { className: cn('gap-0 overflow-hidden py-0', destructive && 'border-destructive/25', className), children: [hasHeader && (_jsxs("div", { className: "border-border/60 flex items-start justify-between gap-3 border-b px-6 py-4", children: [_jsxs("div", { className: "min-w-0", children: [title != null && (_jsxs("h2", { className: "text-foreground text-base font-semibold", children: [title, count != null && (_jsxs("span", { className: "text-muted-foreground font-normal", children: [" (", count, ")"] }))] })), description != null && (_jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: description }))] }), action != null && _jsx("div", { className: "shrink-0", children: action })] })), flush ? children : _jsx("div", { className: cn('px-6 py-5', bodyClassName), children: children })] }));
14
+ }
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface SectionProps {
3
+ label?: string;
4
+ action?: ReactNode;
5
+ /** Extra top spacing (defaults to mt-10 between sections) */
6
+ spacing?: 'tight' | 'default' | 'loose';
7
+ className?: string;
8
+ children: ReactNode;
9
+ }
10
+ export declare function Section({ label, action, spacing, className, children }: SectionProps): import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Kortix <Section> — labelled section used inside PageShell.
5
+ *
6
+ * Uppercase micro-label, optional trailing action, generous top-margin
7
+ * between sections. No border box, no card chrome — the label and
8
+ * whitespace do all the visual work.
9
+ *
10
+ * <Section label="About" action={<Button size="sm">Edit</Button>}>
11
+ * <p>Project description goes here.</p>
12
+ * </Section>
13
+ */
14
+ import { cn } from '../../lib/utils.js';
15
+ const SPACING = {
16
+ tight: 'mt-6',
17
+ default: 'mt-10',
18
+ loose: 'mt-14',
19
+ };
20
+ export function Section({ label, action, spacing = 'default', className, children }) {
21
+ return (_jsxs("section", { className: cn(SPACING[spacing], 'first:mt-0', className), children: [(label || action) && (_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [label && (_jsx("h3", { className: "text-muted-foreground/60 text-xs font-semibold tracking-[0.08em] uppercase", children: label })), action && _jsx("div", { className: "shrink-0", children: action })] })), children] }));
22
+ }
@@ -0,0 +1,25 @@
1
+ import * as SelectPrimitive from '@radix-ui/react-select';
2
+ import * as React from 'react';
3
+ import { type MenuRowSize } from './menu-recipe.js';
4
+ import { type TriggerVariantProps } from './trigger-variants.js';
5
+ declare const Select: React.FC<SelectPrimitive.SelectProps>;
6
+ declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
7
+ declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
8
+ export type SelectTriggerProps = Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'size'> & TriggerVariantProps & {
9
+ arrow?: boolean;
10
+ };
11
+ declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref">, "size"> & TriggerVariantProps & {
12
+ arrow?: boolean;
13
+ } & React.RefAttributes<HTMLButtonElement>>;
14
+ declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
18
+ declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
19
+ /** Row height step — see `MENU_ROW_SIZE` in `./menu-recipe`. */
20
+ size?: MenuRowSize;
21
+ /** Renders below children in the dropdown only — not in the trigger. */
22
+ description?: React.ReactNode;
23
+ } & React.RefAttributes<HTMLDivElement>>;
24
+ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
25
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from '../../lib/utils.js';
4
+ import { floatingZ, useDialogDepth } from '../../lib/z-stack.js';
5
+ import { CheckIcon as Check, CaretDownIcon as ChevronDown, CaretUpIcon as ChevronUp, } from '@phosphor-icons/react';
6
+ import * as SelectPrimitive from '@radix-ui/react-select';
7
+ import * as React from 'react';
8
+ import { MENU_INDICATOR, MENU_INDICATOR_ICON, MENU_INSET_END, MENU_LABEL, MENU_PANEL_STATIC, MENU_SEPARATOR, menuRow, } from './menu-recipe.js';
9
+ import { TRIGGER_CARET_CLASS, TRIGGER_ICON_SIZE, triggerVariants, } from './trigger-variants.js';
10
+ /**
11
+ * A select is a menu: the same floating surface holding the same rows, and it
12
+ * shares both with the dropdown and context menu through `./menu-recipe`.
13
+ *
14
+ * Local to a select: `max-h-96` plus the scroll buttons, because the option
15
+ * list is data-length and a dropdown's is authored; and `min-w-56`, because a
16
+ * select is anchored to a trigger it should not visibly undercut.
17
+ *
18
+ * No enter/exit animation, the same as `DropdownMenuContent`: the list paints
19
+ * on the frame it mounts and unmounts on the frame it closes. See
20
+ * `dropdown-menu.tsx` for why.
21
+ */
22
+ const SELECT_PANEL = cn(MENU_PANEL_STATIC, 'max-h-96 min-w-56 overflow-hidden');
23
+ const Select = SelectPrimitive.Root;
24
+ const SelectGroup = SelectPrimitive.Group;
25
+ const SelectValue = SelectPrimitive.Value;
26
+ const SelectTrigger = React.forwardRef(({ className, children, variant, size, arrow = true, ...props }, ref) => (_jsxs(SelectPrimitive.Trigger, { ref: ref, className: cn(triggerVariants({ variant, size }), className), ...props, children: [children, arrow && (_jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { className: cn(TRIGGER_CARET_CLASS, TRIGGER_ICON_SIZE[size ?? 'sm']) }) }))] })));
27
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
28
+ const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollUpButton, { ref: ref, className: cn('flex cursor-default items-center justify-center py-1', // cursor-default: hover-scroll area, not a control.
29
+ className), ...props, children: _jsx(ChevronUp, { className: "size-4" }) })));
30
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
31
+ const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollDownButton, { ref: ref, className: cn('flex cursor-default items-center justify-center py-1', // cursor-default: hover-scroll area, not a control.
32
+ className), ...props, children: _jsx(ChevronDown, { className: "size-4" }) })));
33
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
34
+ const SelectContent = React.forwardRef(({ className, children, position = 'popper', style, ...props }, ref) => {
35
+ const depth = useDialogDepth();
36
+ return (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { ref: ref, className: cn(SELECT_PANEL, position === 'popper' &&
37
+ 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), style: { zIndex: floatingZ(depth), ...style }, position: position, ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn(position === 'popper' &&
38
+ 'h-(--radix-select-trigger-height) w-full min-w-[calc(var(--radix-select-trigger-width)-8px)]'), children: children }), _jsx(SelectScrollDownButton, {})] }) }));
39
+ });
40
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
41
+ const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (
42
+ // Was `pl-8 text-sm font-semibold` — the `pl-8` reserved a left gutter for a
43
+ // leading check that this select does not have (its indicator is at
44
+ // `right-3`), so the label sat indented past every option under it.
45
+ _jsx(SelectPrimitive.Label, { ref: ref, className: cn(MENU_LABEL, className), ...props })));
46
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
47
+ const SelectItem = React.forwardRef(({ className, children, size = 'sm', description, ...props }, ref) => (_jsxs(SelectPrimitive.Item, { ref: ref,
48
+ // `MENU_INSET_END` reserves the trailing slot on every row, checked or
49
+ // not, so a long label truncates before the check instead of running
50
+ // under it, and the check column is the same x on every row.
51
+ className: cn(menuRow(size, 'default'), MENU_INSET_END, description && 'items-start', className), ...props, children: [_jsx("span", { "data-slot": "select-item-indicator",
52
+ // Absolute inside a flex row: its static position follows the row's
53
+ // `items-*`, so it centres on a one-line row. On a described row it tops
54
+ // out, and `mt-0.5` centres the ~15px slot on the 20px first line.
55
+ className: cn(MENU_INDICATOR, 'absolute right-2', description && 'mt-0.5'), children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(Check, { className: MENU_INDICATOR_ICON }) }) }), description ? (_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx(SelectPrimitive.ItemText, { children: children }), _jsx("span", { className: "text-muted-foreground max-w-64 text-xs whitespace-normal", children: description })] })) : (_jsx(SelectPrimitive.ItemText, { children: children }))] })));
56
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
57
+ const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Separator, { ref: ref, className: cn(MENU_SEPARATOR, className), ...props })));
58
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
59
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
@@ -0,0 +1,4 @@
1
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
2
+ import * as React from 'react';
3
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): React.JSX.Element;
4
+ export { Separator };
@@ -0,0 +1,8 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
4
+ import { cn } from '../../lib/utils.js';
5
+ function Separator({ className, orientation = 'horizontal', decorative = true, ...props }) {
6
+ return (_jsx(SeparatorPrimitive.Root, { "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn('bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px', className), ...props }));
7
+ }
8
+ export { Separator };
@@ -0,0 +1,48 @@
1
+ import { Component, type ReactNode } from 'react';
2
+ /**
3
+ * One-shot WebGL2 capability probe. Paper Shaders throws at mount when
4
+ * `getContext('webgl2')` returns null, and its ShaderMount calls
5
+ * `getAttribLocation(null, …)` when shader compilation fails silently —
6
+ * both recurring prod errors on GPUs/browsers without (working) WebGL2.
7
+ *
8
+ * `getSupportedExtensions` is a THIRD such null-context crash path: Paper
9
+ * Shaders' shader-mount `useEffect`/rAF callback calls
10
+ * `gl.getSupportedExtensions()` on a context that became `null` after a
11
+ * context-loss / GPU-blacklist event (the probe canvas may return a non-null
12
+ * context at mount that then fails on real use). A throw inside that async
13
+ * callback ESCAPES the `<ShaderSafe>` error boundary (which only catches
14
+ * render-phase throws via `getDerivedStateFromError`) → global error → Sentry
15
+ * → Better Stack (Better Stack pattern `34127fa4…`, call site `new b2` in
16
+ * `app:///_next/static/chunks/c76173f0.…`, prod, 2 occurrences). So the probe
17
+ * must EXERCISE `getSupportedExtensions` itself: if it throws or returns null
18
+ * on the probe canvas, treat WebGL2 as unsupported and fall back BEFORE the
19
+ * throw can happen at render time. The call is cheap and one-shot (memoized).
20
+ */
21
+ export declare function supportsWebGL2(): boolean;
22
+ /**
23
+ * Test-only escape hatch: clears the one-shot `webgl2Support` memo so each
24
+ * unit test can exercise a fresh probe against a stubbed `document`/`window`.
25
+ * Not imported anywhere in app code.
26
+ */
27
+ export declare function __resetWebGL2ProbeForTests(): void;
28
+ interface ShaderSafeProps {
29
+ children: ReactNode;
30
+ fallback?: ReactNode;
31
+ }
32
+ interface ShaderSafeState {
33
+ failed: boolean;
34
+ mounted: boolean;
35
+ }
36
+ /**
37
+ * Renders shader children only after mount (no SSR/hydration mismatch) and
38
+ * only when WebGL2 works; any runtime shader crash (context loss, compile
39
+ * failure, texture fetch rejection) degrades to the fallback instead of a
40
+ * client-side error. Decorative canvases must never take the page down.
41
+ */
42
+ export declare class ShaderSafe extends Component<ShaderSafeProps, ShaderSafeState> {
43
+ state: ShaderSafeState;
44
+ static getDerivedStateFromError(): Partial<ShaderSafeState>;
45
+ componentDidMount(): void;
46
+ render(): ReactNode;
47
+ }
48
+ export {};
@@ -0,0 +1,74 @@
1
+ 'use client';
2
+ import { Component } from 'react';
3
+ let webgl2Support = null;
4
+ /**
5
+ * One-shot WebGL2 capability probe. Paper Shaders throws at mount when
6
+ * `getContext('webgl2')` returns null, and its ShaderMount calls
7
+ * `getAttribLocation(null, …)` when shader compilation fails silently —
8
+ * both recurring prod errors on GPUs/browsers without (working) WebGL2.
9
+ *
10
+ * `getSupportedExtensions` is a THIRD such null-context crash path: Paper
11
+ * Shaders' shader-mount `useEffect`/rAF callback calls
12
+ * `gl.getSupportedExtensions()` on a context that became `null` after a
13
+ * context-loss / GPU-blacklist event (the probe canvas may return a non-null
14
+ * context at mount that then fails on real use). A throw inside that async
15
+ * callback ESCAPES the `<ShaderSafe>` error boundary (which only catches
16
+ * render-phase throws via `getDerivedStateFromError`) → global error → Sentry
17
+ * → Better Stack (Better Stack pattern `34127fa4…`, call site `new b2` in
18
+ * `app:///_next/static/chunks/c76173f0.…`, prod, 2 occurrences). So the probe
19
+ * must EXERCISE `getSupportedExtensions` itself: if it throws or returns null
20
+ * on the probe canvas, treat WebGL2 as unsupported and fall back BEFORE the
21
+ * throw can happen at render time. The call is cheap and one-shot (memoized).
22
+ */
23
+ export function supportsWebGL2() {
24
+ if (typeof window === 'undefined')
25
+ return false;
26
+ if (webgl2Support !== null)
27
+ return webgl2Support;
28
+ try {
29
+ const ctx = document.createElement('canvas').getContext('webgl2');
30
+ if (!ctx) {
31
+ webgl2Support = false;
32
+ }
33
+ else {
34
+ // Exercise the exact call Paper Shaders makes on the context. A GPU that
35
+ // returns a non-null context but fails on real use (context loss,
36
+ // blacklisted driver, stripped WebView) throws here or returns null —
37
+ // both mean WebGL2 is not usable for decorative shaders, so fall back.
38
+ webgl2Support = ctx.getSupportedExtensions() !== null;
39
+ }
40
+ }
41
+ catch {
42
+ webgl2Support = false;
43
+ }
44
+ return webgl2Support;
45
+ }
46
+ /**
47
+ * Test-only escape hatch: clears the one-shot `webgl2Support` memo so each
48
+ * unit test can exercise a fresh probe against a stubbed `document`/`window`.
49
+ * Not imported anywhere in app code.
50
+ */
51
+ export function __resetWebGL2ProbeForTests() {
52
+ webgl2Support = null;
53
+ }
54
+ /**
55
+ * Renders shader children only after mount (no SSR/hydration mismatch) and
56
+ * only when WebGL2 works; any runtime shader crash (context loss, compile
57
+ * failure, texture fetch rejection) degrades to the fallback instead of a
58
+ * client-side error. Decorative canvases must never take the page down.
59
+ */
60
+ export class ShaderSafe extends Component {
61
+ state = { failed: false, mounted: false };
62
+ static getDerivedStateFromError() {
63
+ return { failed: true };
64
+ }
65
+ componentDidMount() {
66
+ this.setState({ mounted: true });
67
+ }
68
+ render() {
69
+ const { failed, mounted } = this.state;
70
+ if (!mounted || failed || !supportsWebGL2())
71
+ return this.props.fallback ?? null;
72
+ return this.props.children;
73
+ }
74
+ }
@@ -0,0 +1,32 @@
1
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import * as React from 'react';
4
+ import { type TriggerVariantProps } from './trigger-variants.js';
5
+ declare const Sheet: ({ open, defaultOpen, onOpenChange, ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) => React.JSX.Element;
6
+ declare const SheetTrigger: ({ className, variant, size, asChild, ...props }: Omit<React.ComponentProps<typeof SheetPrimitive.Trigger>, "size"> & TriggerVariantProps) => React.JSX.Element;
7
+ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
8
+ declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
9
+ declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const sheetVariants: (props?: ({
11
+ side?: "left" | "right" | "bottom" | "top" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
14
+ showCloseButton?: boolean;
15
+ overlayClassName?: string;
16
+ }
17
+ declare const SheetContent: React.ForwardRefExoticComponent<SheetContentProps & React.RefAttributes<HTMLDivElement>>;
18
+ declare const SheetHeader: {
19
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
20
+ displayName: string;
21
+ };
22
+ declare const SheetFooter: {
23
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
24
+ displayName: string;
25
+ };
26
+ declare const SheetBody: {
27
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
28
+ displayName: string;
29
+ };
30
+ declare const SheetTitle: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
31
+ declare const SheetDescription: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
32
+ export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
4
+ import { cva } from 'class-variance-authority';
5
+ import * as React from 'react';
6
+ import { Close } from '../../icons/close.js';
7
+ import { cn } from '../../lib/utils.js';
8
+ import { useUiStrings } from '../../providers/ui-provider.js';
9
+ import { DialogDepthProvider, dialogContentZ, dialogOverlayZ, useDialogDepth, useDialogRootLayer, } from '../../lib/z-stack.js';
10
+ import { buttonVariants } from './button.js';
11
+ import { triggerVariants } from './trigger-variants.js';
12
+ const Sheet = ({ open, defaultOpen, onOpenChange, ...props }) => {
13
+ const layer = useDialogRootLayer({ open, defaultOpen, onOpenChange });
14
+ return (_jsx(DialogDepthProvider, { depth: layer.depth, children: _jsx(SheetPrimitive.Root, { ...props, open: layer.open, onOpenChange: layer.onOpenChange }) }));
15
+ };
16
+ const SheetTrigger = ({ className, variant, size, asChild, ...props }) => (_jsx(SheetPrimitive.Trigger, { asChild: asChild,
17
+ // With `asChild` the child owns its styling — merging ours would double it.
18
+ className: asChild ? className : cn(triggerVariants({ variant, size }), className), ...props }));
19
+ const SheetClose = SheetPrimitive.Close;
20
+ const SheetPortal = SheetPrimitive.Portal;
21
+ const SheetOverlay = React.forwardRef(({ className, style, ...props }, ref) => {
22
+ const depth = useDialogDepth();
23
+ return (_jsx(SheetPrimitive.Overlay, { className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 bg-black/80', className), style: { zIndex: dialogOverlayZ(depth), ...style }, ...props, ref: ref }));
24
+ });
25
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
26
+ const sheetVariants = cva('fixed flex min-h-0 flex-col gap-4 overflow-hidden bg-sidebar p-4 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out h-[calc(100vh-1.4rem)]', {
27
+ variants: {
28
+ side: {
29
+ top: 'inset-x-0 top-0 border-b-[1.5px] border-border/40 data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
30
+ bottom: 'inset-x-0 bottom-0 border-t-[1.5px] border-border/40 data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
31
+ left: 'inset-y-0 left-0 h-full w-full md:w-3/4 border-r-[1.5px] border-border/40 data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
32
+ right: 'inset-y-0 right-0 h-full md:h-[calc(100vh-1.4rem)] w-full md:w-3/4 border-[1.5px] md:rounded-lg border-border/40 data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm md:m-[0.7rem]',
33
+ },
34
+ },
35
+ defaultVariants: {
36
+ side: 'right',
37
+ },
38
+ });
39
+ const SheetContent = React.forwardRef(({ side = 'right', className, children, showCloseButton = true, overlayClassName, style, ...props }, ref) => {
40
+ const depth = useDialogDepth();
41
+ const strings = useUiStrings();
42
+ return (_jsxs(SheetPortal, { children: [_jsx(SheetOverlay, { className: overlayClassName }), _jsxs(SheetPrimitive.Content, { ref: ref, className: cn(sheetVariants({ side }), className), style: { zIndex: dialogContentZ(depth), ...style }, ...props, children: [children, showCloseButton && (_jsxs(SheetPrimitive.Close, { className: cn('absolute top-4 right-4', buttonVariants({ variant: 'ghost', size: 'icon' })), children: [_jsx(Close, { className: "size-[1.15rem] stroke-0" }), _jsx("span", { className: "sr-only", children: strings.close })] }))] })] }));
43
+ });
44
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
45
+ const SheetHeader = ({ className, ...props }) => (_jsx("div", { className: cn('flex shrink-0 flex-col space-y-2 text-center sm:text-left', className), ...props }));
46
+ SheetHeader.displayName = 'SheetHeader';
47
+ const SheetFooter = ({ className, ...props }) => (_jsx("div", { className: cn('flex shrink-0 flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
48
+ SheetFooter.displayName = 'SheetFooter';
49
+ const SheetBody = ({ className, ...props }) => (_jsx("div", { className: cn('flex min-h-0 w-full flex-1 flex-col items-start justify-start gap-4 overflow-y-auto py-6', className), ...props }));
50
+ SheetBody.displayName = 'SheetBody';
51
+ const SheetTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(SheetPrimitive.Title, { ref: ref, className: cn('text-foreground text-lg font-semibold', className), ...props })));
52
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
53
+ const SheetDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(SheetPrimitive.Description, { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
54
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
55
+ export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
@@ -0,0 +1,72 @@
1
+ import * as React from 'react';
2
+ declare const SIDEBAR_COOKIE_NAME = "sidebar_state";
3
+ declare const SIDEBAR_COOKIE_MAX_AGE: number;
4
+ declare const SIDEBAR_WIDTH = "20rem";
5
+ declare const SIDEBAR_WIDTH_MOBILE = "18rem";
6
+ declare const SIDEBAR_WIDTH_ICON = "1.6rem";
7
+ declare const SIDEBAR_KEYBOARD_SHORTCUT = "b";
8
+ /**
9
+ * How long the panel keeps its DOCKED geometry after the sidebar collapses.
10
+ * Mirrors `duration-[240ms]` on the container below — the timer has to outlast
11
+ * the transform it covers, or the flyout geometry lands while the panel is
12
+ * still on screen and you see the pop this whole mechanism exists to remove.
13
+ * One number, two places, asserted against each other in `sidebar.test.tsx`.
14
+ */
15
+ declare const SIDEBAR_UNDOCK_MS = 240;
16
+ /** Keyboard resize step on the rail. Shift multiplies it. */
17
+ declare const SIDEBAR_RESIZE_STEP_PX = 16;
18
+ declare const SIDEBAR_RESIZE_STEP_COARSE_PX = 64;
19
+ /**
20
+ * How a toggle was triggered. Either state it (`{ instant: true }`) or hand the
21
+ * click event straight through — a click synthesized by Enter/Space reports
22
+ * `detail === 0`, so `onClick={toggleSidebar}` makes every keyboard-activated
23
+ * toggle instant for free.
24
+ */
25
+ export type SidebarToggleOptions = {
26
+ instant?: boolean;
27
+ detail?: number;
28
+ };
29
+ declare const resolveInstant: (options?: SidebarToggleOptions) => boolean;
30
+ type SidebarContextProps = {
31
+ state: 'expanded' | 'collapsed';
32
+ open: boolean;
33
+ setOpen: (open: boolean) => void;
34
+ openMobile: boolean;
35
+ setOpenMobile: (open: boolean) => void;
36
+ isMobile: boolean;
37
+ toggleSidebar: (options?: SidebarToggleOptions) => void;
38
+ /**
39
+ * True for the frames covering a toggle that must not animate. Set by every
40
+ * keyboard-initiated toggle; see the note on `toggleSidebar` above.
41
+ */
42
+ instantToggle: boolean;
43
+ /** Collapsed-only hover flyout: the sidebar floats over the content while
44
+ * the pointer is near the left edge or on the panel itself. `open` stays
45
+ * false the whole time, so a toggle click while peeking docks it open. */
46
+ peek: boolean;
47
+ peekEnter: () => void;
48
+ peekLeave: () => void;
49
+ /** Pin the flyout open while a menu/popover anchored in the panel is open —
50
+ * its content portals outside the panel, so hovering it would otherwise
51
+ * collapse the flyout. Balanced: `holdPeek(true)` on open, `false` on close. */
52
+ holdPeek: (held: boolean) => void;
53
+ /** Current docked width in px — the resolved value of `--sidebar-width`. */
54
+ width: number;
55
+ /** Clamp, apply, and persist a new width. One render, one cookie write. */
56
+ setWidth: (width: number) => void;
57
+ /**
58
+ * Paint a width straight onto the wrapper's CSS variable, with no React
59
+ * render. Used for the duration of a rail drag; `setWidth` then commits the
60
+ * final value once on pointer-up.
61
+ */
62
+ previewWidth: (width: number) => void;
63
+ };
64
+ export declare const SidebarContext: React.Context<SidebarContextProps | null>;
65
+ declare function useSidebar(): SidebarContextProps;
66
+ /** Same context as `useSidebar`, but returns `null` outside a
67
+ * `SidebarProvider` instead of throwing. For callers that can genuinely
68
+ * render on both sides of the boundary — e.g. the Easy panel, which also
69
+ * mounts on /debug/tools with no provider at all. */
70
+ declare function useOptionalSidebar(): SidebarContextProps | null;
71
+ export { SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_RESIZE_STEP_COARSE_PX, SIDEBAR_RESIZE_STEP_PX, SIDEBAR_UNDOCK_MS, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, resolveInstant, useOptionalSidebar, useSidebar, };
72
+ export type { SidebarContextProps };
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ const SIDEBAR_COOKIE_NAME = 'sidebar_state';
4
+ const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
5
+ const SIDEBAR_WIDTH = '20rem';
6
+ const SIDEBAR_WIDTH_MOBILE = '18rem';
7
+ const SIDEBAR_WIDTH_ICON = '1.6rem';
8
+ const SIDEBAR_KEYBOARD_SHORTCUT = 'b';
9
+ /**
10
+ * How long the panel keeps its DOCKED geometry after the sidebar collapses.
11
+ * Mirrors `duration-[240ms]` on the container below — the timer has to outlast
12
+ * the transform it covers, or the flyout geometry lands while the panel is
13
+ * still on screen and you see the pop this whole mechanism exists to remove.
14
+ * One number, two places, asserted against each other in `sidebar.test.tsx`.
15
+ */
16
+ const SIDEBAR_UNDOCK_MS = 240;
17
+ /** Keyboard resize step on the rail. Shift multiplies it. */
18
+ const SIDEBAR_RESIZE_STEP_PX = 16;
19
+ const SIDEBAR_RESIZE_STEP_COARSE_PX = 64;
20
+ const resolveInstant = (options) => options?.instant ?? options?.detail === 0;
21
+ export const SidebarContext = React.createContext(null);
22
+ function useSidebar() {
23
+ const context = React.useContext(SidebarContext);
24
+ if (!context) {
25
+ throw new Error('useSidebar must be used within a SidebarProvider.');
26
+ }
27
+ return context;
28
+ }
29
+ /** Same context as `useSidebar`, but returns `null` outside a
30
+ * `SidebarProvider` instead of throwing. For callers that can genuinely
31
+ * render on both sides of the boundary — e.g. the Easy panel, which also
32
+ * mounts on /debug/tools with no provider at all. */
33
+ function useOptionalSidebar() {
34
+ return React.useContext(SidebarContext);
35
+ }
36
+ export { SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_RESIZE_STEP_COARSE_PX, SIDEBAR_RESIZE_STEP_PX, SIDEBAR_UNDOCK_MS, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, resolveInstant, useOptionalSidebar, useSidebar, };
@@ -0,0 +1,38 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ import { TooltipContent } from './tooltip.js';
4
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
5
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<'div'> & {
6
+ asChild?: boolean;
7
+ }): React.JSX.Element;
8
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<'button'> & {
9
+ asChild?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
12
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>): React.JSX.Element;
13
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>): React.JSX.Element;
14
+ declare const sidebarMenuButtonVariants: (props?: ({
15
+ variant?: "default" | "outline" | "success" | "primary" | null | undefined;
16
+ size?: "default" | "sm" | "lg" | null | undefined;
17
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
18
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<'button'> & {
19
+ asChild?: boolean;
20
+ isActive?: boolean;
21
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
22
+ } & VariantProps<typeof sidebarMenuButtonVariants>): React.JSX.Element;
23
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<'button'> & {
24
+ asChild?: boolean;
25
+ showOnHover?: boolean;
26
+ }): React.JSX.Element;
27
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
28
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<'div'> & {
29
+ showIcon?: boolean;
30
+ }): React.JSX.Element;
31
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>): React.JSX.Element;
32
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>): React.JSX.Element;
33
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<'a'> & {
34
+ asChild?: boolean;
35
+ size?: 'sm' | 'md';
36
+ isActive?: boolean;
37
+ }): React.JSX.Element;
38
+ export { SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, };