@adea-ai/ui 0.60.4 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (862) hide show
  1. package/README.md +108 -34
  2. package/dist/components/composites/account-menu/account-menu.d.ts +48 -0
  3. package/dist/components/composites/account-menu/account-menu.d.ts.map +1 -0
  4. package/dist/components/composites/account-menu/account-menu.js +119 -0
  5. package/dist/components/composites/account-menu/account-menu.js.map +1 -0
  6. package/dist/components/composites/account-menu/index.d.ts +2 -0
  7. package/dist/components/composites/account-menu/index.d.ts.map +1 -0
  8. package/dist/components/composites/list-row/index.d.ts +2 -0
  9. package/dist/components/composites/list-row/index.d.ts.map +1 -0
  10. package/dist/components/composites/list-row/list-row.d.ts +44 -0
  11. package/dist/components/composites/list-row/list-row.d.ts.map +1 -0
  12. package/dist/components/composites/list-row/list-row.js +124 -0
  13. package/dist/components/composites/list-row/list-row.js.map +1 -0
  14. package/dist/components/composites/settings/index.d.ts +2 -0
  15. package/dist/components/composites/settings/index.d.ts.map +1 -0
  16. package/dist/components/composites/settings/settings.d.ts +49 -0
  17. package/dist/components/composites/settings/settings.d.ts.map +1 -0
  18. package/dist/components/composites/settings/settings.js +148 -0
  19. package/dist/components/composites/settings/settings.js.map +1 -0
  20. package/dist/components/composites/stat/index.d.ts +2 -0
  21. package/dist/components/composites/stat/index.d.ts.map +1 -0
  22. package/dist/components/composites/stat/stat.d.ts +48 -0
  23. package/dist/components/composites/stat/stat.d.ts.map +1 -0
  24. package/dist/components/composites/stat/stat.js +148 -0
  25. package/dist/components/composites/stat/stat.js.map +1 -0
  26. package/dist/components/composites/update-dialog/index.d.ts +2 -0
  27. package/dist/components/composites/update-dialog/index.d.ts.map +1 -0
  28. package/dist/components/composites/update-dialog/update-dialog.d.ts +108 -0
  29. package/dist/components/composites/update-dialog/update-dialog.d.ts.map +1 -0
  30. package/dist/components/composites/update-dialog/update-dialog.js +452 -0
  31. package/dist/components/composites/update-dialog/update-dialog.js.map +1 -0
  32. package/dist/components/composites/workspace-mark/index.d.ts +2 -0
  33. package/dist/components/composites/workspace-mark/index.d.ts.map +1 -0
  34. package/dist/components/composites/workspace-mark/workspace-mark.d.ts +24 -0
  35. package/dist/components/composites/workspace-mark/workspace-mark.d.ts.map +1 -0
  36. package/dist/components/composites/workspace-mark/workspace-mark.js +76 -0
  37. package/dist/components/composites/workspace-mark/workspace-mark.js.map +1 -0
  38. package/dist/components/conversation/conversation-avatar.d.ts +21 -0
  39. package/dist/components/conversation/conversation-avatar.d.ts.map +1 -0
  40. package/dist/components/conversation/conversation-avatar.js +52 -0
  41. package/dist/components/conversation/conversation-avatar.js.map +1 -0
  42. package/dist/components/conversation/conversation-surface.d.ts +27 -0
  43. package/dist/components/conversation/conversation-surface.d.ts.map +1 -0
  44. package/dist/components/conversation/conversation-surface.js +118 -0
  45. package/dist/components/conversation/conversation-surface.js.map +1 -0
  46. package/dist/components/conversation/index.d.ts +6 -0
  47. package/dist/components/conversation/index.d.ts.map +1 -0
  48. package/dist/components/conversation/message-composer.d.ts +70 -0
  49. package/dist/components/conversation/message-composer.d.ts.map +1 -0
  50. package/dist/components/conversation/message-composer.js +235 -0
  51. package/dist/components/conversation/message-composer.js.map +1 -0
  52. package/dist/components/conversation/message-row.d.ts +101 -0
  53. package/dist/components/conversation/message-row.d.ts.map +1 -0
  54. package/dist/components/conversation/message-row.js +389 -0
  55. package/dist/components/conversation/message-row.js.map +1 -0
  56. package/dist/components/conversation/thread-panel.d.ts +45 -0
  57. package/dist/components/conversation/thread-panel.d.ts.map +1 -0
  58. package/dist/components/conversation/thread-panel.js +123 -0
  59. package/dist/components/conversation/thread-panel.js.map +1 -0
  60. package/dist/components/layout/app-shell/app-shell.d.ts +45 -0
  61. package/dist/components/layout/app-shell/app-shell.d.ts.map +1 -0
  62. package/dist/components/layout/app-shell/app-shell.js +89 -0
  63. package/dist/components/layout/app-shell/app-shell.js.map +1 -0
  64. package/dist/components/layout/app-shell/index.d.ts +2 -0
  65. package/dist/components/layout/app-shell/index.d.ts.map +1 -0
  66. package/dist/components/layout/page/index.d.ts +2 -0
  67. package/dist/components/layout/page/index.d.ts.map +1 -0
  68. package/dist/components/layout/page/page.d.ts +31 -0
  69. package/dist/components/layout/page/page.d.ts.map +1 -0
  70. package/dist/components/layout/page/page.js +143 -0
  71. package/dist/components/layout/page/page.js.map +1 -0
  72. package/dist/components/layout/panel/index.d.ts +2 -0
  73. package/dist/components/layout/panel/index.d.ts.map +1 -0
  74. package/dist/components/layout/panel/panel.d.ts +44 -0
  75. package/dist/components/layout/panel/panel.d.ts.map +1 -0
  76. package/dist/components/layout/panel/panel.js +151 -0
  77. package/dist/components/layout/panel/panel.js.map +1 -0
  78. package/dist/components/layout/side-rail/index.d.ts +3 -0
  79. package/dist/components/layout/side-rail/index.d.ts.map +1 -0
  80. package/dist/components/layout/side-rail/side-rail-context.d.ts +23 -0
  81. package/dist/components/layout/side-rail/side-rail-context.d.ts.map +1 -0
  82. package/dist/components/layout/side-rail/side-rail-context.js +18 -0
  83. package/dist/components/layout/side-rail/side-rail-context.js.map +1 -0
  84. package/dist/components/layout/side-rail/side-rail.d.ts +101 -0
  85. package/dist/components/layout/side-rail/side-rail.d.ts.map +1 -0
  86. package/dist/components/layout/side-rail/side-rail.js +336 -0
  87. package/dist/components/layout/side-rail/side-rail.js.map +1 -0
  88. package/dist/components/layout/sidebar-nav/index.d.ts +2 -0
  89. package/dist/components/layout/sidebar-nav/index.d.ts.map +1 -0
  90. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts +62 -0
  91. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts.map +1 -0
  92. package/dist/components/layout/sidebar-nav/sidebar-nav.js +231 -0
  93. package/dist/components/layout/sidebar-nav/sidebar-nav.js.map +1 -0
  94. package/dist/components/layout/status-bar/index.d.ts +2 -0
  95. package/dist/components/layout/status-bar/index.d.ts.map +1 -0
  96. package/dist/components/layout/status-bar/status-bar.d.ts +23 -0
  97. package/dist/components/layout/status-bar/status-bar.d.ts.map +1 -0
  98. package/dist/components/layout/status-bar/status-bar.js +68 -0
  99. package/dist/components/layout/status-bar/status-bar.js.map +1 -0
  100. package/dist/components/layout/top-bar/index.d.ts +2 -0
  101. package/dist/components/layout/top-bar/index.d.ts.map +1 -0
  102. package/dist/components/layout/top-bar/top-bar.d.ts +59 -0
  103. package/dist/components/layout/top-bar/top-bar.d.ts.map +1 -0
  104. package/dist/components/layout/top-bar/top-bar.js +118 -0
  105. package/dist/components/layout/top-bar/top-bar.js.map +1 -0
  106. package/dist/components/motion/index.d.ts +3 -0
  107. package/dist/components/motion/index.d.ts.map +1 -0
  108. package/dist/components/motion/index.js +3 -0
  109. package/dist/components/motion/presence.d.ts +29 -0
  110. package/dist/components/motion/presence.d.ts.map +1 -0
  111. package/dist/components/motion/presence.js +10 -0
  112. package/dist/components/motion/presence.js.map +1 -0
  113. package/dist/components/theme/appearance-panel.d.ts +25 -0
  114. package/dist/components/theme/appearance-panel.d.ts.map +1 -0
  115. package/dist/components/theme/appearance-panel.js +162 -0
  116. package/dist/components/theme/appearance-panel.js.map +1 -0
  117. package/dist/components/theme/index.d.ts +5 -0
  118. package/dist/components/theme/index.d.ts.map +1 -0
  119. package/dist/components/theme/theme-picker.d.ts +54 -0
  120. package/dist/components/theme/theme-picker.d.ts.map +1 -0
  121. package/dist/components/theme/theme-picker.js +156 -0
  122. package/dist/components/theme/theme-picker.js.map +1 -0
  123. package/dist/components/theme/theme-provider.d.ts +130 -0
  124. package/dist/components/theme/theme-provider.d.ts.map +1 -0
  125. package/dist/components/theme/theme-provider.js +164 -0
  126. package/dist/components/theme/theme-provider.js.map +1 -0
  127. package/dist/components/theme/theme-toggle.d.ts +19 -0
  128. package/dist/components/theme/theme-toggle.d.ts.map +1 -0
  129. package/dist/components/theme/theme-toggle.js +69 -0
  130. package/dist/components/theme/theme-toggle.js.map +1 -0
  131. package/dist/components/ui/accordion/accordion.d.ts +18 -0
  132. package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
  133. package/dist/components/ui/accordion/accordion.js +60 -0
  134. package/dist/components/ui/accordion/accordion.js.map +1 -0
  135. package/dist/components/ui/accordion/index.d.ts +2 -0
  136. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  137. package/dist/components/ui/alert/alert.d.ts +26 -0
  138. package/dist/components/ui/alert/alert.d.ts.map +1 -0
  139. package/dist/components/ui/alert/alert.js +89 -0
  140. package/dist/components/ui/alert/alert.js.map +1 -0
  141. package/dist/components/ui/alert/index.d.ts +2 -0
  142. package/dist/components/ui/alert/index.d.ts.map +1 -0
  143. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +29 -0
  144. package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
  145. package/dist/components/ui/alert-dialog/alert-dialog.js +155 -0
  146. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -0
  147. package/dist/components/ui/alert-dialog/index.d.ts +2 -0
  148. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  149. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +22 -0
  150. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts.map +1 -0
  151. package/dist/components/ui/aspect-ratio/aspect-ratio.js +29 -0
  152. package/dist/components/ui/aspect-ratio/aspect-ratio.js.map +1 -0
  153. package/dist/components/ui/aspect-ratio/index.d.ts +2 -0
  154. package/dist/components/ui/aspect-ratio/index.d.ts.map +1 -0
  155. package/dist/components/ui/avatar/avatar.d.ts +41 -0
  156. package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
  157. package/dist/components/ui/avatar/avatar.js +106 -0
  158. package/dist/components/ui/avatar/avatar.js.map +1 -0
  159. package/dist/components/ui/avatar/index.d.ts +2 -0
  160. package/dist/components/ui/avatar/index.d.ts.map +1 -0
  161. package/dist/components/ui/badge/badge.d.ts +22 -0
  162. package/dist/components/ui/badge/badge.d.ts.map +1 -0
  163. package/dist/components/ui/badge/badge.js +58 -0
  164. package/dist/components/ui/badge/badge.js.map +1 -0
  165. package/dist/components/ui/badge/index.d.ts +2 -0
  166. package/dist/components/ui/badge/index.d.ts.map +1 -0
  167. package/dist/components/ui/board/board.d.ts +78 -0
  168. package/dist/components/ui/board/board.d.ts.map +1 -0
  169. package/dist/components/ui/board/board.js +200 -0
  170. package/dist/components/ui/board/board.js.map +1 -0
  171. package/dist/components/ui/board/index.d.ts +2 -0
  172. package/dist/components/ui/board/index.d.ts.map +1 -0
  173. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +24 -0
  174. package/dist/components/ui/breadcrumb/breadcrumb.d.ts.map +1 -0
  175. package/dist/components/ui/breadcrumb/breadcrumb.js +109 -0
  176. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
  177. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  178. package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
  179. package/dist/components/ui/button/button.d.ts +30 -0
  180. package/dist/components/ui/button/button.d.ts.map +1 -0
  181. package/dist/components/ui/button/button.js +80 -0
  182. package/dist/components/ui/button/button.js.map +1 -0
  183. package/dist/components/ui/button/index.d.ts +2 -0
  184. package/dist/components/ui/button/index.d.ts.map +1 -0
  185. package/dist/components/ui/button-group/button-group.d.ts +39 -0
  186. package/dist/components/ui/button-group/button-group.d.ts.map +1 -0
  187. package/dist/components/ui/button-group/button-group.js +63 -0
  188. package/dist/components/ui/button-group/button-group.js.map +1 -0
  189. package/dist/components/ui/button-group/index.d.ts +2 -0
  190. package/dist/components/ui/button-group/index.d.ts.map +1 -0
  191. package/dist/components/ui/calendar/calendar.d.ts +93 -0
  192. package/dist/components/ui/calendar/calendar.d.ts.map +1 -0
  193. package/dist/components/ui/calendar/calendar.js +243 -0
  194. package/dist/components/ui/calendar/calendar.js.map +1 -0
  195. package/dist/components/ui/calendar/index.d.ts +2 -0
  196. package/dist/components/ui/calendar/index.d.ts.map +1 -0
  197. package/dist/components/ui/card/card.d.ts +23 -0
  198. package/dist/components/ui/card/card.d.ts.map +1 -0
  199. package/dist/components/ui/card/card.js +98 -0
  200. package/dist/components/ui/card/card.js.map +1 -0
  201. package/dist/components/ui/card/index.d.ts +2 -0
  202. package/dist/components/ui/card/index.d.ts.map +1 -0
  203. package/dist/components/ui/carousel/carousel.d.ts +66 -0
  204. package/dist/components/ui/carousel/carousel.d.ts.map +1 -0
  205. package/dist/components/ui/carousel/carousel.js +178 -0
  206. package/dist/components/ui/carousel/carousel.js.map +1 -0
  207. package/dist/components/ui/carousel/index.d.ts +2 -0
  208. package/dist/components/ui/carousel/index.d.ts.map +1 -0
  209. package/dist/components/ui/chart/chart.d.ts +154 -0
  210. package/dist/components/ui/chart/chart.d.ts.map +1 -0
  211. package/dist/components/ui/chart/chart.js +373 -0
  212. package/dist/components/ui/chart/chart.js.map +1 -0
  213. package/dist/components/ui/chart/index.d.ts +2 -0
  214. package/dist/components/ui/chart/index.d.ts.map +1 -0
  215. package/dist/components/ui/checkbox/checkbox.d.ts +33 -0
  216. package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
  217. package/dist/components/ui/checkbox/checkbox.js +76 -0
  218. package/dist/components/ui/checkbox/checkbox.js.map +1 -0
  219. package/dist/components/ui/checkbox/index.d.ts +2 -0
  220. package/dist/components/ui/checkbox/index.d.ts.map +1 -0
  221. package/dist/components/ui/code-block/code-block.d.ts +75 -0
  222. package/dist/components/ui/code-block/code-block.d.ts.map +1 -0
  223. package/dist/components/ui/code-block/code-block.js +186 -0
  224. package/dist/components/ui/code-block/code-block.js.map +1 -0
  225. package/dist/components/ui/code-block/index.d.ts +2 -0
  226. package/dist/components/ui/code-block/index.d.ts.map +1 -0
  227. package/dist/components/ui/collapsible/collapsible.d.ts +17 -0
  228. package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
  229. package/dist/components/ui/collapsible/collapsible.js +38 -0
  230. package/dist/components/ui/collapsible/collapsible.js.map +1 -0
  231. package/dist/components/ui/collapsible/index.d.ts +2 -0
  232. package/dist/components/ui/collapsible/index.d.ts.map +1 -0
  233. package/dist/components/ui/combobox/combobox.d.ts +28 -0
  234. package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
  235. package/dist/components/ui/combobox/combobox.js +102 -0
  236. package/dist/components/ui/combobox/combobox.js.map +1 -0
  237. package/dist/components/ui/combobox/index.d.ts +2 -0
  238. package/dist/components/ui/combobox/index.d.ts.map +1 -0
  239. package/dist/components/ui/command/command.d.ts +53 -0
  240. package/dist/components/ui/command/command.d.ts.map +1 -0
  241. package/dist/components/ui/command/command.js +137 -0
  242. package/dist/components/ui/command/command.js.map +1 -0
  243. package/dist/components/ui/command/index.d.ts +2 -0
  244. package/dist/components/ui/command/index.d.ts.map +1 -0
  245. package/dist/components/ui/context-menu/context-menu.d.ts +32 -0
  246. package/dist/components/ui/context-menu/context-menu.d.ts.map +1 -0
  247. package/dist/components/ui/context-menu/context-menu.js +119 -0
  248. package/dist/components/ui/context-menu/context-menu.js.map +1 -0
  249. package/dist/components/ui/context-menu/index.d.ts +2 -0
  250. package/dist/components/ui/context-menu/index.d.ts.map +1 -0
  251. package/dist/components/ui/detail-panel/detail-panel.d.ts +61 -0
  252. package/dist/components/ui/detail-panel/detail-panel.d.ts.map +1 -0
  253. package/dist/components/ui/detail-panel/detail-panel.js +132 -0
  254. package/dist/components/ui/detail-panel/detail-panel.js.map +1 -0
  255. package/dist/components/ui/detail-panel/index.d.ts +2 -0
  256. package/dist/components/ui/detail-panel/index.d.ts.map +1 -0
  257. package/dist/components/ui/dialog/dialog.d.ts +40 -0
  258. package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
  259. package/dist/components/ui/dialog/dialog.js +125 -0
  260. package/dist/components/ui/dialog/dialog.js.map +1 -0
  261. package/dist/components/ui/dialog/index.d.ts +2 -0
  262. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  263. package/dist/components/ui/diff-block/diff-block.d.ts +95 -0
  264. package/dist/components/ui/diff-block/diff-block.d.ts.map +1 -0
  265. package/dist/components/ui/diff-block/diff-block.js +230 -0
  266. package/dist/components/ui/diff-block/diff-block.js.map +1 -0
  267. package/dist/components/ui/diff-block/diff-block.test.d.ts +2 -0
  268. package/dist/components/ui/diff-block/diff-block.test.d.ts.map +1 -0
  269. package/dist/components/ui/diff-block/index.d.ts +2 -0
  270. package/dist/components/ui/diff-block/index.d.ts.map +1 -0
  271. package/dist/components/ui/drawer/drawer.d.ts +39 -0
  272. package/dist/components/ui/drawer/drawer.d.ts.map +1 -0
  273. package/dist/components/ui/drawer/drawer.js +106 -0
  274. package/dist/components/ui/drawer/drawer.js.map +1 -0
  275. package/dist/components/ui/drawer/index.d.ts +2 -0
  276. package/dist/components/ui/drawer/index.d.ts.map +1 -0
  277. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +48 -0
  278. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  279. package/dist/components/ui/dropdown-menu/dropdown-menu.js +151 -0
  280. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  281. package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
  282. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
  283. package/dist/components/ui/empty/empty.d.ts +27 -0
  284. package/dist/components/ui/empty/empty.d.ts.map +1 -0
  285. package/dist/components/ui/{empty.js → empty/empty.js} +28 -23
  286. package/dist/components/ui/empty/empty.js.map +1 -0
  287. package/dist/components/ui/empty/index.d.ts +2 -0
  288. package/dist/components/ui/empty/index.d.ts.map +1 -0
  289. package/dist/components/ui/entity-icon/entity-icon.d.ts +59 -0
  290. package/dist/components/ui/entity-icon/entity-icon.d.ts.map +1 -0
  291. package/dist/components/ui/entity-icon/entity-icon.js +145 -0
  292. package/dist/components/ui/entity-icon/entity-icon.js.map +1 -0
  293. package/dist/components/ui/entity-icon/index.d.ts +2 -0
  294. package/dist/components/ui/entity-icon/index.d.ts.map +1 -0
  295. package/dist/components/ui/field/field.d.ts +39 -0
  296. package/dist/components/ui/field/field.d.ts.map +1 -0
  297. package/dist/components/ui/field/field.js +111 -0
  298. package/dist/components/ui/field/field.js.map +1 -0
  299. package/dist/components/ui/field/index.d.ts +2 -0
  300. package/dist/components/ui/field/index.d.ts.map +1 -0
  301. package/dist/components/ui/hover-card/hover-card.d.ts +17 -0
  302. package/dist/components/ui/hover-card/hover-card.d.ts.map +1 -0
  303. package/dist/components/ui/hover-card/hover-card.js +40 -0
  304. package/dist/components/ui/hover-card/hover-card.js.map +1 -0
  305. package/dist/components/ui/hover-card/index.d.ts +2 -0
  306. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  307. package/dist/components/ui/input/index.d.ts +2 -0
  308. package/dist/components/ui/input/index.d.ts.map +1 -0
  309. package/dist/components/ui/input/input.d.ts +15 -0
  310. package/dist/components/ui/input/input.d.ts.map +1 -0
  311. package/dist/components/ui/input/input.js +36 -0
  312. package/dist/components/ui/input/input.js.map +1 -0
  313. package/dist/components/ui/input-group/index.d.ts +2 -0
  314. package/dist/components/ui/input-group/index.d.ts.map +1 -0
  315. package/dist/components/ui/input-group/input-group.d.ts +34 -0
  316. package/dist/components/ui/input-group/input-group.d.ts.map +1 -0
  317. package/dist/components/ui/input-group/input-group.js +93 -0
  318. package/dist/components/ui/input-group/input-group.js.map +1 -0
  319. package/dist/components/ui/input-otp/index.d.ts +2 -0
  320. package/dist/components/ui/input-otp/index.d.ts.map +1 -0
  321. package/dist/components/ui/input-otp/input-otp.d.ts +37 -0
  322. package/dist/components/ui/input-otp/input-otp.d.ts.map +1 -0
  323. package/dist/components/ui/input-otp/input-otp.js +92 -0
  324. package/dist/components/ui/input-otp/input-otp.js.map +1 -0
  325. package/dist/components/ui/item/index.d.ts +2 -0
  326. package/dist/components/ui/item/index.d.ts.map +1 -0
  327. package/dist/components/ui/item/item.d.ts +49 -0
  328. package/dist/components/ui/item/item.d.ts.map +1 -0
  329. package/dist/components/ui/item/item.js +163 -0
  330. package/dist/components/ui/item/item.js.map +1 -0
  331. package/dist/components/ui/kbd/index.d.ts +2 -0
  332. package/dist/components/ui/kbd/index.d.ts.map +1 -0
  333. package/dist/components/ui/kbd/kbd.d.ts +14 -0
  334. package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
  335. package/dist/components/ui/kbd/kbd.js +40 -0
  336. package/dist/components/ui/kbd/kbd.js.map +1 -0
  337. package/dist/components/ui/label/index.d.ts +2 -0
  338. package/dist/components/ui/label/index.d.ts.map +1 -0
  339. package/dist/components/ui/label/label.d.ts +17 -0
  340. package/dist/components/ui/label/label.d.ts.map +1 -0
  341. package/dist/components/ui/label/label.js +33 -0
  342. package/dist/components/ui/label/label.js.map +1 -0
  343. package/dist/components/ui/menubar/index.d.ts +2 -0
  344. package/dist/components/ui/menubar/index.d.ts.map +1 -0
  345. package/dist/components/ui/menubar/menubar.d.ts +38 -0
  346. package/dist/components/ui/menubar/menubar.d.ts.map +1 -0
  347. package/dist/components/ui/menubar/menubar.js +138 -0
  348. package/dist/components/ui/menubar/menubar.js.map +1 -0
  349. package/dist/components/ui/modal-dialog/index.d.ts +2 -0
  350. package/dist/components/ui/modal-dialog/index.d.ts.map +1 -0
  351. package/dist/components/ui/modal-dialog/modal-dialog.d.ts +35 -0
  352. package/dist/components/ui/modal-dialog/modal-dialog.d.ts.map +1 -0
  353. package/dist/components/ui/modal-dialog/modal-dialog.js +78 -0
  354. package/dist/components/ui/modal-dialog/modal-dialog.js.map +1 -0
  355. package/dist/components/ui/navigation-menu/index.d.ts +2 -0
  356. package/dist/components/ui/navigation-menu/index.d.ts.map +1 -0
  357. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +77 -0
  358. package/dist/components/ui/navigation-menu/navigation-menu.d.ts.map +1 -0
  359. package/dist/components/ui/navigation-menu/navigation-menu.js +116 -0
  360. package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -0
  361. package/dist/components/ui/pagination/index.d.ts +2 -0
  362. package/dist/components/ui/pagination/index.d.ts.map +1 -0
  363. package/dist/components/ui/pagination/pagination.d.ts +33 -0
  364. package/dist/components/ui/pagination/pagination.d.ts.map +1 -0
  365. package/dist/components/ui/pagination/pagination.js +92 -0
  366. package/dist/components/ui/pagination/pagination.js.map +1 -0
  367. package/dist/components/ui/popover/index.d.ts +2 -0
  368. package/dist/components/ui/popover/index.d.ts.map +1 -0
  369. package/dist/components/ui/popover/popover.d.ts +26 -0
  370. package/dist/components/ui/popover/popover.d.ts.map +1 -0
  371. package/dist/components/ui/popover/popover.js +66 -0
  372. package/dist/components/ui/popover/popover.js.map +1 -0
  373. package/dist/components/ui/progress/index.d.ts +2 -0
  374. package/dist/components/ui/progress/index.d.ts.map +1 -0
  375. package/dist/components/ui/progress/progress.d.ts +29 -0
  376. package/dist/components/ui/progress/progress.d.ts.map +1 -0
  377. package/dist/components/ui/progress/progress.js +53 -0
  378. package/dist/components/ui/progress/progress.js.map +1 -0
  379. package/dist/components/ui/radio-group/index.d.ts +2 -0
  380. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  381. package/dist/components/ui/radio-group/radio-group.d.ts +26 -0
  382. package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
  383. package/dist/components/ui/radio-group/radio-group.js +77 -0
  384. package/dist/components/ui/radio-group/radio-group.js.map +1 -0
  385. package/dist/components/ui/resizable/index.d.ts +2 -0
  386. package/dist/components/ui/resizable/index.d.ts.map +1 -0
  387. package/dist/components/ui/resizable/resizable.d.ts +33 -0
  388. package/dist/components/ui/resizable/resizable.d.ts.map +1 -0
  389. package/dist/components/ui/resizable/resizable.js +57 -0
  390. package/dist/components/ui/resizable/resizable.js.map +1 -0
  391. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  392. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  393. package/dist/components/ui/scroll-area/scroll-area.d.ts +26 -0
  394. package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
  395. package/dist/components/ui/scroll-area/scroll-area.js +36 -0
  396. package/dist/components/ui/scroll-area/scroll-area.js.map +1 -0
  397. package/dist/components/ui/select/index.d.ts +2 -0
  398. package/dist/components/ui/select/index.d.ts.map +1 -0
  399. package/dist/components/ui/select/select.d.ts +63 -0
  400. package/dist/components/ui/select/select.d.ts.map +1 -0
  401. package/dist/components/ui/select/select.js +142 -0
  402. package/dist/components/ui/select/select.js.map +1 -0
  403. package/dist/components/ui/separator/index.d.ts +2 -0
  404. package/dist/components/ui/separator/index.d.ts.map +1 -0
  405. package/dist/components/ui/separator/separator.d.ts +17 -0
  406. package/dist/components/ui/separator/separator.d.ts.map +1 -0
  407. package/dist/components/ui/separator/separator.js +24 -0
  408. package/dist/components/ui/separator/separator.js.map +1 -0
  409. package/dist/components/ui/sheet/index.d.ts +2 -0
  410. package/dist/components/ui/sheet/index.d.ts.map +1 -0
  411. package/dist/components/ui/sheet/sheet.d.ts +32 -0
  412. package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
  413. package/dist/components/ui/sheet/sheet.js +118 -0
  414. package/dist/components/ui/sheet/sheet.js.map +1 -0
  415. package/dist/components/ui/skeleton/index.d.ts +2 -0
  416. package/dist/components/ui/skeleton/index.d.ts.map +1 -0
  417. package/dist/components/ui/skeleton/skeleton.d.ts +15 -0
  418. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
  419. package/dist/components/ui/skeleton/skeleton.js +31 -0
  420. package/dist/components/ui/skeleton/skeleton.js.map +1 -0
  421. package/dist/components/ui/slider/index.d.ts +2 -0
  422. package/dist/components/ui/slider/index.d.ts.map +1 -0
  423. package/dist/components/ui/slider/slider.d.ts +22 -0
  424. package/dist/components/ui/slider/slider.d.ts.map +1 -0
  425. package/dist/components/ui/slider/slider.js +59 -0
  426. package/dist/components/ui/slider/slider.js.map +1 -0
  427. package/dist/components/ui/spinner/index.d.ts +2 -0
  428. package/dist/components/ui/spinner/index.d.ts.map +1 -0
  429. package/dist/components/ui/spinner/spinner.d.ts +25 -0
  430. package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
  431. package/dist/components/ui/spinner/spinner.js +57 -0
  432. package/dist/components/ui/spinner/spinner.js.map +1 -0
  433. package/dist/components/ui/status-chip/index.d.ts +2 -0
  434. package/dist/components/ui/status-chip/index.d.ts.map +1 -0
  435. package/dist/components/ui/status-chip/status-chip.d.ts +70 -0
  436. package/dist/components/ui/status-chip/status-chip.d.ts.map +1 -0
  437. package/dist/components/ui/status-chip/status-chip.js +140 -0
  438. package/dist/components/ui/status-chip/status-chip.js.map +1 -0
  439. package/dist/components/ui/switch/index.d.ts +2 -0
  440. package/dist/components/ui/switch/index.d.ts.map +1 -0
  441. package/dist/components/ui/switch/switch.d.ts +36 -0
  442. package/dist/components/ui/switch/switch.d.ts.map +1 -0
  443. package/dist/components/ui/switch/switch.js +74 -0
  444. package/dist/components/ui/switch/switch.js.map +1 -0
  445. package/dist/components/ui/table/index.d.ts +2 -0
  446. package/dist/components/ui/table/index.d.ts.map +1 -0
  447. package/dist/components/ui/table/table.d.ts +29 -0
  448. package/dist/components/ui/table/table.d.ts.map +1 -0
  449. package/dist/components/ui/table/table.js +129 -0
  450. package/dist/components/ui/table/table.js.map +1 -0
  451. package/dist/components/ui/tabs/index.d.ts +2 -0
  452. package/dist/components/ui/tabs/index.d.ts.map +1 -0
  453. package/dist/components/ui/tabs/tabs.d.ts +23 -0
  454. package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
  455. package/dist/components/ui/tabs/tabs.js +43 -0
  456. package/dist/components/ui/tabs/tabs.js.map +1 -0
  457. package/dist/components/ui/textarea/index.d.ts +2 -0
  458. package/dist/components/ui/textarea/index.d.ts.map +1 -0
  459. package/dist/components/ui/textarea/textarea.d.ts +14 -0
  460. package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
  461. package/dist/components/ui/textarea/textarea.js +30 -0
  462. package/dist/components/ui/textarea/textarea.js.map +1 -0
  463. package/dist/components/ui/toast/index.d.ts +2 -0
  464. package/dist/components/ui/toast/index.d.ts.map +1 -0
  465. package/dist/components/ui/toast/toast.d.ts +68 -0
  466. package/dist/components/ui/toast/toast.d.ts.map +1 -0
  467. package/dist/components/ui/toast/toast.js +186 -0
  468. package/dist/components/ui/toast/toast.js.map +1 -0
  469. package/dist/components/ui/toggle/index.d.ts +2 -0
  470. package/dist/components/ui/toggle/index.d.ts.map +1 -0
  471. package/dist/components/ui/toggle/toggle.d.ts +22 -0
  472. package/dist/components/ui/toggle/toggle.d.ts.map +1 -0
  473. package/dist/components/ui/toggle/toggle.js +64 -0
  474. package/dist/components/ui/toggle/toggle.js.map +1 -0
  475. package/dist/components/ui/toggle-group/index.d.ts +2 -0
  476. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  477. package/dist/components/ui/toggle-group/toggle-group.d.ts +35 -0
  478. package/dist/components/ui/toggle-group/toggle-group.d.ts.map +1 -0
  479. package/dist/components/ui/toggle-group/toggle-group.js +38 -0
  480. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -0
  481. package/dist/components/ui/tooltip/index.d.ts +2 -0
  482. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  483. package/dist/components/ui/tooltip/tooltip.d.ts +18 -0
  484. package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
  485. package/dist/components/ui/tooltip/tooltip.js +67 -0
  486. package/dist/components/ui/tooltip/tooltip.js.map +1 -0
  487. package/dist/index.d.ts +96 -19
  488. package/dist/index.d.ts.map +1 -0
  489. package/dist/index.js +90 -20
  490. package/dist/lib/keyed-rows.d.ts +36 -0
  491. package/dist/lib/keyed-rows.d.ts.map +1 -0
  492. package/dist/lib/keyed-rows.js +53 -0
  493. package/dist/lib/keyed-rows.js.map +1 -0
  494. package/dist/lib/keyed-rows.test.d.ts +2 -0
  495. package/dist/lib/keyed-rows.test.d.ts.map +1 -0
  496. package/dist/lib/overlay.d.ts +44 -0
  497. package/dist/lib/overlay.d.ts.map +1 -0
  498. package/dist/lib/overlay.js +57 -0
  499. package/dist/lib/overlay.js.map +1 -0
  500. package/dist/lib/themes.d.ts +197 -0
  501. package/dist/lib/themes.d.ts.map +1 -0
  502. package/dist/lib/themes.js +303 -0
  503. package/dist/lib/themes.js.map +1 -0
  504. package/dist/lib/tokens.d.ts +103 -0
  505. package/dist/lib/tokens.d.ts.map +1 -0
  506. package/dist/lib/tokens.js +805 -0
  507. package/dist/lib/tokens.js.map +1 -0
  508. package/dist/lib/utils.d.ts +27 -0
  509. package/dist/lib/utils.d.ts.map +1 -0
  510. package/dist/lib/utils.js +61 -3
  511. package/dist/lib/utils.js.map +1 -0
  512. package/dist/lib/variants.d.ts +57 -0
  513. package/dist/lib/variants.d.ts.map +1 -0
  514. package/dist/lib/variants.js +49 -0
  515. package/dist/lib/variants.js.map +1 -0
  516. package/dist/lib/version-notes.d.ts +24 -0
  517. package/dist/lib/version-notes.d.ts.map +1 -0
  518. package/dist/lib/version-notes.js +41 -1
  519. package/dist/lib/version-notes.js.map +1 -0
  520. package/dist/r/accordion.json +23 -0
  521. package/dist/r/account-menu.json +25 -0
  522. package/dist/r/alert-dialog.json +22 -0
  523. package/dist/r/alert.json +22 -0
  524. package/dist/r/app-shell.json +20 -0
  525. package/dist/r/aspect-ratio.json +20 -0
  526. package/dist/r/avatar.json +20 -0
  527. package/dist/r/badge.json +22 -0
  528. package/dist/r/board.json +20 -0
  529. package/dist/r/breadcrumb.json +22 -0
  530. package/dist/r/button-group.json +22 -0
  531. package/dist/r/button.json +22 -0
  532. package/dist/r/calendar.json +25 -0
  533. package/dist/r/card.json +20 -0
  534. package/dist/r/carousel.json +26 -0
  535. package/dist/r/chart.json +23 -0
  536. package/dist/r/checkbox.json +23 -0
  537. package/dist/r/code-block.json +24 -0
  538. package/dist/r/collapsible.json +22 -0
  539. package/dist/r/combobox.json +23 -0
  540. package/dist/r/command.json +23 -0
  541. package/dist/r/context-menu.json +23 -0
  542. package/dist/r/conversation.json +48 -0
  543. package/dist/r/detail-panel.json +24 -0
  544. package/dist/r/dialog.json +23 -0
  545. package/dist/r/diff-block.json +20 -0
  546. package/dist/r/drawer.json +22 -0
  547. package/dist/r/dropdown-menu.json +23 -0
  548. package/dist/r/empty.json +20 -0
  549. package/dist/r/entity-icon.json +20 -0
  550. package/dist/r/field.json +22 -0
  551. package/dist/r/hover-card.json +22 -0
  552. package/dist/r/input-group.json +20 -0
  553. package/dist/r/input-otp.json +22 -0
  554. package/dist/r/input.json +20 -0
  555. package/dist/r/item.json +20 -0
  556. package/dist/r/kbd.json +20 -0
  557. package/dist/r/label.json +20 -0
  558. package/dist/r/list-row.json +22 -0
  559. package/dist/r/menubar.json +23 -0
  560. package/dist/r/modal-dialog.json +22 -0
  561. package/dist/r/navigation-menu.json +23 -0
  562. package/dist/r/page.json +20 -0
  563. package/dist/r/pagination.json +23 -0
  564. package/dist/r/panel.json +20 -0
  565. package/dist/r/popover.json +22 -0
  566. package/dist/r/progress.json +22 -0
  567. package/dist/r/radio-group.json +23 -0
  568. package/dist/r/registry.json +1676 -0
  569. package/dist/r/resizable.json +23 -0
  570. package/dist/r/scroll-area.json +20 -0
  571. package/dist/r/select.json +23 -0
  572. package/dist/r/separator.json +22 -0
  573. package/dist/r/settings.json +20 -0
  574. package/dist/r/sheet.json +25 -0
  575. package/dist/r/side-rail.json +27 -0
  576. package/dist/r/sidebar-nav.json +23 -0
  577. package/dist/r/skeleton.json +20 -0
  578. package/dist/r/slider.json +22 -0
  579. package/dist/r/spinner.json +22 -0
  580. package/dist/r/stat.json +22 -0
  581. package/dist/r/status-bar.json +20 -0
  582. package/dist/r/status-chip.json +22 -0
  583. package/dist/r/switch.json +22 -0
  584. package/dist/r/table.json +20 -0
  585. package/dist/r/tabs.json +22 -0
  586. package/dist/r/textarea.json +20 -0
  587. package/dist/r/theme.json +36 -0
  588. package/dist/r/toast.json +23 -0
  589. package/dist/r/toggle-group.json +24 -0
  590. package/dist/r/toggle.json +22 -0
  591. package/dist/r/tooltip.json +22 -0
  592. package/dist/r/top-bar.json +20 -0
  593. package/dist/r/update-dialog.json +27 -0
  594. package/dist/r/workspace-mark.json +22 -0
  595. package/package.json +75 -21
  596. package/registry.json +1676 -0
  597. package/src/components/composites/account-menu/account-menu.tsx +150 -0
  598. package/src/components/composites/account-menu/index.ts +1 -0
  599. package/src/components/composites/list-row/index.ts +1 -0
  600. package/src/components/composites/list-row/list-row.tsx +116 -0
  601. package/src/components/composites/settings/index.ts +1 -0
  602. package/src/components/composites/settings/settings.tsx +142 -0
  603. package/src/components/composites/stat/index.ts +9 -0
  604. package/src/components/composites/stat/stat.tsx +155 -0
  605. package/src/components/composites/update-dialog/index.ts +7 -0
  606. package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  607. package/src/components/composites/workspace-mark/index.ts +1 -0
  608. package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  609. package/src/components/conversation/conversation-avatar.tsx +60 -0
  610. package/src/components/conversation/conversation-surface.tsx +107 -0
  611. package/src/components/conversation/index.ts +25 -0
  612. package/src/components/conversation/message-composer.tsx +239 -0
  613. package/src/components/conversation/message-row.tsx +387 -0
  614. package/src/components/conversation/thread-panel.tsx +141 -0
  615. package/src/components/layout/app-shell/app-shell.tsx +92 -0
  616. package/src/components/layout/app-shell/index.ts +1 -0
  617. package/src/components/layout/page/index.ts +9 -0
  618. package/src/components/layout/page/page.tsx +122 -0
  619. package/src/components/layout/panel/index.ts +12 -0
  620. package/src/components/layout/panel/panel.tsx +166 -0
  621. package/src/components/layout/side-rail/index.ts +12 -0
  622. package/src/components/layout/side-rail/side-rail-context.ts +42 -0
  623. package/src/components/layout/side-rail/side-rail.tsx +405 -0
  624. package/src/components/layout/sidebar-nav/index.ts +14 -0
  625. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  626. package/src/components/layout/status-bar/index.ts +1 -0
  627. package/src/components/layout/status-bar/status-bar.tsx +73 -0
  628. package/src/components/layout/top-bar/index.ts +10 -0
  629. package/src/components/layout/top-bar/top-bar.tsx +166 -0
  630. package/src/components/motion/index.ts +2 -0
  631. package/src/components/motion/presence.tsx +32 -0
  632. package/src/components/theme/appearance-panel.tsx +179 -0
  633. package/src/components/theme/index.ts +22 -0
  634. package/src/components/theme/theme-picker.tsx +174 -0
  635. package/src/components/theme/theme-provider.tsx +309 -0
  636. package/src/components/theme/theme-toggle.tsx +64 -0
  637. package/src/components/ui/accordion/accordion.tsx +66 -0
  638. package/src/components/ui/accordion/index.ts +1 -0
  639. package/src/components/ui/alert/alert.tsx +95 -0
  640. package/src/components/ui/alert/index.ts +1 -0
  641. package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  642. package/src/components/ui/alert-dialog/index.ts +13 -0
  643. package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  644. package/src/components/ui/aspect-ratio/index.ts +1 -0
  645. package/src/components/ui/avatar/avatar.tsx +114 -0
  646. package/src/components/ui/avatar/index.ts +9 -0
  647. package/src/components/ui/badge/badge.tsx +59 -0
  648. package/src/components/ui/badge/index.ts +1 -0
  649. package/src/components/ui/board/board.tsx +254 -0
  650. package/src/components/ui/board/index.ts +10 -0
  651. package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  652. package/src/components/ui/breadcrumb/index.ts +9 -0
  653. package/src/components/ui/button/button.tsx +89 -0
  654. package/src/components/ui/button/index.ts +1 -0
  655. package/src/components/ui/button-group/button-group.tsx +92 -0
  656. package/src/components/ui/button-group/index.ts +6 -0
  657. package/src/components/ui/calendar/calendar.tsx +277 -0
  658. package/src/components/ui/calendar/index.ts +1 -0
  659. package/src/components/ui/card/card.tsx +82 -0
  660. package/src/components/ui/card/index.ts +10 -0
  661. package/src/components/ui/carousel/carousel.tsx +209 -0
  662. package/src/components/ui/carousel/index.ts +1 -0
  663. package/src/components/ui/chart/chart.tsx +413 -0
  664. package/src/components/ui/chart/index.ts +17 -0
  665. package/src/components/ui/checkbox/checkbox.tsx +99 -0
  666. package/src/components/ui/checkbox/index.ts +1 -0
  667. package/src/components/ui/code-block/code-block.tsx +238 -0
  668. package/src/components/ui/code-block/index.ts +1 -0
  669. package/src/components/ui/collapsible/collapsible.tsx +54 -0
  670. package/src/components/ui/collapsible/index.ts +1 -0
  671. package/src/components/ui/combobox/combobox.tsx +142 -0
  672. package/src/components/ui/combobox/index.ts +10 -0
  673. package/src/components/ui/command/command.tsx +214 -0
  674. package/src/components/ui/command/index.ts +12 -0
  675. package/src/components/ui/context-menu/context-menu.tsx +163 -0
  676. package/src/components/ui/context-menu/index.ts +15 -0
  677. package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  678. package/src/components/ui/detail-panel/index.ts +9 -0
  679. package/src/components/ui/dialog/dialog.tsx +138 -0
  680. package/src/components/ui/dialog/index.ts +14 -0
  681. package/src/components/ui/diff-block/diff-block.tsx +286 -0
  682. package/src/components/ui/diff-block/index.ts +11 -0
  683. package/src/components/ui/drawer/drawer.tsx +144 -0
  684. package/src/components/ui/drawer/index.ts +13 -0
  685. package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  686. package/src/components/ui/dropdown-menu/index.ts +18 -0
  687. package/src/components/ui/empty/empty.tsx +104 -0
  688. package/src/components/ui/empty/index.ts +10 -0
  689. package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  690. package/src/components/ui/entity-icon/index.ts +1 -0
  691. package/src/components/ui/field/field.tsx +131 -0
  692. package/src/components/ui/field/index.ts +11 -0
  693. package/src/components/ui/hover-card/hover-card.tsx +48 -0
  694. package/src/components/ui/hover-card/index.ts +1 -0
  695. package/src/components/ui/input/index.ts +1 -0
  696. package/src/components/ui/input/input.tsx +41 -0
  697. package/src/components/ui/input-group/index.ts +8 -0
  698. package/src/components/ui/input-group/input-group.tsx +111 -0
  699. package/src/components/ui/input-otp/index.ts +1 -0
  700. package/src/components/ui/input-otp/input-otp.tsx +108 -0
  701. package/src/components/ui/item/index.ts +10 -0
  702. package/src/components/ui/item/item.tsx +146 -0
  703. package/src/components/ui/kbd/index.ts +1 -0
  704. package/src/components/ui/kbd/kbd.tsx +42 -0
  705. package/src/components/ui/label/index.ts +1 -0
  706. package/src/components/ui/label/label.tsx +36 -0
  707. package/src/components/ui/menubar/index.ts +16 -0
  708. package/src/components/ui/menubar/menubar.tsx +190 -0
  709. package/src/components/ui/modal-dialog/index.ts +1 -0
  710. package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  711. package/src/components/ui/navigation-menu/index.ts +13 -0
  712. package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  713. package/src/components/ui/pagination/index.ts +8 -0
  714. package/src/components/ui/pagination/pagination.tsx +144 -0
  715. package/src/components/ui/popover/index.ts +10 -0
  716. package/src/components/ui/popover/popover.tsx +81 -0
  717. package/src/components/ui/progress/index.ts +1 -0
  718. package/src/components/ui/progress/progress.tsx +67 -0
  719. package/src/components/ui/radio-group/index.ts +1 -0
  720. package/src/components/ui/radio-group/radio-group.tsx +78 -0
  721. package/src/components/ui/resizable/index.ts +6 -0
  722. package/src/components/ui/resizable/resizable.tsx +74 -0
  723. package/src/components/ui/scroll-area/index.ts +1 -0
  724. package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  725. package/src/components/ui/select/index.ts +11 -0
  726. package/src/components/ui/select/select.tsx +188 -0
  727. package/src/components/ui/separator/index.ts +1 -0
  728. package/src/components/ui/separator/separator.tsx +40 -0
  729. package/src/components/ui/sheet/index.ts +13 -0
  730. package/src/components/ui/sheet/sheet.tsx +132 -0
  731. package/src/components/ui/skeleton/index.ts +1 -0
  732. package/src/components/ui/skeleton/skeleton.tsx +28 -0
  733. package/src/components/ui/slider/index.ts +1 -0
  734. package/src/components/ui/slider/slider.tsx +81 -0
  735. package/src/components/ui/spinner/index.ts +1 -0
  736. package/src/components/ui/spinner/spinner.tsx +58 -0
  737. package/src/components/ui/status-chip/index.ts +8 -0
  738. package/src/components/ui/status-chip/status-chip.tsx +142 -0
  739. package/src/components/ui/switch/index.ts +1 -0
  740. package/src/components/ui/switch/switch.tsx +100 -0
  741. package/src/components/ui/table/index.ts +11 -0
  742. package/src/components/ui/table/table.tsx +125 -0
  743. package/src/components/ui/tabs/index.ts +8 -0
  744. package/src/components/ui/tabs/tabs.tsx +77 -0
  745. package/src/components/ui/textarea/index.ts +1 -0
  746. package/src/components/ui/textarea/textarea.tsx +36 -0
  747. package/src/components/ui/toast/index.ts +1 -0
  748. package/src/components/ui/toast/toast.tsx +220 -0
  749. package/src/components/ui/toggle/index.ts +1 -0
  750. package/src/components/ui/toggle/toggle.tsx +60 -0
  751. package/src/components/ui/toggle-group/index.ts +6 -0
  752. package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  753. package/src/components/ui/tooltip/index.ts +9 -0
  754. package/src/components/ui/tooltip/tooltip.tsx +102 -0
  755. package/src/index.ts +154 -0
  756. package/src/lib/keyed-rows.ts +68 -0
  757. package/src/lib/overlay.ts +70 -0
  758. package/src/lib/themes.ts +490 -0
  759. package/src/lib/tokens.ts +688 -0
  760. package/src/lib/utils.ts +74 -4
  761. package/src/lib/variants.ts +62 -0
  762. package/src/lib/version-notes.ts +35 -0
  763. package/src/styles/base.css +489 -484
  764. package/src/styles/fonts.css +26 -0
  765. package/src/styles/globals.css +14 -3
  766. package/src/styles/theme.css +838 -229
  767. package/LICENSE +0 -201
  768. package/dist/components/account-drawer.d.ts +0 -11
  769. package/dist/components/account-drawer.js +0 -120
  770. package/dist/components/appearance.d.ts +0 -261
  771. package/dist/components/appearance.js +0 -802
  772. package/dist/components/on-screen-controls.d.ts +0 -8
  773. package/dist/components/on-screen-controls.js +0 -162
  774. package/dist/components/scene-settings.d.ts +0 -33
  775. package/dist/components/scene-settings.js +0 -253
  776. package/dist/components/theme-preview.d.ts +0 -40
  777. package/dist/components/theme-preview.js +0 -210
  778. package/dist/components/theme-provider.d.ts +0 -52
  779. package/dist/components/theme-provider.js +0 -128
  780. package/dist/components/theme-swatch.d.ts +0 -12
  781. package/dist/components/theme-swatch.js +0 -66
  782. package/dist/components/theme-toggle.d.ts +0 -7
  783. package/dist/components/theme-toggle.js +0 -64
  784. package/dist/components/ui/badge.d.ts +0 -8
  785. package/dist/components/ui/badge.js +0 -34
  786. package/dist/components/ui/button.d.ts +0 -9
  787. package/dist/components/ui/button.js +0 -52
  788. package/dist/components/ui/card.d.ts +0 -4
  789. package/dist/components/ui/card.js +0 -28
  790. package/dist/components/ui/dialog.d.ts +0 -15
  791. package/dist/components/ui/dialog.js +0 -104
  792. package/dist/components/ui/drawer.d.ts +0 -24
  793. package/dist/components/ui/drawer.js +0 -120
  794. package/dist/components/ui/dropdown-menu.d.ts +0 -35
  795. package/dist/components/ui/dropdown-menu.js +0 -180
  796. package/dist/components/ui/empty.d.ts +0 -12
  797. package/dist/components/ui/field.d.ts +0 -25
  798. package/dist/components/ui/field.js +0 -188
  799. package/dist/components/ui/input.d.ts +0 -3
  800. package/dist/components/ui/input.js +0 -22
  801. package/dist/components/ui/label.d.ts +0 -3
  802. package/dist/components/ui/label.js +0 -17
  803. package/dist/components/ui/radio-group.d.ts +0 -5
  804. package/dist/components/ui/radio-group.js +0 -39
  805. package/dist/components/ui/separator.d.ts +0 -7
  806. package/dist/components/ui/separator.js +0 -20
  807. package/dist/components/ui/skeleton.d.ts +0 -3
  808. package/dist/components/ui/skeleton.js +0 -17
  809. package/dist/components/ui/spinner.d.ts +0 -5
  810. package/dist/components/ui/spinner.js +0 -17
  811. package/dist/components/ui/switch.d.ts +0 -8
  812. package/dist/components/ui/switch.js +0 -59
  813. package/dist/components/ui/tabs.d.ts +0 -11
  814. package/dist/components/ui/tabs.js +0 -57
  815. package/dist/components/ui/toggle-group.d.ts +0 -13
  816. package/dist/components/ui/toggle-group.js +0 -95
  817. package/dist/components/ui/toggle.d.ts +0 -10
  818. package/dist/components/ui/toggle.js +0 -41
  819. package/dist/components/ui/tooltip.d.ts +0 -15
  820. package/dist/components/ui/tooltip.js +0 -55
  821. package/dist/components/version-dialog.d.ts +0 -25
  822. package/dist/components/version-dialog.js +0 -330
  823. package/dist/components/workspace-brand.d.ts +0 -5
  824. package/dist/components/workspace-brand.js +0 -13
  825. package/dist/components/workspace-logo.d.ts +0 -3
  826. package/dist/components/workspace-logo.js +0 -17
  827. package/src/components/account-drawer.tsx +0 -114
  828. package/src/components/appearance.ts +0 -1112
  829. package/src/components/on-screen-controls.tsx +0 -149
  830. package/src/components/scene-settings.tsx +0 -199
  831. package/src/components/theme-preview.tsx +0 -170
  832. package/src/components/theme-provider.tsx +0 -214
  833. package/src/components/theme-swatch.tsx +0 -49
  834. package/src/components/theme-toggle.tsx +0 -48
  835. package/src/components/ui/badge.tsx +0 -40
  836. package/src/components/ui/button.tsx +0 -58
  837. package/src/components/ui/card.tsx +0 -21
  838. package/src/components/ui/dialog.tsx +0 -132
  839. package/src/components/ui/drawer.tsx +0 -168
  840. package/src/components/ui/dropdown-menu.tsx +0 -235
  841. package/src/components/ui/empty.tsx +0 -97
  842. package/src/components/ui/field.tsx +0 -220
  843. package/src/components/ui/input.tsx +0 -20
  844. package/src/components/ui/label.tsx +0 -19
  845. package/src/components/ui/radio-group.tsx +0 -41
  846. package/src/components/ui/separator.tsx +0 -28
  847. package/src/components/ui/skeleton.tsx +0 -16
  848. package/src/components/ui/spinner.tsx +0 -20
  849. package/src/components/ui/switch.tsx +0 -59
  850. package/src/components/ui/tabs.tsx +0 -76
  851. package/src/components/ui/toggle-group.tsx +0 -98
  852. package/src/components/ui/toggle.tsx +0 -42
  853. package/src/components/ui/tooltip.tsx +0 -61
  854. package/src/components/version-dialog.tsx +0 -368
  855. package/src/components/workspace-brand.tsx +0 -18
  856. package/src/components/workspace-logo.tsx +0 -21
  857. package/src/index.tsx +0 -53
  858. package/src/styles/auth-shell.css +0 -167
  859. package/src/styles/conventional-workspace.css +0 -2858
  860. package/src/styles/dev-view.css +0 -899
  861. package/src/styles/workspace-shell.css +0 -82
  862. package/tsconfig.json +0 -11
@@ -0,0 +1,101 @@
1
+ import type { ComponentProps, JSX } from 'solid-js';
2
+ import { type ConversationAvatarKind } from './conversation-avatar';
3
+ /**
4
+ * MessageRow.
5
+ *
6
+ * One turn in a transcript: a speaker, a bubble, and the actions that apply to it.
7
+ *
8
+ * ## What it does not know
9
+ *
10
+ * It takes no domain types. A caller supplies the speaker's name, the timestamp, and
11
+ * the body as children; attachments, a linked task and the action row are slots. That
12
+ * is deliberate and it is the difference between a component a second application can
13
+ * use and one that only fits the application it was written in — the first version of
14
+ * this row was written against adea's message model and could not have been used by
15
+ * cortana at all.
16
+ *
17
+ * ## The two things it does know
18
+ *
19
+ * **The speaker's own messages mirror.** A user's turn puts the avatar on the trailing
20
+ * edge and the bubble on the leading one, so a transcript can be read as a
21
+ * conversation rather than as a log. `senderKind` decides that, and it is the only
22
+ * place the layout branches.
23
+ *
24
+ * **`content-visibility: auto`.** A transcript is the one list in an application that
25
+ * can hold thousands of rows, and this lets the engine skip layout and paint for the
26
+ * ones off screen. `contain-intrinsic-size` is what keeps the scrollbar honest while
27
+ * it does — without it the scroll height collapses as rows are skipped and the
28
+ * thumb jumps. Both are load-bearing rather than an optimisation to add later.
29
+ */
30
+ export type MessageRowProps = Omit<ComponentProps<'article'>, 'onSelect'> & {
31
+ /** Who spoke. Decides the mirroring and the avatar's tone. */
32
+ senderKind: ConversationAvatarKind;
33
+ /** The speaker's name, announced with the message rather than drawn. */
34
+ senderName: string;
35
+ /** An ISO timestamp, rendered by the caller's own formatter. */
36
+ time?: string;
37
+ /** The machine-readable time, for `<time datetime>`. */
38
+ dateTime?: string;
39
+ /** Set when the message has been edited after sending. */
40
+ edited?: boolean;
41
+ /** Set while the message is in flight. */
42
+ pending?: boolean;
43
+ /**
44
+ * Set while tokens are still arriving. Shows a caret after the body and drops
45
+ * the delivered tick; distinct from `pending`, which is the *sending* state of
46
+ * a message the user wrote. A turn can be neither, either, or (briefly) both.
47
+ */
48
+ streaming?: boolean;
49
+ /** Set when the message has been deleted, which replaces the body. */
50
+ deleted?: boolean;
51
+ /** Draw attention to this row, e.g. after arriving from a search result. */
52
+ highlighted?: boolean;
53
+ /** The caller's own avatar content. Falls back to a glyph for the kind. */
54
+ avatar?: JSX.Element;
55
+ /** Attachments, rendered under the body. */
56
+ attachments?: JSX.Element;
57
+ /** A linked entity — a task, an artifact, a session — rendered under the body. */
58
+ link?: JSX.Element;
59
+ /** Extra rows in the action strip, before the built-in ones. */
60
+ actions?: JSX.Element;
61
+ /** Show the reply affordance. Omit it to hide the action. */
62
+ onOpenThread?: () => void;
63
+ /** Fires on hover and focus of the reply affordance, for prefetching. */
64
+ onThreadIntent?: () => void;
65
+ onEdit?: () => void;
66
+ onDelete?: () => void;
67
+ onRetry?: () => void;
68
+ };
69
+ export declare function MessageRow(props: MessageRowProps): JSX.Element;
70
+ /**
71
+ * A run of messages from the same speaker.
72
+ *
73
+ * Consecutive turns from one voice are a *paragraph*, and a transcript that repeats
74
+ * the avatar and the name for each line reads as noise. The group draws the first
75
+ * row fully and the rest without their avatar.
76
+ */
77
+ export declare function MessageGroup(props: ComponentProps<'div'>): JSX.Element;
78
+ /** A day divider, so a long transcript has somewhere to rest the eye. */
79
+ export declare function MessageDayDivider(props: ComponentProps<'div'> & {
80
+ label: string;
81
+ }): JSX.Element;
82
+ /**
83
+ * Renders a body's code fences as blocks, which a plain `<p>` cannot.
84
+ *
85
+ * The fence grammar is the part worth owning: a fence opens with ``` and an
86
+ * optional language, and closes with ``` on its own. Everything outside a fence
87
+ * is prose, and inside it the language tag belongs to the block's header rather
88
+ * than to the code.
89
+ *
90
+ * Inline code — a single backtick pair inside a line — is rendered too, because
91
+ * the alternative is an identifier in the prose that is indistinguishable from a
92
+ * word. Only the *first* pair on a line is treated as code by the splitter here,
93
+ * which is the common case; a caller that needs full inline grammar should pass
94
+ * already-rendered children instead of `text`.
95
+ */
96
+ export declare function MessageBody(props: ComponentProps<'div'> & {
97
+ text: string;
98
+ /** True while the turn is still streaming, so a partial fence renders as a block. */
99
+ streaming?: boolean;
100
+ }): JSX.Element;
101
+ //# sourceMappingURL=message-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-row.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/message-row.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAKnD,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,8DAA8D;IAC9D,UAAU,EAAE,sBAAsB,CAAA;IAClC,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACpB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACzB,kFAAkF;IAClF,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACrB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eAiLhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAOxD;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,eAgBjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,eAsDF"}
@@ -0,0 +1,389 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../ui/button/button.js";
3
+ import { CodeBlock, InlineCode } from "../ui/code-block/code-block.js";
4
+ import { ConversationAvatar } from "./conversation-avatar.js";
5
+ import { className, createComponent, effect, insert, memo, mergeProps, setAttribute, spread, template } from "solid-js/web";
6
+ import { CheckCheck, MessageSquareReply, Pencil, RotateCcw, Trash2 } from "lucide-solid";
7
+ import { For, Show, splitProps } from "solid-js";
8
+ //#region src/components/conversation/message-row.tsx
9
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="mt-2 flex flex-wrap gap-2">`);
10
+ var _tmpl$2 = /*#__PURE__*/ template(`<div class=mt-2>`);
11
+ var _tmpl$3 = /*#__PURE__*/ template(`<time>`);
12
+ var _tmpl$4 = /*#__PURE__*/ template(`<span>edited`);
13
+ var _tmpl$5 = /*#__PURE__*/ template(`<span role=status>sending…`);
14
+ var _tmpl$6 = /*#__PURE__*/ template(`<span role=status>responding…`);
15
+ var _tmpl$7 = /*#__PURE__*/ template(`<span role=img aria-label=Delivered class=inline-flex>`);
16
+ var _tmpl$8 = /*#__PURE__*/ template(`<article data-slot=message-row><span data-slot=message-avatar></span><div data-slot=message-content><div data-slot=message-bubble><span class=visually-hidden></span><div data-slot=message-body class=text-sm></div><div data-slot=message-meta class="mt-1 flex items-center gap-2 text-2xs text-muted-foreground"></div></div><footer data-slot=message-actions>`);
17
+ var _tmpl$9 = /*#__PURE__*/ template(`<p class="text-muted-foreground italic">Message deleted`);
18
+ var _tmpl$0 = /*#__PURE__*/ template(`<div data-slot=message-group role=group>`);
19
+ var _tmpl$1 = /*#__PURE__*/ template(`<div data-slot=message-day-divider role=separator><span class="h-px flex-1 bg-border"></span><span class="text-2xs font-medium tracking-wide text-muted-foreground uppercase"></span><span class="h-px flex-1 bg-border">`);
20
+ var _tmpl$10 = /*#__PURE__*/ template(`<span class=streaming-caret aria-hidden=true>`);
21
+ var _tmpl$11 = /*#__PURE__*/ template(`<div data-slot=message-body>`);
22
+ var _tmpl$12 = /*#__PURE__*/ template(`<p class=whitespace-pre-wrap>`);
23
+ function MessageRow(props) {
24
+ const [local, rest] = splitProps(props, [
25
+ "class",
26
+ "senderKind",
27
+ "senderName",
28
+ "time",
29
+ "dateTime",
30
+ "edited",
31
+ "pending",
32
+ "streaming",
33
+ "deleted",
34
+ "highlighted",
35
+ "avatar",
36
+ "attachments",
37
+ "link",
38
+ "actions",
39
+ "onOpenThread",
40
+ "onThreadIntent",
41
+ "onEdit",
42
+ "onDelete",
43
+ "onRetry",
44
+ "children"
45
+ ]);
46
+ const mirrored = () => local.senderKind === "user";
47
+ return (() => {
48
+ var _el$ = _tmpl$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$9 = _el$6.nextSibling, _el$13 = _el$4.nextSibling;
49
+ spread(_el$, mergeProps({
50
+ get ["data-message-kind"]() {
51
+ return local.senderKind;
52
+ },
53
+ get ["aria-busy"]() {
54
+ return local.pending || void 0;
55
+ },
56
+ get tabindex() {
57
+ return local.highlighted ? -1 : void 0;
58
+ },
59
+ get ["class"]() {
60
+ return cn("group/message grid max-w-3xl gap-2.5 px-1 py-1.5", "[content-visibility:auto] [contain-intrinsic-size:auto_7rem]", mirrored() ? "grid-cols-[minmax(0,1fr)_2rem]" : "grid-cols-[1.9rem_minmax(0,1fr)]", "transition-colors ease-out hover:bg-muted/45", local.highlighted && "bg-primary-subtle shadow-[inset_3px_0_var(--primary)]", local.class);
61
+ }
62
+ }, rest), false, true);
63
+ insert(_el$2, createComponent(ConversationAvatar, {
64
+ get kind() {
65
+ return local.senderKind;
66
+ },
67
+ get size() {
68
+ return mirrored() ? "lg" : "md";
69
+ },
70
+ get children() {
71
+ return local.avatar;
72
+ }
73
+ }));
74
+ insert(_el$5, () => local.senderName);
75
+ insert(_el$6, createComponent(Show, {
76
+ get when() {
77
+ return !local.deleted;
78
+ },
79
+ get fallback() {
80
+ return _tmpl$9();
81
+ },
82
+ get children() {
83
+ return local.children;
84
+ }
85
+ }));
86
+ insert(_el$4, createComponent(Show, {
87
+ get when() {
88
+ return local.attachments;
89
+ },
90
+ get children() {
91
+ var _el$7 = _tmpl$();
92
+ insert(_el$7, () => local.attachments);
93
+ return _el$7;
94
+ }
95
+ }), _el$9);
96
+ insert(_el$4, createComponent(Show, {
97
+ get when() {
98
+ return local.link;
99
+ },
100
+ get children() {
101
+ var _el$8 = _tmpl$2();
102
+ insert(_el$8, () => local.link);
103
+ return _el$8;
104
+ }
105
+ }), _el$9);
106
+ insert(_el$9, createComponent(Show, {
107
+ get when() {
108
+ return local.time;
109
+ },
110
+ get children() {
111
+ var _el$0 = _tmpl$3();
112
+ insert(_el$0, () => local.time);
113
+ effect(() => setAttribute(_el$0, "datetime", local.dateTime));
114
+ return _el$0;
115
+ }
116
+ }), null);
117
+ insert(_el$9, createComponent(Show, {
118
+ get when() {
119
+ return local.edited;
120
+ },
121
+ get children() {
122
+ return _tmpl$4();
123
+ }
124
+ }), null);
125
+ insert(_el$9, createComponent(Show, {
126
+ get when() {
127
+ return local.pending;
128
+ },
129
+ get children() {
130
+ return _tmpl$5();
131
+ }
132
+ }), null);
133
+ insert(_el$9, createComponent(Show, {
134
+ get when() {
135
+ return local.streaming;
136
+ },
137
+ get children() {
138
+ return _tmpl$6();
139
+ }
140
+ }), null);
141
+ insert(_el$9, createComponent(Show, {
142
+ get when() {
143
+ return memo(() => !!(mirrored() && !local.pending && !local.streaming))() && !local.deleted;
144
+ },
145
+ get children() {
146
+ var _el$12 = _tmpl$7();
147
+ insert(_el$12, createComponent(CheckCheck, {
148
+ "aria-hidden": "true",
149
+ "class": "size-3"
150
+ }));
151
+ return _el$12;
152
+ }
153
+ }), null);
154
+ insert(_el$13, createComponent(Show, {
155
+ get when() {
156
+ return local.actions;
157
+ },
158
+ get children() {
159
+ return local.actions;
160
+ }
161
+ }), null);
162
+ insert(_el$13, createComponent(Show, {
163
+ get when() {
164
+ return memo(() => !!local.onOpenThread)() && !local.deleted;
165
+ },
166
+ get children() {
167
+ return createComponent(Button, {
168
+ variant: "ghost",
169
+ size: "2xs",
170
+ "class": "gap-1.5 text-muted-foreground",
171
+ onClick: () => local.onOpenThread?.(),
172
+ onPointerEnter: () => local.onThreadIntent?.(),
173
+ onFocus: () => local.onThreadIntent?.(),
174
+ get children() {
175
+ return [createComponent(MessageSquareReply, {}), "Thread"];
176
+ }
177
+ });
178
+ }
179
+ }), null);
180
+ insert(_el$13, createComponent(Show, {
181
+ get when() {
182
+ return memo(() => !!local.onEdit)() && !local.deleted;
183
+ },
184
+ get children() {
185
+ return createComponent(Button, {
186
+ variant: "ghost",
187
+ size: "2xs",
188
+ "class": "gap-1.5 text-muted-foreground",
189
+ onClick: () => local.onEdit?.(),
190
+ get children() {
191
+ return [createComponent(Pencil, {}), "Edit"];
192
+ }
193
+ });
194
+ }
195
+ }), null);
196
+ insert(_el$13, createComponent(Show, {
197
+ get when() {
198
+ return memo(() => !!local.onDelete)() && !local.deleted;
199
+ },
200
+ get children() {
201
+ return createComponent(Button, {
202
+ variant: "ghost",
203
+ size: "2xs",
204
+ "class": "gap-1.5 text-muted-foreground",
205
+ onClick: () => local.onDelete?.(),
206
+ get children() {
207
+ return [createComponent(Trash2, {}), "Delete"];
208
+ }
209
+ });
210
+ }
211
+ }), null);
212
+ insert(_el$13, createComponent(Show, {
213
+ get when() {
214
+ return local.onRetry;
215
+ },
216
+ get children() {
217
+ return createComponent(Button, {
218
+ variant: "ghost",
219
+ size: "2xs",
220
+ "class": "gap-1.5 text-muted-foreground",
221
+ onClick: () => local.onRetry?.(),
222
+ get children() {
223
+ return [createComponent(RotateCcw, {}), "Retry"];
224
+ }
225
+ });
226
+ }
227
+ }), null);
228
+ effect((_p$) => {
229
+ var _v$ = cn("mt-0.5", mirrored() ? "order-2" : "order-1"), _v$2 = cn("flex min-w-0 flex-col gap-1", mirrored() ? "order-1" : "order-2"), _v$3 = cn("relative w-fit min-w-16 max-w-[min(100%,38rem)] rounded-lg border border-border px-3.5 pt-2.5 pb-2", "bg-card text-card-foreground", mirrored() ? "rounded-ee-sm ms-auto" : "rounded-es-sm"), _v$4 = cn("flex items-center gap-1 opacity-0 transition-opacity ease-out group-hover/message:opacity-100 group-focus-within/message:opacity-100", mirrored() && "justify-end");
230
+ _v$ !== _p$.e && className(_el$2, _p$.e = _v$);
231
+ _v$2 !== _p$.t && className(_el$3, _p$.t = _v$2);
232
+ _v$3 !== _p$.a && className(_el$4, _p$.a = _v$3);
233
+ _v$4 !== _p$.o && className(_el$13, _p$.o = _v$4);
234
+ return _p$;
235
+ }, {
236
+ e: void 0,
237
+ t: void 0,
238
+ a: void 0,
239
+ o: void 0
240
+ });
241
+ return _el$;
242
+ })();
243
+ }
244
+ /**
245
+ * A run of messages from the same speaker.
246
+ *
247
+ * Consecutive turns from one voice are a *paragraph*, and a transcript that repeats
248
+ * the avatar and the name for each line reads as noise. The group draws the first
249
+ * row fully and the rest without their avatar.
250
+ */
251
+ function MessageGroup(props) {
252
+ const [local, rest] = splitProps(props, ["class", "children"]);
253
+ return (() => {
254
+ var _el$15 = _tmpl$0();
255
+ spread(_el$15, mergeProps({ get ["class"]() {
256
+ return cn("flex flex-col", local.class);
257
+ } }, rest), false, true);
258
+ insert(_el$15, () => local.children);
259
+ return _el$15;
260
+ })();
261
+ }
262
+ /** A day divider, so a long transcript has somewhere to rest the eye. */
263
+ function MessageDayDivider(props) {
264
+ const [local, rest] = splitProps(props, ["class", "label"]);
265
+ return (() => {
266
+ var _el$16 = _tmpl$1(), _el$18 = _el$16.firstChild.nextSibling;
267
+ spread(_el$16, mergeProps({ get ["class"]() {
268
+ return cn("flex items-center gap-3 px-4 py-3", local.class);
269
+ } }, rest), false, true);
270
+ insert(_el$18, () => local.label);
271
+ return _el$16;
272
+ })();
273
+ }
274
+ /**
275
+ * Renders a body's code fences as blocks, which a plain `<p>` cannot.
276
+ *
277
+ * The fence grammar is the part worth owning: a fence opens with ``` and an
278
+ * optional language, and closes with ``` on its own. Everything outside a fence
279
+ * is prose, and inside it the language tag belongs to the block's header rather
280
+ * than to the code.
281
+ *
282
+ * Inline code — a single backtick pair inside a line — is rendered too, because
283
+ * the alternative is an identifier in the prose that is indistinguishable from a
284
+ * word. Only the *first* pair on a line is treated as code by the splitter here,
285
+ * which is the common case; a caller that needs full inline grammar should pass
286
+ * already-rendered children instead of `text`.
287
+ */
288
+ function MessageBody(props) {
289
+ const [local, rest] = splitProps(props, [
290
+ "class",
291
+ "text",
292
+ "streaming"
293
+ ]);
294
+ /**
295
+ * Split on fences, then on inline code. `filter(Boolean)` because a text that
296
+ * begins with a fence produces an empty leading segment.
297
+ */
298
+ const segments = () => local.text.split(/(```[\s\S]*?(?:```|$))/g).filter(Boolean).map((segment) => {
299
+ if (!segment.startsWith("```")) return {
300
+ kind: "prose",
301
+ value: segment
302
+ };
303
+ const body = segment.replace(/^```/, "").replace(/```$/, "");
304
+ const newline = body.indexOf("\n");
305
+ const firstLine = newline === -1 ? "" : body.slice(0, newline);
306
+ const language = /^[\w+#.-]+$/.test(firstLine.trim()) ? firstLine.trim() : void 0;
307
+ return {
308
+ kind: "code",
309
+ value: language ? body.slice(newline + 1) : body,
310
+ language
311
+ };
312
+ });
313
+ const last = () => segments().at(-1);
314
+ return (() => {
315
+ var _el$19 = _tmpl$11();
316
+ spread(_el$19, mergeProps({ get ["class"]() {
317
+ return cn("flex flex-col gap-2", local.class);
318
+ } }, rest), false, true);
319
+ insert(_el$19, createComponent(For, {
320
+ get each() {
321
+ return segments();
322
+ },
323
+ children: (segment) => createComponent(Show, {
324
+ get when() {
325
+ return segment.kind === "code";
326
+ },
327
+ get fallback() {
328
+ return createComponent(Prose, { get text() {
329
+ return segment.value;
330
+ } });
331
+ },
332
+ get children() {
333
+ return createComponent(CodeBlock, {
334
+ get code() {
335
+ return segment.value;
336
+ },
337
+ get language() {
338
+ return memo(() => segment.kind === "code")() ? segment.language : void 0;
339
+ },
340
+ get complete() {
341
+ return !local.streaming;
342
+ }
343
+ });
344
+ }
345
+ })
346
+ }), null);
347
+ insert(_el$19, createComponent(Show, {
348
+ get when() {
349
+ return memo(() => !!local.streaming)() && last()?.kind === "prose";
350
+ },
351
+ get children() {
352
+ return _tmpl$10();
353
+ }
354
+ }), null);
355
+ return _el$19;
356
+ })();
357
+ }
358
+ /**
359
+ * A run of prose, with its inline code marked. The split is non-greedy and
360
+ * requires a non-empty span, so an unmatched backtick stays a backtick rather
361
+ * than swallowing the rest of the paragraph.
362
+ */
363
+ function Prose(props) {
364
+ const parts = () => props.text.split(/(`[^`\n]+`)/g).filter(Boolean);
365
+ return (() => {
366
+ var _el$21 = _tmpl$12();
367
+ insert(_el$21, createComponent(For, {
368
+ get each() {
369
+ return parts();
370
+ },
371
+ children: (part) => createComponent(Show, {
372
+ get when() {
373
+ return memo(() => !!(part.startsWith("`") && part.endsWith("`")))() && part.length > 2;
374
+ },
375
+ fallback: part,
376
+ get children() {
377
+ return createComponent(InlineCode, { get children() {
378
+ return part.slice(1, -1);
379
+ } });
380
+ }
381
+ })
382
+ }));
383
+ return _el$21;
384
+ })();
385
+ }
386
+ //#endregion
387
+ export { MessageBody, MessageDayDivider, MessageGroup, MessageRow };
388
+
389
+ //# sourceMappingURL=message-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-row.js","names":["CheckCheck","MessageSquareReply","Pencil","RotateCcw","Trash2","ComponentProps","JSX","For","Show","splitProps","cn","Button","CodeBlock","InlineCode","ConversationAvatar","ConversationAvatarKind","MessageRowProps","Omit","senderKind","senderName","time","dateTime","edited","pending","streaming","deleted","highlighted","avatar","Element","attachments","link","actions","onOpenThread","onThreadIntent","onEdit","onDelete","onRetry","MessageRow","props","local","rest","mirrored","_el$","_tmpl$8","_el$2","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_el$9","_el$13","_$spread","_$mergeProps","data-message-kind","aria-busy","undefined","tabindex","class","_$insert","_$createComponent","kind","size","children","when","fallback","_tmpl$9","_el$7","_tmpl$","_el$8","_tmpl$2","_el$0","_tmpl$3","_$effect","_$setAttribute","_tmpl$4","_tmpl$5","_tmpl$6","_$memo","_el$12","_tmpl$7","variant","onClick","onPointerEnter","onFocus","_p$","_v$","_v$2","_v$3","_v$4","e","_$className","t","a","o","MessageGroup","_el$15","_tmpl$0","MessageDayDivider","label","_el$16","_tmpl$1","_el$17","_el$18","MessageBody","text","segments","split","filter","Boolean","map","segment","startsWith","const","value","body","replace","newline","indexOf","firstLine","slice","language","test","trim","last","at","_el$19","_tmpl$11","each","Prose","code","complete","_tmpl$10","parts","_el$21","_tmpl$12","part","endsWith","length","_$mergeProps","_$createComponent","_$setAttribute","_$memo","_$className"],"sources":["../../../src/components/conversation/message-row.tsx"],"sourcesContent":["import { CheckCheck, MessageSquareReply, Pencil, RotateCcw, Trash2 } from 'lucide-solid'\nimport type { ComponentProps, JSX } from 'solid-js'\nimport { For, Show, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\nimport { CodeBlock, InlineCode } from '../ui/code-block'\nimport { ConversationAvatar, type ConversationAvatarKind } from './conversation-avatar'\n\n/**\n * MessageRow.\n *\n * One turn in a transcript: a speaker, a bubble, and the actions that apply to it.\n *\n * ## What it does not know\n *\n * It takes no domain types. A caller supplies the speaker's name, the timestamp, and\n * the body as children; attachments, a linked task and the action row are slots. That\n * is deliberate and it is the difference between a component a second application can\n * use and one that only fits the application it was written in — the first version of\n * this row was written against adea's message model and could not have been used by\n * cortana at all.\n *\n * ## The two things it does know\n *\n * **The speaker's own messages mirror.** A user's turn puts the avatar on the trailing\n * edge and the bubble on the leading one, so a transcript can be read as a\n * conversation rather than as a log. `senderKind` decides that, and it is the only\n * place the layout branches.\n *\n * **`content-visibility: auto`.** A transcript is the one list in an application that\n * can hold thousands of rows, and this lets the engine skip layout and paint for the\n * ones off screen. `contain-intrinsic-size` is what keeps the scrollbar honest while\n * it does — without it the scroll height collapses as rows are skipped and the\n * thumb jumps. Both are load-bearing rather than an optimisation to add later.\n */\nexport type MessageRowProps = Omit<ComponentProps<'article'>, 'onSelect'> & {\n /** Who spoke. Decides the mirroring and the avatar's tone. */\n senderKind: ConversationAvatarKind\n /** The speaker's name, announced with the message rather than drawn. */\n senderName: string\n /** An ISO timestamp, rendered by the caller's own formatter. */\n time?: string\n /** The machine-readable time, for `<time datetime>`. */\n dateTime?: string\n /** Set when the message has been edited after sending. */\n edited?: boolean\n /** Set while the message is in flight. */\n pending?: boolean\n /**\n * Set while tokens are still arriving. Shows a caret after the body and drops\n * the delivered tick; distinct from `pending`, which is the *sending* state of\n * a message the user wrote. A turn can be neither, either, or (briefly) both.\n */\n streaming?: boolean\n /** Set when the message has been deleted, which replaces the body. */\n deleted?: boolean\n /** Draw attention to this row, e.g. after arriving from a search result. */\n highlighted?: boolean\n /** The caller's own avatar content. Falls back to a glyph for the kind. */\n avatar?: JSX.Element\n /** Attachments, rendered under the body. */\n attachments?: JSX.Element\n /** A linked entity — a task, an artifact, a session — rendered under the body. */\n link?: JSX.Element\n /** Extra rows in the action strip, before the built-in ones. */\n actions?: JSX.Element\n /** Show the reply affordance. Omit it to hide the action. */\n onOpenThread?: () => void\n /** Fires on hover and focus of the reply affordance, for prefetching. */\n onThreadIntent?: () => void\n onEdit?: () => void\n onDelete?: () => void\n onRetry?: () => void\n}\n\nexport function MessageRow(props: MessageRowProps) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'senderKind',\n 'senderName',\n 'time',\n 'dateTime',\n 'edited',\n 'pending',\n 'streaming',\n 'deleted',\n 'highlighted',\n 'avatar',\n 'attachments',\n 'link',\n 'actions',\n 'onOpenThread',\n 'onThreadIntent',\n 'onEdit',\n 'onDelete',\n 'onRetry',\n 'children',\n ])\n\n const mirrored = () => local.senderKind === 'user'\n\n return (\n <article\n data-slot=\"message-row\"\n data-message-kind={local.senderKind}\n aria-busy={local.pending || undefined}\n tabindex={local.highlighted ? -1 : undefined}\n class={cn(\n 'group/message grid max-w-3xl gap-2.5 px-1 py-1.5',\n /* The row is skipped by the engine while off screen; the intrinsic size keeps\n the scroll height stable while that happens. */\n '[content-visibility:auto] [contain-intrinsic-size:auto_7rem]',\n mirrored() ? 'grid-cols-[minmax(0,1fr)_2rem]' : 'grid-cols-[1.9rem_minmax(0,1fr)]',\n 'transition-colors ease-out hover:bg-muted/45',\n local.highlighted && 'bg-primary-subtle shadow-[inset_3px_0_var(--primary)]',\n local.class\n )}\n {...rest}\n >\n <span data-slot=\"message-avatar\" class={cn('mt-0.5', mirrored() ? 'order-2' : 'order-1')}>\n <ConversationAvatar kind={local.senderKind} size={mirrored() ? 'lg' : 'md'}>\n {local.avatar}\n </ConversationAvatar>\n </span>\n\n <div\n data-slot=\"message-content\"\n class={cn('flex min-w-0 flex-col gap-1', mirrored() ? 'order-1' : 'order-2')}\n >\n <div\n data-slot=\"message-bubble\"\n class={cn(\n 'relative w-fit min-w-16 max-w-[min(100%,38rem)] rounded-lg border border-border px-3.5 pt-2.5 pb-2',\n 'bg-card text-card-foreground',\n /* The tail: a squared corner on the side the speaker sits, which is what\n makes a bubble read as belonging to one voice. */\n mirrored() ? 'rounded-ee-sm ms-auto' : 'rounded-es-sm'\n )}\n >\n {/* The name is announced with the message rather than drawn: a transcript\n that repeats every speaker's name in every bubble is one nobody reads. */}\n <span class=\"visually-hidden\">{local.senderName}</span>\n\n <div data-slot=\"message-body\" class=\"text-sm\">\n <Show\n when={!local.deleted}\n fallback={<p class=\"text-muted-foreground italic\">Message deleted</p>}\n >\n {local.children}\n </Show>\n </div>\n\n <Show when={local.attachments}>\n <div class=\"mt-2 flex flex-wrap gap-2\">{local.attachments}</div>\n </Show>\n\n <Show when={local.link}>\n <div class=\"mt-2\">{local.link}</div>\n </Show>\n\n <div\n data-slot=\"message-meta\"\n class=\"mt-1 flex items-center gap-2 text-2xs text-muted-foreground\"\n >\n <Show when={local.time}>\n <time datetime={local.dateTime}>{local.time}</time>\n </Show>\n <Show when={local.edited}>\n <span>edited</span>\n </Show>\n <Show when={local.pending}>\n <span role=\"status\">sending…</span>\n </Show>\n <Show when={local.streaming}>\n <span role=\"status\">responding…</span>\n </Show>\n <Show when={mirrored() && !local.pending && !local.streaming && !local.deleted}>\n {/*\n `role=\"img\"` because a bare span cannot carry `aria-label` — axe's\n `aria-prohibited-attr`. The glyph is the whole message, so the role\n is also the accurate one: this element *is* an image whose meaning\n is its label.\n */}\n <span role=\"img\" aria-label=\"Delivered\" class=\"inline-flex\">\n <CheckCheck aria-hidden=\"true\" class=\"size-3\" />\n </span>\n </Show>\n </div>\n </div>\n\n {/* The action strip is hidden until the row is hovered or focused, so a\n transcript is not a wall of buttons — but it stays in the accessibility\n tree and the tab order, because a control that only exists under the\n pointer cannot be reached by keyboard. */}\n <footer\n data-slot=\"message-actions\"\n class={cn(\n 'flex items-center gap-1 opacity-0 transition-opacity ease-out group-hover/message:opacity-100 group-focus-within/message:opacity-100',\n mirrored() && 'justify-end'\n )}\n >\n <Show when={local.actions}>{local.actions}</Show>\n <Show when={local.onOpenThread && !local.deleted}>\n <Button\n variant=\"ghost\"\n size=\"2xs\"\n class=\"gap-1.5 text-muted-foreground\"\n onClick={() => local.onOpenThread?.()}\n onPointerEnter={() => local.onThreadIntent?.()}\n onFocus={() => local.onThreadIntent?.()}\n >\n <MessageSquareReply />\n Thread\n </Button>\n </Show>\n <Show when={local.onEdit && !local.deleted}>\n <Button\n variant=\"ghost\"\n size=\"2xs\"\n class=\"gap-1.5 text-muted-foreground\"\n onClick={() => local.onEdit?.()}\n >\n <Pencil />\n Edit\n </Button>\n </Show>\n <Show when={local.onDelete && !local.deleted}>\n <Button\n variant=\"ghost\"\n size=\"2xs\"\n class=\"gap-1.5 text-muted-foreground\"\n onClick={() => local.onDelete?.()}\n >\n <Trash2 />\n Delete\n </Button>\n </Show>\n <Show when={local.onRetry}>\n <Button\n variant=\"ghost\"\n size=\"2xs\"\n class=\"gap-1.5 text-muted-foreground\"\n onClick={() => local.onRetry?.()}\n >\n <RotateCcw />\n Retry\n </Button>\n </Show>\n </footer>\n </div>\n </article>\n )\n}\n\n/**\n * A run of messages from the same speaker.\n *\n * Consecutive turns from one voice are a *paragraph*, and a transcript that repeats\n * the avatar and the name for each line reads as noise. The group draws the first\n * row fully and the rest without their avatar.\n */\nexport function MessageGroup(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class', 'children'])\n return (\n <div data-slot=\"message-group\" role=\"group\" class={cn('flex flex-col', local.class)} {...rest}>\n {local.children}\n </div>\n )\n}\n\n/** A day divider, so a long transcript has somewhere to rest the eye. */\nexport function MessageDayDivider(props: ComponentProps<'div'> & { label: string }) {\n const [local, rest] = splitProps(props, ['class', 'label'])\n return (\n <div\n data-slot=\"message-day-divider\"\n role=\"separator\"\n class={cn('flex items-center gap-3 px-4 py-3', local.class)}\n {...rest}\n >\n <span class=\"h-px flex-1 bg-border\" />\n <span class=\"text-2xs font-medium tracking-wide text-muted-foreground uppercase\">\n {local.label}\n </span>\n <span class=\"h-px flex-1 bg-border\" />\n </div>\n )\n}\n\n/**\n * Renders a body's code fences as blocks, which a plain `<p>` cannot.\n *\n * The fence grammar is the part worth owning: a fence opens with ``` and an\n * optional language, and closes with ``` on its own. Everything outside a fence\n * is prose, and inside it the language tag belongs to the block's header rather\n * than to the code.\n *\n * Inline code — a single backtick pair inside a line — is rendered too, because\n * the alternative is an identifier in the prose that is indistinguishable from a\n * word. Only the *first* pair on a line is treated as code by the splitter here,\n * which is the common case; a caller that needs full inline grammar should pass\n * already-rendered children instead of `text`.\n */\nexport function MessageBody(\n props: ComponentProps<'div'> & {\n text: string\n /** True while the turn is still streaming, so a partial fence renders as a block. */\n streaming?: boolean\n }\n) {\n const [local, rest] = splitProps(props, ['class', 'text', 'streaming'])\n\n /**\n * Split on fences, then on inline code. `filter(Boolean)` because a text that\n * begins with a fence produces an empty leading segment.\n */\n const segments = () =>\n local.text\n .split(/(```[\\s\\S]*?(?:```|$))/g)\n .filter(Boolean)\n .map((segment) => {\n if (!segment.startsWith('```')) {\n return { kind: 'prose' as const, value: segment }\n }\n const body = segment.replace(/^```/, '').replace(/```$/, '')\n // The language is the first token on the opening line, and only when the\n // fence actually carried one — a fence with a bare newline has none.\n const newline = body.indexOf('\\n')\n const firstLine = newline === -1 ? '' : body.slice(0, newline)\n const language = /^[\\w+#.-]+$/.test(firstLine.trim()) ? firstLine.trim() : undefined\n return {\n kind: 'code' as const,\n value: language ? body.slice(newline + 1) : body,\n language,\n }\n })\n\n const last = () => segments().at(-1)\n\n return (\n <div data-slot=\"message-body\" class={cn('flex flex-col gap-2', local.class)} {...rest}>\n <For each={segments()}>\n {(segment) => (\n <Show when={segment.kind === 'code'} fallback={<Prose text={segment.value} />}>\n <CodeBlock\n code={segment.value}\n language={segment.kind === 'code' ? segment.language : undefined}\n complete={!local.streaming}\n />\n </Show>\n )}\n </For>\n {/*\n The caret trails the last segment, and only when that segment is prose: a\n streaming code block already carries its own generating indicator, and two\n of them on one turn read as two streams.\n */}\n <Show when={local.streaming && last()?.kind === 'prose'}>\n <span class=\"streaming-caret\" aria-hidden=\"true\" />\n </Show>\n </div>\n )\n}\n\n/**\n * A run of prose, with its inline code marked. The split is non-greedy and\n * requires a non-empty span, so an unmatched backtick stays a backtick rather\n * than swallowing the rest of the paragraph.\n */\nfunction Prose(props: { text: string }) {\n const parts = () => props.text.split(/(`[^`\\n]+`)/g).filter(Boolean)\n\n return (\n <p class=\"whitespace-pre-wrap\">\n <For each={parts()}>\n {(part) => (\n <Show\n when={part.startsWith('`') && part.endsWith('`') && part.length > 2}\n fallback={part}\n >\n <InlineCode>{part.slice(1, -1)}</InlineCode>\n </Show>\n )}\n </For>\n </p>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { ComponentProps, JSX } from 'solid-js';
2
+ /**
3
+ * ThreadPanel.
4
+ *
5
+ * The replies to one message, shown beside the transcript rather than in it. Keeping
6
+ * a thread out of the main flow is what stops a busy side conversation from burying
7
+ * the conversation everyone is having.
8
+ *
9
+ * The root message is repeated at the top — with `pinned` — because a thread read out
10
+ * of context is a set of answers to a question the reader can no longer see.
11
+ *
12
+ * The panel is a `complementary` landmark with a label, so it is reachable by
13
+ * landmark navigation rather than by tabbing through the transcript to find it.
14
+ */
15
+ export type ThreadPanelProps = ComponentProps<'aside'> & {
16
+ /** The thread's title, usually the root message's author. */
17
+ label: string;
18
+ /** A count of replies, shown beside the label. */
19
+ count?: number;
20
+ /** The root message, drawn above the replies. */
21
+ root?: JSX.Element;
22
+ /** The composer for a reply. */
23
+ composer?: JSX.Element;
24
+ onClose?: () => void;
25
+ };
26
+ export declare function ThreadPanel(props: ThreadPanelProps): JSX.Element;
27
+ /**
28
+ * An attachment card.
29
+ *
30
+ * A file is not a link: the reader wants to know what it is and how big it is before
31
+ * deciding to open it, so the media type and size are on the card rather than behind
32
+ * a click. `unavailable` is a real state — an artifact can be deleted, or live on a
33
+ * device this one is not authorized for — and it is drawn as text rather than as a
34
+ * dead link.
35
+ */
36
+ export type AttachmentCardProps = ComponentProps<'button'> & {
37
+ name: string;
38
+ /** A short description of the type and size, e.g. "image/png · 24,120 bytes". */
39
+ detail?: string;
40
+ /** Draw the card as unavailable, with the reason as the detail. */
41
+ unavailable?: boolean;
42
+ icon?: JSX.Element;
43
+ };
44
+ export declare function AttachmentCard(props: AttachmentCardProps): JSX.Element;
45
+ //# sourceMappingURL=thread-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-panel.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/thread-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAKnD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG;IACvD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA6DlD;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACnB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eA4BxD"}