@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,496 +0,0 @@
1
- "use client"
2
-
3
- import { LucideChevronLeft, LucideChevronRight } from "lucide-react"
4
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
5
- import * as React from "react"
6
- import { useAtomValue, useSetAtom } from "jotai"
7
-
8
- import { cn } from "@/lib/utils"
9
- import {
10
- Tooltip,
11
- TooltipContent,
12
- TooltipTrigger,
13
- } from "@/components/ui/tooltip"
14
- import {
15
- TREE_BRANCH_EXIT,
16
- TREE_BRANCH_VARIANTS,
17
- TREE_COLLAPSE_DURATION,
18
- TREE_LABEL_REVEAL_DELAY,
19
- TREE_MICRO_TRANSITION,
20
- TREE_ROW_VARIANTS,
21
- } from "./constants"
22
- import {
23
- cancelTreeRenameAtom,
24
- renameTreeNodeAtom,
25
- selectTreeNodeAtom,
26
- startTreeRenameAtom,
27
- toggleTreeNodeAtom,
28
- treeCanRenameAtom,
29
- treeCollapsedAtom,
30
- treeNodeActiveAtom,
31
- treeNodeDraggingAtom,
32
- treeNodeDropAtom,
33
- treeNodeExpandedAtom,
34
- treeNodeRenamingAtom,
35
- treeSectionedAtom,
36
- treeSoundAtom,
37
- treeVariantAtom,
38
- } from "./tree-atom"
39
- import { useTreeContext } from "./tree-context"
40
- import type { ITreeNode } from "./type"
41
- import { EASE_OUT } from "@/lib/ease.ts"
42
- import { Button } from "@/components/ui/button"
43
-
44
- /** How a row behaves, resolved from variant + depth + shape. */
45
- type TRowKind =
46
- | "section" // navigation depth 0 with 3-level data — heading, toggles
47
- | "toggle" // expands/collapses on row press (nav parents, files folders)
48
- | "link" // navigates; may still carry a chevron that toggles separately
49
- export interface ITreeRowProps {
50
- node: ITreeNode
51
- depth: number
52
- }
53
-
54
- function rowKindOf(
55
- node: ITreeNode,
56
- depth: number,
57
- variant: string,
58
- sectioned: boolean
59
- ): TRowKind {
60
- if (variant === "sidebar") return "link"
61
- const branch =
62
- variant === "files" ? node.children !== undefined : !!node.children?.length
63
- if (!branch) return "link"
64
- if (variant === "navigation")
65
- return sectioned && depth === 0 ? "section" : "toggle"
66
- // toc parents navigate — their chevron is a separate toggle.
67
- return variant === "toc" ? "link" : "toggle"
68
- }
69
-
70
- function TreeRowImpl({ node, depth }: ITreeRowProps): React.ReactElement {
71
- const { treeId, renderTrailing, dnd } = useTreeContext()
72
- const reduce = useReducedMotion()
73
-
74
- // One subscription per field, per node. A row re-renders when its own
75
- // branch, selection, rename or drag state changes and sits still while a
76
- // sibling's does — reading the whole controller off context instead
77
- // re-rendered every row in the tree on every toggle.
78
- const variant = useAtomValue(treeVariantAtom(treeId))
79
- const sectioned = useAtomValue(treeSectionedAtom(treeId))
80
- const collapsed = useAtomValue(treeCollapsedAtom(treeId))
81
- const canRename = useAtomValue(treeCanRenameAtom(treeId))
82
- const sound = useAtomValue(treeSoundAtom(treeId))
83
- const open = useAtomValue(treeNodeExpandedAtom(treeId, node.id))
84
- const active = useAtomValue(treeNodeActiveAtom(treeId, node.id))
85
- const renaming = useAtomValue(treeNodeRenamingAtom(treeId, node.id))
86
- const dragging = useAtomValue(treeNodeDraggingAtom(treeId, node.id))
87
- const drop = useAtomValue(treeNodeDropAtom(treeId, node.id))
88
-
89
- const select = useSetAtom(selectTreeNodeAtom(treeId))
90
- const toggleExpanded = useSetAtom(toggleTreeNodeAtom(treeId))
91
- const startRename = useSetAtom(startTreeRenameAtom(treeId))
92
- const cancelRename = useSetAtom(cancelTreeRenameAtom(treeId))
93
- const rename = useSetAtom(renameTreeNodeAtom(treeId))
94
-
95
- const kind = rowKindOf(node, depth, variant, sectioned)
96
-
97
- // The sidebar rail is single-level by contract — nested children are
98
- // ignored rather than rendered somewhere misleading.
99
- const children = variant === "sidebar" ? [] : (node.children ?? [])
100
- const canExpand =
101
- kind !== "link" || (variant === "toc" && children.length > 0)
102
-
103
- const files = variant === "files"
104
-
105
- // toc rows below the route level are in-page anchors: they scroll to the
106
- // heading sharing their id (an explicit `#hash` href wins). Rows are
107
- // buttons, so the anchor default is reproduced by setting location.hash
108
- // after `select` — the same order the old <a> gave (handlers first, then
109
- // the browser's jump), with the same :target/history semantics.
110
- const anchorHash =
111
- variant === "toc" && kind === "link" && !node.disabled
112
- ? node.href?.startsWith("#")
113
- ? node.href
114
- : depth > 0 && !node.href
115
- ? `#${node.id}`
116
- : undefined
117
- : undefined
118
-
119
- function handlePress(event: React.MouseEvent) {
120
- if (node.disabled) {
121
- event.preventDefault()
122
- return
123
- }
124
- if (kind === "link") {
125
- select(node.id)
126
- if (anchorHash !== undefined && typeof window !== "undefined") {
127
- window.location.hash = anchorHash
128
- }
129
- return
130
- }
131
- toggleExpanded(node.id)
132
- }
133
-
134
- function handleStartRename(event: React.MouseEvent) {
135
- if (!canRename || node.disabled) return
136
- event.preventDefault()
137
- startRename(node.id)
138
- }
139
-
140
- const label = renaming ? (
141
- <input
142
- autoFocus
143
- className={cn(
144
- "h-5 min-w-0 flex-1 rounded-sm border-none bg-transparent px-1",
145
- "text-[length:inherit] text-foreground outline-none focus-visible:ring-0"
146
- )}
147
- data-slot="tree-rename-input"
148
- defaultValue={node.label}
149
- onBlur={(event) => rename(node.id, event.currentTarget.value)}
150
- onClick={(event) => event.stopPropagation()}
151
- onKeyDown={(event) => {
152
- event.stopPropagation()
153
- if (event.key === "Enter") rename(node.id, event.currentTarget.value)
154
- if (event.key === "Escape") cancelRename()
155
- }}
156
- />
157
- ) : variant === "sidebar" ? (
158
- // The rail label folds away with the rail instead of unmounting rows.
159
- <AnimatePresence initial={false} mode="wait">
160
- <motion.span
161
- initial={{ width: 0, opacity: 0, x: -8 }}
162
- animate={{
163
- width: collapsed ? 0 : "auto",
164
- opacity: collapsed ? 0 : 1,
165
- x: collapsed ? -8 : 0,
166
- display: collapsed ? "none" : "flex",
167
- transition: reduce
168
- ? { duration: 0 }
169
- : {
170
- width: {
171
- delay: TREE_LABEL_REVEAL_DELAY,
172
- duration: TREE_COLLAPSE_DURATION,
173
- ease: "easeInOut",
174
- },
175
- opacity: {
176
- delay: TREE_LABEL_REVEAL_DELAY,
177
- duration: TREE_COLLAPSE_DURATION,
178
- ease: "easeInOut",
179
- },
180
- x: {
181
- duration: TREE_COLLAPSE_DURATION,
182
- ease: "easeInOut",
183
- },
184
- },
185
- }}
186
- exit={{
187
- width: 0,
188
- opacity: 0,
189
- display: "none",
190
- x: -8,
191
- transition: reduce
192
- ? { duration: 0 }
193
- : {
194
- display: {
195
- duration: TREE_COLLAPSE_DURATION,
196
- ease: "easeOut",
197
- },
198
- width: {
199
- duration: TREE_COLLAPSE_DURATION * 3,
200
- ease: EASE_OUT,
201
- },
202
- opacity: {
203
- duration: TREE_COLLAPSE_DURATION,
204
- ease: "easeOut",
205
- },
206
- x: {
207
- duration: TREE_COLLAPSE_DURATION * 3,
208
- ease: EASE_OUT,
209
- },
210
- },
211
- }}
212
- className={cn("min-w-0 overflow-clip whitespace-nowrap")}
213
- data-slot="tree-row-label"
214
- >
215
- {node.label}
216
- </motion.span>
217
- </AnimatePresence>
218
- ) : (
219
- <span
220
- className="min-w-0 flex-1 truncate"
221
- onDoubleClick={canRename ? handleStartRename : undefined}
222
- >
223
- {node.label}
224
- </span>
225
- )
226
-
227
- const chevron = canExpand ? (
228
- <motion.span
229
- animate={{ rotate: open ? (variant === "navigation" ? -90 : 90) : 0 }}
230
- aria-hidden
231
- className="flex size-4 shrink-0 items-center justify-center text-muted-foreground/70"
232
- transition={reduce ? { duration: 0 } : TREE_MICRO_TRANSITION}
233
- >
234
- {variant === "sidebar" && (
235
- <LucideChevronLeft className="size-3.5 stroke-3" />
236
- )}
237
- {variant === "toc" && (
238
- <LucideChevronRight className="size-3.5 stroke-3" />
239
- )}
240
- {variant === "navigation" && (
241
- <LucideChevronLeft className="size-3.5 stroke-3" />
242
- )}
243
- </motion.span>
244
- ) : null
245
-
246
- // The trailing slot is consumer-rendered and usually holds buttons, so it
247
- // cannot live inside the row — every row is itself a <button>, and a
248
- // button nesting a button is invalid HTML. It sits beside the row
249
- // instead, overlaid like the toc toggle.
250
- const showTrailing = files && !!renderTrailing && !renaming
251
-
252
- const rowClassName = cn(
253
- "group/row relative flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2",
254
- "text-left text-muted-foreground transition-colors duration-150 outline-none",
255
- "hover:bg-accent hover:text-accent-foreground",
256
- "focus-visible:ring-2 focus-visible:ring-ring",
257
- files ? "h-7 text-[0.8125rem]" : "h-8 text-sm",
258
- node.disabled && "pointer-events-none opacity-50",
259
- active && "bg-accent font-medium text-accent-foreground",
260
- dragging && "opacity-50",
261
- drop === "inside" && "bg-accent/60 ring-1 ring-primary/50 ring-inset",
262
- variant === "sidebar" && collapsed && "justify-center px-0",
263
- // Room for the overlay expand toggle on toc parent rows.
264
- variant === "toc" && kind === "link" && children.length > 0 && "pr-7",
265
- // …and for the overlay trailing actions on files rows. Sized for one
266
- // icon button plus its inset; a wider slot clips the truncated label,
267
- // which is why the prop is documented as row actions, not free content.
268
- showTrailing && "pr-9"
269
- )
270
-
271
- const rowInteractionProps = {
272
- "data-slot": "tree-row" as const,
273
- "data-id": node.id,
274
- "data-branch": canExpand ? "" : undefined,
275
- "data-expanded": canExpand && open ? "" : undefined,
276
- "data-active": active ? "" : undefined,
277
- "data-cuelume-press": sound ? "" : undefined,
278
- draggable: dnd.enabled && !renaming ? true : undefined,
279
- onDragStart: dnd.enabled
280
- ? (event: React.DragEvent) => dnd.onRowDragStart(event, node.id)
281
- : undefined,
282
- onDragOver: dnd.enabled
283
- ? (event: React.DragEvent) => dnd.onRowDragOver(event, node)
284
- : undefined,
285
- onDragLeave: dnd.enabled ? dnd.onRowDragLeave : undefined,
286
- onDrop: dnd.enabled
287
- ? (event: React.DragEvent) => dnd.onRowDrop(event, node)
288
- : undefined,
289
- onDragEnd: dnd.enabled ? dnd.onRowDragEnd : undefined,
290
- }
291
-
292
- const content = (
293
- <>
294
- {kind !== "section" && files && chevron}
295
- {kind !== "section" && node.icon && (
296
- <span
297
- className={cn(
298
- "flex size-4 shrink-0 items-center justify-center transition-[width,height,color] duration-150 [&>svg]:size-4",
299
- // Folded rail: the icon is the whole row, so it steps up a size
300
- // and takes the foreground colour instead of muted.
301
- variant === "sidebar" &&
302
- collapsed &&
303
- "size-5 text-foreground [&>svg]:size-5",
304
- active && "text-accent-foreground"
305
- )}
306
- data-slot="tree-row-icon"
307
- >
308
- {node.icon}
309
- </span>
310
- )}
311
- {label}
312
- {node.badge !== undefined && !(variant === "sidebar" && collapsed) && (
313
- <span className="ml-auto shrink-0 text-xs text-muted-foreground/80">
314
- {node.badge}
315
- </span>
316
- )}
317
- {/* nav toggle chevrons trail like the sidebar block; files lead;
318
- toc link rows get a separate overlay toggle instead. */}
319
- {kind === "toggle" && !files && (
320
- <span
321
- className={cn(
322
- node.badge === undefined ? "ml-auto" : "ml-1",
323
- "flex shrink-0"
324
- )}
325
- >
326
- {chevron}
327
- </span>
328
- )}
329
- </>
330
- )
331
-
332
- let row: React.ReactElement
333
- if (kind === "section") {
334
- row = (
335
- <button
336
- {...rowInteractionProps}
337
- aria-expanded={open}
338
- className={cn(
339
- "group/row flex w-full cursor-pointer items-center gap-1 rounded-md px-2 py-1",
340
- "text-xs font-medium tracking-wide text-muted-foreground/80 uppercase",
341
- "transition-colors duration-150 outline-none hover:text-foreground",
342
- "focus-visible:ring-0 focus-visible:ring-ring"
343
- )}
344
- onClick={handlePress}
345
- type="button"
346
- >
347
- <span className="truncate">{node.label}</span>
348
- {chevron}
349
- </button>
350
- )
351
- } else {
352
- // Every non-section row is the shared Button — link rows included. An
353
- // `href` no longer renders an anchor: navigation runs through
354
- // `selectTreeNodeAtom` (onSelect → onNavigate), and the consumer routes
355
- // from the node it receives. `sound` is forwarded so Button's own
356
- // press/release cues follow the tree's setting rather than its default.
357
- row = (
358
- <Button
359
- {...rowInteractionProps}
360
- variant={variant === "sidebar" && active ? "secondary" : "ghost"}
361
- aria-current={active ? "page" : undefined}
362
- aria-expanded={kind === "toggle" ? open : undefined}
363
- aria-label={variant === "sidebar" && collapsed ? node.label : undefined}
364
- className={cn(
365
- "transform cursor-pointer! justify-start transition-transform ease-smooth-out",
366
- variant === "sidebar" && collapsed ? "h-10! rounded-md!" : undefined,
367
- rowClassName
368
- )}
369
- disabled={node.disabled}
370
- onClick={handlePress}
371
- sound={sound}
372
- >
373
- {content}
374
- </Button>
375
- )
376
- }
377
-
378
- // A collapsed rail row is icon-only — a tooltip names it on hover/focus.
379
- // Expanded, the visible label already does, so the tooltip is disabled
380
- // rather than unmounted: swapping the wrapper in and out with `collapsed`
381
- // would remount the row and cut the label's fold animation short.
382
- if (variant === "sidebar") {
383
- row = (
384
- <Tooltip disabled={!collapsed || node.disabled}>
385
- <TooltipTrigger render={row} />
386
- <TooltipContent side="right">{node.label}</TooltipContent>
387
- </Tooltip>
388
- )
389
- }
390
-
391
- // toc parents navigate on the row itself, so their chevron lives beside
392
- // the row as its own toggle.
393
- const tocToggle =
394
- variant === "toc" && kind === "link" && children.length > 0 ? (
395
- <button
396
- aria-expanded={open}
397
- aria-label={`${open ? "Collapse" : "Expand"} ${node.label}`}
398
- className={cn(
399
- "absolute top-1/2 right-1 flex size-5 -translate-y-1/2 cursor-pointer items-center",
400
- "justify-center rounded-sm text-muted-foreground/70 outline-none",
401
- "hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring"
402
- )}
403
- onClick={(event) => {
404
- event.stopPropagation()
405
- toggleExpanded(node.id)
406
- }}
407
- type="button"
408
- >
409
- {chevron}
410
- </button>
411
- ) : null
412
-
413
- // Revealed by hovering/focusing anywhere in the row wrapper — the row and
414
- // the actions are siblings now, so the trigger group lives on the wrapper.
415
- const trailing = showTrailing ? (
416
- <span
417
- className={cn(
418
- "absolute top-1/2 right-1 flex -translate-y-1/2 items-center",
419
- "opacity-0 transition-opacity duration-150",
420
- "group-focus-within/row-actions:opacity-100 group-hover/row-actions:opacity-100",
421
- node.disabled && "pointer-events-none opacity-50"
422
- )}
423
- data-slot="tree-trailing"
424
- >
425
- {renderTrailing?.(node)}
426
- </span>
427
- ) : null
428
-
429
- const branchClassName =
430
- kind === "section"
431
- ? "flex flex-col gap-0.5 overflow-clip"
432
- : cn(
433
- "flex flex-col overflow-clip border-l border-border",
434
- files ? "mt-0.5 ml-3 gap-px pl-1.5" : "mt-1 ml-4 gap-0.5 pl-2.5"
435
- )
436
-
437
- return (
438
- <motion.li
439
- aria-expanded={canExpand ? open : undefined}
440
- aria-level={depth + 1}
441
- aria-selected={active || undefined}
442
- className="relative flex min-w-0 flex-col"
443
- data-slot="tree-item"
444
- role="treeitem"
445
- variants={reduce ? undefined : TREE_ROW_VARIANTS}
446
- >
447
- {drop === "before" && <TreeDropLine side="top" />}
448
- <div className={cn("relative", showTrailing && "group/row-actions")}>
449
- {row}
450
- {tocToggle}
451
- {trailing}
452
- </div>
453
- {canExpand && children.length > 0 && (
454
- <AnimatePresence initial={false}>
455
- {open && (
456
- <motion.ul
457
- animate={reduce ? { opacity: 1 } : "open"}
458
- className={branchClassName}
459
- exit={reduce ? { opacity: 0 } : TREE_BRANCH_EXIT}
460
- initial={reduce ? { opacity: 0 } : "closed"}
461
- key="branch"
462
- role="group"
463
- transition={reduce ? { duration: 0.12 } : undefined}
464
- variants={reduce ? undefined : TREE_BRANCH_VARIANTS}
465
- >
466
- {children.map((child) => (
467
- <TreeRow depth={depth + 1} key={child.id} node={child} />
468
- ))}
469
- </motion.ul>
470
- )}
471
- </AnimatePresence>
472
- )}
473
- {drop === "after" && <TreeDropLine side="bottom" />}
474
- </motion.li>
475
- )
476
- }
477
-
478
- /** Rows are memoized so a re-render of the root — a rail measurement, a new
479
- * `renderTrailing` — does not walk the whole tree. Each row's own state
480
- * reaches it through its atoms instead. */
481
- export const TreeRow = React.memo(TreeRowImpl)
482
- TreeRow.displayName = "TreeRow"
483
-
484
- /** Insertion indicator above or below a row while a drag hovers it. */
485
- function TreeDropLine({ side }: { side: "top" | "bottom" }) {
486
- return (
487
- <span
488
- aria-hidden
489
- className={cn(
490
- "pointer-events-none absolute inset-x-1 z-10 h-0.5 rounded-full bg-primary",
491
- side === "top" ? "top-0 -translate-y-1/2" : "bottom-0 translate-y-1/2"
492
- )}
493
- data-slot="tree-drop-indicator"
494
- />
495
- )
496
- }