@adea-ai/ui 0.60.3 → 0.61.0

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 (862) hide show
  1. package/README.md +108 -34
  2. package/dist/components/composites/account-menu/account-menu.d.ts +48 -0
  3. package/dist/components/composites/account-menu/account-menu.d.ts.map +1 -0
  4. package/dist/components/composites/account-menu/account-menu.js +119 -0
  5. package/dist/components/composites/account-menu/account-menu.js.map +1 -0
  6. package/dist/components/composites/account-menu/index.d.ts +2 -0
  7. package/dist/components/composites/account-menu/index.d.ts.map +1 -0
  8. package/dist/components/composites/list-row/index.d.ts +2 -0
  9. package/dist/components/composites/list-row/index.d.ts.map +1 -0
  10. package/dist/components/composites/list-row/list-row.d.ts +44 -0
  11. package/dist/components/composites/list-row/list-row.d.ts.map +1 -0
  12. package/dist/components/composites/list-row/list-row.js +124 -0
  13. package/dist/components/composites/list-row/list-row.js.map +1 -0
  14. package/dist/components/composites/settings/index.d.ts +2 -0
  15. package/dist/components/composites/settings/index.d.ts.map +1 -0
  16. package/dist/components/composites/settings/settings.d.ts +49 -0
  17. package/dist/components/composites/settings/settings.d.ts.map +1 -0
  18. package/dist/components/composites/settings/settings.js +148 -0
  19. package/dist/components/composites/settings/settings.js.map +1 -0
  20. package/dist/components/composites/stat/index.d.ts +2 -0
  21. package/dist/components/composites/stat/index.d.ts.map +1 -0
  22. package/dist/components/composites/stat/stat.d.ts +48 -0
  23. package/dist/components/composites/stat/stat.d.ts.map +1 -0
  24. package/dist/components/composites/stat/stat.js +148 -0
  25. package/dist/components/composites/stat/stat.js.map +1 -0
  26. package/dist/components/composites/update-dialog/index.d.ts +2 -0
  27. package/dist/components/composites/update-dialog/index.d.ts.map +1 -0
  28. package/dist/components/composites/update-dialog/update-dialog.d.ts +108 -0
  29. package/dist/components/composites/update-dialog/update-dialog.d.ts.map +1 -0
  30. package/dist/components/composites/update-dialog/update-dialog.js +452 -0
  31. package/dist/components/composites/update-dialog/update-dialog.js.map +1 -0
  32. package/dist/components/composites/workspace-mark/index.d.ts +2 -0
  33. package/dist/components/composites/workspace-mark/index.d.ts.map +1 -0
  34. package/dist/components/composites/workspace-mark/workspace-mark.d.ts +24 -0
  35. package/dist/components/composites/workspace-mark/workspace-mark.d.ts.map +1 -0
  36. package/dist/components/composites/workspace-mark/workspace-mark.js +76 -0
  37. package/dist/components/composites/workspace-mark/workspace-mark.js.map +1 -0
  38. package/dist/components/conversation/conversation-avatar.d.ts +21 -0
  39. package/dist/components/conversation/conversation-avatar.d.ts.map +1 -0
  40. package/dist/components/conversation/conversation-avatar.js +52 -0
  41. package/dist/components/conversation/conversation-avatar.js.map +1 -0
  42. package/dist/components/conversation/conversation-surface.d.ts +27 -0
  43. package/dist/components/conversation/conversation-surface.d.ts.map +1 -0
  44. package/dist/components/conversation/conversation-surface.js +118 -0
  45. package/dist/components/conversation/conversation-surface.js.map +1 -0
  46. package/dist/components/conversation/index.d.ts +6 -0
  47. package/dist/components/conversation/index.d.ts.map +1 -0
  48. package/dist/components/conversation/message-composer.d.ts +70 -0
  49. package/dist/components/conversation/message-composer.d.ts.map +1 -0
  50. package/dist/components/conversation/message-composer.js +235 -0
  51. package/dist/components/conversation/message-composer.js.map +1 -0
  52. package/dist/components/conversation/message-row.d.ts +101 -0
  53. package/dist/components/conversation/message-row.d.ts.map +1 -0
  54. package/dist/components/conversation/message-row.js +389 -0
  55. package/dist/components/conversation/message-row.js.map +1 -0
  56. package/dist/components/conversation/thread-panel.d.ts +45 -0
  57. package/dist/components/conversation/thread-panel.d.ts.map +1 -0
  58. package/dist/components/conversation/thread-panel.js +123 -0
  59. package/dist/components/conversation/thread-panel.js.map +1 -0
  60. package/dist/components/layout/app-shell/app-shell.d.ts +45 -0
  61. package/dist/components/layout/app-shell/app-shell.d.ts.map +1 -0
  62. package/dist/components/layout/app-shell/app-shell.js +89 -0
  63. package/dist/components/layout/app-shell/app-shell.js.map +1 -0
  64. package/dist/components/layout/app-shell/index.d.ts +2 -0
  65. package/dist/components/layout/app-shell/index.d.ts.map +1 -0
  66. package/dist/components/layout/page/index.d.ts +2 -0
  67. package/dist/components/layout/page/index.d.ts.map +1 -0
  68. package/dist/components/layout/page/page.d.ts +31 -0
  69. package/dist/components/layout/page/page.d.ts.map +1 -0
  70. package/dist/components/layout/page/page.js +143 -0
  71. package/dist/components/layout/page/page.js.map +1 -0
  72. package/dist/components/layout/panel/index.d.ts +2 -0
  73. package/dist/components/layout/panel/index.d.ts.map +1 -0
  74. package/dist/components/layout/panel/panel.d.ts +44 -0
  75. package/dist/components/layout/panel/panel.d.ts.map +1 -0
  76. package/dist/components/layout/panel/panel.js +151 -0
  77. package/dist/components/layout/panel/panel.js.map +1 -0
  78. package/dist/components/layout/side-rail/index.d.ts +3 -0
  79. package/dist/components/layout/side-rail/index.d.ts.map +1 -0
  80. package/dist/components/layout/side-rail/side-rail-context.d.ts +23 -0
  81. package/dist/components/layout/side-rail/side-rail-context.d.ts.map +1 -0
  82. package/dist/components/layout/side-rail/side-rail-context.js +18 -0
  83. package/dist/components/layout/side-rail/side-rail-context.js.map +1 -0
  84. package/dist/components/layout/side-rail/side-rail.d.ts +101 -0
  85. package/dist/components/layout/side-rail/side-rail.d.ts.map +1 -0
  86. package/dist/components/layout/side-rail/side-rail.js +336 -0
  87. package/dist/components/layout/side-rail/side-rail.js.map +1 -0
  88. package/dist/components/layout/sidebar-nav/index.d.ts +2 -0
  89. package/dist/components/layout/sidebar-nav/index.d.ts.map +1 -0
  90. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts +62 -0
  91. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts.map +1 -0
  92. package/dist/components/layout/sidebar-nav/sidebar-nav.js +231 -0
  93. package/dist/components/layout/sidebar-nav/sidebar-nav.js.map +1 -0
  94. package/dist/components/layout/status-bar/index.d.ts +2 -0
  95. package/dist/components/layout/status-bar/index.d.ts.map +1 -0
  96. package/dist/components/layout/status-bar/status-bar.d.ts +23 -0
  97. package/dist/components/layout/status-bar/status-bar.d.ts.map +1 -0
  98. package/dist/components/layout/status-bar/status-bar.js +68 -0
  99. package/dist/components/layout/status-bar/status-bar.js.map +1 -0
  100. package/dist/components/layout/top-bar/index.d.ts +2 -0
  101. package/dist/components/layout/top-bar/index.d.ts.map +1 -0
  102. package/dist/components/layout/top-bar/top-bar.d.ts +59 -0
  103. package/dist/components/layout/top-bar/top-bar.d.ts.map +1 -0
  104. package/dist/components/layout/top-bar/top-bar.js +118 -0
  105. package/dist/components/layout/top-bar/top-bar.js.map +1 -0
  106. package/dist/components/motion/index.d.ts +3 -0
  107. package/dist/components/motion/index.d.ts.map +1 -0
  108. package/dist/components/motion/index.js +3 -0
  109. package/dist/components/motion/presence.d.ts +29 -0
  110. package/dist/components/motion/presence.d.ts.map +1 -0
  111. package/dist/components/motion/presence.js +10 -0
  112. package/dist/components/motion/presence.js.map +1 -0
  113. package/dist/components/theme/appearance-panel.d.ts +25 -0
  114. package/dist/components/theme/appearance-panel.d.ts.map +1 -0
  115. package/dist/components/theme/appearance-panel.js +162 -0
  116. package/dist/components/theme/appearance-panel.js.map +1 -0
  117. package/dist/components/theme/index.d.ts +5 -0
  118. package/dist/components/theme/index.d.ts.map +1 -0
  119. package/dist/components/theme/theme-picker.d.ts +54 -0
  120. package/dist/components/theme/theme-picker.d.ts.map +1 -0
  121. package/dist/components/theme/theme-picker.js +156 -0
  122. package/dist/components/theme/theme-picker.js.map +1 -0
  123. package/dist/components/theme/theme-provider.d.ts +130 -0
  124. package/dist/components/theme/theme-provider.d.ts.map +1 -0
  125. package/dist/components/theme/theme-provider.js +164 -0
  126. package/dist/components/theme/theme-provider.js.map +1 -0
  127. package/dist/components/theme/theme-toggle.d.ts +19 -0
  128. package/dist/components/theme/theme-toggle.d.ts.map +1 -0
  129. package/dist/components/theme/theme-toggle.js +69 -0
  130. package/dist/components/theme/theme-toggle.js.map +1 -0
  131. package/dist/components/ui/accordion/accordion.d.ts +18 -0
  132. package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
  133. package/dist/components/ui/accordion/accordion.js +60 -0
  134. package/dist/components/ui/accordion/accordion.js.map +1 -0
  135. package/dist/components/ui/accordion/index.d.ts +2 -0
  136. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  137. package/dist/components/ui/alert/alert.d.ts +26 -0
  138. package/dist/components/ui/alert/alert.d.ts.map +1 -0
  139. package/dist/components/ui/alert/alert.js +89 -0
  140. package/dist/components/ui/alert/alert.js.map +1 -0
  141. package/dist/components/ui/alert/index.d.ts +2 -0
  142. package/dist/components/ui/alert/index.d.ts.map +1 -0
  143. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +29 -0
  144. package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
  145. package/dist/components/ui/alert-dialog/alert-dialog.js +155 -0
  146. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -0
  147. package/dist/components/ui/alert-dialog/index.d.ts +2 -0
  148. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  149. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +22 -0
  150. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts.map +1 -0
  151. package/dist/components/ui/aspect-ratio/aspect-ratio.js +29 -0
  152. package/dist/components/ui/aspect-ratio/aspect-ratio.js.map +1 -0
  153. package/dist/components/ui/aspect-ratio/index.d.ts +2 -0
  154. package/dist/components/ui/aspect-ratio/index.d.ts.map +1 -0
  155. package/dist/components/ui/avatar/avatar.d.ts +41 -0
  156. package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
  157. package/dist/components/ui/avatar/avatar.js +106 -0
  158. package/dist/components/ui/avatar/avatar.js.map +1 -0
  159. package/dist/components/ui/avatar/index.d.ts +2 -0
  160. package/dist/components/ui/avatar/index.d.ts.map +1 -0
  161. package/dist/components/ui/badge/badge.d.ts +22 -0
  162. package/dist/components/ui/badge/badge.d.ts.map +1 -0
  163. package/dist/components/ui/badge/badge.js +58 -0
  164. package/dist/components/ui/badge/badge.js.map +1 -0
  165. package/dist/components/ui/badge/index.d.ts +2 -0
  166. package/dist/components/ui/badge/index.d.ts.map +1 -0
  167. package/dist/components/ui/board/board.d.ts +78 -0
  168. package/dist/components/ui/board/board.d.ts.map +1 -0
  169. package/dist/components/ui/board/board.js +200 -0
  170. package/dist/components/ui/board/board.js.map +1 -0
  171. package/dist/components/ui/board/index.d.ts +2 -0
  172. package/dist/components/ui/board/index.d.ts.map +1 -0
  173. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +24 -0
  174. package/dist/components/ui/breadcrumb/breadcrumb.d.ts.map +1 -0
  175. package/dist/components/ui/breadcrumb/breadcrumb.js +109 -0
  176. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
  177. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  178. package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
  179. package/dist/components/ui/button/button.d.ts +30 -0
  180. package/dist/components/ui/button/button.d.ts.map +1 -0
  181. package/dist/components/ui/button/button.js +80 -0
  182. package/dist/components/ui/button/button.js.map +1 -0
  183. package/dist/components/ui/button/index.d.ts +2 -0
  184. package/dist/components/ui/button/index.d.ts.map +1 -0
  185. package/dist/components/ui/button-group/button-group.d.ts +39 -0
  186. package/dist/components/ui/button-group/button-group.d.ts.map +1 -0
  187. package/dist/components/ui/button-group/button-group.js +63 -0
  188. package/dist/components/ui/button-group/button-group.js.map +1 -0
  189. package/dist/components/ui/button-group/index.d.ts +2 -0
  190. package/dist/components/ui/button-group/index.d.ts.map +1 -0
  191. package/dist/components/ui/calendar/calendar.d.ts +93 -0
  192. package/dist/components/ui/calendar/calendar.d.ts.map +1 -0
  193. package/dist/components/ui/calendar/calendar.js +243 -0
  194. package/dist/components/ui/calendar/calendar.js.map +1 -0
  195. package/dist/components/ui/calendar/index.d.ts +2 -0
  196. package/dist/components/ui/calendar/index.d.ts.map +1 -0
  197. package/dist/components/ui/card/card.d.ts +23 -0
  198. package/dist/components/ui/card/card.d.ts.map +1 -0
  199. package/dist/components/ui/card/card.js +98 -0
  200. package/dist/components/ui/card/card.js.map +1 -0
  201. package/dist/components/ui/card/index.d.ts +2 -0
  202. package/dist/components/ui/card/index.d.ts.map +1 -0
  203. package/dist/components/ui/carousel/carousel.d.ts +66 -0
  204. package/dist/components/ui/carousel/carousel.d.ts.map +1 -0
  205. package/dist/components/ui/carousel/carousel.js +178 -0
  206. package/dist/components/ui/carousel/carousel.js.map +1 -0
  207. package/dist/components/ui/carousel/index.d.ts +2 -0
  208. package/dist/components/ui/carousel/index.d.ts.map +1 -0
  209. package/dist/components/ui/chart/chart.d.ts +154 -0
  210. package/dist/components/ui/chart/chart.d.ts.map +1 -0
  211. package/dist/components/ui/chart/chart.js +373 -0
  212. package/dist/components/ui/chart/chart.js.map +1 -0
  213. package/dist/components/ui/chart/index.d.ts +2 -0
  214. package/dist/components/ui/chart/index.d.ts.map +1 -0
  215. package/dist/components/ui/checkbox/checkbox.d.ts +33 -0
  216. package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
  217. package/dist/components/ui/checkbox/checkbox.js +76 -0
  218. package/dist/components/ui/checkbox/checkbox.js.map +1 -0
  219. package/dist/components/ui/checkbox/index.d.ts +2 -0
  220. package/dist/components/ui/checkbox/index.d.ts.map +1 -0
  221. package/dist/components/ui/code-block/code-block.d.ts +75 -0
  222. package/dist/components/ui/code-block/code-block.d.ts.map +1 -0
  223. package/dist/components/ui/code-block/code-block.js +186 -0
  224. package/dist/components/ui/code-block/code-block.js.map +1 -0
  225. package/dist/components/ui/code-block/index.d.ts +2 -0
  226. package/dist/components/ui/code-block/index.d.ts.map +1 -0
  227. package/dist/components/ui/collapsible/collapsible.d.ts +17 -0
  228. package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
  229. package/dist/components/ui/collapsible/collapsible.js +38 -0
  230. package/dist/components/ui/collapsible/collapsible.js.map +1 -0
  231. package/dist/components/ui/collapsible/index.d.ts +2 -0
  232. package/dist/components/ui/collapsible/index.d.ts.map +1 -0
  233. package/dist/components/ui/combobox/combobox.d.ts +28 -0
  234. package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
  235. package/dist/components/ui/combobox/combobox.js +102 -0
  236. package/dist/components/ui/combobox/combobox.js.map +1 -0
  237. package/dist/components/ui/combobox/index.d.ts +2 -0
  238. package/dist/components/ui/combobox/index.d.ts.map +1 -0
  239. package/dist/components/ui/command/command.d.ts +53 -0
  240. package/dist/components/ui/command/command.d.ts.map +1 -0
  241. package/dist/components/ui/command/command.js +137 -0
  242. package/dist/components/ui/command/command.js.map +1 -0
  243. package/dist/components/ui/command/index.d.ts +2 -0
  244. package/dist/components/ui/command/index.d.ts.map +1 -0
  245. package/dist/components/ui/context-menu/context-menu.d.ts +32 -0
  246. package/dist/components/ui/context-menu/context-menu.d.ts.map +1 -0
  247. package/dist/components/ui/context-menu/context-menu.js +119 -0
  248. package/dist/components/ui/context-menu/context-menu.js.map +1 -0
  249. package/dist/components/ui/context-menu/index.d.ts +2 -0
  250. package/dist/components/ui/context-menu/index.d.ts.map +1 -0
  251. package/dist/components/ui/detail-panel/detail-panel.d.ts +61 -0
  252. package/dist/components/ui/detail-panel/detail-panel.d.ts.map +1 -0
  253. package/dist/components/ui/detail-panel/detail-panel.js +132 -0
  254. package/dist/components/ui/detail-panel/detail-panel.js.map +1 -0
  255. package/dist/components/ui/detail-panel/index.d.ts +2 -0
  256. package/dist/components/ui/detail-panel/index.d.ts.map +1 -0
  257. package/dist/components/ui/dialog/dialog.d.ts +40 -0
  258. package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
  259. package/dist/components/ui/dialog/dialog.js +125 -0
  260. package/dist/components/ui/dialog/dialog.js.map +1 -0
  261. package/dist/components/ui/dialog/index.d.ts +2 -0
  262. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  263. package/dist/components/ui/diff-block/diff-block.d.ts +95 -0
  264. package/dist/components/ui/diff-block/diff-block.d.ts.map +1 -0
  265. package/dist/components/ui/diff-block/diff-block.js +230 -0
  266. package/dist/components/ui/diff-block/diff-block.js.map +1 -0
  267. package/dist/components/ui/diff-block/diff-block.test.d.ts +2 -0
  268. package/dist/components/ui/diff-block/diff-block.test.d.ts.map +1 -0
  269. package/dist/components/ui/diff-block/index.d.ts +2 -0
  270. package/dist/components/ui/diff-block/index.d.ts.map +1 -0
  271. package/dist/components/ui/drawer/drawer.d.ts +39 -0
  272. package/dist/components/ui/drawer/drawer.d.ts.map +1 -0
  273. package/dist/components/ui/drawer/drawer.js +106 -0
  274. package/dist/components/ui/drawer/drawer.js.map +1 -0
  275. package/dist/components/ui/drawer/index.d.ts +2 -0
  276. package/dist/components/ui/drawer/index.d.ts.map +1 -0
  277. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +48 -0
  278. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  279. package/dist/components/ui/dropdown-menu/dropdown-menu.js +151 -0
  280. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  281. package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
  282. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
  283. package/dist/components/ui/empty/empty.d.ts +27 -0
  284. package/dist/components/ui/empty/empty.d.ts.map +1 -0
  285. package/dist/components/ui/{empty.js → empty/empty.js} +28 -23
  286. package/dist/components/ui/empty/empty.js.map +1 -0
  287. package/dist/components/ui/empty/index.d.ts +2 -0
  288. package/dist/components/ui/empty/index.d.ts.map +1 -0
  289. package/dist/components/ui/entity-icon/entity-icon.d.ts +59 -0
  290. package/dist/components/ui/entity-icon/entity-icon.d.ts.map +1 -0
  291. package/dist/components/ui/entity-icon/entity-icon.js +145 -0
  292. package/dist/components/ui/entity-icon/entity-icon.js.map +1 -0
  293. package/dist/components/ui/entity-icon/index.d.ts +2 -0
  294. package/dist/components/ui/entity-icon/index.d.ts.map +1 -0
  295. package/dist/components/ui/field/field.d.ts +39 -0
  296. package/dist/components/ui/field/field.d.ts.map +1 -0
  297. package/dist/components/ui/field/field.js +111 -0
  298. package/dist/components/ui/field/field.js.map +1 -0
  299. package/dist/components/ui/field/index.d.ts +2 -0
  300. package/dist/components/ui/field/index.d.ts.map +1 -0
  301. package/dist/components/ui/hover-card/hover-card.d.ts +17 -0
  302. package/dist/components/ui/hover-card/hover-card.d.ts.map +1 -0
  303. package/dist/components/ui/hover-card/hover-card.js +40 -0
  304. package/dist/components/ui/hover-card/hover-card.js.map +1 -0
  305. package/dist/components/ui/hover-card/index.d.ts +2 -0
  306. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  307. package/dist/components/ui/input/index.d.ts +2 -0
  308. package/dist/components/ui/input/index.d.ts.map +1 -0
  309. package/dist/components/ui/input/input.d.ts +15 -0
  310. package/dist/components/ui/input/input.d.ts.map +1 -0
  311. package/dist/components/ui/input/input.js +36 -0
  312. package/dist/components/ui/input/input.js.map +1 -0
  313. package/dist/components/ui/input-group/index.d.ts +2 -0
  314. package/dist/components/ui/input-group/index.d.ts.map +1 -0
  315. package/dist/components/ui/input-group/input-group.d.ts +34 -0
  316. package/dist/components/ui/input-group/input-group.d.ts.map +1 -0
  317. package/dist/components/ui/input-group/input-group.js +93 -0
  318. package/dist/components/ui/input-group/input-group.js.map +1 -0
  319. package/dist/components/ui/input-otp/index.d.ts +2 -0
  320. package/dist/components/ui/input-otp/index.d.ts.map +1 -0
  321. package/dist/components/ui/input-otp/input-otp.d.ts +37 -0
  322. package/dist/components/ui/input-otp/input-otp.d.ts.map +1 -0
  323. package/dist/components/ui/input-otp/input-otp.js +92 -0
  324. package/dist/components/ui/input-otp/input-otp.js.map +1 -0
  325. package/dist/components/ui/item/index.d.ts +2 -0
  326. package/dist/components/ui/item/index.d.ts.map +1 -0
  327. package/dist/components/ui/item/item.d.ts +49 -0
  328. package/dist/components/ui/item/item.d.ts.map +1 -0
  329. package/dist/components/ui/item/item.js +163 -0
  330. package/dist/components/ui/item/item.js.map +1 -0
  331. package/dist/components/ui/kbd/index.d.ts +2 -0
  332. package/dist/components/ui/kbd/index.d.ts.map +1 -0
  333. package/dist/components/ui/kbd/kbd.d.ts +14 -0
  334. package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
  335. package/dist/components/ui/kbd/kbd.js +40 -0
  336. package/dist/components/ui/kbd/kbd.js.map +1 -0
  337. package/dist/components/ui/label/index.d.ts +2 -0
  338. package/dist/components/ui/label/index.d.ts.map +1 -0
  339. package/dist/components/ui/label/label.d.ts +17 -0
  340. package/dist/components/ui/label/label.d.ts.map +1 -0
  341. package/dist/components/ui/label/label.js +33 -0
  342. package/dist/components/ui/label/label.js.map +1 -0
  343. package/dist/components/ui/menubar/index.d.ts +2 -0
  344. package/dist/components/ui/menubar/index.d.ts.map +1 -0
  345. package/dist/components/ui/menubar/menubar.d.ts +38 -0
  346. package/dist/components/ui/menubar/menubar.d.ts.map +1 -0
  347. package/dist/components/ui/menubar/menubar.js +138 -0
  348. package/dist/components/ui/menubar/menubar.js.map +1 -0
  349. package/dist/components/ui/modal-dialog/index.d.ts +2 -0
  350. package/dist/components/ui/modal-dialog/index.d.ts.map +1 -0
  351. package/dist/components/ui/modal-dialog/modal-dialog.d.ts +35 -0
  352. package/dist/components/ui/modal-dialog/modal-dialog.d.ts.map +1 -0
  353. package/dist/components/ui/modal-dialog/modal-dialog.js +78 -0
  354. package/dist/components/ui/modal-dialog/modal-dialog.js.map +1 -0
  355. package/dist/components/ui/navigation-menu/index.d.ts +2 -0
  356. package/dist/components/ui/navigation-menu/index.d.ts.map +1 -0
  357. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +77 -0
  358. package/dist/components/ui/navigation-menu/navigation-menu.d.ts.map +1 -0
  359. package/dist/components/ui/navigation-menu/navigation-menu.js +116 -0
  360. package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -0
  361. package/dist/components/ui/pagination/index.d.ts +2 -0
  362. package/dist/components/ui/pagination/index.d.ts.map +1 -0
  363. package/dist/components/ui/pagination/pagination.d.ts +33 -0
  364. package/dist/components/ui/pagination/pagination.d.ts.map +1 -0
  365. package/dist/components/ui/pagination/pagination.js +92 -0
  366. package/dist/components/ui/pagination/pagination.js.map +1 -0
  367. package/dist/components/ui/popover/index.d.ts +2 -0
  368. package/dist/components/ui/popover/index.d.ts.map +1 -0
  369. package/dist/components/ui/popover/popover.d.ts +26 -0
  370. package/dist/components/ui/popover/popover.d.ts.map +1 -0
  371. package/dist/components/ui/popover/popover.js +66 -0
  372. package/dist/components/ui/popover/popover.js.map +1 -0
  373. package/dist/components/ui/progress/index.d.ts +2 -0
  374. package/dist/components/ui/progress/index.d.ts.map +1 -0
  375. package/dist/components/ui/progress/progress.d.ts +29 -0
  376. package/dist/components/ui/progress/progress.d.ts.map +1 -0
  377. package/dist/components/ui/progress/progress.js +53 -0
  378. package/dist/components/ui/progress/progress.js.map +1 -0
  379. package/dist/components/ui/radio-group/index.d.ts +2 -0
  380. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  381. package/dist/components/ui/radio-group/radio-group.d.ts +26 -0
  382. package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
  383. package/dist/components/ui/radio-group/radio-group.js +77 -0
  384. package/dist/components/ui/radio-group/radio-group.js.map +1 -0
  385. package/dist/components/ui/resizable/index.d.ts +2 -0
  386. package/dist/components/ui/resizable/index.d.ts.map +1 -0
  387. package/dist/components/ui/resizable/resizable.d.ts +33 -0
  388. package/dist/components/ui/resizable/resizable.d.ts.map +1 -0
  389. package/dist/components/ui/resizable/resizable.js +57 -0
  390. package/dist/components/ui/resizable/resizable.js.map +1 -0
  391. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  392. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  393. package/dist/components/ui/scroll-area/scroll-area.d.ts +26 -0
  394. package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
  395. package/dist/components/ui/scroll-area/scroll-area.js +36 -0
  396. package/dist/components/ui/scroll-area/scroll-area.js.map +1 -0
  397. package/dist/components/ui/select/index.d.ts +2 -0
  398. package/dist/components/ui/select/index.d.ts.map +1 -0
  399. package/dist/components/ui/select/select.d.ts +63 -0
  400. package/dist/components/ui/select/select.d.ts.map +1 -0
  401. package/dist/components/ui/select/select.js +142 -0
  402. package/dist/components/ui/select/select.js.map +1 -0
  403. package/dist/components/ui/separator/index.d.ts +2 -0
  404. package/dist/components/ui/separator/index.d.ts.map +1 -0
  405. package/dist/components/ui/separator/separator.d.ts +17 -0
  406. package/dist/components/ui/separator/separator.d.ts.map +1 -0
  407. package/dist/components/ui/separator/separator.js +24 -0
  408. package/dist/components/ui/separator/separator.js.map +1 -0
  409. package/dist/components/ui/sheet/index.d.ts +2 -0
  410. package/dist/components/ui/sheet/index.d.ts.map +1 -0
  411. package/dist/components/ui/sheet/sheet.d.ts +32 -0
  412. package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
  413. package/dist/components/ui/sheet/sheet.js +118 -0
  414. package/dist/components/ui/sheet/sheet.js.map +1 -0
  415. package/dist/components/ui/skeleton/index.d.ts +2 -0
  416. package/dist/components/ui/skeleton/index.d.ts.map +1 -0
  417. package/dist/components/ui/skeleton/skeleton.d.ts +15 -0
  418. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
  419. package/dist/components/ui/skeleton/skeleton.js +31 -0
  420. package/dist/components/ui/skeleton/skeleton.js.map +1 -0
  421. package/dist/components/ui/slider/index.d.ts +2 -0
  422. package/dist/components/ui/slider/index.d.ts.map +1 -0
  423. package/dist/components/ui/slider/slider.d.ts +22 -0
  424. package/dist/components/ui/slider/slider.d.ts.map +1 -0
  425. package/dist/components/ui/slider/slider.js +59 -0
  426. package/dist/components/ui/slider/slider.js.map +1 -0
  427. package/dist/components/ui/spinner/index.d.ts +2 -0
  428. package/dist/components/ui/spinner/index.d.ts.map +1 -0
  429. package/dist/components/ui/spinner/spinner.d.ts +25 -0
  430. package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
  431. package/dist/components/ui/spinner/spinner.js +57 -0
  432. package/dist/components/ui/spinner/spinner.js.map +1 -0
  433. package/dist/components/ui/status-chip/index.d.ts +2 -0
  434. package/dist/components/ui/status-chip/index.d.ts.map +1 -0
  435. package/dist/components/ui/status-chip/status-chip.d.ts +70 -0
  436. package/dist/components/ui/status-chip/status-chip.d.ts.map +1 -0
  437. package/dist/components/ui/status-chip/status-chip.js +140 -0
  438. package/dist/components/ui/status-chip/status-chip.js.map +1 -0
  439. package/dist/components/ui/switch/index.d.ts +2 -0
  440. package/dist/components/ui/switch/index.d.ts.map +1 -0
  441. package/dist/components/ui/switch/switch.d.ts +36 -0
  442. package/dist/components/ui/switch/switch.d.ts.map +1 -0
  443. package/dist/components/ui/switch/switch.js +74 -0
  444. package/dist/components/ui/switch/switch.js.map +1 -0
  445. package/dist/components/ui/table/index.d.ts +2 -0
  446. package/dist/components/ui/table/index.d.ts.map +1 -0
  447. package/dist/components/ui/table/table.d.ts +29 -0
  448. package/dist/components/ui/table/table.d.ts.map +1 -0
  449. package/dist/components/ui/table/table.js +129 -0
  450. package/dist/components/ui/table/table.js.map +1 -0
  451. package/dist/components/ui/tabs/index.d.ts +2 -0
  452. package/dist/components/ui/tabs/index.d.ts.map +1 -0
  453. package/dist/components/ui/tabs/tabs.d.ts +23 -0
  454. package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
  455. package/dist/components/ui/tabs/tabs.js +43 -0
  456. package/dist/components/ui/tabs/tabs.js.map +1 -0
  457. package/dist/components/ui/textarea/index.d.ts +2 -0
  458. package/dist/components/ui/textarea/index.d.ts.map +1 -0
  459. package/dist/components/ui/textarea/textarea.d.ts +14 -0
  460. package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
  461. package/dist/components/ui/textarea/textarea.js +30 -0
  462. package/dist/components/ui/textarea/textarea.js.map +1 -0
  463. package/dist/components/ui/toast/index.d.ts +2 -0
  464. package/dist/components/ui/toast/index.d.ts.map +1 -0
  465. package/dist/components/ui/toast/toast.d.ts +68 -0
  466. package/dist/components/ui/toast/toast.d.ts.map +1 -0
  467. package/dist/components/ui/toast/toast.js +186 -0
  468. package/dist/components/ui/toast/toast.js.map +1 -0
  469. package/dist/components/ui/toggle/index.d.ts +2 -0
  470. package/dist/components/ui/toggle/index.d.ts.map +1 -0
  471. package/dist/components/ui/toggle/toggle.d.ts +22 -0
  472. package/dist/components/ui/toggle/toggle.d.ts.map +1 -0
  473. package/dist/components/ui/toggle/toggle.js +64 -0
  474. package/dist/components/ui/toggle/toggle.js.map +1 -0
  475. package/dist/components/ui/toggle-group/index.d.ts +2 -0
  476. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  477. package/dist/components/ui/toggle-group/toggle-group.d.ts +35 -0
  478. package/dist/components/ui/toggle-group/toggle-group.d.ts.map +1 -0
  479. package/dist/components/ui/toggle-group/toggle-group.js +38 -0
  480. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -0
  481. package/dist/components/ui/tooltip/index.d.ts +2 -0
  482. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  483. package/dist/components/ui/tooltip/tooltip.d.ts +18 -0
  484. package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
  485. package/dist/components/ui/tooltip/tooltip.js +67 -0
  486. package/dist/components/ui/tooltip/tooltip.js.map +1 -0
  487. package/dist/index.d.ts +96 -19
  488. package/dist/index.d.ts.map +1 -0
  489. package/dist/index.js +90 -20
  490. package/dist/lib/keyed-rows.d.ts +36 -0
  491. package/dist/lib/keyed-rows.d.ts.map +1 -0
  492. package/dist/lib/keyed-rows.js +53 -0
  493. package/dist/lib/keyed-rows.js.map +1 -0
  494. package/dist/lib/keyed-rows.test.d.ts +2 -0
  495. package/dist/lib/keyed-rows.test.d.ts.map +1 -0
  496. package/dist/lib/overlay.d.ts +44 -0
  497. package/dist/lib/overlay.d.ts.map +1 -0
  498. package/dist/lib/overlay.js +57 -0
  499. package/dist/lib/overlay.js.map +1 -0
  500. package/dist/lib/themes.d.ts +197 -0
  501. package/dist/lib/themes.d.ts.map +1 -0
  502. package/dist/lib/themes.js +303 -0
  503. package/dist/lib/themes.js.map +1 -0
  504. package/dist/lib/tokens.d.ts +103 -0
  505. package/dist/lib/tokens.d.ts.map +1 -0
  506. package/dist/lib/tokens.js +805 -0
  507. package/dist/lib/tokens.js.map +1 -0
  508. package/dist/lib/utils.d.ts +27 -0
  509. package/dist/lib/utils.d.ts.map +1 -0
  510. package/dist/lib/utils.js +61 -3
  511. package/dist/lib/utils.js.map +1 -0
  512. package/dist/lib/variants.d.ts +57 -0
  513. package/dist/lib/variants.d.ts.map +1 -0
  514. package/dist/lib/variants.js +49 -0
  515. package/dist/lib/variants.js.map +1 -0
  516. package/dist/lib/version-notes.d.ts +24 -0
  517. package/dist/lib/version-notes.d.ts.map +1 -0
  518. package/dist/lib/version-notes.js +41 -1
  519. package/dist/lib/version-notes.js.map +1 -0
  520. package/dist/r/accordion.json +23 -0
  521. package/dist/r/account-menu.json +25 -0
  522. package/dist/r/alert-dialog.json +22 -0
  523. package/dist/r/alert.json +22 -0
  524. package/dist/r/app-shell.json +20 -0
  525. package/dist/r/aspect-ratio.json +20 -0
  526. package/dist/r/avatar.json +20 -0
  527. package/dist/r/badge.json +22 -0
  528. package/dist/r/board.json +20 -0
  529. package/dist/r/breadcrumb.json +22 -0
  530. package/dist/r/button-group.json +22 -0
  531. package/dist/r/button.json +22 -0
  532. package/dist/r/calendar.json +25 -0
  533. package/dist/r/card.json +20 -0
  534. package/dist/r/carousel.json +26 -0
  535. package/dist/r/chart.json +23 -0
  536. package/dist/r/checkbox.json +23 -0
  537. package/dist/r/code-block.json +24 -0
  538. package/dist/r/collapsible.json +22 -0
  539. package/dist/r/combobox.json +23 -0
  540. package/dist/r/command.json +23 -0
  541. package/dist/r/context-menu.json +23 -0
  542. package/dist/r/conversation.json +48 -0
  543. package/dist/r/detail-panel.json +24 -0
  544. package/dist/r/dialog.json +23 -0
  545. package/dist/r/diff-block.json +20 -0
  546. package/dist/r/drawer.json +22 -0
  547. package/dist/r/dropdown-menu.json +23 -0
  548. package/dist/r/empty.json +20 -0
  549. package/dist/r/entity-icon.json +20 -0
  550. package/dist/r/field.json +22 -0
  551. package/dist/r/hover-card.json +22 -0
  552. package/dist/r/input-group.json +20 -0
  553. package/dist/r/input-otp.json +22 -0
  554. package/dist/r/input.json +20 -0
  555. package/dist/r/item.json +20 -0
  556. package/dist/r/kbd.json +20 -0
  557. package/dist/r/label.json +20 -0
  558. package/dist/r/list-row.json +22 -0
  559. package/dist/r/menubar.json +23 -0
  560. package/dist/r/modal-dialog.json +22 -0
  561. package/dist/r/navigation-menu.json +23 -0
  562. package/dist/r/page.json +20 -0
  563. package/dist/r/pagination.json +23 -0
  564. package/dist/r/panel.json +20 -0
  565. package/dist/r/popover.json +22 -0
  566. package/dist/r/progress.json +22 -0
  567. package/dist/r/radio-group.json +23 -0
  568. package/dist/r/registry.json +1676 -0
  569. package/dist/r/resizable.json +23 -0
  570. package/dist/r/scroll-area.json +20 -0
  571. package/dist/r/select.json +23 -0
  572. package/dist/r/separator.json +22 -0
  573. package/dist/r/settings.json +20 -0
  574. package/dist/r/sheet.json +25 -0
  575. package/dist/r/side-rail.json +27 -0
  576. package/dist/r/sidebar-nav.json +23 -0
  577. package/dist/r/skeleton.json +20 -0
  578. package/dist/r/slider.json +22 -0
  579. package/dist/r/spinner.json +22 -0
  580. package/dist/r/stat.json +22 -0
  581. package/dist/r/status-bar.json +20 -0
  582. package/dist/r/status-chip.json +22 -0
  583. package/dist/r/switch.json +22 -0
  584. package/dist/r/table.json +20 -0
  585. package/dist/r/tabs.json +22 -0
  586. package/dist/r/textarea.json +20 -0
  587. package/dist/r/theme.json +36 -0
  588. package/dist/r/toast.json +23 -0
  589. package/dist/r/toggle-group.json +24 -0
  590. package/dist/r/toggle.json +22 -0
  591. package/dist/r/tooltip.json +22 -0
  592. package/dist/r/top-bar.json +20 -0
  593. package/dist/r/update-dialog.json +27 -0
  594. package/dist/r/workspace-mark.json +22 -0
  595. package/package.json +75 -21
  596. package/registry.json +1676 -0
  597. package/src/components/composites/account-menu/account-menu.tsx +150 -0
  598. package/src/components/composites/account-menu/index.ts +1 -0
  599. package/src/components/composites/list-row/index.ts +1 -0
  600. package/src/components/composites/list-row/list-row.tsx +116 -0
  601. package/src/components/composites/settings/index.ts +1 -0
  602. package/src/components/composites/settings/settings.tsx +142 -0
  603. package/src/components/composites/stat/index.ts +9 -0
  604. package/src/components/composites/stat/stat.tsx +155 -0
  605. package/src/components/composites/update-dialog/index.ts +7 -0
  606. package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  607. package/src/components/composites/workspace-mark/index.ts +1 -0
  608. package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  609. package/src/components/conversation/conversation-avatar.tsx +60 -0
  610. package/src/components/conversation/conversation-surface.tsx +107 -0
  611. package/src/components/conversation/index.ts +25 -0
  612. package/src/components/conversation/message-composer.tsx +239 -0
  613. package/src/components/conversation/message-row.tsx +387 -0
  614. package/src/components/conversation/thread-panel.tsx +141 -0
  615. package/src/components/layout/app-shell/app-shell.tsx +92 -0
  616. package/src/components/layout/app-shell/index.ts +1 -0
  617. package/src/components/layout/page/index.ts +9 -0
  618. package/src/components/layout/page/page.tsx +122 -0
  619. package/src/components/layout/panel/index.ts +12 -0
  620. package/src/components/layout/panel/panel.tsx +166 -0
  621. package/src/components/layout/side-rail/index.ts +12 -0
  622. package/src/components/layout/side-rail/side-rail-context.ts +42 -0
  623. package/src/components/layout/side-rail/side-rail.tsx +405 -0
  624. package/src/components/layout/sidebar-nav/index.ts +14 -0
  625. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  626. package/src/components/layout/status-bar/index.ts +1 -0
  627. package/src/components/layout/status-bar/status-bar.tsx +73 -0
  628. package/src/components/layout/top-bar/index.ts +10 -0
  629. package/src/components/layout/top-bar/top-bar.tsx +166 -0
  630. package/src/components/motion/index.ts +2 -0
  631. package/src/components/motion/presence.tsx +32 -0
  632. package/src/components/theme/appearance-panel.tsx +179 -0
  633. package/src/components/theme/index.ts +22 -0
  634. package/src/components/theme/theme-picker.tsx +174 -0
  635. package/src/components/theme/theme-provider.tsx +309 -0
  636. package/src/components/theme/theme-toggle.tsx +64 -0
  637. package/src/components/ui/accordion/accordion.tsx +66 -0
  638. package/src/components/ui/accordion/index.ts +1 -0
  639. package/src/components/ui/alert/alert.tsx +95 -0
  640. package/src/components/ui/alert/index.ts +1 -0
  641. package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  642. package/src/components/ui/alert-dialog/index.ts +13 -0
  643. package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  644. package/src/components/ui/aspect-ratio/index.ts +1 -0
  645. package/src/components/ui/avatar/avatar.tsx +114 -0
  646. package/src/components/ui/avatar/index.ts +9 -0
  647. package/src/components/ui/badge/badge.tsx +59 -0
  648. package/src/components/ui/badge/index.ts +1 -0
  649. package/src/components/ui/board/board.tsx +254 -0
  650. package/src/components/ui/board/index.ts +10 -0
  651. package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  652. package/src/components/ui/breadcrumb/index.ts +9 -0
  653. package/src/components/ui/button/button.tsx +89 -0
  654. package/src/components/ui/button/index.ts +1 -0
  655. package/src/components/ui/button-group/button-group.tsx +92 -0
  656. package/src/components/ui/button-group/index.ts +6 -0
  657. package/src/components/ui/calendar/calendar.tsx +277 -0
  658. package/src/components/ui/calendar/index.ts +1 -0
  659. package/src/components/ui/card/card.tsx +82 -0
  660. package/src/components/ui/card/index.ts +10 -0
  661. package/src/components/ui/carousel/carousel.tsx +209 -0
  662. package/src/components/ui/carousel/index.ts +1 -0
  663. package/src/components/ui/chart/chart.tsx +413 -0
  664. package/src/components/ui/chart/index.ts +17 -0
  665. package/src/components/ui/checkbox/checkbox.tsx +99 -0
  666. package/src/components/ui/checkbox/index.ts +1 -0
  667. package/src/components/ui/code-block/code-block.tsx +238 -0
  668. package/src/components/ui/code-block/index.ts +1 -0
  669. package/src/components/ui/collapsible/collapsible.tsx +54 -0
  670. package/src/components/ui/collapsible/index.ts +1 -0
  671. package/src/components/ui/combobox/combobox.tsx +142 -0
  672. package/src/components/ui/combobox/index.ts +10 -0
  673. package/src/components/ui/command/command.tsx +214 -0
  674. package/src/components/ui/command/index.ts +12 -0
  675. package/src/components/ui/context-menu/context-menu.tsx +163 -0
  676. package/src/components/ui/context-menu/index.ts +15 -0
  677. package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  678. package/src/components/ui/detail-panel/index.ts +9 -0
  679. package/src/components/ui/dialog/dialog.tsx +138 -0
  680. package/src/components/ui/dialog/index.ts +14 -0
  681. package/src/components/ui/diff-block/diff-block.tsx +286 -0
  682. package/src/components/ui/diff-block/index.ts +11 -0
  683. package/src/components/ui/drawer/drawer.tsx +144 -0
  684. package/src/components/ui/drawer/index.ts +13 -0
  685. package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  686. package/src/components/ui/dropdown-menu/index.ts +18 -0
  687. package/src/components/ui/empty/empty.tsx +104 -0
  688. package/src/components/ui/empty/index.ts +10 -0
  689. package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  690. package/src/components/ui/entity-icon/index.ts +1 -0
  691. package/src/components/ui/field/field.tsx +131 -0
  692. package/src/components/ui/field/index.ts +11 -0
  693. package/src/components/ui/hover-card/hover-card.tsx +48 -0
  694. package/src/components/ui/hover-card/index.ts +1 -0
  695. package/src/components/ui/input/index.ts +1 -0
  696. package/src/components/ui/input/input.tsx +41 -0
  697. package/src/components/ui/input-group/index.ts +8 -0
  698. package/src/components/ui/input-group/input-group.tsx +111 -0
  699. package/src/components/ui/input-otp/index.ts +1 -0
  700. package/src/components/ui/input-otp/input-otp.tsx +108 -0
  701. package/src/components/ui/item/index.ts +10 -0
  702. package/src/components/ui/item/item.tsx +146 -0
  703. package/src/components/ui/kbd/index.ts +1 -0
  704. package/src/components/ui/kbd/kbd.tsx +42 -0
  705. package/src/components/ui/label/index.ts +1 -0
  706. package/src/components/ui/label/label.tsx +36 -0
  707. package/src/components/ui/menubar/index.ts +16 -0
  708. package/src/components/ui/menubar/menubar.tsx +190 -0
  709. package/src/components/ui/modal-dialog/index.ts +1 -0
  710. package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  711. package/src/components/ui/navigation-menu/index.ts +13 -0
  712. package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  713. package/src/components/ui/pagination/index.ts +8 -0
  714. package/src/components/ui/pagination/pagination.tsx +144 -0
  715. package/src/components/ui/popover/index.ts +10 -0
  716. package/src/components/ui/popover/popover.tsx +81 -0
  717. package/src/components/ui/progress/index.ts +1 -0
  718. package/src/components/ui/progress/progress.tsx +67 -0
  719. package/src/components/ui/radio-group/index.ts +1 -0
  720. package/src/components/ui/radio-group/radio-group.tsx +78 -0
  721. package/src/components/ui/resizable/index.ts +6 -0
  722. package/src/components/ui/resizable/resizable.tsx +74 -0
  723. package/src/components/ui/scroll-area/index.ts +1 -0
  724. package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  725. package/src/components/ui/select/index.ts +11 -0
  726. package/src/components/ui/select/select.tsx +188 -0
  727. package/src/components/ui/separator/index.ts +1 -0
  728. package/src/components/ui/separator/separator.tsx +40 -0
  729. package/src/components/ui/sheet/index.ts +13 -0
  730. package/src/components/ui/sheet/sheet.tsx +132 -0
  731. package/src/components/ui/skeleton/index.ts +1 -0
  732. package/src/components/ui/skeleton/skeleton.tsx +28 -0
  733. package/src/components/ui/slider/index.ts +1 -0
  734. package/src/components/ui/slider/slider.tsx +81 -0
  735. package/src/components/ui/spinner/index.ts +1 -0
  736. package/src/components/ui/spinner/spinner.tsx +58 -0
  737. package/src/components/ui/status-chip/index.ts +8 -0
  738. package/src/components/ui/status-chip/status-chip.tsx +142 -0
  739. package/src/components/ui/switch/index.ts +1 -0
  740. package/src/components/ui/switch/switch.tsx +100 -0
  741. package/src/components/ui/table/index.ts +11 -0
  742. package/src/components/ui/table/table.tsx +125 -0
  743. package/src/components/ui/tabs/index.ts +8 -0
  744. package/src/components/ui/tabs/tabs.tsx +77 -0
  745. package/src/components/ui/textarea/index.ts +1 -0
  746. package/src/components/ui/textarea/textarea.tsx +36 -0
  747. package/src/components/ui/toast/index.ts +1 -0
  748. package/src/components/ui/toast/toast.tsx +220 -0
  749. package/src/components/ui/toggle/index.ts +1 -0
  750. package/src/components/ui/toggle/toggle.tsx +60 -0
  751. package/src/components/ui/toggle-group/index.ts +6 -0
  752. package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  753. package/src/components/ui/tooltip/index.ts +9 -0
  754. package/src/components/ui/tooltip/tooltip.tsx +102 -0
  755. package/src/index.ts +154 -0
  756. package/src/lib/keyed-rows.ts +68 -0
  757. package/src/lib/overlay.ts +70 -0
  758. package/src/lib/themes.ts +490 -0
  759. package/src/lib/tokens.ts +688 -0
  760. package/src/lib/utils.ts +74 -4
  761. package/src/lib/variants.ts +62 -0
  762. package/src/lib/version-notes.ts +35 -0
  763. package/src/styles/base.css +489 -484
  764. package/src/styles/fonts.css +26 -0
  765. package/src/styles/globals.css +14 -3
  766. package/src/styles/theme.css +838 -229
  767. package/LICENSE +0 -201
  768. package/dist/components/account-drawer.d.ts +0 -11
  769. package/dist/components/account-drawer.js +0 -120
  770. package/dist/components/appearance.d.ts +0 -261
  771. package/dist/components/appearance.js +0 -802
  772. package/dist/components/on-screen-controls.d.ts +0 -8
  773. package/dist/components/on-screen-controls.js +0 -162
  774. package/dist/components/scene-settings.d.ts +0 -33
  775. package/dist/components/scene-settings.js +0 -253
  776. package/dist/components/theme-preview.d.ts +0 -40
  777. package/dist/components/theme-preview.js +0 -210
  778. package/dist/components/theme-provider.d.ts +0 -52
  779. package/dist/components/theme-provider.js +0 -128
  780. package/dist/components/theme-swatch.d.ts +0 -12
  781. package/dist/components/theme-swatch.js +0 -66
  782. package/dist/components/theme-toggle.d.ts +0 -7
  783. package/dist/components/theme-toggle.js +0 -64
  784. package/dist/components/ui/badge.d.ts +0 -8
  785. package/dist/components/ui/badge.js +0 -34
  786. package/dist/components/ui/button.d.ts +0 -9
  787. package/dist/components/ui/button.js +0 -52
  788. package/dist/components/ui/card.d.ts +0 -4
  789. package/dist/components/ui/card.js +0 -28
  790. package/dist/components/ui/dialog.d.ts +0 -15
  791. package/dist/components/ui/dialog.js +0 -104
  792. package/dist/components/ui/drawer.d.ts +0 -24
  793. package/dist/components/ui/drawer.js +0 -120
  794. package/dist/components/ui/dropdown-menu.d.ts +0 -35
  795. package/dist/components/ui/dropdown-menu.js +0 -180
  796. package/dist/components/ui/empty.d.ts +0 -12
  797. package/dist/components/ui/field.d.ts +0 -25
  798. package/dist/components/ui/field.js +0 -188
  799. package/dist/components/ui/input.d.ts +0 -3
  800. package/dist/components/ui/input.js +0 -22
  801. package/dist/components/ui/label.d.ts +0 -3
  802. package/dist/components/ui/label.js +0 -17
  803. package/dist/components/ui/radio-group.d.ts +0 -5
  804. package/dist/components/ui/radio-group.js +0 -39
  805. package/dist/components/ui/separator.d.ts +0 -7
  806. package/dist/components/ui/separator.js +0 -20
  807. package/dist/components/ui/skeleton.d.ts +0 -3
  808. package/dist/components/ui/skeleton.js +0 -17
  809. package/dist/components/ui/spinner.d.ts +0 -5
  810. package/dist/components/ui/spinner.js +0 -17
  811. package/dist/components/ui/switch.d.ts +0 -8
  812. package/dist/components/ui/switch.js +0 -59
  813. package/dist/components/ui/tabs.d.ts +0 -11
  814. package/dist/components/ui/tabs.js +0 -57
  815. package/dist/components/ui/toggle-group.d.ts +0 -13
  816. package/dist/components/ui/toggle-group.js +0 -95
  817. package/dist/components/ui/toggle.d.ts +0 -10
  818. package/dist/components/ui/toggle.js +0 -41
  819. package/dist/components/ui/tooltip.d.ts +0 -15
  820. package/dist/components/ui/tooltip.js +0 -55
  821. package/dist/components/version-dialog.d.ts +0 -25
  822. package/dist/components/version-dialog.js +0 -330
  823. package/dist/components/workspace-brand.d.ts +0 -5
  824. package/dist/components/workspace-brand.js +0 -13
  825. package/dist/components/workspace-logo.d.ts +0 -3
  826. package/dist/components/workspace-logo.js +0 -17
  827. package/src/components/account-drawer.tsx +0 -114
  828. package/src/components/appearance.ts +0 -1112
  829. package/src/components/on-screen-controls.tsx +0 -149
  830. package/src/components/scene-settings.tsx +0 -199
  831. package/src/components/theme-preview.tsx +0 -170
  832. package/src/components/theme-provider.tsx +0 -214
  833. package/src/components/theme-swatch.tsx +0 -49
  834. package/src/components/theme-toggle.tsx +0 -48
  835. package/src/components/ui/badge.tsx +0 -40
  836. package/src/components/ui/button.tsx +0 -58
  837. package/src/components/ui/card.tsx +0 -21
  838. package/src/components/ui/dialog.tsx +0 -132
  839. package/src/components/ui/drawer.tsx +0 -168
  840. package/src/components/ui/dropdown-menu.tsx +0 -235
  841. package/src/components/ui/empty.tsx +0 -97
  842. package/src/components/ui/field.tsx +0 -220
  843. package/src/components/ui/input.tsx +0 -20
  844. package/src/components/ui/label.tsx +0 -19
  845. package/src/components/ui/radio-group.tsx +0 -41
  846. package/src/components/ui/separator.tsx +0 -28
  847. package/src/components/ui/skeleton.tsx +0 -16
  848. package/src/components/ui/spinner.tsx +0 -20
  849. package/src/components/ui/switch.tsx +0 -59
  850. package/src/components/ui/tabs.tsx +0 -76
  851. package/src/components/ui/toggle-group.tsx +0 -98
  852. package/src/components/ui/toggle.tsx +0 -42
  853. package/src/components/ui/tooltip.tsx +0 -61
  854. package/src/components/version-dialog.tsx +0 -368
  855. package/src/components/workspace-brand.tsx +0 -18
  856. package/src/components/workspace-logo.tsx +0 -21
  857. package/src/index.tsx +0 -53
  858. package/src/styles/auth-shell.css +0 -167
  859. package/src/styles/conventional-workspace.css +0 -2858
  860. package/src/styles/dev-view.css +0 -899
  861. package/src/styles/workspace-shell.css +0 -82
  862. package/tsconfig.json +0 -11
@@ -0,0 +1,203 @@
1
+ import { DropdownMenu as KobalteDropdownMenu } from '@kobalte/core/dropdown-menu'
2
+ import { Check, ChevronRight, Circle } from 'lucide-solid'
3
+ import type { ComponentProps } from 'solid-js'
4
+ import { splitProps } from 'solid-js'
5
+ import {
6
+ menuContentPadding,
7
+ menuItem,
8
+ menuLabel,
9
+ menuSeparator,
10
+ overlayMotion,
11
+ overlaySurface,
12
+ popoverArrow,
13
+ } from '#lib/overlay'
14
+ import { cn } from '#lib/utils'
15
+
16
+ /**
17
+ * DropdownMenu.
18
+ *
19
+ * A list of actions on a trigger. This is the right home for "what can I do
20
+ * with this thing": rename, duplicate, export, delete. It is not a Select
21
+ * (which holds a *value* the user is choosing) and not a Popover (which holds
22
+ * arbitrary content).
23
+ *
24
+ * Kobalte supplies the full menu contract — arrow keys, typeahead, the roving
25
+ * highlight, Escape to close and return focus — which is exactly what a
26
+ * hand-rolled `div` with click handlers gets wrong.
27
+ *
28
+ * The `destructive` variant on an item is a *colour*, not a confirmation.
29
+ * Pairing it with an AlertDialog is the caller's job.
30
+ */
31
+ export function DropdownMenu(props: ComponentProps<typeof KobalteDropdownMenu>) {
32
+ return <KobalteDropdownMenu {...props} />
33
+ }
34
+
35
+ export function DropdownMenuTrigger(props: ComponentProps<typeof KobalteDropdownMenu.Trigger>) {
36
+ return <KobalteDropdownMenu.Trigger {...props} />
37
+ }
38
+
39
+ export function DropdownMenuPortal(props: ComponentProps<typeof KobalteDropdownMenu.Portal>) {
40
+ return <KobalteDropdownMenu.Portal {...props} />
41
+ }
42
+
43
+ export type DropdownMenuContentProps = ComponentProps<typeof KobalteDropdownMenu.Content> & {
44
+ hideArrow?: boolean
45
+ }
46
+
47
+ export function DropdownMenuContent(props: DropdownMenuContentProps) {
48
+ const [local, rest] = splitProps(props, ['class', 'hideArrow', 'children'])
49
+
50
+ return (
51
+ <KobalteDropdownMenu.Portal>
52
+ <KobalteDropdownMenu.Content
53
+ class={cn(
54
+ overlaySurface,
55
+ overlayMotion,
56
+ 'z-(--z-menu) min-w-[10rem] origin-(--kb-menu-content-transform-origin) overflow-hidden',
57
+ menuContentPadding,
58
+ local.class
59
+ )}
60
+ {...rest}
61
+ >
62
+ {!local.hideArrow && <KobalteDropdownMenu.Arrow aria-hidden="true" class={popoverArrow} />}
63
+ {local.children}
64
+ </KobalteDropdownMenu.Content>
65
+ </KobalteDropdownMenu.Portal>
66
+ )
67
+ }
68
+
69
+ export function DropdownMenuItem(
70
+ props: ComponentProps<typeof KobalteDropdownMenu.Item> & {
71
+ /** Colour the row as a destructive action. Confirm it separately. */
72
+ variant?: 'default' | 'destructive'
73
+ /** Draw a shortcut hint at the trailing edge of the row. */
74
+ shortcut?: string
75
+ }
76
+ ) {
77
+ const [local, rest] = splitProps(props, ['class', 'variant', 'shortcut', 'children'])
78
+
79
+ return (
80
+ <KobalteDropdownMenu.Item
81
+ class={cn(
82
+ menuItem,
83
+ {
84
+ 'text-destructive data-[highlighted]:bg-destructive-subtle data-[highlighted]:text-destructive':
85
+ local.variant === 'destructive',
86
+ },
87
+ local.class
88
+ )}
89
+ {...rest}
90
+ >
91
+ {local.children}
92
+ {local.shortcut ? (
93
+ <span class="text-muted-foreground ms-auto font-mono text-2xs tracking-widest">
94
+ {local.shortcut}
95
+ </span>
96
+ ) : null}
97
+ </KobalteDropdownMenu.Item>
98
+ )
99
+ }
100
+
101
+ /**
102
+ * The chord drawn at a row's trailing edge.
103
+ *
104
+ * A component as well as the `shortcut` prop on an item, because a caller composing
105
+ * a row by hand needs the same treatment — and because the alternative is every
106
+ * caller inventing the same mono-and-dimmed span.
107
+ */
108
+ export function DropdownMenuShortcut(props: ComponentProps<'span'>) {
109
+ const [local, rest] = splitProps(props, ['class'])
110
+ return (
111
+ <span
112
+ data-slot="dropdown-menu-shortcut"
113
+ class={cn('text-muted-foreground ms-auto font-mono text-2xs tracking-widest', local.class)}
114
+ {...rest}
115
+ />
116
+ )
117
+ }
118
+
119
+ export function DropdownMenuCheckboxItem(
120
+ props: ComponentProps<typeof KobalteDropdownMenu.CheckboxItem>
121
+ ) {
122
+ const [local, rest] = splitProps(props, ['class', 'children'])
123
+
124
+ return (
125
+ <KobalteDropdownMenu.CheckboxItem class={cn(menuItem, 'pe-8', local.class)} {...rest}>
126
+ {local.children}
127
+ <KobalteDropdownMenu.ItemIndicator class="absolute end-2 flex size-4 items-center justify-center">
128
+ <Check class="size-4" />
129
+ </KobalteDropdownMenu.ItemIndicator>
130
+ </KobalteDropdownMenu.CheckboxItem>
131
+ )
132
+ }
133
+
134
+ export function DropdownMenuRadioGroup(
135
+ props: ComponentProps<typeof KobalteDropdownMenu.RadioGroup>
136
+ ) {
137
+ return <KobalteDropdownMenu.RadioGroup {...props} />
138
+ }
139
+
140
+ export function DropdownMenuRadioItem(props: ComponentProps<typeof KobalteDropdownMenu.RadioItem>) {
141
+ const [local, rest] = splitProps(props, ['class', 'children'])
142
+
143
+ return (
144
+ <KobalteDropdownMenu.RadioItem class={cn(menuItem, 'pe-8', local.class)} {...rest}>
145
+ {local.children}
146
+ <KobalteDropdownMenu.ItemIndicator class="absolute end-2 flex size-4 items-center justify-center">
147
+ <Circle class="size-2 fill-current" />
148
+ </KobalteDropdownMenu.ItemIndicator>
149
+ </KobalteDropdownMenu.RadioItem>
150
+ )
151
+ }
152
+
153
+ export function DropdownMenuLabel(props: ComponentProps<typeof KobalteDropdownMenu.GroupLabel>) {
154
+ const [local, rest] = splitProps(props, ['class'])
155
+ return <KobalteDropdownMenu.GroupLabel class={cn(menuLabel, local.class)} {...rest} />
156
+ }
157
+
158
+ export function DropdownMenuGroup(props: ComponentProps<typeof KobalteDropdownMenu.Group>) {
159
+ return <KobalteDropdownMenu.Group {...props} />
160
+ }
161
+
162
+ export function DropdownMenuSeparator(props: ComponentProps<typeof KobalteDropdownMenu.Separator>) {
163
+ const [local, rest] = splitProps(props, ['class'])
164
+ return <KobalteDropdownMenu.Separator class={cn(menuSeparator, local.class)} {...rest} />
165
+ }
166
+
167
+ export function DropdownMenuSub(props: ComponentProps<typeof KobalteDropdownMenu.Sub>) {
168
+ return <KobalteDropdownMenu.Sub {...props} />
169
+ }
170
+
171
+ export function DropdownMenuSubTrigger(
172
+ props: ComponentProps<typeof KobalteDropdownMenu.SubTrigger>
173
+ ) {
174
+ const [local, rest] = splitProps(props, ['class', 'children'])
175
+
176
+ return (
177
+ <KobalteDropdownMenu.SubTrigger class={cn(menuItem, local.class)} {...rest}>
178
+ {local.children}
179
+ <ChevronRight class="ms-auto size-4" />
180
+ </KobalteDropdownMenu.SubTrigger>
181
+ )
182
+ }
183
+
184
+ export function DropdownMenuSubContent(
185
+ props: ComponentProps<typeof KobalteDropdownMenu.SubContent>
186
+ ) {
187
+ const [local, rest] = splitProps(props, ['class'])
188
+
189
+ return (
190
+ <KobalteDropdownMenu.Portal>
191
+ <KobalteDropdownMenu.SubContent
192
+ class={cn(
193
+ overlaySurface,
194
+ overlayMotion,
195
+ 'z-(--z-menu) min-w-[8rem] origin-(--kb-menu-content-transform-origin) overflow-hidden',
196
+ menuContentPadding,
197
+ local.class
198
+ )}
199
+ {...rest}
200
+ />
201
+ </KobalteDropdownMenu.Portal>
202
+ )
203
+ }
@@ -0,0 +1,18 @@
1
+ export {
2
+ DropdownMenu,
3
+ DropdownMenuCheckboxItem,
4
+ DropdownMenuContent,
5
+ DropdownMenuGroup,
6
+ DropdownMenuItem,
7
+ DropdownMenuLabel,
8
+ DropdownMenuPortal,
9
+ DropdownMenuRadioGroup,
10
+ DropdownMenuRadioItem,
11
+ DropdownMenuSeparator,
12
+ DropdownMenuShortcut,
13
+ DropdownMenuSub,
14
+ DropdownMenuSubContent,
15
+ DropdownMenuSubTrigger,
16
+ DropdownMenuTrigger,
17
+ type DropdownMenuContentProps,
18
+ } from './dropdown-menu'
@@ -0,0 +1,104 @@
1
+ import type { ComponentProps, JSX } from 'solid-js'
2
+ import { splitProps } from 'solid-js'
3
+ import { cn } from '#lib/utils'
4
+
5
+ /**
6
+ * Empty.
7
+ *
8
+ * The state of a region that has nothing to show yet, or after a filter
9
+ * removed everything. It exists as a component because an empty state is where
10
+ * apps most often improvise: a bare grey sentence in one view and a centred
11
+ * illustration with two buttons in another.
12
+ *
13
+ * The shape is fixed — media, title, description, actions — so the only
14
+ * decisions a caller makes are which parts to include. A region with an
15
+ * action to offer must give `EmptyContent` something focusable, otherwise the
16
+ * state is a dead end.
17
+ */
18
+ export function Empty(props: ComponentProps<'div'>) {
19
+ const [local, rest] = splitProps(props, ['class'])
20
+
21
+ return (
22
+ <div
23
+ data-slot="empty"
24
+ class={cn(
25
+ 'flex min-h-40 w-full flex-col items-center justify-center gap-4 rounded-lg px-6 py-10 text-center text-balance',
26
+ local.class
27
+ )}
28
+ {...rest}
29
+ />
30
+ )
31
+ }
32
+
33
+ export function EmptyHeader(props: ComponentProps<'div'>) {
34
+ const [local, rest] = splitProps(props, ['class'])
35
+ return (
36
+ <div
37
+ data-slot="empty-header"
38
+ class={cn('flex max-w-sm flex-col items-center gap-1.5', local.class)}
39
+ {...rest}
40
+ />
41
+ )
42
+ }
43
+
44
+ export type EmptyMediaProps = ComponentProps<'div'> & {
45
+ variant?: 'icon' | 'image'
46
+ }
47
+
48
+ export function EmptyMedia(props: EmptyMediaProps) {
49
+ const [local, rest] = splitProps(props, ['class', 'variant'])
50
+
51
+ return (
52
+ <div
53
+ data-slot="empty-media"
54
+ class={cn(
55
+ 'flex shrink-0 items-center justify-center',
56
+ {
57
+ 'bg-muted text-muted-foreground size-9 rounded-lg [&_svg]:size-4':
58
+ local.variant !== 'image',
59
+ 'size-24 rounded-xl [&_img]:size-full [&_img]:object-contain': local.variant === 'image',
60
+ },
61
+ local.class
62
+ )}
63
+ {...rest}
64
+ />
65
+ )
66
+ }
67
+
68
+ export function EmptyTitle(props: ComponentProps<'div'>) {
69
+ const [local, rest] = splitProps(props, ['class'])
70
+ return (
71
+ <div
72
+ data-slot="empty-title"
73
+ class={cn('text-sm font-medium tracking-tight', local.class)}
74
+ {...rest}
75
+ />
76
+ )
77
+ }
78
+
79
+ export function EmptyDescription(props: ComponentProps<'div'>) {
80
+ const [local, rest] = splitProps(props, ['class'])
81
+ return (
82
+ <div
83
+ data-slot="empty-description"
84
+ class={cn(
85
+ 'text-muted-foreground text-sm [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-4',
86
+ local.class
87
+ )}
88
+ {...rest}
89
+ />
90
+ )
91
+ }
92
+
93
+ export function EmptyContent(props: ComponentProps<'div'>) {
94
+ const [local, rest] = splitProps(props, ['class'])
95
+ return (
96
+ <div
97
+ data-slot="empty-content"
98
+ class={cn('flex max-w-sm flex-col items-center gap-2', local.class)}
99
+ {...rest}
100
+ />
101
+ )
102
+ }
103
+
104
+ export type EmptyProps = ComponentProps<'div'> & { children?: JSX.Element }
@@ -0,0 +1,10 @@
1
+ export {
2
+ Empty,
3
+ EmptyContent,
4
+ EmptyDescription,
5
+ EmptyHeader,
6
+ EmptyMedia,
7
+ EmptyTitle,
8
+ type EmptyMediaProps,
9
+ type EmptyProps,
10
+ } from './empty'
@@ -0,0 +1,154 @@
1
+ import { Show, splitProps, type Component, type ComponentProps, type JSX } from 'solid-js'
2
+ import { Dynamic } from 'solid-js/web'
3
+ import { cva, type VariantProps } from '#lib/variants'
4
+ import { cn } from '#lib/utils'
5
+
6
+ /**
7
+ * EntityIcon.
8
+ *
9
+ * A tile that stands for a thing: a room, a project, an agent, an installed
10
+ * plugin, a workspace. Its job is to be identifiable in a column of its
11
+ * siblings, which is a different job from `Avatar`'s (identifying a *person*) and
12
+ * the reason the two are separate components rather than one with a `round` prop.
13
+ *
14
+ * Three decisions are baked in because getting them wrong is what makes icon
15
+ * grids look messy:
16
+ *
17
+ * 1. **A glyph is always present.** A brand with no logo gets a monogram, not an
18
+ * empty box. `fallback` takes the name and returns the glyph, so a caller can
19
+ * choose initials, a domain letter, or a kind icon.
20
+ * 2. **The tile owns its own contrast.** `tone` tints the background and the
21
+ * glyph together, so a caller never picks a colour pair and never ships an
22
+ * icon that disappears against its tile.
23
+ * 3. **Size is on the control ladder**, not arbitrary. A tile in a rail and a
24
+ * tile in a detail header are the same two or three sizes every other
25
+ * interactive element uses.
26
+ *
27
+ * `shape="rounded"` is the default because a rounded square reads as an object
28
+ * and a circle reads as a person; use `circle` only when the tile really does
29
+ * hold a face.
30
+ */
31
+ export const entityIconVariants = cva(
32
+ 'relative inline-flex shrink-0 items-center justify-center overflow-hidden border font-semibold select-none [&_svg]:pointer-events-none [&_svg]:shrink-0',
33
+ {
34
+ variants: {
35
+ shape: {
36
+ rounded: 'rounded-lg',
37
+ circle: 'rounded-full',
38
+ square: 'rounded-none',
39
+ },
40
+ size: {
41
+ xs: 'size-5 text-2xs [&_svg]:size-3',
42
+ sm: 'size-6 text-2xs [&_svg]:size-3.5',
43
+ md: 'size-8 text-xs [&_svg]:size-4',
44
+ lg: 'size-10 text-sm [&_svg]:size-5',
45
+ xl: 'size-12 text-base [&_svg]:size-6',
46
+ },
47
+ tone: {
48
+ /** Neutral: an inset tile with a hairline edge — the default. */
49
+ neutral: 'border-border bg-muted text-muted-foreground',
50
+ /** On the brand: for a thing the application itself owns. */
51
+ primary: 'border-transparent bg-primary-subtle text-primary',
52
+ /** Bare: no fill and no edge, for a tile that already sits on a surface. */
53
+ bare: 'border-transparent bg-transparent text-foreground',
54
+ success: 'border-transparent bg-success-subtle text-success',
55
+ warning: 'border-transparent bg-warning-subtle text-warning',
56
+ danger: 'border-transparent bg-destructive-subtle text-destructive',
57
+ info: 'border-transparent bg-info-subtle text-info',
58
+ },
59
+ },
60
+ defaultVariants: { shape: 'rounded', size: 'md', tone: 'neutral' },
61
+ }
62
+ )
63
+
64
+ type EntityIconVariantProps = VariantProps<typeof entityIconVariants>
65
+
66
+ export type EntityIconProps = Omit<ComponentProps<'span'>, 'children'> &
67
+ EntityIconVariantProps & {
68
+ /** The entity's name. Used for the accessible label and, via `fallback`, the monogram. */
69
+ name: string
70
+ /**
71
+ * A logo or icon — a Lucide icon reference (`icon={Wrench}`) or an element
72
+ * (`icon={<Wrench />}`). Both are accepted because both are what a caller
73
+ * naturally writes, and the difference is an implementation detail they should
74
+ * not have to know.
75
+ */
76
+ icon?: Component | JSX.Element
77
+ /** Glyph for an entity with no icon. Defaults to the name's first two letters. */
78
+ fallback?: (name: string) => JSX.Element
79
+ /** A corner badge: a status dot, an unread count, an installed tick. */
80
+ badge?: JSX.Element
81
+ /** A second edge, drawn outside the tile — an active or selected ring. */
82
+ ring?: boolean
83
+ }
84
+
85
+ /**
86
+ * Two letters from a name, chosen so the result is stable and readable: the
87
+ * first letter of the first two words when there are two ("Agent HQ" → "AH"),
88
+ * otherwise the first two characters ("Kitchen" → "Ki").
89
+ */
90
+ export function monogram(name: string): string {
91
+ const words = name.trim().split(/\s+/).filter(Boolean)
92
+ if (words.length >= 2) return (words[0]![0]! + words[1]![0]!).toUpperCase()
93
+ return name.trim().slice(0, 2)
94
+ }
95
+
96
+ /**
97
+ * A glyph is either a component reference or an element, and the two render
98
+ * differently — `Dynamic` for the first, the element itself for the second. The
99
+ * union is discriminated so the branch is checked rather than cast.
100
+ */
101
+ type Glyph = { kind: 'component'; value: Component } | { kind: 'element'; value: JSX.Element }
102
+
103
+ function Glyph(props: { glyph: Glyph }) {
104
+ return props.glyph.kind === 'component' ? (
105
+ <Dynamic component={props.glyph.value} />
106
+ ) : (
107
+ props.glyph.value
108
+ )
109
+ }
110
+
111
+ export function EntityIcon(props: EntityIconProps) {
112
+ const [local, rest] = splitProps(props, [
113
+ 'name',
114
+ 'icon',
115
+ 'fallback',
116
+ 'badge',
117
+ 'ring',
118
+ 'shape',
119
+ 'size',
120
+ 'tone',
121
+ 'class',
122
+ ])
123
+
124
+ const glyph = (): Glyph | undefined => {
125
+ const icon = local.icon
126
+ if (!icon) return undefined
127
+ return typeof icon === 'function'
128
+ ? { kind: 'component', value: icon as Component }
129
+ : { kind: 'element', value: icon as JSX.Element }
130
+ }
131
+
132
+ return (
133
+ <span
134
+ class={cn(
135
+ entityIconVariants({ shape: local.shape, size: local.size, tone: local.tone }),
136
+ local.ring && 'ring-2 ring-ring ring-offset-2 ring-offset-background',
137
+ local.class
138
+ )}
139
+ role="img"
140
+ aria-label={local.name}
141
+ {...rest}
142
+ >
143
+ <Show
144
+ when={glyph()}
145
+ fallback={local.fallback ? local.fallback(local.name) : monogram(local.name)}
146
+ >
147
+ {(value) => <Glyph glyph={value()} />}
148
+ </Show>
149
+ <Show when={local.badge}>
150
+ <span class="absolute right-0 bottom-0 translate-x-1/4 translate-y-1/4">{local.badge}</span>
151
+ </Show>
152
+ </span>
153
+ )
154
+ }
@@ -0,0 +1 @@
1
+ export { EntityIcon, entityIconVariants, monogram, type EntityIconProps } from './entity-icon'
@@ -0,0 +1,131 @@
1
+ import { TextField as KobalteTextField } from '@kobalte/core/text-field'
2
+ import type { ComponentProps } from 'solid-js'
3
+ import { Show, splitProps } from 'solid-js'
4
+ import { cn } from '#lib/utils'
5
+
6
+ /**
7
+ * Field.
8
+ *
9
+ * The wrapper that makes a form control describable and validatable: a label,
10
+ * a description, an error message, and the ARIA relationships between them.
11
+ *
12
+ * It is built on Kobalte's TextField specifically so `aria-describedby`,
13
+ * `aria-invalid` and `aria-errormessage` are wired by construction. Those three
14
+ * attributes are the difference between "this field is required and empty" and
15
+ * a red border that only a sighted user can perceive — and they are also the
16
+ * first thing a hand-rolled form drops.
17
+ *
18
+ * `Field` owns the description and the error slot, so a form's controls line up
19
+ * and its messages land in the same place regardless of which control is used.
20
+ * Compose it with any control: `Field` wraps, `Label`/`Input`/`Select` fill it.
21
+ */
22
+ export function Field(props: ComponentProps<typeof KobalteTextField>) {
23
+ const [local, rest] = splitProps(props, ['class'])
24
+ return <KobalteTextField class={cn('flex flex-col gap-1.5', local.class)} {...rest} />
25
+ }
26
+
27
+ export function FieldLabel(props: ComponentProps<typeof KobalteTextField.Label>) {
28
+ const [local, rest] = splitProps(props, ['class'])
29
+ return (
30
+ <KobalteTextField.Label class={cn('text-sm leading-none font-medium', local.class)} {...rest} />
31
+ )
32
+ }
33
+
34
+ export function FieldDescription(props: ComponentProps<typeof KobalteTextField.Description>) {
35
+ const [local, rest] = splitProps(props, ['class'])
36
+ return (
37
+ <KobalteTextField.Description
38
+ class={cn('text-muted-foreground text-sm', local.class)}
39
+ {...rest}
40
+ />
41
+ )
42
+ }
43
+
44
+ export function FieldError(props: ComponentProps<typeof KobalteTextField.ErrorMessage>) {
45
+ const [local, rest] = splitProps(props, ['class'])
46
+ return (
47
+ <KobalteTextField.ErrorMessage class={cn('text-destructive text-sm', local.class)} {...rest} />
48
+ )
49
+ }
50
+
51
+ export function FieldInput(props: ComponentProps<typeof KobalteTextField.Input>) {
52
+ const [local, rest] = splitProps(props, ['class'])
53
+
54
+ return (
55
+ <KobalteTextField.Input
56
+ class={cn(
57
+ 'h-control-md w-full min-w-0 rounded-md border border-input bg-transparent px-control-md py-1 text-sm',
58
+ 'transition-[color,box-shadow,border-color] ease-out outline-none',
59
+ 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',
60
+ 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',
61
+ 'aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive-subtle',
62
+ 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',
63
+ local.class
64
+ )}
65
+ {...rest}
66
+ />
67
+ )
68
+ }
69
+
70
+ export function FieldTextArea(props: ComponentProps<typeof KobalteTextField.TextArea>) {
71
+ const [local, rest] = splitProps(props, ['class'])
72
+
73
+ return (
74
+ <KobalteTextField.TextArea
75
+ class={cn(
76
+ 'flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-control-md py-2 text-sm',
77
+ 'transition-[color,box-shadow,border-color] ease-out outline-none resize-y',
78
+ 'placeholder:text-muted-foreground',
79
+ 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',
80
+ 'aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive-subtle',
81
+ 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',
82
+ local.class
83
+ )}
84
+ {...rest}
85
+ />
86
+ )
87
+ }
88
+
89
+ /**
90
+ * A labelled group of fields with a single legend, for a real `<fieldset>`.
91
+ * Grouping is what lets a screen reader announce "Shipping address, group"
92
+ * before reading the four fields inside it.
93
+ */
94
+ export function FieldSet(props: ComponentProps<'fieldset'>) {
95
+ const [local, rest] = splitProps(props, ['class'])
96
+ return <fieldset class={cn('flex flex-col gap-4', local.class)} {...rest} />
97
+ }
98
+
99
+ export function FieldLegend(props: ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {
100
+ const [local, rest] = splitProps(props, ['class', 'variant'])
101
+ return (
102
+ <legend
103
+ class={cn(
104
+ 'mb-1',
105
+ local.variant === 'label'
106
+ ? 'text-sm font-medium'
107
+ : 'text-base font-semibold tracking-tight',
108
+ local.class
109
+ )}
110
+ {...rest}
111
+ />
112
+ )
113
+ }
114
+
115
+ /** A horizontal rule with a word in it, for "or continue with" separators. */
116
+ export function FieldSeparator(props: {
117
+ class?: string
118
+ children?: ComponentProps<'span'>['children']
119
+ }) {
120
+ const [local, rest] = splitProps(props, ['class', 'children'])
121
+
122
+ return (
123
+ <div class={cn('relative flex items-center gap-3 py-1', local.class)} {...rest}>
124
+ <span class="bg-border h-px flex-1" />
125
+ <Show when={local.children}>
126
+ <span class="text-muted-foreground text-2xs tracking-wide uppercase">{local.children}</span>
127
+ </Show>
128
+ <span class="bg-border h-px flex-1" />
129
+ </div>
130
+ )
131
+ }
@@ -0,0 +1,11 @@
1
+ export {
2
+ Field,
3
+ FieldDescription,
4
+ FieldError,
5
+ FieldInput,
6
+ FieldLabel,
7
+ FieldLegend,
8
+ FieldSeparator,
9
+ FieldSet,
10
+ FieldTextArea,
11
+ } from './field'
@@ -0,0 +1,48 @@
1
+ import { HoverCard as KobalteHoverCard } from '@kobalte/core/hover-card'
2
+ import type { ComponentProps } from 'solid-js'
3
+ import { splitProps } from 'solid-js'
4
+ import { overlaySurface, popoverArrow } from '#lib/overlay'
5
+ import { cn } from '#lib/utils'
6
+
7
+ /**
8
+ * HoverCard.
9
+ *
10
+ * A rich preview shown on hover: a user's profile, a file's summary, a link's
11
+ * destination. The difference from Tooltip is that this may be hovered *into*
12
+ * — the pointer can leave the trigger, cross the gap, and read the card.
13
+ *
14
+ * Because it only opens on hover, its content must also be reachable another
15
+ * way (clicking the trigger, for instance). A hover card that holds the only
16
+ * route to something is unreachable by keyboard and by touch.
17
+ */
18
+ export function HoverCard(props: ComponentProps<typeof KobalteHoverCard>) {
19
+ return <KobalteHoverCard {...props} />
20
+ }
21
+
22
+ export function HoverCardTrigger(props: ComponentProps<typeof KobalteHoverCard.Trigger>) {
23
+ return <KobalteHoverCard.Trigger {...props} />
24
+ }
25
+
26
+ export function HoverCardContent(props: ComponentProps<typeof KobalteHoverCard.Content>) {
27
+ const [local, rest] = splitProps(props, ['class', 'children'])
28
+
29
+ return (
30
+ <KobalteHoverCard.Portal>
31
+ <KobalteHoverCard.Content
32
+ class={cn(
33
+ overlaySurface,
34
+ 'z-(--z-menu) w-64 p-3',
35
+ 'origin-(--kb-hover-card-content-transform-origin)',
36
+ 'data-expanded:animate-in data-expanded:fade-in-0 data-expanded:zoom-in-95',
37
+ 'data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
38
+ 'data-expanded:duration-150 data-closed:duration-100',
39
+ local.class
40
+ )}
41
+ {...rest}
42
+ >
43
+ {local.children}
44
+ <KobalteHoverCard.Arrow aria-hidden="true" class={popoverArrow} />
45
+ </KobalteHoverCard.Content>
46
+ </KobalteHoverCard.Portal>
47
+ )
48
+ }
@@ -0,0 +1 @@
1
+ export { HoverCard, HoverCardContent, HoverCardTrigger } from './hover-card'
@@ -0,0 +1 @@
1
+ export { Input } from './input'