@exegia/corpora-ui 2.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/README.md +20 -0
  2. package/dist-lib/EVILCHARTS-LICENSE.txt +21 -0
  3. package/dist-lib/button-CIRkQXA6.js +152 -0
  4. package/dist-lib/button.js +3 -0
  5. package/dist-lib/card.js +150 -0
  6. package/dist-lib/components/atoms/text/default.d.ts +2 -1143
  7. package/dist-lib/components/blocks/shell/index.d.ts +1 -0
  8. package/dist-lib/components/composed/chat/chart/chart-atom.d.ts +30 -0
  9. package/dist-lib/components/composed/chat/chart/chart-context.d.ts +2 -0
  10. package/dist-lib/components/composed/chat/chart/chart-legend.d.ts +4 -0
  11. package/dist-lib/components/composed/chat/chart/chart-plot.d.ts +3 -0
  12. package/dist-lib/components/composed/chat/chart/chart-root.d.ts +3 -0
  13. package/dist-lib/components/composed/chat/chart/chart-tooltip.d.ts +4 -0
  14. package/dist-lib/components/composed/chat/chart/constants.d.ts +3 -0
  15. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-area-chart.d.ts +93 -0
  16. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-bar-chart.d.ts +86 -0
  17. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-brush.d.ts +65 -0
  18. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-chart.d.ts +44 -0
  19. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-dot.d.ts +16 -0
  20. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-legend.d.ts +24 -0
  21. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-line-chart.d.ts +90 -0
  22. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-pie-chart.d.ts +73 -0
  23. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-tooltip.d.ts +29 -0
  24. package/dist-lib/components/composed/chat/chart/index.d.ts +6 -0
  25. package/dist-lib/components/composed/chat/chart/type.d.ts +80 -0
  26. package/dist-lib/components/composed/chat/chart/use-chart-state.d.ts +3 -0
  27. package/dist-lib/components/composed/chat/chart/use-chart.d.ts +6 -0
  28. package/dist-lib/components/composed/chat/chart/utils.d.ts +5 -0
  29. package/dist-lib/components/composed/chat/chart.d.ts +1 -44
  30. package/dist-lib/components/composed/chat/index.d.ts +1 -1
  31. package/dist-lib/components/ui/badge.d.ts +2 -2
  32. package/dist-lib/components/ui/button.d.ts +2 -2
  33. package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
  34. package/dist-lib/components/ui/modal.d.ts +10 -0
  35. package/dist-lib/components/ui/overlays.d.ts +4 -0
  36. package/dist-lib/components/ui/select.d.ts +1 -1
  37. package/dist-lib/components/ui/toast.d.ts +2 -0
  38. package/dist-lib/ease-C9At8rnB.js +120 -0
  39. package/dist-lib/exegia-provider-DNTuLljX.js +124 -0
  40. package/dist-lib/index.css +3 -0
  41. package/dist-lib/index.d.ts +3 -0
  42. package/dist-lib/index.js +10283 -8224
  43. package/dist-lib/input.js +28 -0
  44. package/dist-lib/label.js +19 -0
  45. package/dist-lib/lib/segmented-control.d.ts +1 -1
  46. package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
  47. package/dist-lib/lib/state/index.d.ts +2 -0
  48. package/dist-lib/lib/state/portal-context.d.ts +5 -0
  49. package/dist-lib/lib/state/sound-loading.d.ts +4 -0
  50. package/dist-lib/liquid-glass-BihU6nMl.js +50 -0
  51. package/dist-lib/modal-DLaOK-s1.js +82 -0
  52. package/dist-lib/overlays.js +3 -0
  53. package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  54. package/dist-lib/scaffold-Qv4hs5Pf.js +925 -0
  55. package/dist-lib/scaffold.js +2 -0
  56. package/dist-lib/shell-BQ9cjIEu.js +722 -0
  57. package/dist-lib/shell.js +2 -0
  58. package/dist-lib/sound-knGH4lj-.js +19 -0
  59. package/dist-lib/state.js +2 -0
  60. package/dist-lib/toast-CataVXHN.js +193 -0
  61. package/dist-lib/utils-BO0qfoA6.js +61 -0
  62. package/package.json +65 -23
  63. package/dist-lib/components/atoms/_layout.d.ts +0 -4
  64. package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
  65. package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
  66. package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
  67. package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
  68. package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
  69. package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
  70. package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
  71. package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
  72. package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
  73. package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
  74. package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
  75. package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
  76. package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
  77. package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
  78. package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
  79. package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
  80. package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
  81. package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
  82. package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
  83. package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
  84. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
  85. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
  86. package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
  87. package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
  88. package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
  89. package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
  90. package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
  91. package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
  92. package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
  93. package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
  94. package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
  95. package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
  96. package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
  97. package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
  98. package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
  99. package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
  100. package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
  101. package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
  102. package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
  103. package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
  104. package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
  105. package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
  106. package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
  107. package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
  108. package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
  109. package/dist-lib/components/docs/browser.d.ts +0 -10
  110. package/dist-lib/components/docs/code-block.d.ts +0 -4
  111. package/dist-lib/components/docs/components-gallery.d.ts +0 -2
  112. package/dist-lib/components/docs/demo-controls.d.ts +0 -21
  113. package/dist-lib/components/docs/hero.d.ts +0 -5
  114. package/dist-lib/components/docs/mermaid.d.ts +0 -3
  115. package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
  116. package/dist-lib/components/stories/attachment.story.d.ts +0 -11
  117. package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
  118. package/dist-lib/components/stories/avatar.story.d.ts +0 -6
  119. package/dist-lib/components/stories/base.story.d.ts +0 -6
  120. package/dist-lib/components/stories/bubble.story.d.ts +0 -6
  121. package/dist-lib/components/stories/button.story.d.ts +0 -9
  122. package/dist-lib/components/stories/card.story.d.ts +0 -8
  123. package/dist-lib/components/stories/chart.story.d.ts +0 -34
  124. package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
  125. package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
  126. package/dist-lib/components/stories/code-block.story.d.ts +0 -12
  127. package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
  128. package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
  129. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
  130. package/dist-lib/components/stories/field.story.d.ts +0 -6
  131. package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
  132. package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
  133. package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
  134. package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
  135. package/dist-lib/components/stories/frame.story.d.ts +0 -8
  136. package/dist-lib/components/stories/index.d.ts +0 -54
  137. package/dist-lib/components/stories/input-group.story.d.ts +0 -6
  138. package/dist-lib/components/stories/input.story.d.ts +0 -8
  139. package/dist-lib/components/stories/insight-cards.story.d.ts +0 -45
  140. package/dist-lib/components/stories/label.story.d.ts +0 -8
  141. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
  142. package/dist-lib/components/stories/login-block.story.d.ts +0 -2
  143. package/dist-lib/components/stories/logo.story.d.ts +0 -3
  144. package/dist-lib/components/stories/markdown.story.d.ts +0 -7
  145. package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
  146. package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
  147. package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
  148. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
  149. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
  150. package/dist-lib/components/stories/password-input.story.d.ts +0 -9
  151. package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
  152. package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
  153. package/dist-lib/components/stories/records-table.story.d.ts +0 -23
  154. package/dist-lib/components/stories/reference.story.d.ts +0 -9
  155. package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
  156. package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
  157. package/dist-lib/components/stories/separator.story.d.ts +0 -6
  158. package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
  159. package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
  160. package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
  161. package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
  162. package/dist-lib/components/stories/text.story.d.ts +0 -8
  163. package/dist-lib/components/stories/textarea.story.d.ts +0 -6
  164. package/dist-lib/components/stories/tree.story.d.ts +0 -4
  165. package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
  166. package/dist-lib/components/stories/user.story.d.ts +0 -8
  167. package/dist-lib/components/stories/verse.story.d.ts +0 -6
  168. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
  169. package/dist-lib/index.js.map +0 -1
  170. package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
  171. package/dist-lib/lib/utils.test.d.ts +0 -1
  172. package/src/assets/css/base.css +0 -62
  173. package/src/assets/css/chat.css +0 -229
  174. package/src/assets/css/shadows.css +0 -157
  175. package/src/assets/css/theme.css +0 -321
  176. package/src/components/AGENTS.md +0 -0
  177. package/src/components/atoms/_layout.tsx +0 -9
  178. package/src/components/atoms/avatar/base.tsx +0 -70
  179. package/src/components/atoms/avatar/index.ts +0 -10
  180. package/src/components/atoms/avatar/types.ts +0 -24
  181. package/src/components/atoms/avatar/utils.ts +0 -54
  182. package/src/components/atoms/avatar/verified.tsx +0 -16
  183. package/src/components/atoms/background/index.ts +0 -8
  184. package/src/components/atoms/background/texture.tsx +0 -29
  185. package/src/components/atoms/background/type.ts +0 -10
  186. package/src/components/atoms/background/utils.ts +0 -13
  187. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
  188. package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
  189. package/src/components/atoms/bubble/actions.tsx +0 -28
  190. package/src/components/atoms/bubble/context.ts +0 -11
  191. package/src/components/atoms/bubble/default.tsx +0 -46
  192. package/src/components/atoms/bubble/header.tsx +0 -36
  193. package/src/components/atoms/bubble/index.ts +0 -37
  194. package/src/components/atoms/bubble/message.tsx +0 -32
  195. package/src/components/atoms/bubble/reactions.tsx +0 -191
  196. package/src/components/atoms/bubble/types.ts +0 -82
  197. package/src/components/atoms/bubble/utils.ts +0 -46
  198. package/src/components/atoms/chip.tsx +0 -61
  199. package/src/components/atoms/field.tsx +0 -43
  200. package/src/components/atoms/index.ts +0 -26
  201. package/src/components/atoms/loader.tsx +0 -33
  202. package/src/components/atoms/reference.tsx +0 -41
  203. package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
  204. package/src/components/atoms/text/default.tsx +0 -59
  205. package/src/components/atoms/text/heading.tsx +0 -58
  206. package/src/components/atoms/text/index.ts +0 -28
  207. package/src/components/atoms/text/label.tsx +0 -16
  208. package/src/components/atoms/text/paragraph.tsx +0 -55
  209. package/src/components/atoms/text/span.tsx +0 -14
  210. package/src/components/atoms/text/types.ts +0 -41
  211. package/src/components/atoms/text/utils.ts +0 -16
  212. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
  213. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
  214. package/src/components/atoms/text-selection/click-popover.tsx +0 -62
  215. package/src/components/atoms/text-selection/index.ts +0 -30
  216. package/src/components/atoms/text-selection/popover.tsx +0 -103
  217. package/src/components/atoms/text-selection/selection-atom.ts +0 -51
  218. package/src/components/atoms/text-selection/selection.tsx +0 -56
  219. package/src/components/atoms/text-selection/types.ts +0 -125
  220. package/src/components/atoms/text-selection/use-selection.ts +0 -84
  221. package/src/components/atoms/types.ts +0 -46
  222. package/src/components/blocks/.gitkeep +0 -0
  223. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
  224. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
  225. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
  226. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
  227. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
  228. package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
  229. package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
  230. package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
  231. package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
  232. package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
  233. package/src/components/blocks/auth/auth-session-atom.ts +0 -82
  234. package/src/components/blocks/auth/auth-shell.tsx +0 -265
  235. package/src/components/blocks/auth/auth-state.ts +0 -40
  236. package/src/components/blocks/auth/code-auth-block.tsx +0 -176
  237. package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
  238. package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
  239. package/src/components/blocks/auth/login-block.tsx +0 -217
  240. package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
  241. package/src/components/blocks/auth/onboarding-block.tsx +0 -183
  242. package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
  243. package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
  244. package/src/components/blocks/auth/signup-block.tsx +0 -256
  245. package/src/components/blocks/auth/type.ts +0 -436
  246. package/src/components/blocks/auth/update-password-block.tsx +0 -139
  247. package/src/components/blocks/auth/use-auth-state.ts +0 -127
  248. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
  249. package/src/components/blocks/chat/banners.tsx +0 -61
  250. package/src/components/blocks/chat/base.tsx +0 -84
  251. package/src/components/blocks/chat/header.tsx +0 -60
  252. package/src/components/blocks/chat/index.ts +0 -37
  253. package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
  254. package/src/components/blocks/chat/shared.tsx +0 -27
  255. package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
  256. package/src/components/blocks/chat/type.ts +0 -96
  257. package/src/components/blocks/chat/version-history-record.tsx +0 -37
  258. package/src/components/blocks/layout.ts +0 -35
  259. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
  260. package/src/components/blocks/profile/index.ts +0 -28
  261. package/src/components/blocks/profile/profile-card-atom.ts +0 -247
  262. package/src/components/blocks/profile/profile-card-block.tsx +0 -369
  263. package/src/components/blocks/profile/type.ts +0 -93
  264. package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
  265. package/src/components/blocks/profile/use-profile-card.ts +0 -132
  266. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
  267. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
  268. package/src/components/blocks/scaffold/constants.ts +0 -39
  269. package/src/components/blocks/scaffold/index.ts +0 -60
  270. package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
  271. package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
  272. package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
  273. package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
  274. package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
  275. package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
  276. package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
  277. package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
  278. package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
  279. package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
  280. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
  281. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
  282. package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
  283. package/src/components/blocks/scaffold/type.ts +0 -264
  284. package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
  285. package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
  286. package/src/components/blocks/scaffold/utils.ts +0 -112
  287. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
  288. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
  289. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
  290. package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
  291. package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
  292. package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
  293. package/src/components/blocks/shell/animated-panel.tsx +0 -180
  294. package/src/components/blocks/shell/index.ts +0 -30
  295. package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
  296. package/src/components/blocks/shell/shell-layout.tsx +0 -139
  297. package/src/components/blocks/shell/shell-metrics.ts +0 -133
  298. package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
  299. package/src/components/blocks/shell/type.ts +0 -361
  300. package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
  301. package/src/components/blocks/shell/use-shell-fit.ts +0 -153
  302. package/src/components/blocks/shell/use-shell-panels.ts +0 -126
  303. package/src/components/blocks/shell/utils.ts +0 -187
  304. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  305. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  306. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  307. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
  308. package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
  309. package/src/components/blocks/sidebar/index.ts +0 -67
  310. package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
  311. package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
  312. package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
  313. package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
  314. package/src/components/blocks/sidebar/type.ts +0 -294
  315. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
  316. package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
  317. package/src/components/blocks/sidebar/utils.ts +0 -170
  318. package/src/components/blocks/types.ts +0 -6
  319. package/src/components/composed/.gitkeep +0 -0
  320. package/src/components/composed/__tests__/logo.test.tsx +0 -60
  321. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
  322. package/src/components/composed/action-bar/action.tsx +0 -77
  323. package/src/components/composed/action-bar/emojis.tsx +0 -97
  324. package/src/components/composed/action-bar/index.ts +0 -24
  325. package/src/components/composed/action-bar/toolbar.tsx +0 -66
  326. package/src/components/composed/action-bar/types.ts +0 -58
  327. package/src/components/composed/action-bar/utils.ts +0 -140
  328. package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
  329. package/src/components/composed/ai/avatar.tsx +0 -19
  330. package/src/components/composed/ai/index.ts +0 -36
  331. package/src/components/composed/ai/message.tsx +0 -49
  332. package/src/components/composed/ai/research-answer.tsx +0 -157
  333. package/src/components/composed/ai/shared.tsx +0 -94
  334. package/src/components/composed/ai/streaming-text.tsx +0 -94
  335. package/src/components/composed/ai/suggested-prompt.tsx +0 -183
  336. package/src/components/composed/ai/types.ts +0 -81
  337. package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
  338. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
  339. package/src/components/composed/chat/__tests__/chart.test.tsx +0 -62
  340. package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
  341. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
  342. package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
  343. package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
  344. package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
  345. package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
  346. package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
  347. package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
  348. package/src/components/composed/chat/actions.tsx +0 -81
  349. package/src/components/composed/chat/attachment-file.ts +0 -82
  350. package/src/components/composed/chat/attachment.tsx +0 -498
  351. package/src/components/composed/chat/chart.tsx +0 -401
  352. package/src/components/composed/chat/code-block.tsx +0 -123
  353. package/src/components/composed/chat/composer/add-button.tsx +0 -29
  354. package/src/components/composed/chat/composer/base.tsx +0 -573
  355. package/src/components/composed/chat/composer/command-menu.tsx +0 -47
  356. package/src/components/composed/chat/composer/hooks.ts +0 -29
  357. package/src/components/composed/chat/composer/index.ts +0 -19
  358. package/src/components/composed/chat/composer/send-button.tsx +0 -36
  359. package/src/components/composed/chat/composer/suggestions.tsx +0 -115
  360. package/src/components/composed/chat/composer/use-dictation.ts +0 -123
  361. package/src/components/composed/chat/composer/utils.ts +0 -74
  362. package/src/components/composed/chat/context-cards.tsx +0 -63
  363. package/src/components/composed/chat/filter-table.tsx +0 -119
  364. package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
  365. package/src/components/composed/chat/flowchart/connector.tsx +0 -32
  366. package/src/components/composed/chat/flowchart/constant.ts +0 -26
  367. package/src/components/composed/chat/flowchart/default.tsx +0 -230
  368. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
  369. package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
  370. package/src/components/composed/chat/flowchart/index.ts +0 -14
  371. package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
  372. package/src/components/composed/chat/flowchart/types.ts +0 -89
  373. package/src/components/composed/chat/flowchart/utils.ts +0 -78
  374. package/src/components/composed/chat/hint.tsx +0 -59
  375. package/src/components/composed/chat/index.ts +0 -98
  376. package/src/components/composed/chat/insight-cards.tsx +0 -199
  377. package/src/components/composed/chat/markdown-atom.ts +0 -15
  378. package/src/components/composed/chat/markdown.tsx +0 -213
  379. package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
  380. package/src/components/composed/chat/recommendation/constant.ts +0 -54
  381. package/src/components/composed/chat/recommendation/default.tsx +0 -25
  382. package/src/components/composed/chat/recommendation/group.tsx +0 -36
  383. package/src/components/composed/chat/recommendation/index.ts +0 -17
  384. package/src/components/composed/chat/recommendation/item.tsx +0 -215
  385. package/src/components/composed/chat/recommendation/types.ts +0 -76
  386. package/src/components/composed/chat/records-table.tsx +0 -130
  387. package/src/components/composed/chat/type.ts +0 -157
  388. package/src/components/composed/logo.tsx +0 -171
  389. package/src/components/composed/password-input.tsx +0 -179
  390. package/src/components/composed/reader/applied-mark.tsx +0 -32
  391. package/src/components/composed/reader/apply-toast.tsx +0 -49
  392. package/src/components/composed/reader/index.ts +0 -10
  393. package/src/components/composed/reader/selection-highlight.tsx +0 -26
  394. package/src/components/composed/reader/selection-popover.tsx +0 -149
  395. package/src/components/composed/reader/type.ts +0 -48
  396. package/src/components/composed/social-providers.tsx +0 -154
  397. package/src/components/composed/tree/CLAUDE.md +0 -145
  398. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
  399. package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
  400. package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
  401. package/src/components/composed/tree/constants.ts +0 -55
  402. package/src/components/composed/tree/index.ts +0 -51
  403. package/src/components/composed/tree/tree-atom.ts +0 -590
  404. package/src/components/composed/tree/tree-context.ts +0 -13
  405. package/src/components/composed/tree/tree-node.tsx +0 -496
  406. package/src/components/composed/tree/tree.tsx +0 -233
  407. package/src/components/composed/tree/type.ts +0 -322
  408. package/src/components/composed/tree/use-tree-dnd.ts +0 -179
  409. package/src/components/composed/tree/use-tree-state.ts +0 -105
  410. package/src/components/composed/tree/use-tree.ts +0 -311
  411. package/src/components/composed/tree/utils.ts +0 -172
  412. package/src/components/composed/types.ts +0 -9
  413. package/src/components/composed/user/__tests__/message.test.tsx +0 -79
  414. package/src/components/composed/user/index.ts +0 -14
  415. package/src/components/composed/user/info.tsx +0 -56
  416. package/src/components/composed/user/message.tsx +0 -36
  417. package/src/components/composed/user/pill.tsx +0 -20
  418. package/src/components/composed/user/types.ts +0 -47
  419. package/src/components/composed/user/utils.ts +0 -0
  420. package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
  421. package/src/components/composed/verse/index.ts +0 -2
  422. package/src/components/composed/verse/types.ts +0 -24
  423. package/src/components/composed/verse/verse.tsx +0 -100
  424. package/src/components/docs/atoms-gallery.tsx +0 -286
  425. package/src/components/docs/block-demo-stage.tsx +0 -38
  426. package/src/components/docs/blocks-gallery.tsx +0 -224
  427. package/src/components/docs/browser.tsx +0 -87
  428. package/src/components/docs/code-block.tsx +0 -10
  429. package/src/components/docs/components-gallery.tsx +0 -182
  430. package/src/components/docs/demo-controls.tsx +0 -142
  431. package/src/components/docs/hero.tsx +0 -197
  432. package/src/components/docs/mermaid.tsx +0 -55
  433. package/src/components/icons/README.md +0 -91
  434. package/src/components/icons/__tests__/icons.test.tsx +0 -58
  435. package/src/components/icons/file-badge-cfm.tsx +0 -615
  436. package/src/components/icons/file-badge-corpus.tsx +0 -604
  437. package/src/components/icons/file-badge-pdf.tsx +0 -570
  438. package/src/components/icons/file-badge-tei.tsx +0 -524
  439. package/src/components/icons/file-badge-tf.tsx +0 -620
  440. package/src/components/icons/file-badge-txt.tsx +0 -607
  441. package/src/components/icons/file-badge-xml.tsx +0 -576
  442. package/src/components/icons/file-wordmark-cfm.tsx +0 -424
  443. package/src/components/icons/file-wordmark-corpus.tsx +0 -454
  444. package/src/components/icons/file-wordmark-pdf.tsx +0 -470
  445. package/src/components/icons/file-wordmark-tei.tsx +0 -424
  446. package/src/components/icons/file-wordmark-tf.tsx +0 -406
  447. package/src/components/icons/file-wordmark-txt.tsx +0 -421
  448. package/src/components/icons/file-wordmark-xml.tsx +0 -424
  449. package/src/components/icons/index.ts +0 -16
  450. package/src/components/icons/types.ts +0 -8
  451. package/src/components/motion/index.ts +0 -0
  452. package/src/components/motion/overflow-actions.tsx +0 -376
  453. package/src/components/motion/popover-morph.tsx +0 -292
  454. package/src/components/motion/popover-position.ts +0 -86
  455. package/src/components/motion/shared-layout-bg.tsx +0 -151
  456. package/src/components/stories/attachment.story.tsx +0 -40
  457. package/src/components/stories/auth-flow-block.story.tsx +0 -17
  458. package/src/components/stories/avatar.story.tsx +0 -33
  459. package/src/components/stories/base.story.tsx +0 -70
  460. package/src/components/stories/bubble.story.tsx +0 -61
  461. package/src/components/stories/button.story.tsx +0 -32
  462. package/src/components/stories/card.story.tsx +0 -36
  463. package/src/components/stories/chart.story.tsx +0 -54
  464. package/src/components/stories/checkbox.story.tsx +0 -30
  465. package/src/components/stories/code-auth-block.story.tsx +0 -20
  466. package/src/components/stories/code-block.story.tsx +0 -35
  467. package/src/components/stories/composed-password-input.story.tsx +0 -41
  468. package/src/components/stories/context-cards.story.tsx +0 -30
  469. package/src/components/stories/emoji-action-bar.story.tsx +0 -20
  470. package/src/components/stories/field.story.tsx +0 -32
  471. package/src/components/stories/file-icons.story.tsx +0 -20
  472. package/src/components/stories/filter-table.story.tsx +0 -63
  473. package/src/components/stories/flowchart.story.tsx +0 -25
  474. package/src/components/stories/forgot-password-block.story.tsx +0 -14
  475. package/src/components/stories/frame.story.tsx +0 -32
  476. package/src/components/stories/index.ts +0 -57
  477. package/src/components/stories/input-group.story.tsx +0 -27
  478. package/src/components/stories/input.story.tsx +0 -42
  479. package/src/components/stories/insight-cards.story.tsx +0 -67
  480. package/src/components/stories/label.story.tsx +0 -32
  481. package/src/components/stories/linked-accounts-block.story.tsx +0 -23
  482. package/src/components/stories/login-block.story.tsx +0 -18
  483. package/src/components/stories/logo.story.tsx +0 -21
  484. package/src/components/stories/markdown.story.tsx +0 -31
  485. package/src/components/stories/menu-command.story.tsx +0 -43
  486. package/src/components/stories/onboarding-block.story.tsx +0 -14
  487. package/src/components/stories/otp-field.story.tsx +0 -35
  488. package/src/components/stories/passkey-manager-block.story.tsx +0 -18
  489. package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
  490. package/src/components/stories/password-input.story.tsx +0 -35
  491. package/src/components/stories/profile-card-block.story.tsx +0 -29
  492. package/src/components/stories/recommendation-card.story.tsx +0 -37
  493. package/src/components/stories/records-table.story.tsx +0 -52
  494. package/src/components/stories/reference.story.tsx +0 -33
  495. package/src/components/stories/research-answer.story.tsx +0 -32
  496. package/src/components/stories/scaffold-root.story.tsx +0 -47
  497. package/src/components/stories/separator.story.tsx +0 -37
  498. package/src/components/stories/shell-layout.story.tsx +0 -19
  499. package/src/components/stories/signup-block.story.tsx +0 -18
  500. package/src/components/stories/social-providers.story.tsx +0 -26
  501. package/src/components/stories/streaming-text.story.tsx +0 -25
  502. package/src/components/stories/text.story.tsx +0 -31
  503. package/src/components/stories/textarea.story.tsx +0 -34
  504. package/src/components/stories/tree.story.tsx +0 -31
  505. package/src/components/stories/update-password-block.story.tsx +0 -14
  506. package/src/components/stories/user.story.tsx +0 -32
  507. package/src/components/stories/verse.story.tsx +0 -42
  508. package/src/components/theme-provider.tsx +0 -230
  509. package/src/components/types.ts +0 -106
  510. package/src/components/ui/accordion.tsx +0 -68
  511. package/src/components/ui/alert-dialog.tsx +0 -167
  512. package/src/components/ui/alert.tsx +0 -84
  513. package/src/components/ui/autocomplete.tsx +0 -303
  514. package/src/components/ui/avatar.tsx +0 -109
  515. package/src/components/ui/badge.tsx +0 -101
  516. package/src/components/ui/button-group.tsx +0 -88
  517. package/src/components/ui/button.tsx +0 -192
  518. package/src/components/ui/card.tsx +0 -253
  519. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
  520. package/src/components/ui/chat/avatar-handle.tsx +0 -30
  521. package/src/components/ui/chat/badges.tsx +0 -85
  522. package/src/components/ui/chat/buttons.tsx +0 -94
  523. package/src/components/ui/chat/chips.tsx +0 -106
  524. package/src/components/ui/chat/dot.tsx +0 -81
  525. package/src/components/ui/chat/icon-button.tsx +0 -43
  526. package/src/components/ui/chat/icon-tile.tsx +0 -33
  527. package/src/components/ui/chat/index.ts +0 -12
  528. package/src/components/ui/chat/inline-source.tsx +0 -94
  529. package/src/components/ui/chat/segmented-toggle.tsx +0 -99
  530. package/src/components/ui/chat/tag.tsx +0 -61
  531. package/src/components/ui/chat/thumbnail.tsx +0 -31
  532. package/src/components/ui/chat/waveform.tsx +0 -30
  533. package/src/components/ui/checkbox.tsx +0 -83
  534. package/src/components/ui/collapsible.tsx +0 -42
  535. package/src/components/ui/command.tsx +0 -263
  536. package/src/components/ui/context-menu.tsx +0 -342
  537. package/src/components/ui/emoji-picker.tsx +0 -161
  538. package/src/components/ui/field.tsx +0 -89
  539. package/src/components/ui/frame.tsx +0 -87
  540. package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
  541. package/src/components/ui/glasscn/glass-button.tsx +0 -25
  542. package/src/components/ui/glasscn/glass-container.tsx +0 -94
  543. package/src/components/ui/glasscn/glass-separator.tsx +0 -39
  544. package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
  545. package/src/components/ui/group.tsx +0 -92
  546. package/src/components/ui/input-group.tsx +0 -105
  547. package/src/components/ui/input.tsx +0 -70
  548. package/src/components/ui/kbd.tsx +0 -32
  549. package/src/components/ui/label.tsx +0 -36
  550. package/src/components/ui/menu-command.tsx +0 -156
  551. package/src/components/ui/menu.tsx +0 -352
  552. package/src/components/ui/otp-field.tsx +0 -88
  553. package/src/components/ui/popover-glass.tsx +0 -158
  554. package/src/components/ui/popover.tsx +0 -120
  555. package/src/components/ui/preview-card.tsx +0 -61
  556. package/src/components/ui/scroll-area.tsx +0 -80
  557. package/src/components/ui/select.tsx +0 -257
  558. package/src/components/ui/separator.tsx +0 -23
  559. package/src/components/ui/sheet.tsx +0 -135
  560. package/src/components/ui/skeleton.tsx +0 -18
  561. package/src/components/ui/spinner.tsx +0 -17
  562. package/src/components/ui/switch.tsx +0 -30
  563. package/src/components/ui/tabs.tsx +0 -120
  564. package/src/components/ui/textarea.tsx +0 -58
  565. package/src/components/ui/toast.tsx +0 -325
  566. package/src/components/ui/toolbar.tsx +0 -92
  567. package/src/components/ui/tooltip.tsx +0 -67
  568. package/src/index.css +0 -10
  569. package/src/index.ts +0 -102
  570. package/src/lib/attachment-content.ts +0 -28
  571. package/src/lib/auth-accent.ts +0 -49
  572. package/src/lib/ease.ts +0 -90
  573. package/src/lib/glass-variants.ts +0 -22
  574. package/src/lib/hooks/use-hover-capable.ts +0 -23
  575. package/src/lib/hooks/use-mobile.ts +0 -21
  576. package/src/lib/keyed-atom.ts +0 -60
  577. package/src/lib/segmented-control.ts +0 -42
  578. package/src/lib/sound.ts +0 -39
  579. package/src/lib/specular.ts +0 -10
  580. package/src/lib/state/__tests__/sound.test.tsx +0 -53
  581. package/src/lib/state/exegia-provider.tsx +0 -83
  582. package/src/lib/state/index.ts +0 -4
  583. package/src/lib/state/store.ts +0 -19
  584. package/src/lib/use-motion-panel.ts +0 -78
  585. package/src/lib/utils.test.ts +0 -22
  586. package/src/lib/utils.ts +0 -100
  587. package/src/specular.js +0 -4
  588. /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
@@ -1,150 +0,0 @@
1
- "use client"
2
-
3
- import { useMemo } from "react"
4
- import { AnimatePresence } from "motion/react"
5
- import { cn } from "@/lib/utils"
6
- import type {
7
- TAISidebarComponentProps,
8
- IAISidebarContextValue,
9
- IAISidebarController,
10
- IAISidebarProps,
11
- TAISidebarViewProps,
12
- IFlatResource,
13
- } from "./type"
14
- import { useAISidebar } from "./use-ai-sidebar"
15
- import { AISidebarContext } from "./sidebar-context"
16
- import { ResourceRow } from "./sidebar-row"
17
-
18
- /**
19
- * Resource tree for the app rail: nested rows with drag-and-drop reorder,
20
- * inline rename, per-row action menus and full keyboard navigation.
21
- *
22
- * Two ways to drive it. Pass the data and handlers as props and the block
23
- * owns its state, or hold a `useAISidebar` controller and pass it as
24
- * `controller` — the same rendering, but select, expand, rename, reorder
25
- * and menu state are then callable from anywhere in your app.
26
- */
27
- export function AISidebar(props: TAISidebarComponentProps) {
28
- // Two components rather than one: hooks may not be called conditionally,
29
- // and the controller form has no options to build a fallback controller
30
- // from. Nobody switches a sidebar between the two forms at runtime.
31
- return props.controller ? (
32
- <AISidebarView {...viewProps(props)} controller={props.controller} />
33
- ) : (
34
- <UncontrolledAISidebar {...props} />
35
- )
36
- }
37
-
38
- /** The props form: builds its own controller and renders through it. */
39
- function UncontrolledAISidebar(props: IAISidebarProps) {
40
- const {
41
- renderIcon: _icon,
42
- renderMenu: _menu,
43
- renderActionsTrigger: _trigger,
44
- ariaLabel: _label,
45
- className: _className,
46
- controller: _controller,
47
- ...options
48
- } = props
49
- const controller = useAISidebar(options)
50
- return <AISidebarView {...viewProps(props)} controller={controller} />
51
- }
52
-
53
- function viewProps(props: TAISidebarComponentProps): TAISidebarViewProps {
54
- return {
55
- renderIcon: props.renderIcon,
56
- renderMenu: props.renderMenu,
57
- renderActionsTrigger: props.renderActionsTrigger,
58
- ariaLabel: props.ariaLabel,
59
- className: props.className,
60
- }
61
- }
62
-
63
- /** Rendering only — every piece of state lives on the controller. */
64
- function AISidebarView({
65
- controller,
66
- renderIcon,
67
- renderMenu,
68
- renderActionsTrigger,
69
- ariaLabel = "Resources",
70
- className,
71
- }: TAISidebarViewProps & { controller: IAISidebarController }) {
72
- const { dnd, hover } = controller
73
- const { draggingId, dropTarget } = dnd
74
-
75
- // Rows take the sidebar's id and the stable handlers, never the controller
76
- // — so this value keeps its identity and a hover or a toggle re-renders
77
- // only the rows whose own atoms changed. Deps name each function because
78
- // `dnd` itself carries live drag state and changes identity with it.
79
- const context = useMemo<IAISidebarContextValue>(
80
- () => ({
81
- sidebarId: controller.sidebarId,
82
- hoverLayoutId: hover.layoutId,
83
- renderIcon,
84
- renderMenu,
85
- renderActionsTrigger,
86
- setRowRef: controller.setRowRef,
87
- onRowKeyDown: controller.onRowKeyDown,
88
- onRowHover: hover.onRowHover,
89
- closeMenu: controller.closeMenu,
90
- dnd: {
91
- onDrop: dnd.onDrop,
92
- onRowDragStart: dnd.onRowDragStart,
93
- onRowDragEnd: dnd.onRowDragEnd,
94
- onRowDragOver: dnd.onRowDragOver,
95
- },
96
- }),
97
- [
98
- controller.sidebarId,
99
- controller.setRowRef,
100
- controller.onRowKeyDown,
101
- controller.closeMenu,
102
- hover.layoutId,
103
- hover.onRowHover,
104
- renderIcon,
105
- renderMenu,
106
- renderActionsTrigger,
107
- dnd.onDrop,
108
- dnd.onRowDragStart,
109
- dnd.onRowDragEnd,
110
- dnd.onRowDragOver,
111
- ]
112
- )
113
-
114
- return (
115
- <AISidebarContext.Provider value={context}>
116
- <div
117
- role="tree"
118
- aria-label={ariaLabel}
119
- aria-multiselectable="false"
120
- onDragOver={dnd.onRootDragOver}
121
- onDrop={dnd.onDrop}
122
- onMouseLeave={hover.clear}
123
- className={cn(
124
- "relative min-w-0 flex-col gap-0.5 [overflow-anchor:none] group-data-[state=collapsed]/sidebar:hidden",
125
- draggingId && "pb-9 select-none",
126
- className
127
- )}
128
- >
129
- <AnimatePresence initial={false}>
130
- {controller.flat.map((row: IFlatResource) => (
131
- <ResourceRow key={row.item.id} row={row} />
132
- ))}
133
- </AnimatePresence>
134
-
135
- {draggingId && (
136
- <div
137
- aria-hidden="true"
138
- data-active={dropTarget?.id === null || undefined}
139
- className="absolute inset-x-1 bottom-0 flex h-8 items-center justify-center rounded-md border border-dashed border-border text-[10px] text-muted-foreground data-[active=true]:border-primary/50 data-[active=true]:bg-primary/10 data-[active=true]:text-foreground"
140
- >
141
- Move to top level
142
- </div>
143
- )}
144
- </div>
145
- <span className="sr-only" aria-live="polite">
146
- {controller.announcement}
147
- </span>
148
- </AISidebarContext.Provider>
149
- )
150
- }
@@ -1,67 +0,0 @@
1
- import { AISidebar } from "./ai-sidebar"
2
- import { MarqueeLabel } from "./marquee-label.tsx"
3
- import { ResourceRow } from "./sidebar-row.tsx"
4
- import { SidebarIcon } from "./sidebar-icon.tsx"
5
- export { useAISidebar, type IUseAISidebarOptions } from "./use-ai-sidebar.ts"
6
- export {
7
- useAISidebarActions,
8
- useAISidebarState,
9
- } from "./use-ai-sidebar-state.ts"
10
- export type * from "./type.ts"
11
- // The public atom surface. `@internal` atoms (config, handlers, mount, the
12
- // projections, the owned-* loop guards) stay unexported on purpose —
13
- // `export *` would make every internal a breaking-change surface for
14
- // consumer apps.
15
- export {
16
- aiSidebarActiveIdAtom,
17
- aiSidebarAnnouncementAtom,
18
- aiSidebarDraggingIdAtom,
19
- aiSidebarDropTargetAtom,
20
- aiSidebarExpandedIdsAtom,
21
- aiSidebarFlatAtom,
22
- aiSidebarFocusedIdAtom,
23
- aiSidebarHoverActiveAtom,
24
- aiSidebarHoveredIdAtom,
25
- aiSidebarItemsAtom,
26
- aiSidebarMenuOpenIdAtom,
27
- aiSidebarMovePendingAtom,
28
- aiSidebarRenamingIdAtom,
29
- aiSidebarRowDraggingAtom,
30
- aiSidebarRowDropAtom,
31
- aiSidebarRowExpandedAtom,
32
- aiSidebarRowFocusedAtom,
33
- aiSidebarRowHoveredAtom,
34
- aiSidebarRowMenuOpenAtom,
35
- aiSidebarRowRenamingAtom,
36
- aiSidebarRowSelectedAtom,
37
- aiSidebarStateAtom,
38
- cancelAISidebarRenameAtom,
39
- clearAISidebarHoverAtom,
40
- closeAISidebarMenuAtom,
41
- collapseAISidebarRowAtom,
42
- collapseAllAISidebarRowsAtom,
43
- endAISidebarDragAtom,
44
- expandAISidebarRowAtom,
45
- expandAllAISidebarRowsAtom,
46
- focusAISidebarRowAtom,
47
- moveAISidebarRowAtom,
48
- openAISidebarMenuAtom,
49
- removeAISidebarInstance,
50
- renameAISidebarRowAtom,
51
- resetAISidebarAtom,
52
- revealAISidebarRowAtom,
53
- selectAISidebarRowAtom,
54
- setAISidebarHoveredAtom,
55
- setAISidebarItemsAtom,
56
- startAISidebarRenameAtom,
57
- toggleAISidebarRowAtom,
58
- } from "./ai-sidebar-atom.ts"
59
-
60
- export { AISidebar, MarqueeLabel, ResourceRow, SidebarIcon }
61
-
62
- export const Sidebar = {
63
- Wrapper: AISidebar,
64
- MarqueeLabel,
65
- Row: ResourceRow,
66
- Icon: SidebarIcon,
67
- }
@@ -1,59 +0,0 @@
1
- import { motion, useReducedMotion } from "motion/react"
2
- import { useEffect, useRef, useState } from "react"
3
- import { ROW_REVEAL } from "./utils.ts"
4
-
5
- export function MarqueeLabel({
6
- active,
7
- children,
8
- }: {
9
- active: boolean
10
- children: string
11
- }) {
12
- const reduce = useReducedMotion() ?? false
13
- const viewportRef = useRef<HTMLSpanElement>(null)
14
- const labelRef = useRef<HTMLSpanElement>(null)
15
- const [distance, setDistance] = useState(0)
16
-
17
- useEffect(() => {
18
- const measure = () => {
19
- const viewport = viewportRef.current
20
- const label = labelRef.current
21
- if (!viewport || !label) return
22
- setDistance(
23
- label.scrollWidth > viewport.clientWidth ? label.scrollWidth + 24 : 0
24
- )
25
- }
26
- measure()
27
- const observer = new ResizeObserver(measure)
28
- if (viewportRef.current) observer.observe(viewportRef.current)
29
- if (labelRef.current) observer.observe(labelRef.current)
30
- return () => observer.disconnect()
31
- }, [])
32
-
33
- const running = active && distance > 0 && !reduce
34
-
35
- return (
36
- <span
37
- ref={viewportRef}
38
- className="relative block min-w-0 flex-1 overflow-hidden"
39
- >
40
- <motion.span
41
- className="flex w-max items-center gap-6 whitespace-nowrap"
42
- animate={{ x: running ? [0, -distance] : 0 }}
43
- transition={
44
- running
45
- ? {
46
- duration: Math.max(2.4, distance / 34),
47
- ease: "linear",
48
- repeat: Number.POSITIVE_INFINITY,
49
- repeatDelay: 2,
50
- }
51
- : ROW_REVEAL
52
- }
53
- >
54
- <span ref={labelRef}>{children}</span>
55
- {running ? <span aria-hidden="true">{children}</span> : null}
56
- </motion.span>
57
- </span>
58
- )
59
- }
@@ -1,15 +0,0 @@
1
- "use client";
2
-
3
- import { createContext, useContext } from "react";
4
-
5
- import type { IAISidebarContextValue } from "./type.ts";
6
-
7
- export const AISidebarContext = createContext<IAISidebarContextValue | null>(
8
- null
9
- );
10
-
11
- export function useAISidebarContext(): IAISidebarContextValue {
12
- const context = useContext(AISidebarContext);
13
- if (!context) throw new Error("Sidebar rows must render inside <AISidebar>.");
14
- return context;
15
- }
@@ -1,14 +0,0 @@
1
- import type { ISidebarResource } from "./type.ts"
2
- import { Bookmark, FileText, Folder, FolderOpen } from "lucide-react"
3
-
4
- export function SidebarIcon(item: ISidebarResource, expanded: boolean) {
5
- const Icon =
6
- item.kind === "folder" || item.kind === "project"
7
- ? expanded
8
- ? FolderOpen
9
- : Folder
10
- : item.kind === "bookmark"
11
- ? Bookmark
12
- : FileText
13
- return <Icon className="size-4" />
14
- }
@@ -1,378 +0,0 @@
1
- "use client"
2
-
3
- import {
4
- cloneElement,
5
- memo,
6
- useCallback,
7
- useEffect,
8
- useRef,
9
- useState,
10
- type MouseEvent,
11
- } from "react"
12
- import { useAtomValue, useSetAtom } from "jotai"
13
- import type { IResourceRowProps } from "./type"
14
- import {
15
- AnimatePresence,
16
- motion,
17
- useReducedMotion,
18
- type Variants,
19
- } from "motion/react"
20
- import { ChevronRight, MoreHorizontal, Pencil } from "lucide-react"
21
- import { SPRING_LAYOUT } from "@/lib/ease.ts"
22
- import { cn } from "@/lib/utils.ts"
23
- import {
24
- aiSidebarHoverActiveAtom,
25
- aiSidebarRowDraggingAtom,
26
- aiSidebarRowDropAtom,
27
- aiSidebarRowExpandedAtom,
28
- aiSidebarRowFocusedAtom,
29
- aiSidebarRowHoveredAtom,
30
- aiSidebarRowMenuOpenAtom,
31
- aiSidebarRowRenamingAtom,
32
- aiSidebarRowSelectedAtom,
33
- cancelAISidebarRenameAtom,
34
- focusAISidebarRowAtom,
35
- openAISidebarMenuAtom,
36
- renameAISidebarRowAtom,
37
- selectAISidebarRowAtom,
38
- startAISidebarRenameAtom,
39
- toggleAISidebarRowAtom,
40
- } from "./ai-sidebar-atom.ts"
41
- import { useAISidebarContext } from "./sidebar-context.ts"
42
- import { canContain } from "./utils"
43
- import { SidebarIcon } from "./sidebar-icon"
44
- import { MarqueeLabel } from "./marquee-label"
45
- import {
46
- MorphPopover,
47
- MorphPopoverContent,
48
- MorphPopoverTrigger,
49
- } from "@/components/motion/popover-morph.tsx"
50
- import { Button } from "@/components/ui/button"
51
-
52
- // Same choreography as SharedLayoutBg: the wrapper only fades/blurs out when
53
- // the pointer leaves the whole tree; a row-to-row move exits instantly so the
54
- // layoutId pill slides instead of crossfading.
55
- const pillVariants: Variants = {
56
- initial: { opacity: 0, filter: "blur(6px)" },
57
- animate: { opacity: 1, filter: "blur(0px)" },
58
- exit: (hoverActive: boolean) =>
59
- !hoverActive ? { opacity: 0, filter: "blur(6px)" } : {},
60
- }
61
-
62
- const reducedPillVariants: Variants = {
63
- initial: { opacity: 0 },
64
- animate: { opacity: 1 },
65
- exit: (hoverActive: boolean) => (!hoverActive ? { opacity: 0 } : {}),
66
- }
67
-
68
- function ResourceRowImpl({ row }: IResourceRowProps) {
69
- const {
70
- sidebarId,
71
- hoverLayoutId,
72
- renderIcon,
73
- renderMenu,
74
- renderActionsTrigger,
75
- setRowRef,
76
- onRowKeyDown,
77
- onRowHover,
78
- closeMenu,
79
- dnd,
80
- } = useAISidebarContext()
81
- const reduce = useReducedMotion() ?? false
82
-
83
- // One subscription per field, per row. A row re-renders when its own
84
- // selection, expansion, focus, rename, menu, drag or hover state changes
85
- // and sits still while a sibling's does — reading the controller off
86
- // context instead re-rendered every row on every change.
87
- const active = useAtomValue(aiSidebarRowSelectedAtom(sidebarId, row.item.id))
88
- const expanded = useAtomValue(
89
- aiSidebarRowExpandedAtom(sidebarId, row.item.id)
90
- )
91
- const focused = useAtomValue(aiSidebarRowFocusedAtom(sidebarId, row.item.id))
92
- const renaming = useAtomValue(
93
- aiSidebarRowRenamingAtom(sidebarId, row.item.id)
94
- )
95
- const menuOpen = useAtomValue(
96
- aiSidebarRowMenuOpenAtom(sidebarId, row.item.id)
97
- )
98
- const isDragging = useAtomValue(
99
- aiSidebarRowDraggingAtom(sidebarId, row.item.id)
100
- )
101
- const dropPosition = useAtomValue(
102
- aiSidebarRowDropAtom(sidebarId, row.item.id)
103
- )
104
- const hoverActive = useAtomValue(aiSidebarHoverActiveAtom(sidebarId))
105
- const hoverPill =
106
- useAtomValue(aiSidebarRowHoveredAtom(sidebarId, row.item.id)) &&
107
- !row.item.disabled
108
-
109
- const select = useSetAtom(selectAISidebarRowAtom(sidebarId))
110
- const toggleExpanded = useSetAtom(toggleAISidebarRowAtom(sidebarId))
111
- const setFocusedRow = useSetAtom(focusAISidebarRowAtom(sidebarId))
112
- const startRename = useSetAtom(startAISidebarRenameAtom(sidebarId))
113
- const cancelRename = useSetAtom(cancelAISidebarRenameAtom(sidebarId))
114
- const rename = useSetAtom(renameAISidebarRowAtom(sidebarId))
115
- const openMenu = useSetAtom(openAISidebarMenuAtom(sidebarId))
116
-
117
- const onMenuOpenChange = useCallback(
118
- (open: boolean) => {
119
- if (open) openMenu(row.item.id)
120
- else closeMenu()
121
- },
122
- [closeMenu, openMenu, row.item.id]
123
- )
124
-
125
- const setRef = useCallback(
126
- (node: HTMLDivElement | null) => setRowRef(row.item.id, node),
127
- [row.item.id, setRowRef]
128
- )
129
-
130
- const [hovered, setHovered] = useState(false)
131
- const inputRef = useRef<HTMLInputElement>(null)
132
- const skipRenameBlurRef = useRef(false)
133
- const draggedRef = useRef(false)
134
- const [draft, setDraft] = useState(row.item.label)
135
- const acceptsChildren = canContain(row.item)
136
-
137
- useEffect(() => {
138
- if (!renaming) return
139
- skipRenameBlurRef.current = false
140
- // setDraft(row.item.label);
141
- requestAnimationFrame(() => {
142
- inputRef.current?.focus()
143
- inputRef.current?.select()
144
- })
145
- }, [renaming, row.item.label])
146
-
147
- const menu = renderMenu?.(row.item, {
148
- close: () => onMenuOpenChange(false),
149
- rename: () => {
150
- onMenuOpenChange(false)
151
- startRename(row.item.id)
152
- },
153
- }) ?? (
154
- <button
155
- type="button"
156
- onClick={() => {
157
- onMenuOpenChange(false)
158
- startRename(row.item.id)
159
- }}
160
- className="flex h-8 w-full items-center gap-2 rounded-md px-2.5 text-left text-xs text-foreground transition-colors outline-none hover:bg-muted focus-visible:bg-muted focus-visible:ring-2 focus-visible:ring-ring"
161
- >
162
- <Pencil aria-hidden="true" className="size-3.5" />
163
- Rename
164
- </button>
165
- )
166
-
167
- return (
168
- <motion.div
169
- ref={setRef}
170
- layout="position"
171
- transition={reduce ? { duration: 0 } : SPRING_LAYOUT}
172
- role="treeitem"
173
- aria-level={row.depth + 1}
174
- aria-selected={acceptsChildren ? undefined : active}
175
- aria-expanded={acceptsChildren ? expanded : undefined}
176
- aria-disabled={row.item.disabled || undefined}
177
- tabIndex={focused ? 0 : -1}
178
- draggable={!row.item.disabled && !renaming}
179
- data-menu-open={menuOpen || undefined}
180
- data-drop={dropPosition ?? undefined}
181
- data-dragging={isDragging || undefined}
182
- onFocus={() => setFocusedRow(row.item.id)}
183
- onKeyDown={(event) => onRowKeyDown(event, row)}
184
- onClick={(event) => {
185
- if (
186
- event.defaultPrevented ||
187
- draggedRef.current ||
188
- renaming ||
189
- row.item.disabled
190
- )
191
- return
192
- if (acceptsChildren) toggleExpanded(row.item.id)
193
- else select(row.item.id)
194
- }}
195
- onDoubleClick={(event) => {
196
- if (acceptsChildren || row.item.disabled) return
197
- event.preventDefault()
198
- startRename(row.item.id)
199
- }}
200
- onMouseEnter={() => {
201
- setHovered(true)
202
- onRowHover(row.item.id, true)
203
- }}
204
- onMouseLeave={() => {
205
- setHovered(false)
206
- onRowHover(row.item.id, false)
207
- }}
208
- onDragStartCapture={(event) => {
209
- draggedRef.current = true
210
- dnd.onRowDragStart(event, row.item.id)
211
- }}
212
- onDragEndCapture={() => {
213
- dnd.onRowDragEnd()
214
- requestAnimationFrame(() => {
215
- draggedRef.current = false
216
- })
217
- }}
218
- onDragOver={(event) => dnd.onRowDragOver(event, row)}
219
- onDrop={dnd.onDrop}
220
- className={cn(
221
- "group/resource relative flex min-h-9 min-w-0 cursor-pointer items-center gap-2.5 rounded-md pr-3 text-sm outline-none",
222
- "text-muted-foreground transition-[color,background-color,scale] duration-150 ease-smooth-out hover:text-foreground motion-reduce:transition-none",
223
- !row.item.disabled &&
224
- !renaming &&
225
- "active:scale-97 motion-reduce:active:scale-100",
226
- // Fallback for standalone rows that render without the shared pill.
227
- hoverLayoutId === undefined && "hover:bg-muted",
228
- "focus-visible:bg-muted/70 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",
229
- "data-[menu-open=true]:bg-muted data-[menu-open=true]:text-foreground",
230
- "data-[dragging=true]:opacity-40",
231
- "data-[drop=inside]:bg-primary/10 data-[drop=inside]:ring-1 data-[drop=inside]:ring-primary/45",
232
- "data-[drop=before]:before:absolute data-[drop=before]:before:-top-0.5 data-[drop=before]:before:right-2 data-[drop=before]:before:left-2 data-[drop=before]:before:h-0.5 data-[drop=before]:before:rounded-full data-[drop=before]:before:bg-primary",
233
- "data-[drop=after]:after:absolute data-[drop=after]:after:right-2 data-[drop=after]:after:-bottom-0.5 data-[drop=after]:after:left-2 data-[drop=after]:after:h-0.5 data-[drop=after]:after:rounded-full data-[drop=after]:after:bg-primary",
234
- !acceptsChildren &&
235
- active &&
236
- "bg-primary/10 text-primary dark:bg-primary/25 dark:text-primary-foreground",
237
- row.item.disabled && "cursor-not-allowed opacity-45"
238
- )}
239
- style={{ paddingLeft: `${12 + row.depth * 16}px` }}
240
- >
241
- {hoverLayoutId ? (
242
- <AnimatePresence custom={hoverActive}>
243
- {hoverActive ? (
244
- <motion.span
245
- aria-hidden="true"
246
- variants={reduce ? reducedPillVariants : pillVariants}
247
- initial="initial"
248
- animate="animate"
249
- exit="exit"
250
- custom={hoverActive}
251
- className="pointer-events-none absolute inset-0"
252
- >
253
- {hoverPill ? (
254
- <motion.span
255
- layoutId={hoverLayoutId}
256
- transition={reduce ? { duration: 0 } : SPRING_LAYOUT}
257
- className="block h-full w-full rounded-md bg-foreground/8 dark:bg-muted/50"
258
- />
259
- ) : null}
260
- </motion.span>
261
- ) : null}
262
- </AnimatePresence>
263
- ) : null}
264
- <span
265
- aria-hidden="true"
266
- className="relative grid size-5 shrink-0 place-items-center"
267
- >
268
- {renderIcon?.(row.item) ?? SidebarIcon(row.item, expanded)}
269
- </span>
270
-
271
- {renaming ? (
272
- <input
273
- ref={inputRef}
274
- value={draft}
275
- aria-label={`Rename ${row.item.label}`}
276
- onChange={(event) => setDraft(event.target.value)}
277
- draggable={false}
278
- onClick={(event) => event.stopPropagation()}
279
- onDoubleClick={(event) => event.stopPropagation()}
280
- onBlur={() => {
281
- if (!skipRenameBlurRef.current) rename(row.item.id, draft)
282
- }}
283
- onKeyDown={(event) => {
284
- event.stopPropagation()
285
- if (event.key === "Enter") {
286
- skipRenameBlurRef.current = true
287
- rename(row.item.id, draft)
288
- }
289
- if (event.key === "Escape") {
290
- skipRenameBlurRef.current = true
291
- cancelRename()
292
- }
293
- }}
294
- className="relative h-7 min-w-0 flex-1 text-sm text-foreground outline-none focus-visible:ring-0 focus-visible:ring-ring"
295
- />
296
- ) : (
297
- <MarqueeLabel active={hovered || menuOpen}>
298
- {row.item.label}
299
- </MarqueeLabel>
300
- )}
301
-
302
- {!renaming && !row.item.disabled ? (
303
- <MorphPopover open={menuOpen} onOpenChange={onMenuOpenChange}>
304
- <MorphPopoverTrigger>
305
- {(() => {
306
- const custom = renderActionsTrigger?.(row.item)
307
- if (custom) {
308
- // A row click selects/toggles — the trigger must not bubble.
309
- const customOnClick = (
310
- custom.props as {
311
- onClick?: (event: MouseEvent<HTMLElement>) => void
312
- }
313
- ).onClick
314
- return cloneElement(custom, {
315
- draggable: false,
316
- onClick: (event: MouseEvent<HTMLElement>) => {
317
- event.stopPropagation()
318
- customOnClick?.(event)
319
- },
320
- } as Partial<unknown>)
321
- }
322
- return (
323
- <Button
324
- draggable={false}
325
- tabIndex={-1}
326
- variant="link"
327
- aria-label={`Actions for ${row.item.label}`}
328
- onClick={(event) => event.stopPropagation()}
329
- className="relative grid size-7 shrink-0 place-items-center rounded-md opacity-0 transition-opacity duration-150 ease-smooth-out outline-none group-hover/resource:opacity-80 group-hover/resource:delay-150 group-data-[menu-open=true]/resource:opacity-100 hover:bg-foreground/5 focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none"
330
- >
331
- <MoreHorizontal aria-hidden="true" className="size-4" />
332
- </Button>
333
- )
334
- })()}
335
- </MorphPopoverTrigger>
336
- <MorphPopoverContent
337
- side="bottom"
338
- align="end"
339
- sideOffset={8}
340
- radius={12}
341
- className="w-40 p-1.5"
342
- >
343
- <div data-sidebar-resource-menu={row.item.id}>{menu}</div>
344
- </MorphPopoverContent>
345
- </MorphPopover>
346
- ) : null}
347
-
348
- {row.depth === 0 &&
349
- acceptsChildren &&
350
- (row.item.children?.length ?? 0) > 0 ? (
351
- <ChevronRight
352
- aria-hidden="true"
353
- className={cn(
354
- "relative size-3.5 shrink-0 text-muted-foreground transition-transform duration-200 ease-smooth-out motion-reduce:transition-none",
355
- expanded && "rotate-90"
356
- )}
357
- />
358
- ) : null}
359
- </motion.div>
360
- )
361
- }
362
-
363
- /** `flat` is rebuilt whenever expansion changes, so its `FlatResource`
364
- * wrappers are fresh objects even for rows nothing happened to. The
365
- * comparator looks through the wrapper at what a row actually renders from —
366
- * its item (stable unless the data changed), depth and parent — so a sibling
367
- * opening does not walk every row. Each row's own state reaches it through
368
- * its atoms instead. */
369
- function sameRow(prev: IResourceRowProps, next: IResourceRowProps): boolean {
370
- return (
371
- prev.row.item === next.row.item &&
372
- prev.row.depth === next.row.depth &&
373
- prev.row.parentId === next.row.parentId
374
- )
375
- }
376
-
377
- export const ResourceRow = memo(ResourceRowImpl, sameRow)
378
- ResourceRow.displayName = "ResourceRow"