@adea-ai/ui 0.60.4 → 0.61.1

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 (1034) 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 +25 -0
  521. package/dist/r/account-menu.json +26 -0
  522. package/dist/r/alert-dialog.json +24 -0
  523. package/dist/r/alert.json +24 -0
  524. package/dist/r/app-shell.json +22 -0
  525. package/dist/r/aspect-ratio.json +22 -0
  526. package/dist/r/avatar.json +22 -0
  527. package/dist/r/badge.json +24 -0
  528. package/dist/r/board.json +22 -0
  529. package/dist/r/breadcrumb.json +24 -0
  530. package/dist/r/button-group.json +23 -0
  531. package/dist/r/button.json +24 -0
  532. package/dist/r/calendar.json +26 -0
  533. package/dist/r/card.json +22 -0
  534. package/dist/r/carousel.json +27 -0
  535. package/dist/r/chart.json +25 -0
  536. package/dist/r/checkbox.json +25 -0
  537. package/dist/r/code-block.json +25 -0
  538. package/dist/r/collapsible.json +24 -0
  539. package/dist/r/combobox.json +25 -0
  540. package/dist/r/command.json +25 -0
  541. package/dist/r/context-menu.json +25 -0
  542. package/dist/r/conversation.json +49 -0
  543. package/dist/r/detail-panel.json +25 -0
  544. package/dist/r/dialog.json +25 -0
  545. package/dist/r/diff-block.json +22 -0
  546. package/dist/r/drawer.json +24 -0
  547. package/dist/r/dropdown-menu.json +25 -0
  548. package/dist/r/empty.json +22 -0
  549. package/dist/r/entity-icon.json +22 -0
  550. package/dist/r/field.json +24 -0
  551. package/dist/r/hover-card.json +24 -0
  552. package/dist/r/input-group.json +22 -0
  553. package/dist/r/input-otp.json +24 -0
  554. package/dist/r/input.json +22 -0
  555. package/dist/r/item.json +22 -0
  556. package/dist/r/kbd.json +22 -0
  557. package/dist/r/label.json +22 -0
  558. package/dist/r/lib.json +50 -0
  559. package/dist/r/list-row.json +24 -0
  560. package/dist/r/menubar.json +25 -0
  561. package/dist/r/modal-dialog.json +23 -0
  562. package/dist/r/motion.json +22 -0
  563. package/dist/r/navigation-menu.json +25 -0
  564. package/dist/r/page.json +22 -0
  565. package/dist/r/pagination.json +25 -0
  566. package/dist/r/panel.json +22 -0
  567. package/dist/r/popover.json +24 -0
  568. package/dist/r/progress.json +24 -0
  569. package/dist/r/radio-group.json +25 -0
  570. package/dist/r/registry.json +1923 -0
  571. package/dist/r/resizable.json +25 -0
  572. package/dist/r/scroll-area.json +22 -0
  573. package/dist/r/select.json +25 -0
  574. package/dist/r/separator.json +24 -0
  575. package/dist/r/settings.json +22 -0
  576. package/dist/r/sheet.json +26 -0
  577. package/dist/r/side-rail.json +29 -0
  578. package/dist/r/sidebar-nav.json +25 -0
  579. package/dist/r/skeleton.json +22 -0
  580. package/dist/r/slider.json +24 -0
  581. package/dist/r/spinner.json +24 -0
  582. package/dist/r/src/components/composites/account-menu/account-menu.tsx +150 -0
  583. package/dist/r/src/components/composites/account-menu/index.ts +1 -0
  584. package/dist/r/src/components/composites/list-row/index.ts +1 -0
  585. package/dist/r/src/components/composites/list-row/list-row.tsx +116 -0
  586. package/dist/r/src/components/composites/settings/index.ts +1 -0
  587. package/dist/r/src/components/composites/settings/settings.tsx +142 -0
  588. package/dist/r/src/components/composites/stat/index.ts +9 -0
  589. package/dist/r/src/components/composites/stat/stat.tsx +155 -0
  590. package/dist/r/src/components/composites/update-dialog/index.ts +7 -0
  591. package/dist/r/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  592. package/dist/r/src/components/composites/workspace-mark/index.ts +1 -0
  593. package/dist/r/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  594. package/dist/r/src/components/conversation/conversation-avatar.tsx +60 -0
  595. package/dist/r/src/components/conversation/conversation-surface.tsx +107 -0
  596. package/dist/r/src/components/conversation/index.ts +25 -0
  597. package/dist/r/src/components/conversation/message-composer.tsx +239 -0
  598. package/dist/r/src/components/conversation/message-row.tsx +387 -0
  599. package/dist/r/src/components/conversation/thread-panel.tsx +141 -0
  600. package/dist/r/src/components/layout/app-shell/app-shell.tsx +92 -0
  601. package/dist/r/src/components/layout/app-shell/index.ts +1 -0
  602. package/dist/r/src/components/layout/page/index.ts +9 -0
  603. package/dist/r/src/components/layout/page/page.tsx +122 -0
  604. package/dist/r/src/components/layout/panel/index.ts +12 -0
  605. package/dist/r/src/components/layout/panel/panel.tsx +166 -0
  606. package/dist/r/src/components/layout/side-rail/index.ts +12 -0
  607. package/dist/r/src/components/layout/side-rail/side-rail-context.ts +42 -0
  608. package/dist/r/src/components/layout/side-rail/side-rail.tsx +405 -0
  609. package/dist/r/src/components/layout/sidebar-nav/index.ts +14 -0
  610. package/dist/r/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  611. package/dist/r/src/components/layout/status-bar/index.ts +1 -0
  612. package/dist/r/src/components/layout/status-bar/status-bar.tsx +73 -0
  613. package/dist/r/src/components/layout/top-bar/index.ts +10 -0
  614. package/dist/r/src/components/layout/top-bar/top-bar.tsx +166 -0
  615. package/dist/r/src/components/motion/index.ts +2 -0
  616. package/dist/r/src/components/motion/presence.tsx +32 -0
  617. package/dist/r/src/components/theme/appearance-panel.tsx +179 -0
  618. package/dist/r/src/components/theme/index.ts +22 -0
  619. package/dist/r/src/components/theme/theme-picker.tsx +174 -0
  620. package/dist/r/src/components/theme/theme-provider.tsx +309 -0
  621. package/dist/r/src/components/theme/theme-toggle.tsx +64 -0
  622. package/dist/r/src/components/ui/accordion/accordion.tsx +66 -0
  623. package/dist/r/src/components/ui/accordion/index.ts +1 -0
  624. package/dist/r/src/components/ui/alert/alert.tsx +95 -0
  625. package/dist/r/src/components/ui/alert/index.ts +1 -0
  626. package/dist/r/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  627. package/dist/r/src/components/ui/alert-dialog/index.ts +13 -0
  628. package/dist/r/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  629. package/dist/r/src/components/ui/aspect-ratio/index.ts +1 -0
  630. package/dist/r/src/components/ui/avatar/avatar.tsx +114 -0
  631. package/dist/r/src/components/ui/avatar/index.ts +9 -0
  632. package/dist/r/src/components/ui/badge/badge.tsx +59 -0
  633. package/dist/r/src/components/ui/badge/index.ts +1 -0
  634. package/dist/r/src/components/ui/board/board.tsx +254 -0
  635. package/dist/r/src/components/ui/board/index.ts +10 -0
  636. package/dist/r/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  637. package/dist/r/src/components/ui/breadcrumb/index.ts +9 -0
  638. package/dist/r/src/components/ui/button/button.tsx +89 -0
  639. package/dist/r/src/components/ui/button/index.ts +1 -0
  640. package/dist/r/src/components/ui/button-group/button-group.tsx +92 -0
  641. package/dist/r/src/components/ui/button-group/index.ts +6 -0
  642. package/dist/r/src/components/ui/calendar/calendar.tsx +277 -0
  643. package/dist/r/src/components/ui/calendar/index.ts +1 -0
  644. package/dist/r/src/components/ui/card/card.tsx +82 -0
  645. package/dist/r/src/components/ui/card/index.ts +10 -0
  646. package/dist/r/src/components/ui/carousel/carousel.tsx +209 -0
  647. package/dist/r/src/components/ui/carousel/index.ts +1 -0
  648. package/dist/r/src/components/ui/chart/chart.tsx +413 -0
  649. package/dist/r/src/components/ui/chart/index.ts +17 -0
  650. package/dist/r/src/components/ui/checkbox/checkbox.tsx +99 -0
  651. package/dist/r/src/components/ui/checkbox/index.ts +1 -0
  652. package/dist/r/src/components/ui/code-block/code-block.tsx +238 -0
  653. package/dist/r/src/components/ui/code-block/index.ts +1 -0
  654. package/dist/r/src/components/ui/collapsible/collapsible.tsx +54 -0
  655. package/dist/r/src/components/ui/collapsible/index.ts +1 -0
  656. package/dist/r/src/components/ui/combobox/combobox.tsx +142 -0
  657. package/dist/r/src/components/ui/combobox/index.ts +10 -0
  658. package/dist/r/src/components/ui/command/command.tsx +214 -0
  659. package/dist/r/src/components/ui/command/index.ts +12 -0
  660. package/dist/r/src/components/ui/context-menu/context-menu.tsx +163 -0
  661. package/dist/r/src/components/ui/context-menu/index.ts +15 -0
  662. package/dist/r/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  663. package/dist/r/src/components/ui/detail-panel/index.ts +9 -0
  664. package/dist/r/src/components/ui/dialog/dialog.tsx +138 -0
  665. package/dist/r/src/components/ui/dialog/index.ts +14 -0
  666. package/dist/r/src/components/ui/diff-block/diff-block.tsx +286 -0
  667. package/dist/r/src/components/ui/diff-block/index.ts +11 -0
  668. package/dist/r/src/components/ui/drawer/drawer.tsx +144 -0
  669. package/dist/r/src/components/ui/drawer/index.ts +13 -0
  670. package/dist/r/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  671. package/dist/r/src/components/ui/dropdown-menu/index.ts +18 -0
  672. package/dist/r/src/components/ui/empty/empty.tsx +104 -0
  673. package/dist/r/src/components/ui/empty/index.ts +10 -0
  674. package/dist/r/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  675. package/dist/r/src/components/ui/entity-icon/index.ts +1 -0
  676. package/dist/r/src/components/ui/field/field.tsx +131 -0
  677. package/dist/r/src/components/ui/field/index.ts +11 -0
  678. package/dist/r/src/components/ui/hover-card/hover-card.tsx +48 -0
  679. package/dist/r/src/components/ui/hover-card/index.ts +1 -0
  680. package/dist/r/src/components/ui/input/index.ts +1 -0
  681. package/dist/r/src/components/ui/input/input.tsx +41 -0
  682. package/dist/r/src/components/ui/input-group/index.ts +8 -0
  683. package/dist/r/src/components/ui/input-group/input-group.tsx +111 -0
  684. package/dist/r/src/components/ui/input-otp/index.ts +1 -0
  685. package/dist/r/src/components/ui/input-otp/input-otp.tsx +108 -0
  686. package/dist/r/src/components/ui/item/index.ts +10 -0
  687. package/dist/r/src/components/ui/item/item.tsx +146 -0
  688. package/dist/r/src/components/ui/kbd/index.ts +1 -0
  689. package/dist/r/src/components/ui/kbd/kbd.tsx +42 -0
  690. package/dist/r/src/components/ui/label/index.ts +1 -0
  691. package/dist/r/src/components/ui/label/label.tsx +36 -0
  692. package/dist/r/src/components/ui/menubar/index.ts +16 -0
  693. package/dist/r/src/components/ui/menubar/menubar.tsx +190 -0
  694. package/dist/r/src/components/ui/modal-dialog/index.ts +1 -0
  695. package/dist/r/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  696. package/dist/r/src/components/ui/navigation-menu/index.ts +13 -0
  697. package/dist/r/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  698. package/dist/r/src/components/ui/pagination/index.ts +8 -0
  699. package/dist/r/src/components/ui/pagination/pagination.tsx +144 -0
  700. package/dist/r/src/components/ui/popover/index.ts +10 -0
  701. package/dist/r/src/components/ui/popover/popover.tsx +81 -0
  702. package/dist/r/src/components/ui/progress/index.ts +1 -0
  703. package/dist/r/src/components/ui/progress/progress.tsx +67 -0
  704. package/dist/r/src/components/ui/radio-group/index.ts +1 -0
  705. package/dist/r/src/components/ui/radio-group/radio-group.tsx +78 -0
  706. package/dist/r/src/components/ui/resizable/index.ts +6 -0
  707. package/dist/r/src/components/ui/resizable/resizable.tsx +74 -0
  708. package/dist/r/src/components/ui/scroll-area/index.ts +1 -0
  709. package/dist/r/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  710. package/dist/r/src/components/ui/select/index.ts +11 -0
  711. package/dist/r/src/components/ui/select/select.tsx +188 -0
  712. package/dist/r/src/components/ui/separator/index.ts +1 -0
  713. package/dist/r/src/components/ui/separator/separator.tsx +40 -0
  714. package/dist/r/src/components/ui/sheet/index.ts +13 -0
  715. package/dist/r/src/components/ui/sheet/sheet.tsx +132 -0
  716. package/dist/r/src/components/ui/skeleton/index.ts +1 -0
  717. package/dist/r/src/components/ui/skeleton/skeleton.tsx +28 -0
  718. package/dist/r/src/components/ui/slider/index.ts +1 -0
  719. package/dist/r/src/components/ui/slider/slider.tsx +81 -0
  720. package/dist/r/src/components/ui/spinner/index.ts +1 -0
  721. package/dist/r/src/components/ui/spinner/spinner.tsx +58 -0
  722. package/dist/r/src/components/ui/status-chip/index.ts +8 -0
  723. package/dist/r/src/components/ui/status-chip/status-chip.tsx +142 -0
  724. package/dist/r/src/components/ui/switch/index.ts +1 -0
  725. package/dist/r/src/components/ui/switch/switch.tsx +100 -0
  726. package/dist/r/src/components/ui/table/index.ts +11 -0
  727. package/dist/r/src/components/ui/table/table.tsx +125 -0
  728. package/dist/r/src/components/ui/tabs/index.ts +8 -0
  729. package/dist/r/src/components/ui/tabs/tabs.tsx +77 -0
  730. package/dist/r/src/components/ui/textarea/index.ts +1 -0
  731. package/dist/r/src/components/ui/textarea/textarea.tsx +36 -0
  732. package/dist/r/src/components/ui/toast/index.ts +1 -0
  733. package/dist/r/src/components/ui/toast/toast.tsx +220 -0
  734. package/dist/r/src/components/ui/toggle/index.ts +1 -0
  735. package/dist/r/src/components/ui/toggle/toggle.tsx +60 -0
  736. package/dist/r/src/components/ui/toggle-group/index.ts +6 -0
  737. package/dist/r/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  738. package/dist/r/src/components/ui/tooltip/index.ts +9 -0
  739. package/dist/r/src/components/ui/tooltip/tooltip.tsx +102 -0
  740. package/dist/r/src/lib/keyed-rows.ts +68 -0
  741. package/dist/r/src/lib/overlay.ts +70 -0
  742. package/dist/r/src/lib/themes.ts +490 -0
  743. package/dist/r/src/lib/tokens.ts +688 -0
  744. package/dist/r/src/lib/utils.ts +76 -0
  745. package/dist/r/src/lib/variants.ts +62 -0
  746. package/dist/r/src/lib/version-notes.ts +65 -0
  747. package/dist/r/src/styles/base.css +644 -0
  748. package/dist/r/src/styles/fonts.css +26 -0
  749. package/dist/r/src/styles/globals.css +18 -0
  750. package/dist/r/src/styles/theme.css +864 -0
  751. package/dist/r/stat.json +24 -0
  752. package/dist/r/status-bar.json +22 -0
  753. package/dist/r/status-chip.json +23 -0
  754. package/dist/r/switch.json +24 -0
  755. package/dist/r/table.json +22 -0
  756. package/dist/r/tabs.json +24 -0
  757. package/dist/r/textarea.json +22 -0
  758. package/dist/r/theme.json +36 -0
  759. package/dist/r/theming.json +42 -0
  760. package/dist/r/toast.json +25 -0
  761. package/dist/r/toggle-group.json +25 -0
  762. package/dist/r/toggle.json +24 -0
  763. package/dist/r/tooltip.json +24 -0
  764. package/dist/r/top-bar.json +22 -0
  765. package/dist/r/update-dialog.json +28 -0
  766. package/dist/r/workspace-mark.json +23 -0
  767. package/package.json +75 -21
  768. package/registry.json +1923 -0
  769. package/src/components/composites/account-menu/account-menu.tsx +150 -0
  770. package/src/components/composites/account-menu/index.ts +1 -0
  771. package/src/components/composites/list-row/index.ts +1 -0
  772. package/src/components/composites/list-row/list-row.tsx +116 -0
  773. package/src/components/composites/settings/index.ts +1 -0
  774. package/src/components/composites/settings/settings.tsx +142 -0
  775. package/src/components/composites/stat/index.ts +9 -0
  776. package/src/components/composites/stat/stat.tsx +155 -0
  777. package/src/components/composites/update-dialog/index.ts +7 -0
  778. package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  779. package/src/components/composites/workspace-mark/index.ts +1 -0
  780. package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  781. package/src/components/conversation/conversation-avatar.tsx +60 -0
  782. package/src/components/conversation/conversation-surface.tsx +107 -0
  783. package/src/components/conversation/index.ts +25 -0
  784. package/src/components/conversation/message-composer.tsx +239 -0
  785. package/src/components/conversation/message-row.tsx +387 -0
  786. package/src/components/conversation/thread-panel.tsx +141 -0
  787. package/src/components/layout/app-shell/app-shell.tsx +92 -0
  788. package/src/components/layout/app-shell/index.ts +1 -0
  789. package/src/components/layout/page/index.ts +9 -0
  790. package/src/components/layout/page/page.tsx +122 -0
  791. package/src/components/layout/panel/index.ts +12 -0
  792. package/src/components/layout/panel/panel.tsx +166 -0
  793. package/src/components/layout/side-rail/index.ts +12 -0
  794. package/src/components/layout/side-rail/side-rail-context.ts +42 -0
  795. package/src/components/layout/side-rail/side-rail.tsx +405 -0
  796. package/src/components/layout/sidebar-nav/index.ts +14 -0
  797. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  798. package/src/components/layout/status-bar/index.ts +1 -0
  799. package/src/components/layout/status-bar/status-bar.tsx +73 -0
  800. package/src/components/layout/top-bar/index.ts +10 -0
  801. package/src/components/layout/top-bar/top-bar.tsx +166 -0
  802. package/src/components/motion/index.ts +2 -0
  803. package/src/components/motion/presence.tsx +32 -0
  804. package/src/components/theme/appearance-panel.tsx +179 -0
  805. package/src/components/theme/index.ts +22 -0
  806. package/src/components/theme/theme-picker.tsx +174 -0
  807. package/src/components/theme/theme-provider.tsx +309 -0
  808. package/src/components/theme/theme-toggle.tsx +64 -0
  809. package/src/components/ui/accordion/accordion.tsx +66 -0
  810. package/src/components/ui/accordion/index.ts +1 -0
  811. package/src/components/ui/alert/alert.tsx +95 -0
  812. package/src/components/ui/alert/index.ts +1 -0
  813. package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  814. package/src/components/ui/alert-dialog/index.ts +13 -0
  815. package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  816. package/src/components/ui/aspect-ratio/index.ts +1 -0
  817. package/src/components/ui/avatar/avatar.tsx +114 -0
  818. package/src/components/ui/avatar/index.ts +9 -0
  819. package/src/components/ui/badge/badge.tsx +59 -0
  820. package/src/components/ui/badge/index.ts +1 -0
  821. package/src/components/ui/board/board.tsx +254 -0
  822. package/src/components/ui/board/index.ts +10 -0
  823. package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  824. package/src/components/ui/breadcrumb/index.ts +9 -0
  825. package/src/components/ui/button/button.tsx +89 -0
  826. package/src/components/ui/button/index.ts +1 -0
  827. package/src/components/ui/button-group/button-group.tsx +92 -0
  828. package/src/components/ui/button-group/index.ts +6 -0
  829. package/src/components/ui/calendar/calendar.tsx +277 -0
  830. package/src/components/ui/calendar/index.ts +1 -0
  831. package/src/components/ui/card/card.tsx +82 -0
  832. package/src/components/ui/card/index.ts +10 -0
  833. package/src/components/ui/carousel/carousel.tsx +209 -0
  834. package/src/components/ui/carousel/index.ts +1 -0
  835. package/src/components/ui/chart/chart.tsx +413 -0
  836. package/src/components/ui/chart/index.ts +17 -0
  837. package/src/components/ui/checkbox/checkbox.tsx +99 -0
  838. package/src/components/ui/checkbox/index.ts +1 -0
  839. package/src/components/ui/code-block/code-block.tsx +238 -0
  840. package/src/components/ui/code-block/index.ts +1 -0
  841. package/src/components/ui/collapsible/collapsible.tsx +54 -0
  842. package/src/components/ui/collapsible/index.ts +1 -0
  843. package/src/components/ui/combobox/combobox.tsx +142 -0
  844. package/src/components/ui/combobox/index.ts +10 -0
  845. package/src/components/ui/command/command.tsx +214 -0
  846. package/src/components/ui/command/index.ts +12 -0
  847. package/src/components/ui/context-menu/context-menu.tsx +163 -0
  848. package/src/components/ui/context-menu/index.ts +15 -0
  849. package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  850. package/src/components/ui/detail-panel/index.ts +9 -0
  851. package/src/components/ui/dialog/dialog.tsx +138 -0
  852. package/src/components/ui/dialog/index.ts +14 -0
  853. package/src/components/ui/diff-block/diff-block.tsx +286 -0
  854. package/src/components/ui/diff-block/index.ts +11 -0
  855. package/src/components/ui/drawer/drawer.tsx +144 -0
  856. package/src/components/ui/drawer/index.ts +13 -0
  857. package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  858. package/src/components/ui/dropdown-menu/index.ts +18 -0
  859. package/src/components/ui/empty/empty.tsx +104 -0
  860. package/src/components/ui/empty/index.ts +10 -0
  861. package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  862. package/src/components/ui/entity-icon/index.ts +1 -0
  863. package/src/components/ui/field/field.tsx +131 -0
  864. package/src/components/ui/field/index.ts +11 -0
  865. package/src/components/ui/hover-card/hover-card.tsx +48 -0
  866. package/src/components/ui/hover-card/index.ts +1 -0
  867. package/src/components/ui/input/index.ts +1 -0
  868. package/src/components/ui/input/input.tsx +41 -0
  869. package/src/components/ui/input-group/index.ts +8 -0
  870. package/src/components/ui/input-group/input-group.tsx +111 -0
  871. package/src/components/ui/input-otp/index.ts +1 -0
  872. package/src/components/ui/input-otp/input-otp.tsx +108 -0
  873. package/src/components/ui/item/index.ts +10 -0
  874. package/src/components/ui/item/item.tsx +146 -0
  875. package/src/components/ui/kbd/index.ts +1 -0
  876. package/src/components/ui/kbd/kbd.tsx +42 -0
  877. package/src/components/ui/label/index.ts +1 -0
  878. package/src/components/ui/label/label.tsx +36 -0
  879. package/src/components/ui/menubar/index.ts +16 -0
  880. package/src/components/ui/menubar/menubar.tsx +190 -0
  881. package/src/components/ui/modal-dialog/index.ts +1 -0
  882. package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  883. package/src/components/ui/navigation-menu/index.ts +13 -0
  884. package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  885. package/src/components/ui/pagination/index.ts +8 -0
  886. package/src/components/ui/pagination/pagination.tsx +144 -0
  887. package/src/components/ui/popover/index.ts +10 -0
  888. package/src/components/ui/popover/popover.tsx +81 -0
  889. package/src/components/ui/progress/index.ts +1 -0
  890. package/src/components/ui/progress/progress.tsx +67 -0
  891. package/src/components/ui/radio-group/index.ts +1 -0
  892. package/src/components/ui/radio-group/radio-group.tsx +78 -0
  893. package/src/components/ui/resizable/index.ts +6 -0
  894. package/src/components/ui/resizable/resizable.tsx +74 -0
  895. package/src/components/ui/scroll-area/index.ts +1 -0
  896. package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  897. package/src/components/ui/select/index.ts +11 -0
  898. package/src/components/ui/select/select.tsx +188 -0
  899. package/src/components/ui/separator/index.ts +1 -0
  900. package/src/components/ui/separator/separator.tsx +40 -0
  901. package/src/components/ui/sheet/index.ts +13 -0
  902. package/src/components/ui/sheet/sheet.tsx +132 -0
  903. package/src/components/ui/skeleton/index.ts +1 -0
  904. package/src/components/ui/skeleton/skeleton.tsx +28 -0
  905. package/src/components/ui/slider/index.ts +1 -0
  906. package/src/components/ui/slider/slider.tsx +81 -0
  907. package/src/components/ui/spinner/index.ts +1 -0
  908. package/src/components/ui/spinner/spinner.tsx +58 -0
  909. package/src/components/ui/status-chip/index.ts +8 -0
  910. package/src/components/ui/status-chip/status-chip.tsx +142 -0
  911. package/src/components/ui/switch/index.ts +1 -0
  912. package/src/components/ui/switch/switch.tsx +100 -0
  913. package/src/components/ui/table/index.ts +11 -0
  914. package/src/components/ui/table/table.tsx +125 -0
  915. package/src/components/ui/tabs/index.ts +8 -0
  916. package/src/components/ui/tabs/tabs.tsx +77 -0
  917. package/src/components/ui/textarea/index.ts +1 -0
  918. package/src/components/ui/textarea/textarea.tsx +36 -0
  919. package/src/components/ui/toast/index.ts +1 -0
  920. package/src/components/ui/toast/toast.tsx +220 -0
  921. package/src/components/ui/toggle/index.ts +1 -0
  922. package/src/components/ui/toggle/toggle.tsx +60 -0
  923. package/src/components/ui/toggle-group/index.ts +6 -0
  924. package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  925. package/src/components/ui/tooltip/index.ts +9 -0
  926. package/src/components/ui/tooltip/tooltip.tsx +102 -0
  927. package/src/index.ts +154 -0
  928. package/src/lib/keyed-rows.ts +68 -0
  929. package/src/lib/overlay.ts +70 -0
  930. package/src/lib/themes.ts +490 -0
  931. package/src/lib/tokens.ts +688 -0
  932. package/src/lib/utils.ts +74 -4
  933. package/src/lib/variants.ts +62 -0
  934. package/src/lib/version-notes.ts +35 -0
  935. package/src/styles/base.css +489 -484
  936. package/src/styles/fonts.css +26 -0
  937. package/src/styles/globals.css +14 -3
  938. package/src/styles/theme.css +838 -229
  939. package/LICENSE +0 -201
  940. package/dist/components/account-drawer.d.ts +0 -11
  941. package/dist/components/account-drawer.js +0 -120
  942. package/dist/components/appearance.d.ts +0 -261
  943. package/dist/components/appearance.js +0 -802
  944. package/dist/components/on-screen-controls.d.ts +0 -8
  945. package/dist/components/on-screen-controls.js +0 -162
  946. package/dist/components/scene-settings.d.ts +0 -33
  947. package/dist/components/scene-settings.js +0 -253
  948. package/dist/components/theme-preview.d.ts +0 -40
  949. package/dist/components/theme-preview.js +0 -210
  950. package/dist/components/theme-provider.d.ts +0 -52
  951. package/dist/components/theme-provider.js +0 -128
  952. package/dist/components/theme-swatch.d.ts +0 -12
  953. package/dist/components/theme-swatch.js +0 -66
  954. package/dist/components/theme-toggle.d.ts +0 -7
  955. package/dist/components/theme-toggle.js +0 -64
  956. package/dist/components/ui/badge.d.ts +0 -8
  957. package/dist/components/ui/badge.js +0 -34
  958. package/dist/components/ui/button.d.ts +0 -9
  959. package/dist/components/ui/button.js +0 -52
  960. package/dist/components/ui/card.d.ts +0 -4
  961. package/dist/components/ui/card.js +0 -28
  962. package/dist/components/ui/dialog.d.ts +0 -15
  963. package/dist/components/ui/dialog.js +0 -104
  964. package/dist/components/ui/drawer.d.ts +0 -24
  965. package/dist/components/ui/drawer.js +0 -120
  966. package/dist/components/ui/dropdown-menu.d.ts +0 -35
  967. package/dist/components/ui/dropdown-menu.js +0 -180
  968. package/dist/components/ui/empty.d.ts +0 -12
  969. package/dist/components/ui/field.d.ts +0 -25
  970. package/dist/components/ui/field.js +0 -188
  971. package/dist/components/ui/input.d.ts +0 -3
  972. package/dist/components/ui/input.js +0 -22
  973. package/dist/components/ui/label.d.ts +0 -3
  974. package/dist/components/ui/label.js +0 -17
  975. package/dist/components/ui/radio-group.d.ts +0 -5
  976. package/dist/components/ui/radio-group.js +0 -39
  977. package/dist/components/ui/separator.d.ts +0 -7
  978. package/dist/components/ui/separator.js +0 -20
  979. package/dist/components/ui/skeleton.d.ts +0 -3
  980. package/dist/components/ui/skeleton.js +0 -17
  981. package/dist/components/ui/spinner.d.ts +0 -5
  982. package/dist/components/ui/spinner.js +0 -17
  983. package/dist/components/ui/switch.d.ts +0 -8
  984. package/dist/components/ui/switch.js +0 -59
  985. package/dist/components/ui/tabs.d.ts +0 -11
  986. package/dist/components/ui/tabs.js +0 -57
  987. package/dist/components/ui/toggle-group.d.ts +0 -13
  988. package/dist/components/ui/toggle-group.js +0 -95
  989. package/dist/components/ui/toggle.d.ts +0 -10
  990. package/dist/components/ui/toggle.js +0 -41
  991. package/dist/components/ui/tooltip.d.ts +0 -15
  992. package/dist/components/ui/tooltip.js +0 -55
  993. package/dist/components/version-dialog.d.ts +0 -25
  994. package/dist/components/version-dialog.js +0 -330
  995. package/dist/components/workspace-brand.d.ts +0 -5
  996. package/dist/components/workspace-brand.js +0 -13
  997. package/dist/components/workspace-logo.d.ts +0 -3
  998. package/dist/components/workspace-logo.js +0 -17
  999. package/src/components/account-drawer.tsx +0 -114
  1000. package/src/components/appearance.ts +0 -1112
  1001. package/src/components/on-screen-controls.tsx +0 -149
  1002. package/src/components/scene-settings.tsx +0 -199
  1003. package/src/components/theme-preview.tsx +0 -170
  1004. package/src/components/theme-provider.tsx +0 -214
  1005. package/src/components/theme-swatch.tsx +0 -49
  1006. package/src/components/theme-toggle.tsx +0 -48
  1007. package/src/components/ui/badge.tsx +0 -40
  1008. package/src/components/ui/button.tsx +0 -58
  1009. package/src/components/ui/card.tsx +0 -21
  1010. package/src/components/ui/dialog.tsx +0 -132
  1011. package/src/components/ui/drawer.tsx +0 -168
  1012. package/src/components/ui/dropdown-menu.tsx +0 -235
  1013. package/src/components/ui/empty.tsx +0 -97
  1014. package/src/components/ui/field.tsx +0 -220
  1015. package/src/components/ui/input.tsx +0 -20
  1016. package/src/components/ui/label.tsx +0 -19
  1017. package/src/components/ui/radio-group.tsx +0 -41
  1018. package/src/components/ui/separator.tsx +0 -28
  1019. package/src/components/ui/skeleton.tsx +0 -16
  1020. package/src/components/ui/spinner.tsx +0 -20
  1021. package/src/components/ui/switch.tsx +0 -59
  1022. package/src/components/ui/tabs.tsx +0 -76
  1023. package/src/components/ui/toggle-group.tsx +0 -98
  1024. package/src/components/ui/toggle.tsx +0 -42
  1025. package/src/components/ui/tooltip.tsx +0 -61
  1026. package/src/components/version-dialog.tsx +0 -368
  1027. package/src/components/workspace-brand.tsx +0 -18
  1028. package/src/components/workspace-logo.tsx +0 -21
  1029. package/src/index.tsx +0 -53
  1030. package/src/styles/auth-shell.css +0 -167
  1031. package/src/styles/conventional-workspace.css +0 -2858
  1032. package/src/styles/dev-view.css +0 -899
  1033. package/src/styles/workspace-shell.css +0 -82
  1034. package/tsconfig.json +0 -11
@@ -0,0 +1,21 @@
1
+ import type { ComponentProps } from 'solid-js';
2
+ /**
3
+ * ConversationAvatar.
4
+ *
5
+ * The speaker's mark in a transcript. Three kinds, and the distinction matters
6
+ * visually: a person, an agent, and the system itself are different *voices*, and a
7
+ * transcript where all three look alike is one the reader has to decode line by
8
+ * line.
9
+ *
10
+ * The avatar is decorative — the speaker's name is in the message's accessible name
11
+ * — so it is `aria-hidden` and carries no text of its own. A caller with a real
12
+ * image passes it as children.
13
+ */
14
+ export type ConversationAvatarKind = 'user' | 'agent' | 'system';
15
+ export type ConversationAvatarProps = ComponentProps<'span'> & {
16
+ kind: ConversationAvatarKind;
17
+ /** Draw the mark larger, for the sender's own messages. */
18
+ size?: 'md' | 'lg';
19
+ };
20
+ export declare function ConversationAvatar(props: ConversationAvatarProps): import("solid-js").JSX.Element;
21
+ //# sourceMappingURL=conversation-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-avatar.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/conversation-avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAM9C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEhE,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG;IAC7D,IAAI,EAAE,sBAAsB,CAAA;IAC5B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB,CAAA;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,kCA+BhE"}
@@ -0,0 +1,52 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Dynamic, createComponent, insert, mergeProps, spread, template } from "solid-js/web";
3
+ import { Bot, Sparkles, User } from "lucide-solid";
4
+ import { Show, splitProps } from "solid-js";
5
+ //#region src/components/conversation/conversation-avatar.tsx
6
+ var _tmpl$ = /*#__PURE__*/ template(`<span data-slot=conversation-avatar aria-hidden=true>`);
7
+ var _tmpl$2 = /*#__PURE__*/ template(`<span class="grid size-4 place-items-center [&amp;_svg]:size-4">`);
8
+ var GLYPHS = {
9
+ user: User,
10
+ agent: Bot,
11
+ system: Sparkles
12
+ };
13
+ function ConversationAvatar(props) {
14
+ const [local, rest] = splitProps(props, [
15
+ "class",
16
+ "kind",
17
+ "size",
18
+ "children"
19
+ ]);
20
+ return (() => {
21
+ var _el$ = _tmpl$();
22
+ spread(_el$, mergeProps({ get ["class"]() {
23
+ return cn("grid shrink-0 place-items-center rounded-full border border-border", local.size === "lg" ? "size-8" : "size-7", {
24
+ "bg-primary-subtle text-primary": local.kind === "user",
25
+ "bg-card text-foreground": local.kind === "agent",
26
+ "bg-muted text-muted-foreground": local.kind === "system"
27
+ }, local.class);
28
+ } }, rest), false, true);
29
+ insert(_el$, createComponent(Show, {
30
+ get when() {
31
+ return local.children;
32
+ },
33
+ get fallback() {
34
+ return (() => {
35
+ var _el$2 = _tmpl$2();
36
+ insert(_el$2, createComponent(Dynamic, { get component() {
37
+ return GLYPHS[local.kind];
38
+ } }));
39
+ return _el$2;
40
+ })();
41
+ },
42
+ get children() {
43
+ return local.children;
44
+ }
45
+ }));
46
+ return _el$;
47
+ })();
48
+ }
49
+ //#endregion
50
+ export { ConversationAvatar };
51
+
52
+ //# sourceMappingURL=conversation-avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-avatar.js","names":["ComponentProps","Show","splitProps","Dynamic","Bot","Sparkles","User","cn","ConversationAvatarKind","ConversationAvatarProps","kind","size","GLYPHS","user","agent","system","const","ConversationAvatar","props","local","rest","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","_$createComponent","when","children","fallback","_el$2","_tmpl$2","component","_$mergeProps","_$createComponent"],"sources":["../../../src/components/conversation/conversation-avatar.tsx"],"sourcesContent":["import type { ComponentProps } from 'solid-js'\nimport { Show, splitProps } from 'solid-js'\nimport { Dynamic } from 'solid-js/web'\nimport { Bot, Sparkles, User } from 'lucide-solid'\nimport { cn } from '#lib/utils'\n\n/**\n * ConversationAvatar.\n *\n * The speaker's mark in a transcript. Three kinds, and the distinction matters\n * visually: a person, an agent, and the system itself are different *voices*, and a\n * transcript where all three look alike is one the reader has to decode line by\n * line.\n *\n * The avatar is decorative — the speaker's name is in the message's accessible name\n * — so it is `aria-hidden` and carries no text of its own. A caller with a real\n * image passes it as children.\n */\nexport type ConversationAvatarKind = 'user' | 'agent' | 'system'\n\nexport type ConversationAvatarProps = ComponentProps<'span'> & {\n kind: ConversationAvatarKind\n /** Draw the mark larger, for the sender's own messages. */\n size?: 'md' | 'lg'\n}\n\nconst GLYPHS = { user: User, agent: Bot, system: Sparkles } as const\n\nexport function ConversationAvatar(props: ConversationAvatarProps) {\n const [local, rest] = splitProps(props, ['class', 'kind', 'size', 'children'])\n\n return (\n <span\n data-slot=\"conversation-avatar\"\n aria-hidden=\"true\"\n class={cn(\n 'grid shrink-0 place-items-center rounded-full border border-border',\n local.size === 'lg' ? 'size-8' : 'size-7',\n {\n 'bg-primary-subtle text-primary': local.kind === 'user',\n 'bg-card text-foreground': local.kind === 'agent',\n 'bg-muted text-muted-foreground': local.kind === 'system',\n },\n local.class\n )}\n {...rest}\n >\n <Show\n when={local.children}\n fallback={\n <span class=\"grid size-4 place-items-center [&_svg]:size-4\">\n <Dynamic component={GLYPHS[local.kind]} />\n </span>\n }\n >\n {local.children}\n </Show>\n </span>\n )\n}\n"],"mappings":";;;;;;;AA0BA,IAAMY,SAAS;CAAEC,MAAMP;CAAMQ,OAAOV;CAAKW,QAAQV;AAAS;AAE1D,SAAgBY,mBAAmBC,OAAgC;CACjE,MAAM,CAACC,OAAOC,QAAQlB,WAAWgB,OAAO;EAAC;EAAS;EAAQ;EAAQ;CAAU,CAAC;CAE7E,cAAA;EAAA,IAAAG,OAAAC,OAAA;EAAAC,OAAAF,MAAAG,WAAA,EAAA,KAAA,WAAA;GAAA,OAIWjB,GACL,sEACAY,MAAMR,SAAS,OAAO,WAAW,UACjC;IACE,kCAAkCQ,MAAMT,SAAS;IACjD,2BAA2BS,MAAMT,SAAS;IAC1C,kCAAkCS,MAAMT,SAAS;GACnD,GACAS,MAAMM,KACR;EAAC,EAAA,GACGL,IAAI,GAAA,OAAA,IAAA;EAAAM,OAAAL,MAAAM,gBAEP1B,MAAI;GAAA,IACH2B,OAAI;IAAA,OAAET,MAAMU;GAAQ;GAAA,IACpBC,WAAQ;IAAA,cAAA;KAAA,IAAAC,QAAAC,QAAA;KAAAN,OAAAK,OAAAJ,gBAEHxB,SAAO,EAAA,IAAC8B,YAAS;MAAA,OAAErB,OAAOO,MAAMT;KAAK,EAAA,CAAA,CAAA;KAAA,OAAAqB;IAAA,EAAA,CAAA;GAAA;GAAA,IAAAF,WAAA;IAAA,OAIzCV,MAAMU;GAAQ;EAAA,CAAA,CAAA;EAAA,OAAAR;CAAA,EAAA,CAAA;AAIvB"}
@@ -0,0 +1,27 @@
1
+ import type { ComponentProps, JSX } from 'solid-js';
2
+ /**
3
+ * ConversationSurface.
4
+ *
5
+ * The scrolling transcript. Its job is small and it is the difference between a
6
+ * transcript that stays readable as it grows and one that fights the reader:
7
+ *
8
+ * - **Stick to the bottom.** New messages scroll into view only when the reader is
9
+ * already at the bottom. Someone reading back through history must not be yanked
10
+ * to the end by an arriving message, and that is the single most common way a
11
+ * chat surface is made unusable.
12
+ * - **Offer a way back.** Once the reader is not at the bottom, a control appears
13
+ * that returns them and says how much they have missed.
14
+ * - **`overscroll-contain`.** The transcript scrolls to its end and stops, rather
15
+ * than dragging the pane behind it — which in a desktop shell means the whole
16
+ * window moves.
17
+ */
18
+ export type ConversationSurfaceProps = ComponentProps<'div'> & {
19
+ /** How far from the bottom still counts as "at the bottom", in px. */
20
+ threshold?: number;
21
+ /** Rendered above the transcript when there is nothing in it. */
22
+ empty?: JSX.Element;
23
+ /** A header that scrolls with the transcript, e.g. a day divider or a banner. */
24
+ header?: JSX.Element;
25
+ };
26
+ export declare function ConversationSurface(props: ConversationSurfaceProps): JSX.Element;
27
+ //# sourceMappingURL=conversation-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-surface.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/conversation-surface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAKnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7D,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACrB,CAAA;AAOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,eAsElE"}
@@ -0,0 +1,118 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../ui/button/button.js";
3
+ import { className, createComponent, effect, insert, memo, spread, template, use } from "solid-js/web";
4
+ import { ArrowDown } from "lucide-solid";
5
+ import { Show, createSignal, onCleanup, splitProps } from "solid-js";
6
+ //#region src/components/conversation/conversation-surface.tsx
7
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="pointer-events-none absolute inset-x-0 bottom-3 flex justify-center">`);
8
+ var _tmpl$2 = /*#__PURE__*/ template(`<div data-slot=conversation-surface><div class="min-h-0 flex-1 overflow-y-auto overscroll-contain">`);
9
+ var _tmpl$3 = /*#__PURE__*/ template(`<div class=p-4>`);
10
+ /** How far the reader is from the end of the transcript, in px. */
11
+ function distanceFromBottom(element) {
12
+ return element.scrollHeight - element.scrollTop - element.clientHeight;
13
+ }
14
+ function ConversationSurface(props) {
15
+ const [local, rest] = splitProps(props, [
16
+ "class",
17
+ "threshold",
18
+ "empty",
19
+ "header",
20
+ "children"
21
+ ]);
22
+ const [atBottom, setAtBottom] = createSignal(true);
23
+ const [missed, setMissed] = createSignal(0);
24
+ let scroller;
25
+ const onScroll = () => {
26
+ if (!scroller) return;
27
+ const distance = distanceFromBottom(scroller);
28
+ const threshold = local.threshold ?? 80;
29
+ setAtBottom(distance <= threshold);
30
+ setMissed(distance <= threshold ? 0 : Math.round(distance / 96));
31
+ };
32
+ const jumpToLatest = () => {
33
+ scroller?.scrollTo({
34
+ top: scroller.scrollHeight,
35
+ behavior: "smooth"
36
+ });
37
+ setAtBottom(true);
38
+ setMissed(0);
39
+ };
40
+ const observer = () => {
41
+ if (!scroller) return;
42
+ const mutation = new MutationObserver(() => {
43
+ if (atBottom()) scroller?.scrollTo({ top: scroller.scrollHeight });
44
+ else onScroll();
45
+ });
46
+ mutation.observe(scroller, {
47
+ childList: true,
48
+ subtree: true
49
+ });
50
+ onCleanup(() => mutation.disconnect());
51
+ };
52
+ return (() => {
53
+ var _el$ = _tmpl$2(), _el$2 = _el$.firstChild;
54
+ _el$2.addEventListener("scroll", onScroll);
55
+ use((element) => {
56
+ scroller = element;
57
+ observer();
58
+ }, _el$2);
59
+ spread(_el$2, rest, false, true);
60
+ insert(_el$2, createComponent(Show, {
61
+ get when() {
62
+ return local.header;
63
+ },
64
+ get children() {
65
+ return local.header;
66
+ }
67
+ }), null);
68
+ insert(_el$2, createComponent(Show, {
69
+ get when() {
70
+ return local.children;
71
+ },
72
+ get fallback() {
73
+ return (() => {
74
+ var _el$4 = _tmpl$3();
75
+ insert(_el$4, () => local.empty);
76
+ return _el$4;
77
+ })();
78
+ },
79
+ get children() {
80
+ return local.children;
81
+ }
82
+ }), null);
83
+ insert(_el$, createComponent(Show, {
84
+ get when() {
85
+ return !atBottom();
86
+ },
87
+ get children() {
88
+ var _el$3 = _tmpl$();
89
+ insert(_el$3, createComponent(Button, {
90
+ size: "sm",
91
+ variant: "secondary",
92
+ "class": "pointer-events-auto gap-1.5 shadow-md",
93
+ onClick: jumpToLatest,
94
+ get children() {
95
+ return [createComponent(ArrowDown, {}), createComponent(Show, {
96
+ get when() {
97
+ return missed() > 0;
98
+ },
99
+ get fallback() {
100
+ return "Jump to latest";
101
+ },
102
+ get children() {
103
+ return [memo(() => missed()), " new"];
104
+ }
105
+ })];
106
+ }
107
+ }));
108
+ return _el$3;
109
+ }
110
+ }), null);
111
+ effect(() => className(_el$, cn("relative flex min-h-0 flex-1 flex-col", local.class)));
112
+ return _el$;
113
+ })();
114
+ }
115
+ //#endregion
116
+ export { ConversationSurface };
117
+
118
+ //# sourceMappingURL=conversation-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-surface.js","names":["ArrowDown","ComponentProps","JSX","Show","createSignal","onCleanup","splitProps","cn","Button","ConversationSurfaceProps","threshold","empty","Element","header","distanceFromBottom","element","HTMLDivElement","scrollHeight","scrollTop","clientHeight","ConversationSurface","props","local","rest","atBottom","setAtBottom","missed","setMissed","scroller","onScroll","distance","Math","round","jumpToLatest","scrollTo","top","behavior","observer","mutation","MutationObserver","observe","childList","subtree","disconnect","_el$","_tmpl$2","_el$2","firstChild","addEventListener","_$use","_$spread","_$insert","_$createComponent","when","children","fallback","_el$4","_tmpl$3","_el$3","_tmpl$","size","variant","onClick","_$memo","_$effect","_$className","class","_$createComponent","_$memo","_$className"],"sources":["../../../src/components/conversation/conversation-surface.tsx"],"sourcesContent":["import { ArrowDown } from 'lucide-solid'\nimport type { ComponentProps, JSX } from 'solid-js'\nimport { Show, createSignal, onCleanup, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\n\n/**\n * ConversationSurface.\n *\n * The scrolling transcript. Its job is small and it is the difference between a\n * transcript that stays readable as it grows and one that fights the reader:\n *\n * - **Stick to the bottom.** New messages scroll into view only when the reader is\n * already at the bottom. Someone reading back through history must not be yanked\n * to the end by an arriving message, and that is the single most common way a\n * chat surface is made unusable.\n * - **Offer a way back.** Once the reader is not at the bottom, a control appears\n * that returns them and says how much they have missed.\n * - **`overscroll-contain`.** The transcript scrolls to its end and stops, rather\n * than dragging the pane behind it — which in a desktop shell means the whole\n * window moves.\n */\nexport type ConversationSurfaceProps = ComponentProps<'div'> & {\n /** How far from the bottom still counts as \"at the bottom\", in px. */\n threshold?: number\n /** Rendered above the transcript when there is nothing in it. */\n empty?: JSX.Element\n /** A header that scrolls with the transcript, e.g. a day divider or a banner. */\n header?: JSX.Element\n}\n\n/** How far the reader is from the end of the transcript, in px. */\nfunction distanceFromBottom(element: HTMLDivElement): number {\n return element.scrollHeight - element.scrollTop - element.clientHeight\n}\n\nexport function ConversationSurface(props: ConversationSurfaceProps) {\n const [local, rest] = splitProps(props, ['class', 'threshold', 'empty', 'header', 'children'])\n\n const [atBottom, setAtBottom] = createSignal(true)\n const [missed, setMissed] = createSignal(0)\n let scroller: HTMLDivElement | undefined\n\n const onScroll = () => {\n if (!scroller) return\n const distance = distanceFromBottom(scroller)\n const threshold = local.threshold ?? 80\n setAtBottom(distance <= threshold)\n setMissed(distance <= threshold ? 0 : Math.round(distance / 96))\n }\n\n const jumpToLatest = () => {\n scroller?.scrollTo({ top: scroller.scrollHeight, behavior: 'smooth' })\n setAtBottom(true)\n setMissed(0)\n }\n\n // An arriving message while the reader is at the bottom should follow it. While\n // they are not, it must not.\n const observer = () => {\n if (!scroller) return\n const mutation = new MutationObserver(() => {\n if (atBottom()) scroller?.scrollTo({ top: scroller.scrollHeight })\n else onScroll()\n })\n mutation.observe(scroller, { childList: true, subtree: true })\n onCleanup(() => mutation.disconnect())\n }\n\n return (\n <div\n data-slot=\"conversation-surface\"\n class={cn('relative flex min-h-0 flex-1 flex-col', local.class)}\n >\n <div\n ref={(element) => {\n scroller = element\n observer()\n }}\n onScroll={onScroll}\n class=\"min-h-0 flex-1 overflow-y-auto overscroll-contain\"\n {...rest}\n >\n <Show when={local.header}>{local.header}</Show>\n <Show when={local.children} fallback={<div class=\"p-4\">{local.empty}</div>}>\n {local.children}\n </Show>\n </div>\n\n <Show when={!atBottom()}>\n <div class=\"pointer-events-none absolute inset-x-0 bottom-3 flex justify-center\">\n <Button\n size=\"sm\"\n variant=\"secondary\"\n class=\"pointer-events-auto gap-1.5 shadow-md\"\n onClick={jumpToLatest}\n >\n <ArrowDown />\n <Show when={missed() > 0} fallback={<>Jump to latest</>}>\n {missed()} new\n </Show>\n </Button>\n </div>\n </Show>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;AAgCA,SAASc,mBAAmBC,SAAiC;CAC3D,OAAOA,QAAQE,eAAeF,QAAQG,YAAYH,QAAQI;AAC5D;AAEA,SAAgBC,oBAAoBC,OAAiC;CACnE,MAAM,CAACC,OAAOC,QAAQjB,WAAWe,OAAO;EAAC;EAAS;EAAa;EAAS;EAAU;CAAU,CAAC;CAE7F,MAAM,CAACG,UAAUC,eAAerB,aAAa,IAAI;CACjD,MAAM,CAACsB,QAAQC,aAAavB,aAAa,CAAC;CAC1C,IAAIwB;CAEJ,MAAMC,iBAAiB;EACrB,IAAI,CAACD,UAAU;EACf,MAAME,WAAWhB,mBAAmBc,QAAQ;EAC5C,MAAMlB,YAAYY,MAAMZ,aAAa;EACrCe,YAAYK,YAAYpB,SAAS;EACjCiB,UAAUG,YAAYpB,YAAY,IAAIqB,KAAKC,MAAMF,WAAW,EAAE,CAAC;CACjE;CAEA,MAAMG,qBAAqB;EACzBL,UAAUM,SAAS;GAAEC,KAAKP,SAASX;GAAcmB,UAAU;EAAS,CAAC;EACrEX,YAAY,IAAI;EAChBE,UAAU,CAAC;CACb;CAIA,MAAMU,iBAAiB;EACrB,IAAI,CAACT,UAAU;EACf,MAAMU,WAAW,IAAIC,uBAAuB;GAC1C,IAAIf,SAAS,GAAGI,UAAUM,SAAS,EAAEC,KAAKP,SAASX,aAAa,CAAC;QAC5DY,SAAS;EAChB,CAAC;EACDS,SAASE,QAAQZ,UAAU;GAAEa,WAAW;GAAMC,SAAS;EAAK,CAAC;EAC7DrC,gBAAgBiC,SAASK,WAAW,CAAC;CACvC;CAEA,cAAA;EAAA,IAAAC,OAAAC,QAAA,GAAAC,QAAAF,KAAAG;EAAAD,MAAAE,iBAAA,UAUgBnB,QAAQ;EAAAoB,KAJZlC,YAAY;GAChBa,WAAWb;GACXsB,SAAS;EACX,GAACS,KAAA;EAAAI,OAAAJ,OAGGvB,MAAI,OAAA,IAAA;EAAA4B,OAAAL,OAAAM,gBAEPjD,MAAI;GAAA,IAACkD,OAAI;IAAA,OAAE/B,MAAMT;GAAM;GAAA,IAAAyC,WAAA;IAAA,OAAGhC,MAAMT;GAAM;EAAA,CAAA,GAAA,IAAA;EAAAsC,OAAAL,OAAAM,gBACtCjD,MAAI;GAAA,IAACkD,OAAI;IAAA,OAAE/B,MAAMgC;GAAQ;GAAA,IAAEC,WAAQ;IAAA,cAAA;KAAA,IAAAC,QAAAC,QAAA;KAAAN,OAAAK,aAAoBlC,MAAMX,KAAK;KAAA,OAAA6C;IAAA,EAAA,CAAA;GAAA;GAAA,IAAAF,WAAA;IAAA,OAChEhC,MAAMgC;GAAQ;EAAA,CAAA,GAAA,IAAA;EAAAH,OAAAP,MAAAQ,gBAIlBjD,MAAI;GAAA,IAACkD,OAAI;IAAA,OAAE,CAAC7B,SAAS;GAAC;GAAA,IAAA8B,WAAA;IAAA,IAAAI,QAAAC,OAAA;IAAAR,OAAAO,OAAAN,gBAElB5C,QAAM;KACLoD,MAAI;KACJC,SAAO;KAAA,SAAA;KAEPC,SAAS7B;KAAY,IAAAqB,WAAA;MAAA,OAAA,CAAAF,gBAEpBpD,WAAS,CAAA,CAAA,GAAAoD,gBACTjD,MAAI;OAAA,IAACkD,OAAI;QAAA,OAAE3B,OAAO,IAAI;OAAC;OAAA,IAAE6B,WAAQ;QAAA,OAAA;OAAA;OAAA,IAAAD,WAAA;QAAA,OAAA,CAAAS,WAC/BrC,OAAO,CAAC,GAAA,MAAA;OAAA;MAAA,CAAA,CAAA;KAAA;IAAA,CAAA,CAAA;IAAA,OAAAgC;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAM,aAAAC,UAAArB,MA3BVrC,GAAG,yCAAyCe,MAAM4C,KAAK,CAAC,CAAA;EAAA,OAAAtB;CAAA,EAAA,CAAA;AAkCrE"}
@@ -0,0 +1,6 @@
1
+ export { ConversationAvatar, type ConversationAvatarKind, type ConversationAvatarProps, } from './conversation-avatar';
2
+ export { ConversationSurface, type ConversationSurfaceProps } from './conversation-surface';
3
+ export { ComposerAttachmentButton, ComposerHint, MessageComposer, type MessageComposerProps, } from './message-composer';
4
+ export { MessageBody, MessageDayDivider, MessageGroup, MessageRow, type MessageRowProps, } from './message-row';
5
+ export { AttachmentCard, ThreadPanel, type AttachmentCardProps, type ThreadPanelProps, } from './thread-panel';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,70 @@
1
+ import type { ComponentProps, JSX } from 'solid-js';
2
+ import { Button } from '../ui/button/button';
3
+ /**
4
+ * MessageComposer.
5
+ *
6
+ * The field a message is written in. It is a form, and it behaves like one: Enter
7
+ * sends, Shift+Enter breaks the line, Escape clears the error.
8
+ *
9
+ * ## What it does not know
10
+ *
11
+ * No mention model, no attachment model, no dictation, no idempotency keys. The
12
+ * first version of this composer was written against adea's agent and artifact
13
+ * types, which meant it could only ever be used by adea. Here the attachment control
14
+ * is a *slot*, the mention menu is a slot, and a caller that has an agent model
15
+ * renders one; a caller that does not gets a composer without it.
16
+ *
17
+ * ## The three things it does own
18
+ *
19
+ * **Enter sends, Shift+Enter breaks the line.** That is the convention every chat
20
+ * application shares, and getting it wrong is the single most irritating thing a
21
+ * composer can do. `⌘`/`Ctrl`+Enter is accepted too, because someone arriving from an
22
+ * editor will try it.
23
+ *
24
+ * **The send button is disabled when there is nothing to send.** A control that
25
+ * accepts a press and does nothing is worse than one that says it cannot.
26
+ *
27
+ * **The status region is `aria-live`.** "Sending…" and a failure both land there, so
28
+ * a screen reader hears the outcome without the composer stealing focus.
29
+ */
30
+ export type MessageComposerProps = Omit<ComponentProps<'form'>, 'onSubmit'> & {
31
+ /** The draft. Controlled: the caller owns the text, because it usually persists. */
32
+ value: string;
33
+ onValueChange: (value: string) => void;
34
+ /** Called on send. A rejection is surfaced as an error and the draft is kept. */
35
+ onSubmit: () => void | Promise<void>;
36
+ placeholder?: string;
37
+ /** Disable the whole composer, e.g. while the channel is read-only. */
38
+ disabled?: boolean;
39
+ /** Label the send action for a context other than a message, e.g. a reply. */
40
+ submitLabel?: string;
41
+ /** Show the keyboard hint under the field. */
42
+ showHint?: boolean;
43
+ /** A leading control group, e.g. an attach button. */
44
+ leading?: JSX.Element;
45
+ /** A trailing group before the send button, e.g. a dictation toggle. */
46
+ trailing?: JSX.Element;
47
+ /** A menu rendered above the field, e.g. mention suggestions. */
48
+ menu?: JSX.Element;
49
+ /** The reply target, drawn as a strip above the field. */
50
+ replyTo?: {
51
+ label: string;
52
+ onDismiss: () => void;
53
+ };
54
+ };
55
+ export declare function MessageComposer(props: MessageComposerProps): JSX.Element;
56
+ /**
57
+ * The attachment control.
58
+ *
59
+ * A slot rather than a built-in, because what can be attached is the application's
60
+ * business — but the *button* is shared, so it looks and behaves the same in both.
61
+ * The count is announced, since a paperclip alone does not say whether anything is
62
+ * attached.
63
+ */
64
+ export declare function ComposerAttachmentButton(props: ComponentProps<typeof Button> & {
65
+ count?: number;
66
+ open?: boolean;
67
+ }): JSX.Element;
68
+ /** The hint a composer shows when the field is empty, as a one-line prompt. */
69
+ export declare function ComposerHint(props: ComponentProps<'p'>): JSX.Element;
70
+ //# sourceMappingURL=message-composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-composer.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/message-composer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC5E,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,iEAAiE;IACjE,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;CACnD,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,eAqI1D;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,eAiB1E;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,eAetD"}
@@ -0,0 +1,235 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../ui/button/button.js";
3
+ import { Kbd } from "../ui/kbd/kbd.js";
4
+ import { Spinner } from "../ui/spinner/spinner.js";
5
+ import { Textarea } from "../ui/textarea/textarea.js";
6
+ import { className, createComponent, effect, insert, memo, mergeProps, spread, template } from "solid-js/web";
7
+ import { CornerDownLeft, Paperclip, Send, X } from "lucide-solid";
8
+ import { Show, createSignal, splitProps } from "solid-js";
9
+ //#region src/components/conversation/message-composer.tsx
10
+ var _tmpl$ = /*#__PURE__*/ template(`<div>`);
11
+ var _tmpl$2 = /*#__PURE__*/ template(`<p class="text-muted-foreground flex items-center gap-1.5 text-2xs"> to send<span aria-hidden=true>·</span> <!> for a new line`);
12
+ var _tmpl$3 = /*#__PURE__*/ template(`<form data-slot=message-composer><div><div class="flex items-center gap-1"><div class="ms-auto flex items-center gap-1"></div></div></div><div aria-live=polite class=min-h-0>`);
13
+ var _tmpl$4 = /*#__PURE__*/ template(`<div class="bg-muted text-muted-foreground flex items-center gap-2 rounded-md px-2.5 py-1.5 text-xs"><span class="min-w-0 flex-1 truncate">Replying to `);
14
+ var _tmpl$5 = /*#__PURE__*/ template(`<p class="text-destructive text-xs">`);
15
+ var _tmpl$6 = /*#__PURE__*/ template(`<p>`);
16
+ function MessageComposer(props) {
17
+ const [local, rest] = splitProps(props, [
18
+ "class",
19
+ "value",
20
+ "onValueChange",
21
+ "onSubmit",
22
+ "placeholder",
23
+ "disabled",
24
+ "submitLabel",
25
+ "showHint",
26
+ "leading",
27
+ "trailing",
28
+ "menu",
29
+ "replyTo"
30
+ ]);
31
+ const [sending, setSending] = createSignal(false);
32
+ const [error, setError] = createSignal(null);
33
+ const canSend = () => local.value.trim().length > 0 && !local.disabled && !sending();
34
+ const send = async () => {
35
+ if (!canSend()) return;
36
+ setSending(true);
37
+ setError(null);
38
+ try {
39
+ await local.onSubmit();
40
+ } catch {
41
+ setError("Message not sent. Your draft is still here; retry when the connection recovers.");
42
+ } finally {
43
+ setSending(false);
44
+ }
45
+ };
46
+ const onKeyDown = (event) => {
47
+ if (event.key === "Escape" && error()) {
48
+ setError(null);
49
+ return;
50
+ }
51
+ if (event.key !== "Enter") return;
52
+ if (event.shiftKey && !event.metaKey && !event.ctrlKey) return;
53
+ event.preventDefault();
54
+ send();
55
+ };
56
+ return (() => {
57
+ var _el$ = _tmpl$3(), _el$3 = _el$.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$10 = _el$3.nextSibling;
58
+ _el$.addEventListener("submit", (event) => {
59
+ event.preventDefault();
60
+ send();
61
+ });
62
+ spread(_el$, mergeProps({ get ["class"]() {
63
+ return cn("flex flex-col gap-2", local.class);
64
+ } }, rest), false, true);
65
+ insert(_el$, createComponent(Show, {
66
+ get when() {
67
+ return local.menu;
68
+ },
69
+ get children() {
70
+ var _el$2 = _tmpl$();
71
+ insert(_el$2, () => local.menu);
72
+ return _el$2;
73
+ }
74
+ }), _el$3);
75
+ insert(_el$, createComponent(Show, {
76
+ get when() {
77
+ return local.replyTo;
78
+ },
79
+ children: (reply) => (() => {
80
+ var _el$11 = _tmpl$4(), _el$12 = _el$11.firstChild;
81
+ _el$12.firstChild;
82
+ insert(_el$12, () => reply().label, null);
83
+ insert(_el$11, createComponent(Button, {
84
+ type: "button",
85
+ variant: "ghost",
86
+ size: "icon-2xs",
87
+ "aria-label": "Cancel reply",
88
+ onClick: () => reply().onDismiss(),
89
+ get children() {
90
+ return createComponent(X, {});
91
+ }
92
+ }), null);
93
+ return _el$11;
94
+ })()
95
+ }), _el$3);
96
+ insert(_el$3, createComponent(Textarea, {
97
+ get value() {
98
+ return local.value;
99
+ },
100
+ onInput: (event) => local.onValueChange(event.currentTarget.value),
101
+ onKeyDown,
102
+ get placeholder() {
103
+ return local.placeholder ?? "Write a message…";
104
+ },
105
+ get disabled() {
106
+ return local.disabled;
107
+ },
108
+ rows: 1,
109
+ get ["aria-label"]() {
110
+ return memo(() => !!local.submitLabel)() ? `${local.submitLabel} message` : "Message";
111
+ },
112
+ "class": "min-h-9 resize-none border-0 bg-transparent p-0 text-sm shadow-none focus-visible:ring-0"
113
+ }), _el$4);
114
+ insert(_el$4, createComponent(Show, {
115
+ get when() {
116
+ return local.leading;
117
+ },
118
+ get children() {
119
+ return local.leading;
120
+ }
121
+ }), _el$5);
122
+ insert(_el$5, createComponent(Show, {
123
+ get when() {
124
+ return local.trailing;
125
+ },
126
+ get children() {
127
+ return local.trailing;
128
+ }
129
+ }), null);
130
+ insert(_el$5, createComponent(Button, {
131
+ type: "submit",
132
+ size: "icon-sm",
133
+ get disabled() {
134
+ return !canSend();
135
+ },
136
+ get ["aria-label"]() {
137
+ return sending() ? "Sending message" : "Send message";
138
+ },
139
+ get children() {
140
+ return createComponent(Show, {
141
+ get when() {
142
+ return sending();
143
+ },
144
+ get fallback() {
145
+ return createComponent(Send, {});
146
+ },
147
+ get children() {
148
+ return createComponent(Spinner, {
149
+ size: "sm",
150
+ label: false,
151
+ "class": "text-primary-foreground"
152
+ });
153
+ }
154
+ });
155
+ }
156
+ }), null);
157
+ insert(_el$, createComponent(Show, {
158
+ get when() {
159
+ return local.showHint;
160
+ },
161
+ get children() {
162
+ var _el$6 = _tmpl$2(), _el$7 = _el$6.firstChild, _el$9 = _el$7.nextSibling.nextSibling, _el$1 = _el$9.nextSibling;
163
+ _el$1.nextSibling;
164
+ insert(_el$6, createComponent(Kbd, { children: "Enter" }), _el$7);
165
+ insert(_el$6, createComponent(Kbd, { children: "Shift" }), _el$9);
166
+ insert(_el$6, createComponent(Kbd, { children: "Enter" }), _el$1);
167
+ return _el$6;
168
+ }
169
+ }), _el$10);
170
+ insert(_el$10, createComponent(Show, {
171
+ get when() {
172
+ return error();
173
+ },
174
+ children: (message) => (() => {
175
+ var _el$14 = _tmpl$5();
176
+ insert(_el$14, message);
177
+ return _el$14;
178
+ })()
179
+ }));
180
+ effect(() => className(_el$3, cn("border-input bg-card flex flex-col gap-1 rounded-lg border p-2", "transition-[color,box-shadow,border-color] ease-out", "focus-within:border-ring focus-within:ring-3 focus-within:ring-primary-subtle", local.disabled && "opacity-50")));
181
+ return _el$;
182
+ })();
183
+ }
184
+ /**
185
+ * The attachment control.
186
+ *
187
+ * A slot rather than a built-in, because what can be attached is the application's
188
+ * business — but the *button* is shared, so it looks and behaves the same in both.
189
+ * The count is announced, since a paperclip alone does not say whether anything is
190
+ * attached.
191
+ */
192
+ function ComposerAttachmentButton(props) {
193
+ const [local, rest] = splitProps(props, [
194
+ "count",
195
+ "open",
196
+ "children"
197
+ ]);
198
+ return createComponent(Button, mergeProps({
199
+ type: "button",
200
+ variant: "ghost",
201
+ size: "icon-sm",
202
+ get ["aria-label"]() {
203
+ return memo(() => !!local.count)() ? `${local.count} attached, add an attachment` : "Add an attachment";
204
+ },
205
+ get ["aria-expanded"]() {
206
+ return local.open;
207
+ },
208
+ "class": "text-muted-foreground"
209
+ }, rest, { get children() {
210
+ return local.children ?? createComponent(Paperclip, {});
211
+ } }));
212
+ }
213
+ /** The hint a composer shows when the field is empty, as a one-line prompt. */
214
+ function ComposerHint(props) {
215
+ const [local, rest] = splitProps(props, ["class", "children"]);
216
+ return (() => {
217
+ var _el$15 = _tmpl$6();
218
+ spread(_el$15, mergeProps({ get ["class"]() {
219
+ return cn("text-muted-foreground flex items-center gap-1.5 text-2xs", local.class);
220
+ } }, rest), false, true);
221
+ insert(_el$15, () => local.children ?? [
222
+ createComponent(CornerDownLeft, {
223
+ "aria-hidden": "true",
224
+ "class": "size-3"
225
+ }),
226
+ createComponent(Kbd, { children: "Enter" }),
227
+ " to send"
228
+ ]);
229
+ return _el$15;
230
+ })();
231
+ }
232
+ //#endregion
233
+ export { ComposerAttachmentButton, ComposerHint, MessageComposer };
234
+
235
+ //# sourceMappingURL=message-composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-composer.js","names":["CornerDownLeft","Paperclip","Send","X","ComponentProps","JSX","Show","createSignal","splitProps","cn","Button","Kbd","Spinner","Textarea","MessageComposerProps","Omit","value","onValueChange","onSubmit","Promise","placeholder","disabled","submitLabel","showHint","leading","Element","trailing","menu","replyTo","label","onDismiss","MessageComposer","props","local","rest","sending","setSending","error","setError","canSend","trim","length","send","onKeyDown","EventHandlerUnion","HTMLTextAreaElement","KeyboardEvent","event","key","shiftKey","metaKey","ctrlKey","preventDefault","_el$","_tmpl$3","_el$3","firstChild","_el$4","_el$5","_el$10","nextSibling","addEventListener","_$spread","_$mergeProps","class","_$insert","_$createComponent","when","children","_el$2","_tmpl$","reply","_el$11","_tmpl$4","_el$12","_el$13","type","variant","size","onClick","onInput","currentTarget","rows","aria-label","_$memo","fallback","_el$6","_tmpl$2","_el$7","_el$8","_el$9","_el$1","_el$0","message","_el$14","_tmpl$5","_$effect","_$className","ComposerAttachmentButton","count","open","aria-expanded","ComposerHint","_el$15","_tmpl$6","_$mergeProps","_$createComponent","_$memo","_$className"],"sources":["../../../src/components/conversation/message-composer.tsx"],"sourcesContent":["import { CornerDownLeft, Paperclip, Send, X } from 'lucide-solid'\nimport type { ComponentProps, JSX } from 'solid-js'\nimport { Show, createSignal, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\nimport { Kbd } from '../ui/kbd/kbd'\nimport { Spinner } from '../ui/spinner/spinner'\nimport { Textarea } from '../ui/textarea/textarea'\n\n/**\n * MessageComposer.\n *\n * The field a message is written in. It is a form, and it behaves like one: Enter\n * sends, Shift+Enter breaks the line, Escape clears the error.\n *\n * ## What it does not know\n *\n * No mention model, no attachment model, no dictation, no idempotency keys. The\n * first version of this composer was written against adea's agent and artifact\n * types, which meant it could only ever be used by adea. Here the attachment control\n * is a *slot*, the mention menu is a slot, and a caller that has an agent model\n * renders one; a caller that does not gets a composer without it.\n *\n * ## The three things it does own\n *\n * **Enter sends, Shift+Enter breaks the line.** That is the convention every chat\n * application shares, and getting it wrong is the single most irritating thing a\n * composer can do. `⌘`/`Ctrl`+Enter is accepted too, because someone arriving from an\n * editor will try it.\n *\n * **The send button is disabled when there is nothing to send.** A control that\n * accepts a press and does nothing is worse than one that says it cannot.\n *\n * **The status region is `aria-live`.** \"Sending…\" and a failure both land there, so\n * a screen reader hears the outcome without the composer stealing focus.\n */\nexport type MessageComposerProps = Omit<ComponentProps<'form'>, 'onSubmit'> & {\n /** The draft. Controlled: the caller owns the text, because it usually persists. */\n value: string\n onValueChange: (value: string) => void\n /** Called on send. A rejection is surfaced as an error and the draft is kept. */\n onSubmit: () => void | Promise<void>\n placeholder?: string\n /** Disable the whole composer, e.g. while the channel is read-only. */\n disabled?: boolean\n /** Label the send action for a context other than a message, e.g. a reply. */\n submitLabel?: string\n /** Show the keyboard hint under the field. */\n showHint?: boolean\n /** A leading control group, e.g. an attach button. */\n leading?: JSX.Element\n /** A trailing group before the send button, e.g. a dictation toggle. */\n trailing?: JSX.Element\n /** A menu rendered above the field, e.g. mention suggestions. */\n menu?: JSX.Element\n /** The reply target, drawn as a strip above the field. */\n replyTo?: { label: string; onDismiss: () => void }\n}\n\nexport function MessageComposer(props: MessageComposerProps) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'value',\n 'onValueChange',\n 'onSubmit',\n 'placeholder',\n 'disabled',\n 'submitLabel',\n 'showHint',\n 'leading',\n 'trailing',\n 'menu',\n 'replyTo',\n ])\n\n const [sending, setSending] = createSignal(false)\n const [error, setError] = createSignal<string | null>(null)\n\n const canSend = () => local.value.trim().length > 0 && !local.disabled && !sending()\n\n const send = async () => {\n if (!canSend()) return\n setSending(true)\n setError(null)\n try {\n await local.onSubmit()\n } catch {\n // The draft is deliberately left in place. A send that fails and clears the\n // field loses the user's work, which is the worst outcome available here.\n setError('Message not sent. Your draft is still here; retry when the connection recovers.')\n } finally {\n setSending(false)\n }\n }\n\n const onKeyDown: JSX.EventHandlerUnion<HTMLTextAreaElement, KeyboardEvent> = (event) => {\n if (event.key === 'Escape' && error()) {\n setError(null)\n return\n }\n if (event.key !== 'Enter') return\n // Shift breaks the line; a bare Enter, or a modified one, sends.\n if (event.shiftKey && !event.metaKey && !event.ctrlKey) return\n event.preventDefault()\n void send()\n }\n\n return (\n <form\n data-slot=\"message-composer\"\n class={cn('flex flex-col gap-2', local.class)}\n onSubmit={(event) => {\n event.preventDefault()\n void send()\n }}\n {...rest}\n >\n <Show when={local.menu}>\n <div>{local.menu}</div>\n </Show>\n\n <Show when={local.replyTo}>\n {(reply) => (\n <div class=\"bg-muted text-muted-foreground flex items-center gap-2 rounded-md px-2.5 py-1.5 text-xs\">\n <span class=\"min-w-0 flex-1 truncate\">Replying to {reply().label}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-2xs\"\n aria-label=\"Cancel reply\"\n onClick={() => reply().onDismiss()}\n >\n <X />\n </Button>\n </div>\n )}\n </Show>\n\n <div\n class={cn(\n 'border-input bg-card flex flex-col gap-1 rounded-lg border p-2',\n 'transition-[color,box-shadow,border-color] ease-out',\n 'focus-within:border-ring focus-within:ring-3 focus-within:ring-primary-subtle',\n local.disabled && 'opacity-50'\n )}\n >\n <Textarea\n value={local.value}\n onInput={(event) => local.onValueChange(event.currentTarget.value)}\n onKeyDown={onKeyDown}\n placeholder={local.placeholder ?? 'Write a message…'}\n disabled={local.disabled}\n rows={1}\n aria-label={local.submitLabel ? `${local.submitLabel} message` : 'Message'}\n class=\"min-h-9 resize-none border-0 bg-transparent p-0 text-sm shadow-none focus-visible:ring-0\"\n />\n\n <div class=\"flex items-center gap-1\">\n <Show when={local.leading}>{local.leading}</Show>\n <div class=\"ms-auto flex items-center gap-1\">\n <Show when={local.trailing}>{local.trailing}</Show>\n <Button\n type=\"submit\"\n size=\"icon-sm\"\n disabled={!canSend()}\n aria-label={sending() ? 'Sending message' : 'Send message'}\n >\n <Show when={sending()} fallback={<Send />}>\n <Spinner size=\"sm\" label={false} class=\"text-primary-foreground\" />\n </Show>\n </Button>\n </div>\n </div>\n </div>\n\n <Show when={local.showHint}>\n <p class=\"text-muted-foreground flex items-center gap-1.5 text-2xs\">\n <Kbd>Enter</Kbd> to send\n <span aria-hidden=\"true\">·</span>\n <Kbd>Shift</Kbd> <Kbd>Enter</Kbd> for a new line\n </p>\n </Show>\n\n {/* A live region, so the outcome is announced without moving focus out of the\n field the user is typing in. */}\n <div aria-live=\"polite\" class=\"min-h-0\">\n <Show when={error()}>\n {(message) => <p class=\"text-destructive text-xs\">{message()}</p>}\n </Show>\n </div>\n </form>\n )\n}\n\n/**\n * The attachment control.\n *\n * A slot rather than a built-in, because what can be attached is the application's\n * business — but the *button* is shared, so it looks and behaves the same in both.\n * The count is announced, since a paperclip alone does not say whether anything is\n * attached.\n */\nexport function ComposerAttachmentButton(\n props: ComponentProps<typeof Button> & { count?: number; open?: boolean }\n) {\n const [local, rest] = splitProps(props, ['count', 'open', 'children'])\n\n return (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={local.count ? `${local.count} attached, add an attachment` : 'Add an attachment'}\n aria-expanded={local.open}\n class=\"text-muted-foreground\"\n {...rest}\n >\n {local.children ?? <Paperclip />}\n </Button>\n )\n}\n\n/** The hint a composer shows when the field is empty, as a one-line prompt. */\nexport function ComposerHint(props: ComponentProps<'p'>) {\n const [local, rest] = splitProps(props, ['class', 'children'])\n return (\n <p\n class={cn('text-muted-foreground flex items-center gap-1.5 text-2xs', local.class)}\n {...rest}\n >\n {local.children ?? (\n <>\n <CornerDownLeft aria-hidden=\"true\" class=\"size-3\" />\n <Kbd>Enter</Kbd> to send\n </>\n )}\n </p>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AA2DA,SAAgB+B,gBAAgBC,OAA6B;CAC3D,MAAM,CAACC,OAAOC,QAAQ1B,WAAWwB,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAS,CACV;CAED,MAAM,CAACG,SAASC,cAAc7B,aAAa,KAAK;CAChD,MAAM,CAAC8B,OAAOC,YAAY/B,aAA4B,IAAI;CAE1D,MAAMgC,gBAAgBN,MAAMjB,MAAMwB,KAAK,CAAC,CAACC,SAAS,KAAK,CAACR,MAAMZ,YAAY,CAACc,QAAQ;CAEnF,MAAMO,OAAO,YAAY;EACvB,IAAI,CAACH,QAAQ,GAAG;EAChBH,WAAW,IAAI;EACfE,SAAS,IAAI;EACb,IAAI;GACF,MAAML,MAAMf,SAAS;EACvB,QAAQ;GAGNoB,SAAS,iFAAiF;EAC5F,UAAU;GACRF,WAAW,KAAK;EAClB;CACF;CAEA,MAAMO,aAAwEI,UAAU;EACtF,IAAIA,MAAMC,QAAQ,YAAYX,MAAM,GAAG;GACrCC,SAAS,IAAI;GACb;EACF;EACA,IAAIS,MAAMC,QAAQ,SAAS;EAE3B,IAAID,MAAME,YAAY,CAACF,MAAMG,WAAW,CAACH,MAAMI,SAAS;EACxDJ,MAAMK,eAAe;EACrB,KAAU;CACZ;CAEA,cAAA;EAAA,IAAAC,OAAAC,QAAA,GAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC,YAAAE,QAAAD,MAAAD,YAAAG,SAAAJ,MAAAK;EAAAP,KAAAQ,iBAAA,WAIed,UAAU;GACnBA,MAAMK,eAAe;GACrB,KAAU;EACZ,CAAC;EAAAU,OAAAT,MAAAU,WAAA,EAAA,KAAA,WAAA;GAAA,OAJMtD,GAAG,uBAAuBwB,MAAM+B,KAAK;EAAC,EAAA,GAKzC9B,IAAI,GAAA,OAAA,IAAA;EAAA+B,OAAAZ,MAAAa,gBAEP5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAElC,MAAMN;GAAI;GAAA,IAAAyC,WAAA;IAAA,IAAAC,QAAAC,OAAA;IAAAL,OAAAI,aACdpC,MAAMN,IAAI;IAAA,OAAA0C;GAAA;EAAA,CAAA,GAAAd,KAAA;EAAAU,OAAAZ,MAAAa,gBAGjB5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAElC,MAAML;GAAO;GAAAwC,WACrBG,iBAAK;IAAA,IAAAC,SAAAC,QAAA,GAAAC,SAAAF,OAAAhB;IAAAkB,OAAAlB;IAAAS,OAAAS,cAEgDH,MAAM,CAAC,CAAC1C,OAAK,IAAA;IAAAoC,OAAAO,QAAAN,gBAC/DxD,QAAM;KACLkE,MAAI;KACJC,SAAO;KACPC,MAAI;KAAA,cAAA;KAEJC,eAAeR,MAAM,CAAC,CAACzC,UAAU;KAAC,IAAAsC,WAAA;MAAA,OAAAF,gBAEjC/D,GAAC,CAAA,CAAA;KAAA;IAAA,CAAA,GAAA,IAAA;IAAA,OAAAqE;GAAA,EAAA,CAAA;EAGP,CAAA,GAAAjB,KAAA;EAAAU,OAAAV,OAAAW,gBAWArD,UAAQ;GAAA,IACPG,QAAK;IAAA,OAAEiB,MAAMjB;GAAK;GAClBgE,UAAUjC,UAAUd,MAAMhB,cAAc8B,MAAMkC,cAAcjE,KAAK;GACtD2B;GAAS,IACpBvB,cAAW;IAAA,OAAEa,MAAMb,eAAe;GAAkB;GAAA,IACpDC,WAAQ;IAAA,OAAEY,MAAMZ;GAAQ;GACxB6D,MAAM;GAAC,KAAA,gBAAA;IAAA,OACKE,WAAA,CAAA,CAAAnD,MAAMX,WAAW,CAAA,CAAA,IAAG,GAAGW,MAAMX,YAAW,YAAa;GAAS;GAAA,SAAA;EAAA,CAAA,GAAAmC,KAAA;EAAAQ,OAAAR,OAAAS,gBAKzE5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAElC,MAAMT;GAAO;GAAA,IAAA4C,WAAA;IAAA,OAAGnC,MAAMT;GAAO;EAAA,CAAA,GAAAkC,KAAA;EAAAO,OAAAP,OAAAQ,gBAEtC5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAElC,MAAMP;GAAQ;GAAA,IAAA0C,WAAA;IAAA,OAAGnC,MAAMP;GAAQ;EAAA,CAAA,GAAA,IAAA;EAAAuC,OAAAP,OAAAQ,gBAC1CxD,QAAM;GACLkE,MAAI;GACJE,MAAI;GAAA,IACJzD,WAAQ;IAAA,OAAE,CAACkB,QAAQ;GAAC;GAAA,KAAA,gBAAA;IAAA,OACRJ,QAAQ,IAAI,oBAAoB;GAAc;GAAA,IAAAiC,WAAA;IAAA,OAAAF,gBAEzD5D,MAAI;KAAA,IAAC6D,OAAI;MAAA,OAAEhC,QAAQ;KAAC;KAAA,IAAEkD,WAAQ;MAAA,OAAAnB,gBAAGhE,MAAI,CAAA,CAAA;KAAA;KAAA,IAAAkE,WAAA;MAAA,OAAAF,gBACnCtD,SAAO;OAACkE,MAAI;OAAMjD,OAAO;OAAK,SAAA;MAAA,CAAA;KAAA;IAAA,CAAA;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAoC,OAAAZ,MAAAa,gBAOxC5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAElC,MAAMV;GAAQ;GAAA,IAAA6C,WAAA;IAAA,IAAAkB,QAAAC,QAAA,GAAAC,QAAAF,MAAA9B,YAAAkC,QAAAF,MAAA5B,YAAAA,aAAA+B,QAAAD,MAAA9B;IAAA+B,MAAA/B;IAAAK,OAAAqB,OAAApB,gBAErBvD,KAAG,EAAAyD,UAAA,QAAA,CAAA,GAAAoB,KAAA;IAAAvB,OAAAqB,OAAApB,gBAEHvD,KAAG,EAAAyD,UAAA,QAAA,CAAA,GAAAsB,KAAA;IAAAzB,OAAAqB,OAAApB,gBAAcvD,KAAG,EAAAyD,UAAA,QAAA,CAAA,GAAAuB,KAAA;IAAA,OAAAL;GAAA;EAAA,CAAA,GAAA3B,MAAA;EAAAM,OAAAN,QAAAO,gBAOtB5D,MAAI;GAAA,IAAC6D,OAAI;IAAA,OAAE9B,MAAM;GAAC;GAAA+B,WACfyB,mBAAO;IAAA,IAAAC,SAAAC,QAAA;IAAA9B,OAAA6B,QAA0CD,OAAO;IAAA,OAAAC;GAAA,EAAA,CAAA;EAAO,CAAA,CAAA;EAAAE,aAAAC,UAAA1C,OAhD5D9C,GACL,kEACA,uDACA,iFACAwB,MAAMZ,YAAY,YACpB,CAAC,CAAA;EAAA,OAAAgC;CAAA,EAAA,CAAA;AAgDT;;;;;;;;;AAUA,SAAgB6C,yBACdlE,OACA;CACA,MAAM,CAACC,OAAOC,QAAQ1B,WAAWwB,OAAO;EAAC;EAAS;EAAQ;CAAU,CAAC;CAErE,OAAAkC,gBACGxD,QAAMqD,WAAA;EACLa,MAAI;EACJC,SAAO;EACPC,MAAI;EAAA,KAAA,gBAAA;GAAA,OACQM,WAAA,CAAA,CAAAnD,MAAMkE,KAAK,CAAA,CAAA,IAAG,GAAGlE,MAAMkE,MAAK,gCAAiC;EAAmB;EAAA,KAAA,mBAAA;GAAA,OAC7ElE,MAAMmE;EAAI;EAAA,SAAA;CAAA,GAErBlE,MAAI,EAAA,IAAAkC,WAAA;EAAA,OAEPnC,MAAMmC,YAAQF,gBAAKjE,WAAS,CAAA,CAAA;CAAG,EAAA,CAAA,CAAA;AAGtC;;AAGA,SAAgBqG,aAAatE,OAA4B;CACvD,MAAM,CAACC,OAAOC,QAAQ1B,WAAWwB,OAAO,CAAC,SAAS,UAAU,CAAC;CAC7D,cAAA;EAAA,IAAAuE,SAAAC,QAAA;EAAA1C,OAAAyC,QAAAxC,WAAA,EAAA,KAAA,WAAA;GAAA,OAEWtD,GAAG,4DAA4DwB,MAAM+B,KAAK;EAAC,EAAA,GAC9E9B,IAAI,GAAA,OAAA,IAAA;EAAA+B,OAAAsC,cAEPtE,MAAMmC,YAAQ;GAAAF,gBAEVlE,gBAAc;IAAA,eAAA;IAAA,SAAA;GAAA,CAAA;GAAAkE,gBACdvD,KAAG,EAAAyD,UAAA,QAAA,CAAA;GAAA;EAAA,CAEP;EAAA,OAAAmC;CAAA,EAAA,CAAA;AAGP"}