@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,448 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { PanelLeftClose, PanelLeftOpen, X } from "lucide-react";
4
+ import * as React from "react";
5
+ import { cn } from "../../../lib/utils";
6
+ import { Button } from "../../ui/button";
7
+ import { buildSidebarAutoRailItems, buildSidebarAutoRailItemsFromDom, } from "./sidebar-auto-rail";
8
+ import { SidebarBody } from "./sidebar-body";
9
+ import { SidebarCollapsedRail } from "./sidebar-collapsed-rail";
10
+ import { SidebarRailItem } from "./sidebar-content";
11
+ const sidebarRootVariants = cva("mt-4 flex flex-col overflow-hidden text-sm transition-[width,min-width,border-radius,box-shadow,transform] duration-[360ms] ease-[cubic-bezier(0.16,1,0.3,1)] motion-reduce:transition-none", {
12
+ variants: {
13
+ variant: {
14
+ default: "relative isolate min-h-0 h-[calc(100%-1rem)] w-full shrink-0 rounded-l-none rounded-tr-2xl rounded-br-2xl border-0 bg-[linear-gradient(180deg,color-mix(in_srgb,var(--card)_76%,transparent),color-mix(in_srgb,var(--bg-muted)_97%,transparent))] backdrop-blur-md",
15
+ mobile: "h-full w-full min-w-0 border-0 bg-[linear-gradient(180deg,color-mix(in_srgb,var(--card)_96%,transparent),color-mix(in_srgb,var(--bg)_92%,transparent))] shadow-none ring-0",
16
+ "game-modal": "h-full rounded-sm border border-white/10 bg-[linear-gradient(180deg,rgba(11,12,17,0.9),rgba(8,10,14,0.82))] shadow-2xl backdrop-blur-xl",
17
+ },
18
+ collapsed: {
19
+ true: "!w-[4.75rem] !min-w-[4.75rem] xl:!w-[4.75rem] xl:!min-w-[4.75rem]",
20
+ false: "",
21
+ },
22
+ },
23
+ compoundVariants: [
24
+ {
25
+ variant: "default",
26
+ collapsed: false,
27
+ className: "!w-[18.5rem] !min-w-[18.5rem] xl:!w-[20rem] xl:!min-w-[20rem]",
28
+ },
29
+ {
30
+ variant: "default",
31
+ collapsed: false,
32
+ className: "shadow-lg",
33
+ },
34
+ {
35
+ variant: "default",
36
+ collapsed: true,
37
+ className: "shadow-md",
38
+ },
39
+ ],
40
+ defaultVariants: {
41
+ variant: "default",
42
+ collapsed: false,
43
+ },
44
+ });
45
+ const sidebarHeaderVariants = cva("", {
46
+ variants: {
47
+ variant: {
48
+ default: "shrink-0 px-3.5 pb-4 pt-3.5",
49
+ mobile: "shrink-0 px-3.5 pb-4 pt-3.5",
50
+ "game-modal": "shrink-0 px-3.5 pb-3 pt-3.5",
51
+ },
52
+ collapsed: {
53
+ true: "flex min-h-0 flex-1 flex-col pb-0",
54
+ false: "",
55
+ },
56
+ },
57
+ compoundVariants: [
58
+ {
59
+ variant: "default",
60
+ collapsed: true,
61
+ className: " px-3.5 pt-3.5",
62
+ },
63
+ ],
64
+ defaultVariants: {
65
+ variant: "default",
66
+ collapsed: false,
67
+ },
68
+ });
69
+ const sidebarFooterVariants = cva("relative z-10 mt-auto flex shrink-0 justify-end px-3.5 pb-3.5 pt-2");
70
+ const sidebarControlButtonClassName = "h-11 w-11 rounded-sm border border-border/32 bg-card text-muted-strong shadow-sm transition-[border-color,background-color,color,transform,box-shadow] duration-200 hover:border-border/46 hover:text-txt hover:shadow-md active:scale-95";
71
+ const sidebarMobileHeaderBarClassName = "sticky top-0 z-10 flex items-center justify-between bg-card/88 px-3.5 py-2.5 backdrop-blur-md";
72
+ const sidebarCollapsedContentClassName = "flex min-h-0 w-full flex-1 flex-col items-center transform-gpu transition-[opacity,transform] duration-[260ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[opacity,transform] motion-reduce:transform-none motion-reduce:transition-none";
73
+ const sidebarContentLayerClassName = "flex min-h-0 flex-1 flex-col origin-left transform-gpu transition-[opacity,transform,filter] duration-[260ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[opacity,transform,filter] motion-reduce:transform-none motion-reduce:transition-none";
74
+ const sidebarContentOverlayLayerClassName = "pointer-events-none absolute inset-0 z-10 select-none";
75
+ const sidebarCollapsedFallbackRootClassName = "!w-[7rem] !min-w-[7rem] xl:!w-[7rem] xl:!min-w-[7rem]";
76
+ const sidebarCollapsedFallbackBodyClassName = "custom-scrollbar flex min-h-0 w-full flex-1 flex-col gap-2 overflow-y-auto px-2 pb-3 pt-2 [&_[data-sidebar-panel]]:min-h-0 [&_[data-sidebar-panel]]:gap-2 [&_[data-sidebar-panel]]:rounded-sm [&_[data-sidebar-panel]]:p-1.5 [&_[data-sidebar-filter-bar]]:hidden [&_[data-sidebar-section-label]]:hidden [&_[data-sidebar-section-header]]:hidden [&_[data-sidebar-toolbar-actions]]:hidden [&_[data-segmented-control]]:grid [&_[data-segmented-control]]:w-full [&_[data-segmented-control]]:max-w-none [&_[data-segmented-control]]:grid-cols-1 [&_[data-segmented-control]]:border-transparent [&_[data-segmented-control]]:bg-transparent [&_[data-segmented-control]]:p-0 [&_[data-segmented-control-button]]:w-full [&_[data-segmented-control-button]]:justify-center [&_[data-segmented-control-button]]:px-2.5 [&_[data-segmented-control-button]]:py-2.5 [&_[data-segmented-control-button]]:text-xs-tight [&_[data-sidebar-item]]:rounded-sm [&_[data-sidebar-item]]:px-2.5 [&_[data-sidebar-item]]:py-2.5 [&_[data-sidebar-item]]:gap-2 [&_[data-sidebar-item]]:items-center [&_[data-sidebar-item]]:justify-center [&_[data-sidebar-item]>div.absolute]:hidden [&_[data-sidebar-item-button]]:w-full [&_[data-sidebar-item-button]]:flex-col [&_[data-sidebar-item-button]]:items-center [&_[data-sidebar-item-button]]:justify-center [&_[data-sidebar-item-button]]:gap-2 [&_[data-sidebar-item-body]]:flex [&_[data-sidebar-item-body]]:w-full [&_[data-sidebar-item-body]]:flex-col [&_[data-sidebar-item-body]]:items-center [&_[data-sidebar-item-body]]:text-center [&_[data-sidebar-item-body]>*+*]:hidden [&_[data-sidebar-item-title]]:line-clamp-2 [&_[data-sidebar-item-title]]:text-center [&_[data-sidebar-item-title]]:text-xs-tight [&_[data-sidebar-item-title]]:leading-tight [&_[data-sidebar-item-description]]:hidden [&_[data-sidebar-item-icon]]:mx-auto [&_[data-sidebar-item-icon]]:mt-0 [&_[data-sidebar-item-action]]:hidden [&_.grid]:grid-cols-1 [&_.grid]:gap-2 [&_button]:min-h-11";
77
+ const sidebarMetaClassName = "mt-1.5 text-xs text-muted";
78
+ const DEFAULT_APP_SIDEBAR_SYNC_ID = "primary-app-sidebar";
79
+ const SIDEBAR_SYNC_STORAGE_PREFIX = "elizaos:ui:sidebar:";
80
+ const sidebarSyncListeners = new Map();
81
+ function getSidebarCollapsedStorageKey(syncId) {
82
+ return `${SIDEBAR_SYNC_STORAGE_PREFIX}${syncId}:collapsed`;
83
+ }
84
+ function readSidebarCollapsedSnapshot(syncId, fallbackValue) {
85
+ if (typeof window === "undefined")
86
+ return fallbackValue;
87
+ try {
88
+ const raw = window.localStorage.getItem(getSidebarCollapsedStorageKey(syncId));
89
+ return raw == null ? fallbackValue : raw === "true";
90
+ }
91
+ catch {
92
+ return fallbackValue;
93
+ }
94
+ }
95
+ function writeSidebarCollapsed(syncId, collapsed) {
96
+ if (typeof window === "undefined")
97
+ return;
98
+ try {
99
+ window.localStorage.setItem(getSidebarCollapsedStorageKey(syncId), String(collapsed));
100
+ }
101
+ catch {
102
+ /* ignore persistence failures */
103
+ }
104
+ const listeners = sidebarSyncListeners.get(syncId);
105
+ if (!listeners)
106
+ return;
107
+ for (const listener of listeners) {
108
+ listener();
109
+ }
110
+ }
111
+ function subscribeSidebarCollapsedStore(syncId, onStoreChange) {
112
+ const listeners = sidebarSyncListeners.get(syncId) ?? new Set();
113
+ listeners.add(onStoreChange);
114
+ sidebarSyncListeners.set(syncId, listeners);
115
+ const onStorage = (event) => {
116
+ if (event.key !== getSidebarCollapsedStorageKey(syncId))
117
+ return;
118
+ onStoreChange();
119
+ };
120
+ if (typeof window !== "undefined" &&
121
+ typeof window.addEventListener === "function") {
122
+ window.addEventListener("storage", onStorage);
123
+ }
124
+ return () => {
125
+ listeners.delete(onStoreChange);
126
+ if (listeners.size === 0) {
127
+ sidebarSyncListeners.delete(syncId);
128
+ }
129
+ if (typeof window !== "undefined" &&
130
+ typeof window.removeEventListener === "function") {
131
+ window.removeEventListener("storage", onStorage);
132
+ }
133
+ };
134
+ }
135
+ function useSidebarCollapsedStore(syncId, fallbackValue) {
136
+ return React.useSyncExternalStore(React.useCallback((onStoreChange) => {
137
+ if (!syncId)
138
+ return () => { };
139
+ return subscribeSidebarCollapsedStore(syncId, onStoreChange);
140
+ }, [syncId]), React.useCallback(() => syncId
141
+ ? readSidebarCollapsedSnapshot(syncId, fallbackValue)
142
+ : fallbackValue, [fallbackValue, syncId]), React.useCallback(() => fallbackValue, [fallbackValue]));
143
+ }
144
+ function useControllableState({ controlled, defaultValue, onChange, syncId, }) {
145
+ const fallbackValue = defaultValue ?? false;
146
+ const hasBrowserSync = Boolean(syncId && typeof window !== "undefined");
147
+ const syncedValue = useSidebarCollapsedStore(hasBrowserSync ? syncId : undefined, fallbackValue);
148
+ const [uncontrolled, setUncontrolled] = React.useState(fallbackValue);
149
+ const isControlled = controlled !== undefined;
150
+ const value = isControlled
151
+ ? controlled
152
+ : hasBrowserSync
153
+ ? (syncedValue ?? fallbackValue)
154
+ : uncontrolled;
155
+ React.useEffect(() => {
156
+ if (!hasBrowserSync || !syncId)
157
+ return undefined;
158
+ if (isControlled) {
159
+ if (readSidebarCollapsedSnapshot(syncId, fallbackValue) !== controlled) {
160
+ writeSidebarCollapsed(syncId, controlled);
161
+ }
162
+ }
163
+ }, [controlled, fallbackValue, hasBrowserSync, isControlled, syncId]);
164
+ const setValue = React.useCallback((next) => {
165
+ if (!isControlled && !hasBrowserSync) {
166
+ setUncontrolled(next);
167
+ }
168
+ if (hasBrowserSync && syncId) {
169
+ writeSidebarCollapsed(syncId, next);
170
+ }
171
+ onChange?.(next);
172
+ }, [hasBrowserSync, isControlled, onChange, syncId]);
173
+ return [value, setValue];
174
+ }
175
+ function useDefaultSidebarDesktopRailEnabled(variant) {
176
+ const [isDesktop, setIsDesktop] = React.useState(() => {
177
+ if (variant !== "default")
178
+ return false;
179
+ if (typeof window === "undefined" ||
180
+ typeof window.matchMedia !== "function") {
181
+ return true;
182
+ }
183
+ return window.matchMedia("(min-width: 768px)").matches;
184
+ });
185
+ React.useEffect(() => {
186
+ if (variant !== "default") {
187
+ setIsDesktop(false);
188
+ return;
189
+ }
190
+ if (typeof window === "undefined" ||
191
+ typeof window.matchMedia !== "function") {
192
+ setIsDesktop(true);
193
+ return;
194
+ }
195
+ const mediaQuery = window.matchMedia("(min-width: 768px)");
196
+ const update = () => setIsDesktop(mediaQuery.matches);
197
+ update();
198
+ if (typeof mediaQuery.addEventListener === "function") {
199
+ mediaQuery.addEventListener("change", update);
200
+ return () => mediaQuery.removeEventListener("change", update);
201
+ }
202
+ mediaQuery.addListener(update);
203
+ return () => mediaQuery.removeListener(update);
204
+ }, [variant]);
205
+ return isDesktop;
206
+ }
207
+ function usePrefersReducedMotion() {
208
+ const [prefersReducedMotion, setPrefersReducedMotion] = React.useState(() => {
209
+ if (typeof window === "undefined" ||
210
+ typeof window.matchMedia !== "function") {
211
+ return false;
212
+ }
213
+ return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
214
+ });
215
+ React.useEffect(() => {
216
+ if (typeof window === "undefined" ||
217
+ typeof window.matchMedia !== "function") {
218
+ return undefined;
219
+ }
220
+ const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
221
+ const update = () => setPrefersReducedMotion(mediaQuery.matches);
222
+ update();
223
+ if (typeof mediaQuery.addEventListener === "function") {
224
+ mediaQuery.addEventListener("change", update);
225
+ return () => mediaQuery.removeEventListener("change", update);
226
+ }
227
+ mediaQuery.addListener(update);
228
+ return () => mediaQuery.removeListener(update);
229
+ }, []);
230
+ return prefersReducedMotion;
231
+ }
232
+ function areSidebarAutoRailItemsEqual(left, right) {
233
+ if (left.length !== right.length)
234
+ return false;
235
+ return left.every((item, index) => {
236
+ const other = right[index];
237
+ return (item.key === other?.key &&
238
+ item.label === other?.label &&
239
+ item.active === other?.active &&
240
+ item.disabled === other?.disabled &&
241
+ item.contentKind === other?.contentKind &&
242
+ item.indicatorTone === other?.indicatorTone);
243
+ });
244
+ }
245
+ function getSidebarContentLayerMotionClassName({ direction, kind, overlay = false, phase, }) {
246
+ const isEntering = !overlay &&
247
+ ((direction === "collapsing" && kind === "collapsed") ||
248
+ (direction === "expanding" && kind === "expanded"));
249
+ const isExiting = overlay &&
250
+ ((direction === "collapsing" && kind === "expanded") ||
251
+ (direction === "expanding" && kind === "collapsed"));
252
+ if (!direction || !phase) {
253
+ return "opacity-100 translate-x-0 scale-100 blur-0";
254
+ }
255
+ if (isEntering) {
256
+ if (kind === "collapsed") {
257
+ return phase === "prepare"
258
+ ? "opacity-0 translate-x-[0.28rem] scale-[0.984] blur-[2px]"
259
+ : "opacity-100 translate-x-0 scale-100 blur-0 [transition-delay:125ms]";
260
+ }
261
+ return phase === "prepare"
262
+ ? "opacity-0 translate-x-[0.45rem] scale-[0.992] blur-[2px]"
263
+ : "opacity-100 translate-x-0 scale-100 blur-0 [transition-delay:110ms]";
264
+ }
265
+ if (isExiting) {
266
+ if (kind === "expanded") {
267
+ return phase === "prepare"
268
+ ? "opacity-100 translate-x-0 scale-100 blur-0"
269
+ : "opacity-0 -translate-x-[0.55rem] scale-[0.988] blur-[2px] duration-[150ms]";
270
+ }
271
+ return phase === "prepare"
272
+ ? "opacity-100 translate-x-0 scale-100 blur-0"
273
+ : "opacity-0 -translate-x-[0.28rem] scale-[0.982] blur-[2px] duration-[145ms]";
274
+ }
275
+ return "opacity-100 translate-x-0 scale-100 blur-0";
276
+ }
277
+ export const Sidebar = React.forwardRef(function Sidebar({ testId, variant = "default", collapsible = false, contentIdentity, syncId, collapsed, defaultCollapsed = false, onCollapsedChange, header, footer, collapsedContent, collapsedRailAction, collapsedRailItems, onMobileClose, mobileTitle, mobileMeta, mobileCloseLabel = "Close sidebar", collapseButtonTestId, expandButtonTestId, collapseButtonAriaLabel = "Collapse sidebar", expandButtonAriaLabel = "Expand sidebar", bodyClassName, headerClassName, footerClassName, collapsedContentClassName, className, children, ...props }, ref) {
278
+ const effectiveSyncId = syncId ??
279
+ (variant === "default" && collapsible
280
+ ? DEFAULT_APP_SIDEBAR_SYNC_ID
281
+ : undefined);
282
+ const [isCollapsed, setIsCollapsed] = useControllableState({
283
+ controlled: collapsed,
284
+ defaultValue: defaultCollapsed,
285
+ onChange: onCollapsedChange,
286
+ syncId: effectiveSyncId,
287
+ });
288
+ const desktopRailEnabled = useDefaultSidebarDesktopRailEnabled(variant);
289
+ const prefersReducedMotion = usePrefersReducedMotion();
290
+ const supportsCollapsedRail = variant === "default" && collapsible && desktopRailEnabled;
291
+ const showsCollapsedState = supportsCollapsedRail && isCollapsed;
292
+ const [contentTransition, setContentTransition] = React.useState(null);
293
+ const hasCustomCollapsedContent = collapsedContent != null;
294
+ const hasStructuredCollapsedRail = collapsedRailAction != null || collapsedRailItems != null;
295
+ const autoRailSourceRef = React.useRef(null);
296
+ const autoRailItemsFromTree = React.useMemo(() => hasCustomCollapsedContent || hasStructuredCollapsedRail
297
+ ? []
298
+ : buildSidebarAutoRailItems(children), [children, hasCustomCollapsedContent, hasStructuredCollapsedRail]);
299
+ const needsDomAutoRailFallback = React.useMemo(() => !hasCustomCollapsedContent &&
300
+ !hasStructuredCollapsedRail &&
301
+ autoRailItemsFromTree.length === 0, [
302
+ autoRailItemsFromTree.length,
303
+ hasCustomCollapsedContent,
304
+ hasStructuredCollapsedRail,
305
+ ]);
306
+ const [autoRailItems, setAutoRailItems] = React.useState(autoRailItemsFromTree);
307
+ const showsCollapsedFallbackBody = showsCollapsedState &&
308
+ !hasCustomCollapsedContent &&
309
+ !hasStructuredCollapsedRail &&
310
+ autoRailItems.length === 0 &&
311
+ !needsDomAutoRailFallback;
312
+ const renderedContentIdentity = contentIdentity ?? variant;
313
+ React.useEffect(() => {
314
+ setAutoRailItems(autoRailItemsFromTree);
315
+ }, [autoRailItemsFromTree]);
316
+ React.useEffect(() => {
317
+ if (!needsDomAutoRailFallback)
318
+ return;
319
+ const sourceElement = autoRailSourceRef.current;
320
+ if (!sourceElement)
321
+ return;
322
+ const domRailItems = buildSidebarAutoRailItemsFromDom(sourceElement);
323
+ if (domRailItems.length > 0) {
324
+ setAutoRailItems((currentItems) => areSidebarAutoRailItemsEqual(currentItems, domRailItems)
325
+ ? currentItems
326
+ : domRailItems);
327
+ }
328
+ }, [needsDomAutoRailFallback]);
329
+ const transitionFrameRef = React.useRef(null);
330
+ const transitionTimeoutRef = React.useRef(null);
331
+ const clearTransitionTimers = React.useCallback(() => {
332
+ if (typeof window === "undefined")
333
+ return;
334
+ const clearTimer = typeof window.clearTimeout === "function"
335
+ ? window.clearTimeout.bind(window)
336
+ : globalThis.clearTimeout.bind(globalThis);
337
+ if (transitionFrameRef.current !== null) {
338
+ const frameHandle = transitionFrameRef.current;
339
+ if (typeof window.cancelAnimationFrame === "function") {
340
+ if (typeof frameHandle === "number") {
341
+ window.cancelAnimationFrame(frameHandle);
342
+ }
343
+ else {
344
+ clearTimer(frameHandle);
345
+ }
346
+ }
347
+ else {
348
+ clearTimer(frameHandle);
349
+ }
350
+ transitionFrameRef.current = null;
351
+ }
352
+ if (transitionTimeoutRef.current !== null) {
353
+ clearTimer(transitionTimeoutRef.current);
354
+ transitionTimeoutRef.current = null;
355
+ }
356
+ }, []);
357
+ const startContentTransition = React.useCallback((direction, nextCollapsed) => {
358
+ if (typeof window === "undefined" || prefersReducedMotion) {
359
+ setContentTransition(null);
360
+ setIsCollapsed(nextCollapsed);
361
+ return;
362
+ }
363
+ clearTransitionTimers();
364
+ setContentTransition({ direction, phase: "prepare" });
365
+ setIsCollapsed(nextCollapsed);
366
+ const scheduleTimeout = typeof window.setTimeout === "function"
367
+ ? window.setTimeout.bind(window)
368
+ : globalThis.setTimeout.bind(globalThis);
369
+ const scheduleFrame = typeof window.requestAnimationFrame === "function"
370
+ ? window.requestAnimationFrame.bind(window)
371
+ : (callback) => scheduleTimeout(() => callback(Date.now()), 16);
372
+ transitionFrameRef.current = scheduleFrame(() => {
373
+ setContentTransition({ direction, phase: "animate" });
374
+ transitionFrameRef.current = null;
375
+ });
376
+ transitionTimeoutRef.current = scheduleTimeout(() => {
377
+ setContentTransition(null);
378
+ transitionTimeoutRef.current = null;
379
+ }, 320);
380
+ }, [clearTransitionTimers, prefersReducedMotion, setIsCollapsed]);
381
+ React.useEffect(() => clearTransitionTimers, [clearTransitionTimers]);
382
+ const handleCollapse = React.useCallback(() => {
383
+ startContentTransition("collapsing", true);
384
+ }, [startContentTransition]);
385
+ const handleExpand = React.useCallback(() => {
386
+ startContentTransition("expanding", false);
387
+ }, [startContentTransition]);
388
+ const transitionDirection = contentTransition?.direction ?? null;
389
+ const transitionPhase = contentTransition?.phase ?? null;
390
+ const isCollapsing = transitionDirection === "collapsing";
391
+ const isExpanding = transitionDirection === "expanding";
392
+ const expandedBaseMotionClassName = getSidebarContentLayerMotionClassName({
393
+ direction: transitionDirection,
394
+ kind: "expanded",
395
+ phase: transitionPhase,
396
+ });
397
+ const collapsedBaseMotionClassName = getSidebarContentLayerMotionClassName({
398
+ direction: transitionDirection,
399
+ kind: "collapsed",
400
+ phase: transitionPhase,
401
+ });
402
+ const expandedOverlayMotionClassName = getSidebarContentLayerMotionClassName({
403
+ direction: transitionDirection,
404
+ kind: "expanded",
405
+ overlay: true,
406
+ phase: transitionPhase,
407
+ });
408
+ const collapsedOverlayMotionClassName = getSidebarContentLayerMotionClassName({
409
+ direction: transitionDirection,
410
+ kind: "collapsed",
411
+ overlay: true,
412
+ phase: transitionPhase,
413
+ });
414
+ const renderCollapsedInner = () => hasCustomCollapsedContent ? (collapsedContent) : hasStructuredCollapsedRail || autoRailItems.length > 0 ? (_jsx(SidebarCollapsedRail, { action: collapsedRailAction, className: collapsedContentClassName, children: collapsedRailItems ??
415
+ autoRailItems.map((item) => (_jsx(SidebarRailItem, { "aria-label": item.label, title: item.label, active: item.active, indicatorTone: item.indicatorTone, onClick: item.onClick, children: item.content }, item.key))) })) : (_jsx(SidebarBody, { className: cn(sidebarCollapsedFallbackBodyClassName, bodyClassName), children: children }));
416
+ const renderCollapsedView = ({ layerClassName, overlay = false, renderHiddenAutoRailSource = false, }) => (_jsxs("div", { "aria-hidden": overlay || undefined, className: cn(sidebarContentLayerClassName, overlay ? sidebarContentOverlayLayerClassName : undefined, layerClassName), children: [_jsx("div", { className: cn(sidebarHeaderVariants({
417
+ variant,
418
+ collapsed: true,
419
+ }), headerClassName), children: _jsxs("div", { className: cn(sidebarCollapsedContentClassName, collapsedContentClassName), children: [renderCollapsedInner(), _jsx("div", { className: "mt-auto flex w-full flex-col items-center pb-3 pt-2", children: _jsx(Button, { variant: "surface", size: "icon", "data-testid": expandButtonTestId, className: sidebarControlButtonClassName, "aria-label": expandButtonAriaLabel, onClick: handleExpand, children: _jsx(PanelLeftOpen, { className: "h-4 w-4" }) }) })] }) }), renderHiddenAutoRailSource ? (_jsx(SidebarBody, { ref: autoRailSourceRef, className: "hidden", "aria-hidden": true, children: children })) : null] }));
420
+ const renderExpandedView = ({ layerClassName, overlay = false, provideAutoRailSourceRef = false, }) => (_jsxs("div", { "aria-hidden": overlay || undefined, className: cn(sidebarContentLayerClassName, overlay ? sidebarContentOverlayLayerClassName : undefined, layerClassName), children: [header ? (_jsx("div", { className: cn(sidebarHeaderVariants({
421
+ variant,
422
+ collapsed: false,
423
+ }), headerClassName), children: header })) : null, _jsx(SidebarBody, { ref: provideAutoRailSourceRef ? autoRailSourceRef : undefined, className: bodyClassName, children: children }), footer ? (_jsx("div", { className: cn(sidebarFooterVariants(), footerClassName), children: footer })) : null, supportsCollapsedRail ? (_jsx("div", { className: cn(sidebarFooterVariants(), footerClassName), children: _jsx(Button, { variant: "surface", size: "icon", "data-testid": collapseButtonTestId, className: sidebarControlButtonClassName, "aria-label": collapseButtonAriaLabel, onClick: handleCollapse, children: _jsx(PanelLeftClose, { className: "h-4 w-4" }) }) })) : null] }));
424
+ return (_jsx("aside", { ref: ref, className: cn(sidebarRootVariants({
425
+ variant,
426
+ collapsed: variant === "default" ? showsCollapsedState : false,
427
+ }), showsCollapsedFallbackBody
428
+ ? sidebarCollapsedFallbackRootClassName
429
+ : undefined, className), "data-testid": testId, "data-collapsed": showsCollapsedState || undefined, "data-variant": variant, ...props, children: _jsxs(React.Fragment, { children: [variant === "mobile" ? (_jsxs("div", { className: sidebarMobileHeaderBarClassName, children: [_jsxs("div", { className: "space-y-1", children: [mobileTitle ? _jsx("div", { children: mobileTitle }) : null, mobileMeta ? (_jsx("div", { className: sidebarMetaClassName, children: mobileMeta })) : null] }), onMobileClose ? (_jsx(Button, { variant: "surface", size: "icon", className: "h-11 w-11 min-h-touch min-w-touch rounded-sm", onClick: onMobileClose, "aria-label": mobileCloseLabel, title: mobileCloseLabel, "data-testid": "conversations-mobile-close", children: _jsx(X, { className: "h-4 w-4", "aria-hidden": true }) })) : null] })) : null, _jsxs("div", { className: "relative flex min-h-0 flex-1 flex-col", children: [showsCollapsedState
430
+ ? renderCollapsedView({
431
+ layerClassName: collapsedBaseMotionClassName,
432
+ renderHiddenAutoRailSource: !hasCustomCollapsedContent && !hasStructuredCollapsedRail,
433
+ })
434
+ : renderExpandedView({
435
+ layerClassName: expandedBaseMotionClassName,
436
+ provideAutoRailSourceRef: !hasCustomCollapsedContent && !hasStructuredCollapsedRail,
437
+ }), isCollapsing
438
+ ? renderExpandedView({
439
+ layerClassName: expandedOverlayMotionClassName,
440
+ overlay: true,
441
+ })
442
+ : null, isExpanding
443
+ ? renderCollapsedView({
444
+ layerClassName: collapsedOverlayMotionClassName,
445
+ overlay: true,
446
+ })
447
+ : null] })] }, renderedContentIdentity) }));
448
+ });
@@ -0,0 +1,3 @@
1
+ import type { SidebarScrollRegionProps } from "./sidebar-types";
2
+ export declare function SidebarScrollRegion({ className, variant, ...props }: SidebarScrollRegionProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=sidebar-scroll-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-scroll-region.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-scroll-region.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAkBhE,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAO1B"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../../../lib/utils";
4
+ const sidebarScrollRegionVariants = cva("", {
5
+ variants: {
6
+ variant: {
7
+ default: "custom-scrollbar min-h-0 w-full min-w-0 flex-1 overflow-y-auto overscroll-contain px-2.5 pb-3 pt-3 supports-[scrollbar-gutter:stable]:[scrollbar-gutter:stable]",
8
+ mobile: "custom-scrollbar min-h-0 w-full min-w-0 flex-1 overflow-y-auto overscroll-contain px-2.5 pb-3 pt-3 supports-[scrollbar-gutter:stable]:[scrollbar-gutter:stable]",
9
+ "game-modal": "custom-scrollbar flex-1 min-h-0 w-full overflow-y-auto p-2.5",
10
+ },
11
+ },
12
+ defaultVariants: {
13
+ variant: "default",
14
+ },
15
+ });
16
+ export function SidebarScrollRegion({ className, variant = "default", ...props }) {
17
+ return (_jsx("div", { className: cn(sidebarScrollRegionVariants({ variant }), className), ...props }));
18
+ }
@@ -0,0 +1,59 @@
1
+ import type * as React from "react";
2
+ export type SidebarVariant = "default" | "game-modal" | "mobile";
3
+ export interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
4
+ testId?: string;
5
+ variant?: SidebarVariant;
6
+ collapsible?: boolean;
7
+ contentIdentity?: string;
8
+ syncId?: string;
9
+ collapsed?: boolean;
10
+ defaultCollapsed?: boolean;
11
+ onCollapsedChange?: (collapsed: boolean) => void;
12
+ header?: React.ReactNode;
13
+ footer?: React.ReactNode;
14
+ collapsedContent?: React.ReactNode;
15
+ collapsedRailAction?: React.ReactNode;
16
+ collapsedRailItems?: React.ReactNode;
17
+ onMobileClose?: () => void;
18
+ mobileTitle?: React.ReactNode;
19
+ mobileMeta?: React.ReactNode;
20
+ mobileCloseLabel?: string;
21
+ collapseButtonTestId?: string;
22
+ expandButtonTestId?: string;
23
+ collapseButtonAriaLabel?: string;
24
+ expandButtonAriaLabel?: string;
25
+ bodyClassName?: string;
26
+ headerClassName?: string;
27
+ footerClassName?: string;
28
+ collapsedContentClassName?: string;
29
+ }
30
+ export interface SidebarScrollRegionProps extends React.HTMLAttributes<HTMLDivElement> {
31
+ variant?: SidebarVariant;
32
+ }
33
+ export interface SidebarPanelProps extends React.HTMLAttributes<HTMLDivElement> {
34
+ variant?: SidebarVariant;
35
+ }
36
+ export interface SidebarBodyProps extends React.HTMLAttributes<HTMLDivElement> {
37
+ }
38
+ export interface SidebarHeaderStackProps extends React.HTMLAttributes<HTMLDivElement> {
39
+ }
40
+ export interface SidebarFilterBarOption {
41
+ value: string;
42
+ label: React.ReactNode;
43
+ }
44
+ export interface SidebarFilterBarProps extends React.HTMLAttributes<HTMLDivElement> {
45
+ selectValue: string;
46
+ selectOptions: SidebarFilterBarOption[];
47
+ onSelectValueChange: (value: string) => void;
48
+ selectAriaLabel: string;
49
+ selectTestId?: string;
50
+ sortDirection: "asc" | "desc";
51
+ onSortDirectionToggle: () => void;
52
+ sortDirectionButtonTestId?: string;
53
+ sortAscendingLabel?: string;
54
+ sortDescendingLabel?: string;
55
+ refreshButtonTestId?: string;
56
+ refreshLabel?: string;
57
+ onRefresh: () => void;
58
+ }
59
+ //# sourceMappingURL=sidebar-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-types.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,wBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,MAAM,WAAW,uBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export * from "./skill-sidebar-item";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/skills/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./skill-sidebar-item";
@@ -0,0 +1,16 @@
1
+ import type * as React from "react";
2
+ export interface SkillSidebarItemProps {
3
+ active?: boolean;
4
+ attentionLabel?: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ enabled: boolean;
7
+ icon?: React.ReactNode;
8
+ name: React.ReactNode;
9
+ offLabel: React.ReactNode;
10
+ onLabel: React.ReactNode;
11
+ onSelect?: () => void;
12
+ testId?: string;
13
+ buttonProps?: Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children" | "onClick" | "type">;
14
+ }
15
+ export declare function SkillSidebarItem({ active, attentionLabel, description, enabled, icon, name, offLabel, onLabel, onSelect, testId, buttonProps, }: SkillSidebarItemProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=skill-sidebar-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-sidebar-item.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/skills/skill-sidebar-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAChB,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,UAAU,GAAG,SAAS,GAAG,MAAM,CAChC,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,MAAM,EACN,WAAW,GACZ,EAAE,qBAAqB,2CA6CvB"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SidebarContent } from "../sidebar";
3
+ export function SkillSidebarItem({ active = false, attentionLabel, description, enabled, icon, name, offLabel, onLabel, onSelect, testId, buttonProps, }) {
4
+ return (_jsxs(SidebarContent.Item, { as: "div", active: active, "data-testid": testId, className: "items-start gap-2", children: [_jsxs(SidebarContent.ItemButton, { role: "option", "aria-selected": active, "aria-current": active ? "page" : undefined, onClick: onSelect, ...buttonProps, children: [_jsx(SidebarContent.ItemIcon, { active: active, children: icon }), _jsxs(SidebarContent.ItemBody, { children: [_jsx(SidebarContent.ItemTitle, { children: name }), description ? (_jsx(SidebarContent.ItemDescription, { children: description })) : null] })] }), _jsxs("div", { className: "flex shrink-0 flex-col items-end gap-2", children: [_jsx("span", { className: `rounded-full border px-2.5 py-1 text-2xs font-bold tracking-[0.16em] ${enabled
5
+ ? "border-accent bg-accent text-accent-fg"
6
+ : "border-border bg-transparent text-muted"}`, children: enabled ? onLabel : offLabel }), attentionLabel ? (_jsx("span", { className: "rounded-full border border-warn/30 bg-warn/12 px-2 py-0.5 text-3xs font-bold uppercase tracking-[0.14em] text-warn", children: attentionLabel })) : null] })] }));
7
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./trajectory-code-block";
2
+ export * from "./trajectory-llm-call-card";
3
+ export * from "./trajectory-pipeline-graph";
4
+ export * from "./trajectory-sidebar-item";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/trajectories/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./trajectory-code-block";
2
+ export * from "./trajectory-llm-call-card";
3
+ export * from "./trajectory-pipeline-graph";
4
+ export * from "./trajectory-sidebar-item";
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ export interface TrajectoryCodeBlockProps {
3
+ collapseLabel: React.ReactNode;
4
+ content: string;
5
+ copyLabel: React.ReactNode;
6
+ copyToClipboardLabel?: string;
7
+ expandLabel: React.ReactNode;
8
+ label: React.ReactNode;
9
+ linesLabel: React.ReactNode;
10
+ onCopy: (content: string) => void;
11
+ }
12
+ export declare function TrajectoryCodeBlock({ collapseLabel, content, copyLabel, copyToClipboardLabel, expandLabel, label, linesLabel, onCopy, }: TrajectoryCodeBlockProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=trajectory-code-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-code-block.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/trajectories/trajectory-code-block.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,KAAK,EACL,UAAU,EACV,MAAM,GACP,EAAE,wBAAwB,2CA4C1B"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Button } from "../../ui/button";
4
+ import { PagePanel } from "../page-panel";
5
+ export function TrajectoryCodeBlock({ collapseLabel, content, copyLabel, copyToClipboardLabel, expandLabel, label, linesLabel, onCopy, }) {
6
+ const [expanded, setExpanded] = React.useState(false);
7
+ const lines = content.split("\n").length;
8
+ const shouldTruncate = !expanded && lines > 20;
9
+ const displayContent = shouldTruncate
10
+ ? `${content.split("\n").slice(0, 20).join("\n")}\n...`
11
+ : content;
12
+ return (_jsxs(PagePanel, { variant: "inset", className: "overflow-hidden", children: [_jsx(PagePanel.Header, { heading: label, description: linesLabel, actions: _jsxs(PagePanel.ActionRail, { className: "rounded-full px-1 py-1", children: [lines > 20 ? (_jsx(Button, { variant: "outline", size: "sm", type: "button", className: "h-8 rounded-full px-3 text-xs-tight", onClick: () => setExpanded((current) => !current), children: expanded ? collapseLabel : expandLabel })) : null, _jsx(Button, { variant: "outline", size: "sm", type: "button", className: "h-8 rounded-full px-3 text-xs-tight", onClick: () => onCopy(content), title: copyToClipboardLabel, children: copyLabel })] }) }), _jsx("pre", { className: "max-h-[28rem] overflow-x-auto overflow-y-auto whitespace-pre-wrap break-words px-4 py-4 text-xs leading-6 text-txt", children: displayContent })] }));
13
+ }