@elizaos/ui 2.0.0-alpha.13 → 2.0.0-alpha.140

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 (439) hide show
  1. package/package.json +76 -49
  2. package/packages/ui/src/components/composites/chat/chat-attachment-strip.d.ts +9 -0
  3. package/packages/ui/src/components/composites/chat/chat-attachment-strip.d.ts.map +1 -0
  4. package/packages/ui/src/components/composites/chat/chat-attachment-strip.js +8 -0
  5. package/packages/ui/src/components/composites/chat/chat-bubble.d.ts +14 -0
  6. package/packages/ui/src/components/composites/chat/chat-bubble.d.ts.map +1 -0
  7. package/packages/ui/src/components/composites/chat/chat-bubble.js +14 -0
  8. package/packages/ui/src/components/composites/chat/chat-composer-shell.d.ts +10 -0
  9. package/packages/ui/src/components/composites/chat/chat-composer-shell.d.ts.map +1 -0
  10. package/packages/ui/src/components/composites/chat/chat-composer-shell.js +16 -0
  11. package/packages/ui/src/components/composites/chat/chat-composer.d.ts +39 -0
  12. package/packages/ui/src/components/composites/chat/chat-composer.d.ts.map +1 -0
  13. package/packages/ui/src/components/composites/chat/chat-composer.js +148 -0
  14. package/packages/ui/src/components/composites/chat/chat-conversation-item.d.ts +21 -0
  15. package/packages/ui/src/components/composites/chat/chat-conversation-item.d.ts.map +1 -0
  16. package/packages/ui/src/components/composites/chat/chat-conversation-item.js +120 -0
  17. package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.d.ts +22 -0
  18. package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.d.ts.map +1 -0
  19. package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.js +14 -0
  20. package/packages/ui/src/components/composites/chat/chat-empty-state.d.ts +19 -0
  21. package/packages/ui/src/components/composites/chat/chat-empty-state.d.ts.map +1 -0
  22. package/packages/ui/src/components/composites/chat/chat-empty-state.js +8 -0
  23. package/packages/ui/src/components/composites/chat/chat-message-actions.d.ts +14 -0
  24. package/packages/ui/src/components/composites/chat/chat-message-actions.d.ts.map +1 -0
  25. package/packages/ui/src/components/composites/chat/chat-message-actions.js +10 -0
  26. package/packages/ui/src/components/composites/chat/chat-message.d.ts +18 -0
  27. package/packages/ui/src/components/composites/chat/chat-message.d.ts.map +1 -0
  28. package/packages/ui/src/components/composites/chat/chat-message.js +275 -0
  29. package/packages/ui/src/components/composites/chat/chat-sidebar.d.ts +54 -0
  30. package/packages/ui/src/components/composites/chat/chat-sidebar.d.ts.map +1 -0
  31. package/packages/ui/src/components/composites/chat/chat-sidebar.js +64 -0
  32. package/packages/ui/src/components/composites/chat/chat-source.d.ts +19 -0
  33. package/packages/ui/src/components/composites/chat/chat-source.d.ts.map +1 -0
  34. package/packages/ui/src/components/composites/chat/chat-source.js +127 -0
  35. package/packages/ui/src/components/composites/chat/chat-thread-layout.d.ts +18 -0
  36. package/packages/ui/src/components/composites/chat/chat-thread-layout.d.ts.map +1 -0
  37. package/packages/ui/src/components/composites/chat/chat-thread-layout.js +28 -0
  38. package/packages/ui/src/components/composites/chat/chat-transcript.d.ts +19 -0
  39. package/packages/ui/src/components/composites/chat/chat-transcript.d.ts.map +1 -0
  40. package/packages/ui/src/components/composites/chat/chat-transcript.js +82 -0
  41. package/packages/ui/src/components/composites/chat/chat-types.d.ts +90 -0
  42. package/packages/ui/src/components/composites/chat/chat-types.d.ts.map +1 -0
  43. package/packages/ui/src/components/composites/chat/chat-types.js +1 -0
  44. package/packages/ui/src/components/composites/chat/chat-typing-indicator.d.ts +10 -0
  45. package/packages/ui/src/components/composites/chat/chat-typing-indicator.d.ts.map +1 -0
  46. package/packages/ui/src/components/composites/chat/chat-typing-indicator.js +11 -0
  47. package/packages/ui/src/components/composites/chat/create-task-popover.d.ts +8 -0
  48. package/packages/ui/src/components/composites/chat/create-task-popover.d.ts.map +1 -0
  49. package/packages/ui/src/components/composites/chat/create-task-popover.js +44 -0
  50. package/packages/ui/src/components/composites/chat/index.d.ts +17 -0
  51. package/packages/ui/src/components/composites/chat/index.d.ts.map +1 -0
  52. package/packages/ui/src/components/composites/chat/index.js +16 -0
  53. package/packages/ui/src/components/composites/form-field/form-field.d.ts +14 -0
  54. package/packages/ui/src/components/composites/form-field/form-field.d.ts.map +1 -0
  55. package/packages/ui/src/components/composites/form-field/form-field.js +8 -0
  56. package/packages/ui/src/components/composites/form-field/index.d.ts +2 -0
  57. package/packages/ui/src/components/composites/form-field/index.d.ts.map +1 -0
  58. package/packages/ui/src/components/composites/form-field/index.js +1 -0
  59. package/packages/ui/src/components/composites/index.d.ts +27 -0
  60. package/packages/ui/src/components/composites/index.d.ts.map +1 -0
  61. package/packages/ui/src/components/composites/index.js +26 -0
  62. package/packages/ui/src/components/composites/page-panel/index.d.ts +29 -0
  63. package/packages/ui/src/components/composites/page-panel/index.d.ts.map +1 -0
  64. package/packages/ui/src/components/composites/page-panel/index.js +28 -0
  65. package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.d.ts +4 -0
  66. package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.d.ts.map +1 -0
  67. package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.js +60 -0
  68. package/packages/ui/src/components/composites/page-panel/page-panel-empty.d.ts +3 -0
  69. package/packages/ui/src/components/composites/page-panel/page-panel-empty.d.ts.map +1 -0
  70. package/packages/ui/src/components/composites/page-panel/page-panel-empty.js +15 -0
  71. package/packages/ui/src/components/composites/page-panel/page-panel-frame.d.ts +5 -0
  72. package/packages/ui/src/components/composites/page-panel/page-panel-frame.d.ts.map +1 -0
  73. package/packages/ui/src/components/composites/page-panel/page-panel-frame.js +9 -0
  74. package/packages/ui/src/components/composites/page-panel/page-panel-header.d.ts +7 -0
  75. package/packages/ui/src/components/composites/page-panel/page-panel-header.d.ts.map +1 -0
  76. package/packages/ui/src/components/composites/page-panel/page-panel-header.js +30 -0
  77. package/packages/ui/src/components/composites/page-panel/page-panel-loading.d.ts +3 -0
  78. package/packages/ui/src/components/composites/page-panel/page-panel-loading.d.ts.map +1 -0
  79. package/packages/ui/src/components/composites/page-panel/page-panel-loading.js +13 -0
  80. package/packages/ui/src/components/composites/page-panel/page-panel-root.d.ts +7 -0
  81. package/packages/ui/src/components/composites/page-panel/page-panel-root.d.ts.map +1 -0
  82. package/packages/ui/src/components/composites/page-panel/page-panel-root.js +17 -0
  83. package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.d.ts +4 -0
  84. package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.d.ts.map +1 -0
  85. package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.js +6 -0
  86. package/packages/ui/src/components/composites/page-panel/page-panel-types.d.ts +66 -0
  87. package/packages/ui/src/components/composites/page-panel/page-panel-types.d.ts.map +1 -0
  88. package/packages/ui/src/components/composites/page-panel/page-panel-types.js +1 -0
  89. package/packages/ui/src/components/composites/search/index.d.ts +3 -0
  90. package/packages/ui/src/components/composites/search/index.d.ts.map +1 -0
  91. package/packages/ui/src/components/composites/search/index.js +2 -0
  92. package/packages/ui/src/components/composites/search/search-input.d.ts.map +1 -0
  93. package/{dist/components/ui → packages/ui/src/components/composites/search}/search-input.js +3 -2
  94. package/{dist/components/ui/search-bar.d.ts → packages/ui/src/components/composites/search/searchbar.d.ts} +8 -7
  95. package/packages/ui/src/components/composites/search/searchbar.d.ts.map +1 -0
  96. package/packages/ui/src/components/composites/search/searchbar.js +25 -0
  97. package/packages/ui/src/components/composites/sidebar/index.d.ts +11 -0
  98. package/packages/ui/src/components/composites/sidebar/index.d.ts.map +1 -0
  99. package/packages/ui/src/components/composites/sidebar/index.js +10 -0
  100. package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.d.ts +15 -0
  101. package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.d.ts.map +1 -0
  102. package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.js +292 -0
  103. package/packages/ui/src/components/composites/sidebar/sidebar-body.d.ts +4 -0
  104. package/packages/ui/src/components/composites/sidebar/sidebar-body.d.ts.map +1 -0
  105. package/packages/ui/src/components/composites/sidebar/sidebar-body.js +7 -0
  106. package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.d.ts +11 -0
  107. package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.d.ts.map +1 -0
  108. package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.js +13 -0
  109. package/packages/ui/src/components/composites/sidebar/sidebar-content.d.ts +78 -0
  110. package/packages/ui/src/components/composites/sidebar/sidebar-content.d.ts.map +1 -0
  111. package/packages/ui/src/components/composites/sidebar/sidebar-content.js +89 -0
  112. package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.d.ts +3 -0
  113. package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.d.ts.map +1 -0
  114. package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.js +14 -0
  115. package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.d.ts +3 -0
  116. package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.d.ts.map +1 -0
  117. package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.js +6 -0
  118. package/packages/ui/src/components/composites/sidebar/sidebar-header.d.ts +9 -0
  119. package/packages/ui/src/components/composites/sidebar/sidebar-header.d.ts.map +1 -0
  120. package/packages/ui/src/components/composites/sidebar/sidebar-header.js +6 -0
  121. package/packages/ui/src/components/composites/sidebar/sidebar-panel.d.ts +3 -0
  122. package/packages/ui/src/components/composites/sidebar/sidebar-panel.d.ts.map +1 -0
  123. package/packages/ui/src/components/composites/sidebar/sidebar-panel.js +18 -0
  124. package/packages/ui/src/components/composites/sidebar/sidebar-root.d.ts +4 -0
  125. package/packages/ui/src/components/composites/sidebar/sidebar-root.d.ts.map +1 -0
  126. package/packages/ui/src/components/composites/sidebar/sidebar-root.js +448 -0
  127. package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.d.ts +3 -0
  128. package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.d.ts.map +1 -0
  129. package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.js +18 -0
  130. package/packages/ui/src/components/composites/sidebar/sidebar-types.d.ts +59 -0
  131. package/packages/ui/src/components/composites/sidebar/sidebar-types.d.ts.map +1 -0
  132. package/packages/ui/src/components/composites/sidebar/sidebar-types.js +1 -0
  133. package/packages/ui/src/components/composites/skills/index.d.ts +2 -0
  134. package/packages/ui/src/components/composites/skills/index.d.ts.map +1 -0
  135. package/packages/ui/src/components/composites/skills/index.js +1 -0
  136. package/packages/ui/src/components/composites/skills/skill-sidebar-item.d.ts +16 -0
  137. package/packages/ui/src/components/composites/skills/skill-sidebar-item.d.ts.map +1 -0
  138. package/packages/ui/src/components/composites/skills/skill-sidebar-item.js +7 -0
  139. package/packages/ui/src/components/composites/trajectories/index.d.ts +5 -0
  140. package/packages/ui/src/components/composites/trajectories/index.d.ts.map +1 -0
  141. package/packages/ui/src/components/composites/trajectories/index.js +4 -0
  142. package/packages/ui/src/components/composites/trajectories/trajectory-code-block.d.ts +13 -0
  143. package/packages/ui/src/components/composites/trajectories/trajectory-code-block.d.ts.map +1 -0
  144. package/packages/ui/src/components/composites/trajectories/trajectory-code-block.js +13 -0
  145. package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.d.ts +34 -0
  146. package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.d.ts.map +1 -0
  147. package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.js +14 -0
  148. package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.d.ts +26 -0
  149. package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.d.ts.map +1 -0
  150. package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.js +46 -0
  151. package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.d.ts +15 -0
  152. package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.d.ts.map +1 -0
  153. package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.js +8 -0
  154. package/packages/ui/src/components/primitives/index.d.ts +26 -0
  155. package/packages/ui/src/components/primitives/index.d.ts.map +1 -0
  156. package/packages/ui/src/components/primitives/index.js +25 -0
  157. package/packages/ui/src/components/ui/admin-dialog.d.ts +50 -0
  158. package/packages/ui/src/components/ui/admin-dialog.d.ts.map +1 -0
  159. package/packages/ui/src/components/ui/admin-dialog.js +48 -0
  160. package/{dist → packages/ui/src}/components/ui/badge.d.ts +1 -1
  161. package/packages/ui/src/components/ui/badge.d.ts.map +1 -0
  162. package/packages/ui/src/components/ui/banner.d.ts.map +1 -0
  163. package/{dist → packages/ui/src}/components/ui/banner.js +2 -1
  164. package/{dist → packages/ui/src}/components/ui/button.d.ts +1 -1
  165. package/packages/ui/src/components/ui/button.d.ts.map +1 -0
  166. package/packages/ui/src/components/ui/button.js +39 -0
  167. package/{dist → packages/ui/src}/components/ui/card.d.ts +8 -2
  168. package/packages/ui/src/components/ui/card.d.ts.map +1 -0
  169. package/{dist → packages/ui/src}/components/ui/card.js +17 -2
  170. package/packages/ui/src/components/ui/checkbox.d.ts.map +1 -0
  171. package/packages/ui/src/components/ui/confirm-delete.d.ts +20 -0
  172. package/packages/ui/src/components/ui/confirm-delete.d.ts.map +1 -0
  173. package/packages/ui/src/components/ui/confirm-delete.js +16 -0
  174. package/packages/ui/src/components/ui/confirm-dialog.d.ts +49 -0
  175. package/packages/ui/src/components/ui/confirm-dialog.d.ts.map +1 -0
  176. package/packages/ui/src/components/ui/confirm-dialog.js +90 -0
  177. package/{dist → packages/ui/src}/components/ui/connection-status.d.ts +6 -0
  178. package/packages/ui/src/components/ui/connection-status.d.ts.map +1 -0
  179. package/packages/ui/src/components/ui/connection-status.js +25 -0
  180. package/packages/ui/src/components/ui/copy-button.d.ts.map +1 -0
  181. package/{dist → packages/ui/src}/components/ui/dialog.d.ts +6 -1
  182. package/packages/ui/src/components/ui/dialog.d.ts.map +1 -0
  183. package/packages/ui/src/components/ui/dialog.js +23 -0
  184. package/packages/ui/src/components/ui/drawer-sheet.d.ts +19 -0
  185. package/packages/ui/src/components/ui/drawer-sheet.d.ts.map +1 -0
  186. package/packages/ui/src/components/ui/drawer-sheet.js +21 -0
  187. package/packages/ui/src/components/ui/dropdown-menu.d.ts.map +1 -0
  188. package/{dist → packages/ui/src}/components/ui/dropdown-menu.js +1 -1
  189. package/packages/ui/src/components/ui/empty-state.d.ts.map +1 -0
  190. package/{dist → packages/ui/src}/components/ui/error-boundary.d.ts +5 -1
  191. package/packages/ui/src/components/ui/error-boundary.d.ts.map +1 -0
  192. package/{dist → packages/ui/src}/components/ui/error-boundary.js +1 -1
  193. package/packages/ui/src/components/ui/field-switch.d.ts +8 -0
  194. package/packages/ui/src/components/ui/field-switch.d.ts.map +1 -0
  195. package/packages/ui/src/components/ui/field-switch.js +10 -0
  196. package/packages/ui/src/components/ui/field.d.ts +11 -0
  197. package/packages/ui/src/components/ui/field.d.ts.map +1 -0
  198. package/packages/ui/src/components/ui/field.js +21 -0
  199. package/packages/ui/src/components/ui/form-select.d.ts +13 -0
  200. package/packages/ui/src/components/ui/form-select.d.ts.map +1 -0
  201. package/packages/ui/src/components/ui/form-select.js +9 -0
  202. package/{dist → packages/ui/src}/components/ui/grid.d.ts +1 -1
  203. package/packages/ui/src/components/ui/grid.d.ts.map +1 -0
  204. package/packages/ui/src/components/ui/input.d.ts +12 -0
  205. package/packages/ui/src/components/ui/input.d.ts.map +1 -0
  206. package/packages/ui/src/components/ui/input.js +28 -0
  207. package/packages/ui/src/components/ui/label.d.ts.map +1 -0
  208. package/packages/ui/src/components/ui/new-action-button.d.ts +7 -0
  209. package/packages/ui/src/components/ui/new-action-button.d.ts.map +1 -0
  210. package/packages/ui/src/components/ui/new-action-button.js +13 -0
  211. package/packages/ui/src/components/ui/popover.d.ts.map +1 -0
  212. package/packages/ui/src/components/ui/save-footer.d.ts.map +1 -0
  213. package/packages/ui/src/components/ui/save-footer.js +10 -0
  214. package/packages/ui/src/components/ui/section-card.d.ts.map +1 -0
  215. package/{dist → packages/ui/src}/components/ui/section-card.js +3 -2
  216. package/packages/ui/src/components/ui/segmented-control.d.ts +18 -0
  217. package/packages/ui/src/components/ui/segmented-control.d.ts.map +1 -0
  218. package/packages/ui/src/components/ui/segmented-control.js +10 -0
  219. package/packages/ui/src/components/ui/select.d.ts.map +1 -0
  220. package/{dist → packages/ui/src}/components/ui/select.js +7 -6
  221. package/packages/ui/src/components/ui/separator.d.ts.map +1 -0
  222. package/packages/ui/src/components/ui/settings-controls.d.ts +41 -0
  223. package/packages/ui/src/components/ui/settings-controls.d.ts.map +1 -0
  224. package/packages/ui/src/components/ui/settings-controls.js +60 -0
  225. package/packages/ui/src/components/ui/skeleton.d.ts.map +1 -0
  226. package/{dist → packages/ui/src}/components/ui/skeleton.js +1 -2
  227. package/packages/ui/src/components/ui/slider.d.ts.map +1 -0
  228. package/{dist → packages/ui/src}/components/ui/slider.js +1 -1
  229. package/packages/ui/src/components/ui/sonner.d.ts +2 -0
  230. package/packages/ui/src/components/ui/sonner.d.ts.map +1 -0
  231. package/packages/ui/src/components/ui/sonner.js +1 -0
  232. package/packages/ui/src/components/ui/spinner.d.ts.map +1 -0
  233. package/{dist → packages/ui/src}/components/ui/stack.d.ts +1 -1
  234. package/packages/ui/src/components/ui/stack.d.ts.map +1 -0
  235. package/{dist → packages/ui/src}/components/ui/status-badge.d.ts +11 -4
  236. package/packages/ui/src/components/ui/status-badge.d.ts.map +1 -0
  237. package/packages/ui/src/components/ui/status-badge.js +70 -0
  238. package/packages/ui/src/components/ui/switch.d.ts.map +1 -0
  239. package/packages/ui/src/components/ui/switch.js +7 -0
  240. package/packages/ui/src/components/ui/tabs.d.ts.map +1 -0
  241. package/{dist → packages/ui/src}/components/ui/tabs.js +1 -1
  242. package/packages/ui/src/components/ui/tag-editor.d.ts +12 -0
  243. package/packages/ui/src/components/ui/tag-editor.d.ts.map +1 -0
  244. package/packages/ui/src/components/ui/tag-editor.js +34 -0
  245. package/packages/ui/src/components/ui/tag-input.d.ts +3 -0
  246. package/packages/ui/src/components/ui/tag-input.d.ts.map +1 -0
  247. package/packages/ui/src/components/ui/tag-input.js +1 -0
  248. package/packages/ui/src/components/ui/textarea.d.ts +12 -0
  249. package/packages/ui/src/components/ui/textarea.d.ts.map +1 -0
  250. package/packages/ui/src/components/ui/textarea.js +28 -0
  251. package/{dist → packages/ui/src}/components/ui/themed-select.d.ts +3 -8
  252. package/packages/ui/src/components/ui/themed-select.d.ts.map +1 -0
  253. package/packages/ui/src/components/ui/themed-select.js +137 -0
  254. package/{dist → packages/ui/src}/components/ui/tooltip-extended.d.ts +3 -25
  255. package/packages/ui/src/components/ui/tooltip-extended.d.ts.map +1 -0
  256. package/packages/ui/src/components/ui/tooltip-extended.js +116 -0
  257. package/{dist → packages/ui/src}/components/ui/tooltip.d.ts +10 -0
  258. package/packages/ui/src/components/ui/tooltip.d.ts.map +1 -0
  259. package/packages/ui/src/components/ui/tooltip.js +13 -0
  260. package/{dist → packages/ui/src}/components/ui/typography.d.ts +2 -2
  261. package/packages/ui/src/components/ui/typography.d.ts.map +1 -0
  262. package/{dist → packages/ui/src}/components/ui/typography.js +1 -1
  263. package/packages/ui/src/hooks/index.d.ts +6 -0
  264. package/packages/ui/src/hooks/index.d.ts.map +1 -0
  265. package/packages/ui/src/hooks/index.js +5 -0
  266. package/packages/ui/src/hooks/useClickOutside.d.ts +3 -0
  267. package/packages/ui/src/hooks/useClickOutside.d.ts.map +1 -0
  268. package/packages/ui/src/hooks/useClickOutside.js +22 -0
  269. package/packages/ui/src/hooks/useDocumentVisibility.d.ts +3 -0
  270. package/packages/ui/src/hooks/useDocumentVisibility.d.ts.map +1 -0
  271. package/packages/ui/src/hooks/useDocumentVisibility.js +28 -0
  272. package/packages/ui/src/hooks/useKeyboardShortcuts.d.ts +13 -0
  273. package/packages/ui/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  274. package/packages/ui/src/hooks/useKeyboardShortcuts.js +34 -0
  275. package/packages/ui/src/hooks/useLinkedSidebarSelection.d.ts +16 -0
  276. package/packages/ui/src/hooks/useLinkedSidebarSelection.d.ts.map +1 -0
  277. package/packages/ui/src/hooks/useLinkedSidebarSelection.js +117 -0
  278. package/packages/ui/src/hooks/useTimeout.d.ts +5 -0
  279. package/packages/ui/src/hooks/useTimeout.d.ts.map +1 -0
  280. package/packages/ui/src/hooks/useTimeout.js +26 -0
  281. package/packages/ui/src/index.d.ts +8 -0
  282. package/packages/ui/src/index.d.ts.map +1 -0
  283. package/packages/ui/src/index.js +7 -0
  284. package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.d.ts +11 -0
  285. package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.d.ts.map +1 -0
  286. package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.js +37 -0
  287. package/packages/ui/src/layouts/chat-panel-layout/index.d.ts +2 -0
  288. package/packages/ui/src/layouts/chat-panel-layout/index.d.ts.map +1 -0
  289. package/packages/ui/src/layouts/chat-panel-layout/index.js +1 -0
  290. package/packages/ui/src/layouts/content-layout/content-layout.d.ts +21 -0
  291. package/packages/ui/src/layouts/content-layout/content-layout.d.ts.map +1 -0
  292. package/packages/ui/src/layouts/content-layout/content-layout.js +5 -0
  293. package/packages/ui/src/layouts/content-layout/index.d.ts +2 -0
  294. package/packages/ui/src/layouts/content-layout/index.d.ts.map +1 -0
  295. package/packages/ui/src/layouts/content-layout/index.js +1 -0
  296. package/packages/ui/src/layouts/index.d.ts +5 -0
  297. package/packages/ui/src/layouts/index.d.ts.map +1 -0
  298. package/packages/ui/src/layouts/index.js +4 -0
  299. package/packages/ui/src/layouts/layout-test-utils.d.ts +6 -0
  300. package/packages/ui/src/layouts/layout-test-utils.d.ts.map +1 -0
  301. package/packages/ui/src/layouts/layout-test-utils.js +36 -0
  302. package/packages/ui/src/layouts/page-layout/index.d.ts +5 -0
  303. package/packages/ui/src/layouts/page-layout/index.d.ts.map +1 -0
  304. package/packages/ui/src/layouts/page-layout/index.js +4 -0
  305. package/packages/ui/src/layouts/page-layout/page-layout-header.d.ts +5 -0
  306. package/packages/ui/src/layouts/page-layout/page-layout-header.d.ts.map +1 -0
  307. package/packages/ui/src/layouts/page-layout/page-layout-header.js +5 -0
  308. package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.d.ts +3 -0
  309. package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.d.ts.map +1 -0
  310. package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.js +18 -0
  311. package/packages/ui/src/layouts/page-layout/page-layout-types.d.ts +15 -0
  312. package/packages/ui/src/layouts/page-layout/page-layout-types.d.ts.map +1 -0
  313. package/packages/ui/src/layouts/page-layout/page-layout-types.js +1 -0
  314. package/packages/ui/src/layouts/page-layout/page-layout.d.ts +3 -0
  315. package/packages/ui/src/layouts/page-layout/page-layout.d.ts.map +1 -0
  316. package/packages/ui/src/layouts/page-layout/page-layout.js +5 -0
  317. package/packages/ui/src/layouts/workspace-layout/index.d.ts +3 -0
  318. package/packages/ui/src/layouts/workspace-layout/index.d.ts.map +1 -0
  319. package/packages/ui/src/layouts/workspace-layout/index.js +2 -0
  320. package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.d.ts +19 -0
  321. package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.d.ts.map +1 -0
  322. package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.js +1 -0
  323. package/packages/ui/src/layouts/workspace-layout/workspace-layout.d.ts +3 -0
  324. package/packages/ui/src/layouts/workspace-layout/workspace-layout.d.ts.map +1 -0
  325. package/packages/ui/src/layouts/workspace-layout/workspace-layout.js +50 -0
  326. package/packages/ui/src/lib/floating-layers.d.ts +17 -0
  327. package/packages/ui/src/lib/floating-layers.d.ts.map +1 -0
  328. package/packages/ui/src/lib/floating-layers.js +20 -0
  329. package/packages/ui/src/lib/utils.d.ts +3 -0
  330. package/packages/ui/src/lib/utils.d.ts.map +1 -0
  331. package/{dist → packages/ui/src}/lib/utils.js +0 -3
  332. package/packages/ui/src/stories/layout-story-fixtures.d.ts +14 -0
  333. package/packages/ui/src/stories/layout-story-fixtures.d.ts.map +1 -0
  334. package/packages/ui/src/stories/layout-story-fixtures.js +33 -0
  335. package/styles/theme.css +7 -0
  336. package/README.md +0 -6
  337. package/dist/components/ui/badge.d.ts.map +0 -1
  338. package/dist/components/ui/banner.d.ts.map +0 -1
  339. package/dist/components/ui/button.d.ts.map +0 -1
  340. package/dist/components/ui/button.js +0 -33
  341. package/dist/components/ui/card.d.ts.map +0 -1
  342. package/dist/components/ui/chat-atoms.d.ts +0 -26
  343. package/dist/components/ui/chat-atoms.d.ts.map +0 -1
  344. package/dist/components/ui/chat-atoms.js +0 -17
  345. package/dist/components/ui/checkbox.d.ts.map +0 -1
  346. package/dist/components/ui/confirm-delete.d.ts +0 -12
  347. package/dist/components/ui/confirm-delete.d.ts.map +0 -1
  348. package/dist/components/ui/confirm-delete.js +0 -13
  349. package/dist/components/ui/confirm-dialog.d.ts +0 -24
  350. package/dist/components/ui/confirm-dialog.d.ts.map +0 -1
  351. package/dist/components/ui/confirm-dialog.js +0 -55
  352. package/dist/components/ui/connection-status.d.ts.map +0 -1
  353. package/dist/components/ui/connection-status.js +0 -25
  354. package/dist/components/ui/copy-button.d.ts.map +0 -1
  355. package/dist/components/ui/dialog.d.ts.map +0 -1
  356. package/dist/components/ui/dialog.js +0 -22
  357. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  358. package/dist/components/ui/empty-state.d.ts.map +0 -1
  359. package/dist/components/ui/error-boundary.d.ts.map +0 -1
  360. package/dist/components/ui/grid.d.ts.map +0 -1
  361. package/dist/components/ui/input.d.ts +0 -6
  362. package/dist/components/ui/input.d.ts.map +0 -1
  363. package/dist/components/ui/input.js +0 -8
  364. package/dist/components/ui/label.d.ts.map +0 -1
  365. package/dist/components/ui/popover.d.ts.map +0 -1
  366. package/dist/components/ui/save-footer.d.ts.map +0 -1
  367. package/dist/components/ui/save-footer.js +0 -9
  368. package/dist/components/ui/search-bar.d.ts.map +0 -1
  369. package/dist/components/ui/search-bar.js +0 -19
  370. package/dist/components/ui/search-input.d.ts.map +0 -1
  371. package/dist/components/ui/section-card.d.ts.map +0 -1
  372. package/dist/components/ui/select.d.ts.map +0 -1
  373. package/dist/components/ui/separator.d.ts.map +0 -1
  374. package/dist/components/ui/skeleton.d.ts.map +0 -1
  375. package/dist/components/ui/slider.d.ts.map +0 -1
  376. package/dist/components/ui/sonner.d.ts +0 -5
  377. package/dist/components/ui/sonner.d.ts.map +0 -1
  378. package/dist/components/ui/sonner.js +0 -15
  379. package/dist/components/ui/spinner.d.ts.map +0 -1
  380. package/dist/components/ui/stack.d.ts.map +0 -1
  381. package/dist/components/ui/status-badge.d.ts.map +0 -1
  382. package/dist/components/ui/status-badge.js +0 -41
  383. package/dist/components/ui/switch.d.ts.map +0 -1
  384. package/dist/components/ui/switch.js +0 -7
  385. package/dist/components/ui/tabs.d.ts.map +0 -1
  386. package/dist/components/ui/tag-editor.d.ts +0 -24
  387. package/dist/components/ui/tag-editor.d.ts.map +0 -1
  388. package/dist/components/ui/tag-editor.js +0 -32
  389. package/dist/components/ui/tag-input.d.ts +0 -19
  390. package/dist/components/ui/tag-input.d.ts.map +0 -1
  391. package/dist/components/ui/tag-input.js +0 -28
  392. package/dist/components/ui/textarea.d.ts +0 -6
  393. package/dist/components/ui/textarea.d.ts.map +0 -1
  394. package/dist/components/ui/textarea.js +0 -8
  395. package/dist/components/ui/themed-select.d.ts.map +0 -1
  396. package/dist/components/ui/themed-select.js +0 -57
  397. package/dist/components/ui/tooltip-extended.d.ts.map +0 -1
  398. package/dist/components/ui/tooltip-extended.js +0 -128
  399. package/dist/components/ui/tooltip.d.ts.map +0 -1
  400. package/dist/components/ui/tooltip.js +0 -10
  401. package/dist/components/ui/typography.d.ts.map +0 -1
  402. package/dist/index.d.ts +0 -42
  403. package/dist/index.d.ts.map +0 -1
  404. package/dist/index.js +0 -43
  405. package/dist/lib/button-styles.d.ts +0 -12
  406. package/dist/lib/button-styles.d.ts.map +0 -1
  407. package/dist/lib/button-styles.js +0 -11
  408. package/dist/lib/utils.d.ts +0 -6
  409. package/dist/lib/utils.d.ts.map +0 -1
  410. package/dist/package.json +0 -64
  411. package/dist/styles/theme.css +0 -193
  412. package/src/styles/theme.css +0 -193
  413. /package/{dist/components/ui → packages/ui/src/components/composites/search}/search-input.d.ts +0 -0
  414. /package/{dist → packages/ui/src}/components/ui/badge.js +0 -0
  415. /package/{dist → packages/ui/src}/components/ui/banner.d.ts +0 -0
  416. /package/{dist → packages/ui/src}/components/ui/checkbox.d.ts +0 -0
  417. /package/{dist → packages/ui/src}/components/ui/checkbox.js +0 -0
  418. /package/{dist → packages/ui/src}/components/ui/copy-button.d.ts +0 -0
  419. /package/{dist → packages/ui/src}/components/ui/copy-button.js +0 -0
  420. /package/{dist → packages/ui/src}/components/ui/dropdown-menu.d.ts +0 -0
  421. /package/{dist → packages/ui/src}/components/ui/empty-state.d.ts +0 -0
  422. /package/{dist → packages/ui/src}/components/ui/empty-state.js +0 -0
  423. /package/{dist → packages/ui/src}/components/ui/grid.js +0 -0
  424. /package/{dist → packages/ui/src}/components/ui/label.d.ts +0 -0
  425. /package/{dist → packages/ui/src}/components/ui/label.js +0 -0
  426. /package/{dist → packages/ui/src}/components/ui/popover.d.ts +0 -0
  427. /package/{dist → packages/ui/src}/components/ui/popover.js +0 -0
  428. /package/{dist → packages/ui/src}/components/ui/save-footer.d.ts +0 -0
  429. /package/{dist → packages/ui/src}/components/ui/section-card.d.ts +0 -0
  430. /package/{dist → packages/ui/src}/components/ui/select.d.ts +0 -0
  431. /package/{dist → packages/ui/src}/components/ui/separator.d.ts +0 -0
  432. /package/{dist → packages/ui/src}/components/ui/separator.js +0 -0
  433. /package/{dist → packages/ui/src}/components/ui/skeleton.d.ts +0 -0
  434. /package/{dist → packages/ui/src}/components/ui/slider.d.ts +0 -0
  435. /package/{dist → packages/ui/src}/components/ui/spinner.d.ts +0 -0
  436. /package/{dist → packages/ui/src}/components/ui/spinner.js +0 -0
  437. /package/{dist → packages/ui/src}/components/ui/stack.js +0 -0
  438. /package/{dist → packages/ui/src}/components/ui/switch.d.ts +0 -0
  439. /package/{dist → packages/ui/src}/components/ui/tabs.d.ts +0 -0
@@ -0,0 +1,127 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Hash, MessageCircleMore, MessageSquareText, MessagesSquare, Phone, Send, Shield, TerminalSquare, } from "lucide-react";
3
+ import { cn } from "../../../lib/utils";
4
+ function DiscordIcon({ className }) {
5
+ return (_jsx("svg", { "aria-hidden": "true", className: cn("h-4 w-4", className), viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("path", { d: "M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.947 2.418-2.157 2.418z" }) }));
6
+ }
7
+ const SOURCE_META = {
8
+ eliza: {
9
+ badgeClassName: "border-accent/30 bg-accent/10 text-accent",
10
+ borderClassName: "border-accent/60",
11
+ iconClassName: "text-accent",
12
+ Icon: TerminalSquare,
13
+ label: "Terminal",
14
+ },
15
+ app: {
16
+ badgeClassName: "border-accent/30 bg-accent/10 text-accent",
17
+ borderClassName: "border-accent/60",
18
+ iconClassName: "text-accent",
19
+ Icon: TerminalSquare,
20
+ label: "Terminal",
21
+ },
22
+ discord: {
23
+ badgeClassName: "border-[#5865F2]/30 bg-[#5865F2]/10 text-[#c7cdff]",
24
+ borderClassName: "border-[#5865F2]/60",
25
+ iconClassName: "text-[#8ea1ff]",
26
+ Icon: DiscordIcon,
27
+ label: "Discord",
28
+ },
29
+ "discord-local": {
30
+ badgeClassName: "border-[#5865F2]/30 bg-[#5865F2]/10 text-[#c7cdff]",
31
+ borderClassName: "border-[#5865F2]/60",
32
+ iconClassName: "text-[#8ea1ff]",
33
+ Icon: DiscordIcon,
34
+ label: "Discord",
35
+ },
36
+ bluebubbles: {
37
+ badgeClassName: "border-[#34c759]/30 bg-[#34c759]/10 text-[#b6f2c7]",
38
+ borderClassName: "border-[#34c759]/60",
39
+ iconClassName: "text-[#34c759]",
40
+ Icon: MessageCircleMore,
41
+ label: "iMessage",
42
+ },
43
+ imessage: {
44
+ badgeClassName: "border-[#34c759]/30 bg-[#34c759]/10 text-[#b6f2c7]",
45
+ borderClassName: "border-[#34c759]/60",
46
+ iconClassName: "text-[#34c759]",
47
+ Icon: MessageCircleMore,
48
+ label: "iMessage",
49
+ },
50
+ signal: {
51
+ badgeClassName: "border-[#3A76F0]/30 bg-[#3A76F0]/10 text-[#bed2ff]",
52
+ borderClassName: "border-[#3A76F0]/60",
53
+ iconClassName: "text-[#73a0ff]",
54
+ Icon: Shield,
55
+ label: "Signal",
56
+ },
57
+ slack: {
58
+ badgeClassName: "border-[#4A154B]/30 bg-[#4A154B]/10 text-[#dfb9df]",
59
+ borderClassName: "border-[#4A154B]/60",
60
+ iconClassName: "text-[#c78bc8]",
61
+ Icon: Hash,
62
+ label: "Slack",
63
+ },
64
+ sms: {
65
+ badgeClassName: "border-[#8E8E93]/30 bg-[#8E8E93]/10 text-[#d7d7da]",
66
+ borderClassName: "border-[#8E8E93]/60",
67
+ iconClassName: "text-[#c8c8cc]",
68
+ Icon: MessageSquareText,
69
+ label: "SMS",
70
+ },
71
+ telegram: {
72
+ badgeClassName: "border-[#229ED9]/30 bg-[#229ED9]/10 text-[#b3e6ff]",
73
+ borderClassName: "border-[#229ED9]/60",
74
+ iconClassName: "text-[#63c5ff]",
75
+ Icon: Send,
76
+ label: "Telegram",
77
+ },
78
+ "telegram-account": {
79
+ badgeClassName: "border-[#229ED9]/30 bg-[#229ED9]/10 text-[#b3e6ff]",
80
+ borderClassName: "border-[#229ED9]/60",
81
+ iconClassName: "text-[#63c5ff]",
82
+ Icon: Send,
83
+ label: "Telegram",
84
+ },
85
+ wechat: {
86
+ badgeClassName: "border-[#07C160]/30 bg-[#07C160]/10 text-[#acf0c8]",
87
+ borderClassName: "border-[#07C160]/60",
88
+ iconClassName: "text-[#4ed58f]",
89
+ Icon: MessagesSquare,
90
+ label: "WeChat",
91
+ },
92
+ whatsapp: {
93
+ badgeClassName: "border-[#25D366]/30 bg-[#25D366]/10 text-[#b3f1c6]",
94
+ borderClassName: "border-[#25D366]/60",
95
+ iconClassName: "text-[#4fdf85]",
96
+ Icon: Phone,
97
+ label: "WhatsApp",
98
+ },
99
+ };
100
+ function toTitleCase(source) {
101
+ return source
102
+ .trim()
103
+ .split(/[\s_-]+/)
104
+ .filter(Boolean)
105
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
106
+ .join(" ");
107
+ }
108
+ export function getChatSourceMeta(source) {
109
+ const normalized = source.trim().toLowerCase();
110
+ const known = SOURCE_META[normalized];
111
+ if (known)
112
+ return known;
113
+ return {
114
+ badgeClassName: "border-accent/25 bg-accent/8 text-muted-strong",
115
+ borderClassName: "border-accent/40",
116
+ iconClassName: "text-accent/85",
117
+ Icon: MessageSquareText,
118
+ label: toTitleCase(source),
119
+ };
120
+ }
121
+ export function ChatSourceIcon({ source, className, decorative = false, }) {
122
+ const meta = getChatSourceMeta(source);
123
+ const Icon = meta.Icon;
124
+ return (_jsx("span", { "data-testid": "chat-source-icon", "data-source": source.trim().toLowerCase(), className: cn("inline-flex shrink-0 items-center justify-center", meta.iconClassName), ...(decorative
125
+ ? { "aria-hidden": true }
126
+ : { "aria-label": meta.label, role: "img", title: meta.label }), children: _jsx(Icon, { className: className }) }));
127
+ }
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import type { ChatVariant } from "./chat-types";
3
+ export interface ChatThreadLayoutProps extends React.HTMLAttributes<HTMLElement> {
4
+ composerHeight?: number;
5
+ composer?: React.ReactNode;
6
+ footerStack?: React.ReactNode;
7
+ gameModalComposerGapPx?: number;
8
+ gameModalMessageBottomFallback?: string;
9
+ gameModalMessageTop?: string;
10
+ imageDragOver?: boolean;
11
+ messagesClassName?: string;
12
+ messagesRef?: React.Ref<HTMLDivElement>;
13
+ messagesStyle?: React.CSSProperties;
14
+ messagesTestId?: string;
15
+ variant?: ChatVariant;
16
+ }
17
+ export declare const ChatThreadLayout: React.ForwardRefExoticComponent<ChatThreadLayoutProps & React.RefAttributes<HTMLElement>>;
18
+ //# sourceMappingURL=chat-thread-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-thread-layout.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/chat-thread-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,2FA+E3B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../../lib/utils";
4
+ export const ChatThreadLayout = React.forwardRef(function ChatThreadLayout({ children, className, composerHeight = 0, composer, footerStack, gameModalComposerGapPx = 18, gameModalMessageBottomFallback = "5.25rem", gameModalMessageTop = "calc(-100% + 1.5rem)", imageDragOver = false, messagesClassName, messagesRef, messagesStyle, messagesTestId = "chat-messages-scroll", variant = "default", ...props }, ref) {
5
+ const isGameModal = variant === "game-modal";
6
+ const resolvedMessagesStyle = isGameModal
7
+ ? {
8
+ zIndex: 1,
9
+ top: gameModalMessageTop,
10
+ bottom: composerHeight > 0
11
+ ? `${composerHeight + gameModalComposerGapPx}px`
12
+ : gameModalMessageBottomFallback,
13
+ overscrollBehavior: "contain",
14
+ touchAction: "pan-y",
15
+ userSelect: "text",
16
+ WebkitUserSelect: "text",
17
+ maskImage: "linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.28) 6%, rgba(0,0,0,0.82) 12%, black 17%, black 100%)",
18
+ WebkitMaskImage: "linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.28) 6%, rgba(0,0,0,0.82) 12%, black 17%, black 100%)",
19
+ ...messagesStyle,
20
+ }
21
+ : {
22
+ zIndex: 1,
23
+ ...messagesStyle,
24
+ };
25
+ return (_jsxs("section", { ref: ref, "aria-label": "Chat workspace", className: cn("relative flex min-h-0 flex-1 flex-col", isGameModal ? "overflow-visible pointer-events-none" : "bg-transparent", imageDragOver && "ring-2 ring-inset ring-accent", className), ...props, children: [_jsx("div", { ref: messagesRef, "data-testid": messagesTestId, "data-no-window-drag": false, "data-no-camera-drag": false, "data-no-camera-zoom": false, className: cn(isGameModal
26
+ ? "chat-native-scrollbar absolute inset-x-0 overflow-x-hidden overflow-y-auto pointer-events-auto"
27
+ : "chat-native-scrollbar relative flex flex-1 flex-col overflow-x-hidden overflow-y-auto px-3 py-3 sm:px-4 sm:py-4 xl:px-5", messagesClassName), style: resolvedMessagesStyle, children: children }), footerStack, composer] }));
28
+ });
@@ -0,0 +1,19 @@
1
+ import type * as React from "react";
2
+ import type { ChatMessageData, ChatMessageLabels, ChatVariant } from "./chat-types";
3
+ export interface ChatTranscriptProps {
4
+ agentName?: string;
5
+ carryoverMessages?: ChatMessageData[];
6
+ carryoverOpacity?: number;
7
+ labels?: ChatMessageLabels;
8
+ messages: ChatMessageData[];
9
+ onCopy?: (text: string) => void;
10
+ onDelete?: (messageId: string) => void;
11
+ onEdit?: (messageId: string, text: string) => Promise<boolean> | boolean;
12
+ onSpeak?: (messageId: string, text: string) => void;
13
+ renderMessageContent?: (message: ChatMessageData) => React.ReactNode;
14
+ typingIndicator?: React.ReactNode;
15
+ userMessagesOnRight?: boolean;
16
+ variant?: ChatVariant;
17
+ }
18
+ export declare const ChatTranscript: React.NamedExoticComponent<ChatTranscriptProps>;
19
+ //# sourceMappingURL=chat-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-transcript.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/chat-transcript.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACzE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAC;IACrE,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AA0ED,eAAO,MAAM,cAAc,iDAwHzB,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from "react";
3
+ import { ChatBubble } from "./chat-bubble";
4
+ import { ChatMessage } from "./chat-message";
5
+ function renderTranscriptMessageContent(message, renderMessageContent) {
6
+ return renderMessageContent?.(message) ?? message.text;
7
+ }
8
+ const LEGACY_REPLY_REFERENCE_RE = /^Referencing MessageID ([0-9a-f-]{36})(?: \([^)]+\))?(?: in channel .*)?(?: in guild .*)?$/i;
9
+ function normalizeTranscriptMessage(message) {
10
+ const rawText = typeof message.text === "string" ? message.text : "";
11
+ const lines = rawText.split(/\r?\n/);
12
+ let extractedReplyToMessageId = typeof message.replyToMessageId === "string" &&
13
+ message.replyToMessageId.trim().length > 0
14
+ ? message.replyToMessageId.trim()
15
+ : "";
16
+ let removedLegacyReference = false;
17
+ const cleanedLines = lines.filter((line) => {
18
+ const match = line.trim().match(LEGACY_REPLY_REFERENCE_RE);
19
+ if (!match) {
20
+ return true;
21
+ }
22
+ if (!extractedReplyToMessageId) {
23
+ extractedReplyToMessageId = match[1];
24
+ }
25
+ removedLegacyReference = true;
26
+ return false;
27
+ });
28
+ const cleanedText = removedLegacyReference
29
+ ? cleanedLines
30
+ .join("\n")
31
+ .replace(/\n{3,}/g, "\n\n")
32
+ .trimEnd()
33
+ : rawText;
34
+ if (cleanedText === rawText &&
35
+ extractedReplyToMessageId === (message.replyToMessageId ?? "")) {
36
+ return message;
37
+ }
38
+ return {
39
+ ...message,
40
+ text: cleanedText,
41
+ ...(extractedReplyToMessageId
42
+ ? { replyToMessageId: extractedReplyToMessageId }
43
+ : {}),
44
+ };
45
+ }
46
+ function getMessageGroupingKey(message) {
47
+ if (message.role !== "user") {
48
+ return message.role;
49
+ }
50
+ const source = message.source?.trim().toLowerCase() ?? "";
51
+ const senderName = message.from?.trim().toLowerCase() ?? "";
52
+ const senderHandle = message.fromUserName?.trim().toLowerCase() ?? "";
53
+ const avatarUrl = message.avatarUrl?.trim() ?? "";
54
+ if (!source && !senderName && !senderHandle && !avatarUrl) {
55
+ return "user";
56
+ }
57
+ return `user:${source}|${senderName}|${senderHandle}|${avatarUrl}`;
58
+ }
59
+ export const ChatTranscript = memo(function ChatTranscript({ agentName = "Agent", carryoverMessages = [], carryoverOpacity = 1, labels, messages, onCopy, onDelete, onEdit, onSpeak, renderMessageContent, typingIndicator, userMessagesOnRight = true, variant = "default", }) {
60
+ const normalizedMessages = messages.map(normalizeTranscriptMessage);
61
+ if (variant === "game-modal") {
62
+ return (_jsxs("div", { className: "flex min-h-full w-full flex-col justify-end gap-4 px-1 py-4", children: [carryoverMessages.map((message) => {
63
+ const isUser = message.role === "user";
64
+ return (_jsx("div", { "data-testid": "companion-message-row", "data-companion-carryover": "true", className: `flex w-full ${isUser ? "justify-end" : "justify-start"}`, style: { opacity: carryoverOpacity }, children: _jsx(ChatBubble, { tone: isUser ? "user" : "assistant", className: `max-w-[min(85%,24rem)] rounded-2xl px-4 py-3 text-[15px] leading-relaxed backdrop-blur-md ${isUser ? "rounded-br-sm" : "rounded-bl-sm"}`, children: _jsx("div", { className: "break-words", style: { fontFamily: "var(--font-chat)" }, children: renderTranscriptMessageContent(message, renderMessageContent) }) }) }, `carryover-${message.id}`));
65
+ }), normalizedMessages.map((message) => {
66
+ const isUser = message.role === "user";
67
+ return (_jsx("div", { "data-testid": "companion-message-row", className: `flex w-full ${isUser ? "justify-end" : "justify-start"}`, children: _jsx(ChatBubble, { tone: isUser ? "user" : "assistant", className: `max-w-[min(85%,24rem)] rounded-2xl px-4 py-3 text-[15px] leading-relaxed backdrop-blur-md ${isUser ? "rounded-br-sm" : "rounded-bl-sm"}`, children: _jsx("div", { className: "break-words", style: { fontFamily: "var(--font-chat)" }, children: renderTranscriptMessageContent(message, renderMessageContent) }) }) }, message.id));
68
+ }), typingIndicator] }));
69
+ }
70
+ return (_jsxs("div", { className: "w-full space-y-1.5", children: [normalizedMessages.map((message, index) => {
71
+ const replyTarget = typeof message.replyToMessageId === "string" &&
72
+ message.replyToMessageId.length > 0
73
+ ? (normalizedMessages.find((candidate) => candidate.id === message.replyToMessageId) ?? null)
74
+ : null;
75
+ const previousMessage = index > 0 ? normalizedMessages[index - 1] : null;
76
+ const isGrouped = previousMessage?.role === message.role &&
77
+ previousMessage != null &&
78
+ getMessageGroupingKey(previousMessage) ===
79
+ getMessageGroupingKey(message);
80
+ return (_jsx(ChatMessage, { message: message, isGrouped: isGrouped, agentName: agentName, labels: labels, onCopy: onCopy, onDelete: onDelete, onEdit: onEdit, onSpeak: onSpeak, replyTarget: replyTarget, userMessagesOnRight: userMessagesOnRight, children: renderTranscriptMessageContent(message, renderMessageContent) }, message.id));
81
+ }), typingIndicator] }));
82
+ });
@@ -0,0 +1,90 @@
1
+ export type ChatVariant = "default" | "game-modal";
2
+ export interface ChatLabelSet {
3
+ agentStarting?: string;
4
+ agentVoiceOff?: string;
5
+ agentVoiceOn?: string;
6
+ attachImage?: string;
7
+ cancel?: string;
8
+ clearSearch?: string;
9
+ chatIconLabel?: string;
10
+ chats?: string;
11
+ closePanel?: string;
12
+ copied?: string;
13
+ copiedAria?: string;
14
+ copy?: string;
15
+ delete?: string;
16
+ deleteConfirm?: string;
17
+ deleteNo?: string;
18
+ deleteYes?: string;
19
+ edit?: string;
20
+ expandChatsPanel?: string;
21
+ inputPlaceholder?: string;
22
+ inputPlaceholderNarrow?: string;
23
+ listening?: string;
24
+ micTitleIdleEnhanced?: string;
25
+ micTitleIdleStandard?: string;
26
+ newChat?: string;
27
+ none?: string;
28
+ noMatchingChats?: string;
29
+ play?: string;
30
+ releaseToSend?: string;
31
+ rename?: string;
32
+ responseInterrupted?: string;
33
+ saveAndResend?: string;
34
+ searchChats?: string;
35
+ saving?: string;
36
+ send?: string;
37
+ sendMessageTo?: string;
38
+ startConversation?: string;
39
+ stopGeneration?: string;
40
+ stopListening?: string;
41
+ stopSpeaking?: string;
42
+ toBeginChatting?: string;
43
+ voiceInput?: string;
44
+ }
45
+ export interface ChatAttachmentItem {
46
+ alt: string;
47
+ id: string;
48
+ name: string;
49
+ src: string;
50
+ }
51
+ export interface ChatMessageReaction {
52
+ emoji: string;
53
+ count: number;
54
+ users?: string[];
55
+ }
56
+ export interface ChatMessageData {
57
+ avatarUrl?: string;
58
+ from?: string;
59
+ fromUserName?: string;
60
+ id: string;
61
+ interrupted?: boolean;
62
+ reactions?: ChatMessageReaction[];
63
+ replyToMessageId?: string;
64
+ replyToSenderName?: string;
65
+ replyToSenderUserName?: string;
66
+ role: string;
67
+ source?: string;
68
+ text: string;
69
+ }
70
+ export interface ChatMessageLabels extends ChatLabelSet {
71
+ }
72
+ export interface ChatConversationSummary {
73
+ avatarUrl?: string;
74
+ id: string;
75
+ title: string;
76
+ updatedAtLabel?: string;
77
+ /**
78
+ * Optional connector source tag (e.g. "imessage", "telegram",
79
+ * "discord", "whatsapp"). When set, the conversation item renders
80
+ * a brand-colored channel pill next to the title so cross-channel
81
+ * threads in a unified sidebar are visually distinct from the
82
+ * agent's own dashboard conversations. Unknown sources fall back
83
+ * to a neutral accent pill; dashboard conversations leave this
84
+ * unset and get no pill at all.
85
+ */
86
+ source?: string;
87
+ }
88
+ export interface ChatConversationLabels extends ChatLabelSet {
89
+ }
90
+ //# sourceMappingURL=chat-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-types.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/chat-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;CAAG;AAE1D,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,YAAY;CAAG"}
@@ -0,0 +1,10 @@
1
+ import type { ChatVariant } from "./chat-types";
2
+ export interface TypingIndicatorProps {
3
+ agentAvatarSrc?: string | null;
4
+ agentName: string;
5
+ className?: string;
6
+ dotClassName?: string;
7
+ variant?: ChatVariant;
8
+ }
9
+ export declare function TypingIndicator({ agentAvatarSrc, agentName, className, dotClassName, variant, }: TypingIndicatorProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=chat-typing-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-typing-indicator.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/chat-typing-indicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAmB,GACpB,EAAE,oBAAoB,2CA8DtB"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChatBubble } from "./chat-bubble";
3
+ export function TypingIndicator({ agentAvatarSrc, agentName, className, dotClassName, variant = "default", }) {
4
+ if (variant === "game-modal") {
5
+ return (_jsx("div", { className: className ?? "flex w-full justify-start", children: _jsx(ChatBubble, { tone: "assistant", className: "flex max-w-[min(85%,24rem)] items-center gap-1 rounded-2xl rounded-bl-sm px-4 py-3 backdrop-blur-md", children: [0, 150, 300].map((delay) => (_jsx("span", { className: dotClassName ??
6
+ "h-1.5 w-1.5 rounded-full bg-[color:color-mix(in_srgb,var(--muted)_82%,transparent)] animate-bounce", style: { animationDelay: `${delay}ms` } }, delay))) }) }));
7
+ }
8
+ const agentInitial = agentName.trim().charAt(0).toUpperCase() || "A";
9
+ return (_jsxs("div", { className: className ?? "mt-4 flex items-start gap-2 sm:gap-3", children: [_jsx("div", { className: "h-8 w-8 shrink-0 overflow-hidden rounded-full border border-border bg-bg-hover shadow-sm", children: agentAvatarSrc ? (_jsx("img", { src: agentAvatarSrc, alt: `${agentName} avatar`, className: "h-full w-full object-cover" })) : (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-accent-subtle text-xs-tight font-bold text-accent", children: agentInitial })) }), _jsxs("div", { className: "min-w-0 max-w-[88%] sm:max-w-[80%]", children: [_jsx("div", { className: "mb-1 text-xs font-semibold text-accent", children: agentName }), _jsx("div", { className: "rounded-2xl rounded-bl-md border border-border bg-bg-accent px-4 py-3", children: _jsx("div", { className: "flex gap-1", children: [0, 200, 400].map((delay) => (_jsx("span", { className: dotClassName ??
10
+ "h-2 w-2 rounded-full bg-muted-strong animate-[typing-bounce_1.2s_ease-in-out_infinite]", style: { animationDelay: `${delay}ms` } }, delay))) }) })] })] }));
11
+ }
@@ -0,0 +1,8 @@
1
+ export interface CreateTaskPopoverProps {
2
+ chatInput: string;
3
+ disabled: boolean;
4
+ onCreateTask: (description: string, agentType: string) => void;
5
+ t: (key: string, options?: Record<string, unknown>) => string;
6
+ }
7
+ export declare function CreateTaskPopover({ chatInput, disabled, onCreateTask, t, }: CreateTaskPopoverProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=create-task-popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-task-popover.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/create-task-popover.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC/D;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,CAAC,GACF,EAAE,sBAAsB,2CAgHxB"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Code2, X } from "lucide-react";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import { Button } from "../../ui/button";
5
+ import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover";
6
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../ui/select";
7
+ import { Textarea } from "../../ui/textarea";
8
+ const DEFAULT_AGENT_TYPES = ["claude", "gemini", "codex", "aider"];
9
+ export function CreateTaskPopover({ chatInput, disabled, onCreateTask, t, }) {
10
+ const [open, setOpen] = useState(false);
11
+ const [description, setDescription] = useState("");
12
+ const [agentType, setAgentType] = useState("claude");
13
+ const previouslyOpenRef = useRef(false);
14
+ useEffect(() => {
15
+ if (open && !previouslyOpenRef.current && chatInput.trim()) {
16
+ setDescription(chatInput.trim());
17
+ }
18
+ previouslyOpenRef.current = open;
19
+ }, [chatInput, open]);
20
+ const handleCreate = useCallback(() => {
21
+ const trimmedDescription = description.trim();
22
+ if (!trimmedDescription) {
23
+ return;
24
+ }
25
+ onCreateTask(trimmedDescription, agentType);
26
+ setDescription("");
27
+ setAgentType("claude");
28
+ setOpen(false);
29
+ }, [agentType, description, onCreateTask]);
30
+ return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "surface", size: "icon", className: "h-[46px] w-[46px] shrink-0", disabled: disabled, "aria-label": t("chat.createTask", {
31
+ defaultValue: "Create coding task",
32
+ }), title: t("chat.createTask", {
33
+ defaultValue: "Create coding task",
34
+ }), children: _jsx(Code2, { className: "h-4 w-4" }) }) }), _jsx(PopoverContent, { side: "top", align: "end", sideOffset: 8, className: "w-80 p-0", children: _jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-sm font-medium text-txt-strong", children: t("chat.createTaskTitle", {
35
+ defaultValue: "Create Coding Task",
36
+ }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "h-6 w-6", onClick: () => setOpen(false), "aria-label": t("common.close", { defaultValue: "Close" }), children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }), _jsx(Textarea, { value: description, onChange: (event) => setDescription(event.target.value), placeholder: t("chat.taskDescriptionPlaceholder", {
37
+ defaultValue: "Describe what to build...",
38
+ }), className: "min-h-[80px] resize-none text-sm", onKeyDown: (event) => {
39
+ if (event.key === "Enter" && (event.metaKey || event.ctrlKey)) {
40
+ event.preventDefault();
41
+ handleCreate();
42
+ }
43
+ } }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { htmlFor: "chat-task-agent-type", className: "text-xs text-muted-foreground", children: t("chat.agentType", { defaultValue: "Agent" }) }), _jsxs(Select, { value: agentType, onValueChange: (value) => setAgentType(value), children: [_jsx(SelectTrigger, { id: "chat-task-agent-type", className: "h-9 text-sm", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: DEFAULT_AGENT_TYPES.map((type) => (_jsx(SelectItem, { value: type, children: type.charAt(0).toUpperCase() + type.slice(1) }, type))) })] })] }), _jsx(Button, { onClick: handleCreate, disabled: !description.trim(), children: t("chat.createTaskButton", { defaultValue: "Create" }) })] }) })] }));
44
+ }
@@ -0,0 +1,17 @@
1
+ export * from "./chat-attachment-strip";
2
+ export * from "./chat-bubble";
3
+ export * from "./chat-composer";
4
+ export * from "./chat-composer-shell";
5
+ export * from "./chat-conversation-item";
6
+ export * from "./chat-conversation-rename-dialog";
7
+ export * from "./chat-empty-state";
8
+ export * from "./chat-message";
9
+ export * from "./chat-message-actions";
10
+ export * from "./chat-sidebar";
11
+ export * from "./chat-source";
12
+ export * from "./chat-thread-layout";
13
+ export * from "./chat-transcript";
14
+ export * from "./chat-types";
15
+ export * from "./chat-typing-indicator";
16
+ export * from "./create-task-popover";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export * from "./chat-attachment-strip";
2
+ export * from "./chat-bubble";
3
+ export * from "./chat-composer";
4
+ export * from "./chat-composer-shell";
5
+ export * from "./chat-conversation-item";
6
+ export * from "./chat-conversation-rename-dialog";
7
+ export * from "./chat-empty-state";
8
+ export * from "./chat-message";
9
+ export * from "./chat-message-actions";
10
+ export * from "./chat-sidebar";
11
+ export * from "./chat-source";
12
+ export * from "./chat-thread-layout";
13
+ export * from "./chat-transcript";
14
+ export * from "./chat-types";
15
+ export * from "./chat-typing-indicator";
16
+ export * from "./create-task-popover";
@@ -0,0 +1,14 @@
1
+ import type * as React from "react";
2
+ export interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** Label text shown above the field. */
4
+ label?: React.ReactNode;
5
+ /** Optional description below the label. */
6
+ description?: React.ReactNode;
7
+ /** Validation error messages. */
8
+ errors?: readonly string[];
9
+ /** Density controls spacing and text size. */
10
+ density?: "default" | "compact" | "relaxed";
11
+ }
12
+ declare function FormField({ label, description, errors, density, className, children, ...props }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
13
+ export { FormField };
14
+ //# sourceMappingURL=form-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/form-field/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AASpC,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAmB,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,2CA6BhB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../../lib/utils";
3
+ import { Field, FieldDescription, FieldLabel, FieldMessage, } from "../../ui/field";
4
+ function FormField({ label, description, errors, density = "default", className, children, ...props }) {
5
+ const isCompact = density === "compact";
6
+ return (_jsxs(Field, { className: cn(isCompact ? "gap-1.5" : "space-y-2", className), ...props, children: [label && (_jsx(FieldLabel, { className: cn(isCompact && "text-xs font-semibold text-txt"), children: label })), description && (_jsx(FieldDescription, { className: cn(isCompact && "text-xs-tight text-muted"), children: description })), children, errors?.map((err) => (_jsx(FieldMessage, { tone: "danger", children: err }, err)))] }));
7
+ }
8
+ export { FormField };
@@ -0,0 +1,2 @@
1
+ export { FormField, type FormFieldProps } from "./form-field";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/form-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ export { FormField } from "./form-field";
@@ -0,0 +1,27 @@
1
+ export * from "../ui/admin-dialog";
2
+ export * from "../ui/banner";
3
+ export * from "../ui/confirm-delete";
4
+ export * from "../ui/confirm-dialog";
5
+ export * from "../ui/connection-status";
6
+ export * from "../ui/copy-button";
7
+ export * from "../ui/empty-state";
8
+ export * from "../ui/error-boundary";
9
+ export * from "../ui/field";
10
+ export * from "../ui/field-switch";
11
+ export * from "../ui/form-select";
12
+ export * from "../ui/new-action-button";
13
+ export * from "../ui/save-footer";
14
+ export * from "../ui/section-card";
15
+ export * from "../ui/segmented-control";
16
+ export * from "../ui/settings-controls";
17
+ export * from "../ui/status-badge";
18
+ export * from "../ui/themed-select";
19
+ export * from "../ui/tooltip-extended";
20
+ export * from "./chat";
21
+ export * from "./form-field";
22
+ export * from "./page-panel";
23
+ export * from "./search";
24
+ export * from "./sidebar";
25
+ export * from "./skills";
26
+ export * from "./trajectories";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/composites/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,26 @@
1
+ export * from "../ui/admin-dialog";
2
+ export * from "../ui/banner";
3
+ export * from "../ui/confirm-delete";
4
+ export * from "../ui/confirm-dialog";
5
+ export * from "../ui/connection-status";
6
+ export * from "../ui/copy-button";
7
+ export * from "../ui/empty-state";
8
+ export * from "../ui/error-boundary";
9
+ export * from "../ui/field";
10
+ export * from "../ui/field-switch";
11
+ export * from "../ui/form-select";
12
+ export * from "../ui/new-action-button";
13
+ export * from "../ui/save-footer";
14
+ export * from "../ui/section-card";
15
+ export * from "../ui/segmented-control";
16
+ export * from "../ui/settings-controls";
17
+ export * from "../ui/status-badge";
18
+ export * from "../ui/themed-select";
19
+ export * from "../ui/tooltip-extended";
20
+ export * from "./chat";
21
+ export * from "./form-field";
22
+ export * from "./page-panel";
23
+ export * from "./search";
24
+ export * from "./sidebar";
25
+ export * from "./skills";
26
+ export * from "./trajectories";