@exegia/corpora-ui 0.28.0 → 1.0.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 (704) hide show
  1. package/README.md +33 -11
  2. package/dist-lib/index.js +13006 -7914
  3. package/dist-lib/index.js.map +1 -1
  4. package/dist-lib/src/components/atoms/_layout.d.ts +4 -0
  5. package/dist-lib/src/components/atoms/avatar/base.d.ts +2 -0
  6. package/dist-lib/src/components/atoms/avatar/index.d.ts +2 -0
  7. package/dist-lib/src/components/atoms/avatar/types.d.ts +20 -0
  8. package/dist-lib/src/components/atoms/avatar/utils.d.ts +13 -0
  9. package/dist-lib/src/components/atoms/avatar/verified.d.ts +1 -0
  10. package/dist-lib/src/components/atoms/background/index.d.ts +6 -0
  11. package/dist-lib/src/components/atoms/background/texture.d.ts +2 -0
  12. package/dist-lib/src/components/atoms/background/type.d.ts +7 -0
  13. package/dist-lib/src/components/atoms/background/utils.d.ts +4 -0
  14. package/dist-lib/src/components/atoms/bubble/actions.d.ts +7 -0
  15. package/dist-lib/src/components/atoms/bubble/context.d.ts +4 -0
  16. package/dist-lib/src/components/atoms/bubble/default.d.ts +3 -0
  17. package/dist-lib/src/components/atoms/bubble/header.d.ts +8 -0
  18. package/dist-lib/src/components/atoms/bubble/index.d.ts +16 -0
  19. package/dist-lib/src/components/atoms/bubble/message.d.ts +3 -0
  20. package/dist-lib/src/components/atoms/bubble/reactions.d.ts +14 -0
  21. package/dist-lib/src/components/atoms/bubble/types.d.ts +59 -0
  22. package/dist-lib/src/components/atoms/bubble/utils.d.ts +13 -0
  23. package/dist-lib/src/components/atoms/chip.d.ts +15 -0
  24. package/dist-lib/src/components/atoms/index.d.ts +15 -0
  25. package/dist-lib/src/components/atoms/loader.d.ts +8 -0
  26. package/dist-lib/src/components/atoms/reference.d.ts +7 -0
  27. package/dist-lib/src/components/atoms/text/default.d.ts +1144 -0
  28. package/dist-lib/src/components/atoms/text/heading.d.ts +4 -0
  29. package/dist-lib/src/components/atoms/text/index.d.ts +21 -0
  30. package/dist-lib/src/components/atoms/text/label.d.ts +2 -0
  31. package/dist-lib/src/components/atoms/text/paragraph.d.ts +4 -0
  32. package/dist-lib/src/components/atoms/text/span.d.ts +3 -0
  33. package/dist-lib/src/components/atoms/text/types.d.ts +23 -0
  34. package/dist-lib/src/components/atoms/text/utils.d.ts +4 -0
  35. package/dist-lib/src/components/atoms/text-selection/click-popover.d.ts +3 -0
  36. package/dist-lib/src/components/atoms/text-selection/index.d.ts +6 -0
  37. package/dist-lib/src/components/atoms/text-selection/popover.d.ts +3 -0
  38. package/dist-lib/src/components/atoms/text-selection/selection-atom.d.ts +30 -0
  39. package/dist-lib/src/components/atoms/text-selection/selection.d.ts +3 -0
  40. package/dist-lib/src/components/atoms/text-selection/types.d.ts +90 -0
  41. package/dist-lib/src/components/atoms/text-selection/use-selection.d.ts +7 -0
  42. package/dist-lib/src/components/atoms/types.d.ts +17 -0
  43. package/dist-lib/src/components/blocks/auth/auth-flow-block.story.d.ts +3 -0
  44. package/dist-lib/src/components/blocks/auth/code-auth-block.story.d.ts +3 -0
  45. package/dist-lib/src/components/blocks/auth/forgot-password-block.story.d.ts +3 -0
  46. package/dist-lib/src/components/blocks/auth/linked-accounts-block.story.d.ts +3 -0
  47. package/dist-lib/src/components/blocks/auth/login-block.story.d.ts +3 -0
  48. package/dist-lib/src/components/blocks/auth/onboarding-block.story.d.ts +3 -0
  49. package/dist-lib/src/components/blocks/auth/passkey-manager-block.story.d.ts +3 -0
  50. package/dist-lib/src/components/blocks/auth/passkey-sign-in-block.story.d.ts +3 -0
  51. package/dist-lib/src/components/blocks/auth/signup-block.story.d.ts +3 -0
  52. package/dist-lib/src/components/blocks/auth/update-password-block.story.d.ts +3 -0
  53. package/dist-lib/src/components/blocks/chat/banners.d.ts +13 -0
  54. package/dist-lib/src/components/blocks/chat/base.d.ts +10 -0
  55. package/dist-lib/src/components/blocks/chat/base.story.d.ts +3 -0
  56. package/dist-lib/src/components/blocks/chat/header.d.ts +4 -0
  57. package/dist-lib/src/components/blocks/chat/index.d.ts +13 -0
  58. package/dist-lib/src/components/blocks/chat/recommendation-stack.d.ts +13 -0
  59. package/dist-lib/src/components/blocks/chat/shared.d.ts +8 -0
  60. package/dist-lib/src/components/blocks/chat/suggested-prompts.d.ts +3 -0
  61. package/dist-lib/src/components/blocks/chat/types.d.ts +64 -0
  62. package/dist-lib/src/components/blocks/chat/version-history-record.d.ts +3 -0
  63. package/dist-lib/{components → src/components}/blocks/profile/profile-card-block.d.ts +2 -7
  64. package/dist-lib/src/components/blocks/profile/profile-card-block.story.d.ts +3 -0
  65. package/dist-lib/{components → src/components}/blocks/profile/type.d.ts +2 -2
  66. package/dist-lib/src/components/blocks/scaffold/scaffold-root.story.d.ts +3 -0
  67. package/dist-lib/src/components/blocks/shell/shell-layout.story.d.ts +3 -0
  68. package/dist-lib/src/components/composed/action-bar/action.d.ts +18 -0
  69. package/dist-lib/src/components/composed/action-bar/emojis.d.ts +10 -0
  70. package/dist-lib/src/components/composed/action-bar/index.d.ts +12 -0
  71. package/dist-lib/src/components/composed/action-bar/toolbar.d.ts +2 -0
  72. package/dist-lib/src/components/composed/action-bar/types.d.ts +55 -0
  73. package/dist-lib/src/components/composed/action-bar/utils.d.ts +57 -0
  74. package/dist-lib/src/components/composed/ai/avatar.d.ts +1 -0
  75. package/dist-lib/src/components/composed/ai/index.d.ts +17 -0
  76. package/dist-lib/src/components/composed/ai/message.d.ts +7 -0
  77. package/dist-lib/src/components/composed/ai/research-answer.d.ts +30 -0
  78. package/dist-lib/src/components/composed/ai/shared.d.ts +19 -0
  79. package/dist-lib/src/components/composed/ai/streaming-text.d.ts +26 -0
  80. package/dist-lib/src/components/composed/ai/suggested-prompt.d.ts +35 -0
  81. package/dist-lib/src/components/composed/ai/types.d.ts +66 -0
  82. package/dist-lib/src/components/composed/attachment.story.d.ts +3 -0
  83. package/dist-lib/src/components/composed/chart.story.d.ts +3 -0
  84. package/dist-lib/src/components/composed/chat/__tests__/attachment.test.d.ts +1 -0
  85. package/dist-lib/src/components/composed/chat/__tests__/beautiful-ui.test.d.ts +1 -0
  86. package/dist-lib/src/components/composed/chat/__tests__/chart.test.d.ts +1 -0
  87. package/dist-lib/src/components/composed/chat/__tests__/code-block.test.d.ts +1 -0
  88. package/dist-lib/src/components/composed/chat/__tests__/composer-attachments.test.d.ts +1 -0
  89. package/dist-lib/src/components/composed/chat/__tests__/composer.test.d.ts +1 -0
  90. package/dist-lib/src/components/composed/chat/__tests__/flowchart.test.d.ts +1 -0
  91. package/dist-lib/src/components/composed/chat/__tests__/markdown.test.d.ts +1 -0
  92. package/dist-lib/src/components/composed/chat/actions.d.ts +2 -0
  93. package/dist-lib/src/components/composed/chat/attachment.d.ts +62 -0
  94. package/dist-lib/src/components/composed/chat/chart.d.ts +41 -0
  95. package/dist-lib/src/components/composed/chat/code-block.d.ts +26 -0
  96. package/dist-lib/src/components/composed/chat/composer/add-button.d.ts +5 -0
  97. package/dist-lib/src/components/composed/chat/composer/base.d.ts +8 -0
  98. package/dist-lib/src/components/composed/chat/composer/command-menu.d.ts +2 -0
  99. package/dist-lib/src/components/composed/chat/composer/hooks.d.ts +9 -0
  100. package/dist-lib/src/components/composed/chat/composer/index.d.ts +10 -0
  101. package/dist-lib/src/components/composed/chat/composer/send-button.d.ts +3 -0
  102. package/dist-lib/src/components/composed/chat/composer/suggestions.d.ts +7 -0
  103. package/dist-lib/src/components/composed/chat/composer/utils.d.ts +19 -0
  104. package/dist-lib/src/components/composed/chat/context-cards.d.ts +27 -0
  105. package/dist-lib/src/components/composed/chat/filter-table.d.ts +40 -0
  106. package/dist-lib/src/components/composed/chat/flowchart/chart-node.d.ts +2 -0
  107. package/dist-lib/src/components/composed/chat/flowchart/connector.d.ts +2 -0
  108. package/dist-lib/src/components/composed/chat/flowchart/constant.d.ts +15 -0
  109. package/dist-lib/src/components/composed/chat/flowchart/default.d.ts +7 -0
  110. package/dist-lib/src/components/composed/chat/flowchart/edge-toolbar.d.ts +9 -0
  111. package/dist-lib/src/components/composed/chat/flowchart/hooks.d.ts +290 -0
  112. package/dist-lib/src/components/composed/chat/flowchart/index.d.ts +11 -0
  113. package/dist-lib/src/components/composed/chat/flowchart/step-body.d.ts +6 -0
  114. package/dist-lib/src/components/composed/chat/flowchart/types.d.ts +91 -0
  115. package/dist-lib/src/components/composed/chat/flowchart/utils.d.ts +64 -0
  116. package/dist-lib/src/components/composed/chat/hint.d.ts +6 -0
  117. package/dist-lib/src/components/composed/chat/index.d.ts +15 -0
  118. package/dist-lib/src/components/composed/chat/insight-cards.d.ts +54 -0
  119. package/dist-lib/src/components/composed/chat/markdown-atom.d.ts +7 -0
  120. package/dist-lib/src/components/composed/chat/markdown.d.ts +22 -0
  121. package/dist-lib/src/components/composed/chat/recommendation/checkbox.d.ts +15 -0
  122. package/dist-lib/src/components/composed/chat/recommendation/constant.d.ts +6 -0
  123. package/dist-lib/src/components/composed/chat/recommendation/default.d.ts +7 -0
  124. package/dist-lib/src/components/composed/chat/recommendation/group.d.ts +8 -0
  125. package/dist-lib/src/components/composed/chat/recommendation/index.d.ts +15 -0
  126. package/dist-lib/src/components/composed/chat/recommendation/item.d.ts +12 -0
  127. package/dist-lib/src/components/composed/chat/recommendation/types.d.ts +53 -0
  128. package/dist-lib/src/components/composed/chat/records-table.d.ts +38 -0
  129. package/dist-lib/src/components/composed/chat/type.d.ts +86 -0
  130. package/dist-lib/src/components/composed/code-block.story.d.ts +3 -0
  131. package/dist-lib/src/components/composed/context-cards.story.d.ts +3 -0
  132. package/dist-lib/src/components/composed/emoji-action-bar.story.d.ts +3 -0
  133. package/dist-lib/src/components/composed/filter-table.story.d.ts +7 -0
  134. package/dist-lib/src/components/composed/flowchart.story.d.ts +3 -0
  135. package/dist-lib/src/components/composed/insight-cards.story.d.ts +3 -0
  136. package/dist-lib/src/components/composed/logo.story.d.ts +3 -0
  137. package/dist-lib/src/components/composed/markdown.story.d.ts +3 -0
  138. package/dist-lib/src/components/composed/password-input.story.d.ts +7 -0
  139. package/dist-lib/src/components/composed/reader/applied-mark.d.ts +3 -0
  140. package/dist-lib/src/components/composed/reader/apply-toast.d.ts +3 -0
  141. package/dist-lib/src/components/composed/reader/index.d.ts +7 -0
  142. package/dist-lib/src/components/composed/reader/selection-highlight.d.ts +3 -0
  143. package/dist-lib/src/components/composed/reader/selection-popover.d.ts +9 -0
  144. package/dist-lib/src/components/composed/reader/type.d.ts +40 -0
  145. package/dist-lib/src/components/composed/recommendation-card.story.d.ts +3 -0
  146. package/dist-lib/src/components/composed/records-table.story.d.ts +3 -0
  147. package/dist-lib/src/components/composed/research-answer.story.d.ts +3 -0
  148. package/dist-lib/src/components/composed/social-providers.story.d.ts +3 -0
  149. package/dist-lib/src/components/composed/streaming-text.story.d.ts +3 -0
  150. package/dist-lib/src/components/composed/tree/__tests__/tree-atom.test.d.ts +1 -0
  151. package/dist-lib/src/components/composed/tree/__tests__/tree.test.d.ts +1 -0
  152. package/dist-lib/src/components/composed/tree/__tests__/use-tree.test.d.ts +1 -0
  153. package/dist-lib/src/components/composed/tree.story.d.ts +6 -0
  154. package/dist-lib/src/components/composed/user/index.d.ts +11 -0
  155. package/dist-lib/src/components/composed/user/info.d.ts +12 -0
  156. package/dist-lib/src/components/composed/user/message.d.ts +3 -0
  157. package/dist-lib/src/components/composed/user/pill.d.ts +10 -0
  158. package/dist-lib/src/components/composed/user/types.d.ts +20 -0
  159. package/dist-lib/src/components/composed/user/utils.d.ts +1 -0
  160. package/dist-lib/src/components/composed/user.story.d.ts +8 -0
  161. package/dist-lib/src/components/composed/verse/__tests__/verse.test.d.ts +1 -0
  162. package/dist-lib/src/components/composed/verse/index.d.ts +2 -0
  163. package/dist-lib/src/components/composed/verse/types.d.ts +18 -0
  164. package/dist-lib/src/components/composed/verse/verse.d.ts +5 -0
  165. package/dist-lib/src/components/composed/verse.story.d.ts +3 -0
  166. package/dist-lib/src/components/docs/atoms-gallery.d.ts +3 -0
  167. package/dist-lib/{components → src/components}/docs/demo-controls.d.ts +3 -10
  168. package/dist-lib/src/components/docs/hero.d.ts +5 -0
  169. package/dist-lib/src/components/docs/mermaid.d.ts +3 -0
  170. package/dist-lib/src/components/icons/__tests__/icons.test.d.ts +1 -0
  171. package/dist-lib/src/components/motion/index.d.ts +1 -0
  172. package/dist-lib/src/components/ui/accordion.d.ts +7 -0
  173. package/dist-lib/src/components/ui/alert-dialog.d.ts +20 -0
  174. package/dist-lib/src/components/ui/alert.d.ts +10 -0
  175. package/dist-lib/src/components/ui/autocomplete.d.ts +34 -0
  176. package/dist-lib/src/components/ui/avatar.d.ts +11 -0
  177. package/dist-lib/src/components/ui/avatar.story.d.ts +7 -0
  178. package/dist-lib/src/components/ui/badge.d.ts +14 -0
  179. package/dist-lib/src/components/ui/bubble.story.d.ts +7 -0
  180. package/dist-lib/{components → src/components}/ui/button.d.ts +1 -1
  181. package/dist-lib/src/components/ui/button.story.d.ts +8 -0
  182. package/dist-lib/src/components/ui/card.story.d.ts +9 -0
  183. package/dist-lib/src/components/ui/chat/__tests__/segmented-toggle.test.d.ts +1 -0
  184. package/dist-lib/src/components/ui/chat/avatar-handle.d.ts +13 -0
  185. package/dist-lib/src/components/ui/chat/badges.d.ts +29 -0
  186. package/dist-lib/src/components/ui/chat/buttons.d.ts +29 -0
  187. package/dist-lib/src/components/ui/chat/chips.d.ts +48 -0
  188. package/dist-lib/src/components/ui/chat/dot.d.ts +30 -0
  189. package/dist-lib/src/components/ui/chat/icon-button.d.ts +18 -0
  190. package/dist-lib/src/components/ui/chat/icon-tile.d.ts +20 -0
  191. package/dist-lib/src/components/ui/chat/index.d.ts +12 -0
  192. package/dist-lib/src/components/ui/chat/inline-source.d.ts +20 -0
  193. package/dist-lib/src/components/ui/chat/segmented-toggle.d.ts +20 -0
  194. package/dist-lib/src/components/ui/chat/tag.d.ts +21 -0
  195. package/dist-lib/src/components/ui/chat/thumbnail.d.ts +13 -0
  196. package/dist-lib/src/components/ui/chat/waveform.d.ts +13 -0
  197. package/dist-lib/src/components/ui/chat-atoms.story.d.ts +22 -0
  198. package/dist-lib/src/components/ui/checkbox.story.d.ts +7 -0
  199. package/dist-lib/src/components/ui/collapsible.d.ts +6 -0
  200. package/dist-lib/src/components/ui/command.d.ts +25 -0
  201. package/dist-lib/src/components/ui/context-menu.d.ts +42 -0
  202. package/dist-lib/src/components/ui/emoji-picker.d.ts +7 -0
  203. package/dist-lib/src/components/ui/field.story.d.ts +7 -0
  204. package/dist-lib/src/components/ui/file-icons.story.d.ts +7 -0
  205. package/dist-lib/src/components/ui/frame.story.d.ts +9 -0
  206. package/dist-lib/{components → src/components}/ui/glasscn/glass-container.d.ts +7 -2
  207. package/dist-lib/src/components/ui/input-group.story.d.ts +7 -0
  208. package/dist-lib/src/components/ui/input.story.d.ts +9 -0
  209. package/dist-lib/src/components/ui/kbd.d.ts +3 -0
  210. package/dist-lib/src/components/ui/label.story.d.ts +9 -0
  211. package/dist-lib/src/components/ui/menu-command.d.ts +37 -0
  212. package/dist-lib/src/components/ui/menu-command.story.d.ts +7 -0
  213. package/dist-lib/src/components/ui/otp-field.story.d.ts +9 -0
  214. package/dist-lib/src/components/ui/password-input.story.d.ts +3 -0
  215. package/dist-lib/src/components/ui/popover-glass.d.ts +32 -0
  216. package/dist-lib/src/components/ui/popover.d.ts +18 -0
  217. package/dist-lib/src/components/ui/preview-card.d.ts +11 -0
  218. package/dist-lib/src/components/ui/reference.story.d.ts +10 -0
  219. package/dist-lib/src/components/ui/scroll-area.d.ts +11 -0
  220. package/dist-lib/{components → src/components}/ui/select.d.ts +1 -1
  221. package/dist-lib/src/components/ui/separator.story.d.ts +7 -0
  222. package/dist-lib/src/components/ui/tabs.d.ts +15 -0
  223. package/dist-lib/src/components/ui/text.story.d.ts +9 -0
  224. package/dist-lib/src/components/ui/textarea.story.d.ts +7 -0
  225. package/dist-lib/src/components/ui/toast.d.ts +15 -0
  226. package/dist-lib/src/components/ui/toolbar.d.ts +9 -0
  227. package/dist-lib/src/components/ui/tooltip.d.ts +14 -0
  228. package/dist-lib/{index.d.ts → src/index.d.ts} +13 -4
  229. package/dist-lib/{lib → src/lib}/ease.d.ts +9 -0
  230. package/dist-lib/src/lib/hooks/use-mobile.d.ts +1 -0
  231. package/dist-lib/src/lib/keyed-atom.d.ts +14 -0
  232. package/dist-lib/src/lib/segmented-control.d.ts +8 -0
  233. package/dist-lib/src/lib/utils.test.d.ts +1 -0
  234. package/package.json +40 -21
  235. package/src/assets/css/base.css +62 -0
  236. package/src/assets/css/chat.css +229 -0
  237. package/src/assets/css/shadows.css +157 -0
  238. package/src/assets/css/theme.css +321 -0
  239. package/src/components/AGENTS.md +0 -0
  240. package/src/components/atoms/_layout.tsx +9 -0
  241. package/src/components/atoms/avatar/base.tsx +70 -0
  242. package/src/components/atoms/avatar/index.ts +3 -0
  243. package/src/components/atoms/avatar/types.ts +24 -0
  244. package/src/components/atoms/avatar/utils.ts +54 -0
  245. package/src/components/atoms/avatar/verified.tsx +16 -0
  246. package/src/components/atoms/background/index.ts +8 -0
  247. package/src/components/atoms/background/texture.tsx +29 -0
  248. package/src/components/atoms/background/type.ts +10 -0
  249. package/src/components/atoms/background/utils.ts +13 -0
  250. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +138 -0
  251. package/src/components/atoms/bubble/__tests__/reference.test.tsx +25 -0
  252. package/src/components/atoms/bubble/actions.tsx +28 -0
  253. package/src/components/atoms/bubble/context.ts +11 -0
  254. package/src/components/atoms/bubble/default.tsx +46 -0
  255. package/src/components/atoms/bubble/header.tsx +34 -0
  256. package/src/components/atoms/bubble/index.ts +37 -0
  257. package/src/components/atoms/bubble/message.tsx +25 -0
  258. package/src/components/atoms/bubble/reactions.tsx +194 -0
  259. package/src/components/atoms/bubble/types.ts +79 -0
  260. package/src/components/atoms/bubble/utils.ts +46 -0
  261. package/src/components/atoms/chip.tsx +61 -0
  262. package/src/components/atoms/index.ts +52 -0
  263. package/src/components/atoms/loader.tsx +42 -0
  264. package/src/components/atoms/reference.tsx +41 -0
  265. package/src/components/atoms/text/__tests__/text.test.tsx +47 -0
  266. package/src/components/atoms/text/default.tsx +59 -0
  267. package/src/components/atoms/text/heading.tsx +61 -0
  268. package/src/components/atoms/text/index.ts +24 -0
  269. package/src/components/atoms/text/label.tsx +16 -0
  270. package/src/components/atoms/text/paragraph.tsx +58 -0
  271. package/src/components/atoms/text/span.tsx +15 -0
  272. package/src/components/atoms/text/types.ts +31 -0
  273. package/src/components/atoms/text/utils.ts +16 -0
  274. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +61 -0
  275. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +90 -0
  276. package/src/components/atoms/text-selection/click-popover.tsx +62 -0
  277. package/src/components/atoms/text-selection/index.ts +30 -0
  278. package/src/components/atoms/text-selection/popover.tsx +100 -0
  279. package/src/components/atoms/text-selection/selection-atom.ts +51 -0
  280. package/src/components/atoms/text-selection/selection.tsx +56 -0
  281. package/src/components/atoms/text-selection/types.ts +125 -0
  282. package/src/components/atoms/text-selection/use-selection.ts +84 -0
  283. package/src/components/atoms/types.ts +18 -0
  284. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +1 -1
  285. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +1 -1
  286. package/src/components/blocks/auth/auth-flow-block.story.tsx +17 -0
  287. package/src/components/blocks/auth/code-auth-block.story.tsx +20 -0
  288. package/src/components/blocks/auth/forgot-password-block.story.tsx +14 -0
  289. package/src/components/blocks/auth/linked-accounts-block.story.tsx +23 -0
  290. package/src/components/blocks/auth/linked-accounts-block.tsx +1 -1
  291. package/src/components/blocks/auth/login-block.story.tsx +18 -0
  292. package/src/components/blocks/auth/onboarding/profile-step.tsx +1 -1
  293. package/src/components/blocks/auth/onboarding-block.story.tsx +14 -0
  294. package/src/components/blocks/auth/passkey-manager-block.story.tsx +18 -0
  295. package/src/components/blocks/auth/passkey-manager-block.tsx +2 -2
  296. package/src/components/blocks/auth/passkey-sign-in-block.story.tsx +14 -0
  297. package/src/components/blocks/auth/signup-block.story.tsx +18 -0
  298. package/src/components/blocks/auth/update-password-block.story.tsx +14 -0
  299. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +65 -0
  300. package/src/components/blocks/chat/banners.tsx +69 -0
  301. package/src/components/blocks/chat/base.story.tsx +19 -0
  302. package/src/components/blocks/chat/base.tsx +84 -0
  303. package/src/components/blocks/chat/header.tsx +60 -0
  304. package/src/components/blocks/chat/index.ts +39 -0
  305. package/src/components/blocks/chat/recommendation-stack.tsx +43 -0
  306. package/src/components/blocks/chat/shared.tsx +27 -0
  307. package/src/components/blocks/chat/suggested-prompts.tsx +45 -0
  308. package/src/components/blocks/chat/types.ts +81 -0
  309. package/src/components/blocks/chat/version-history-record.tsx +37 -0
  310. package/src/components/blocks/nav/sidebar/__tests__/ai-sidebar-atom.test.tsx +1 -1
  311. package/src/components/blocks/nav/sidebar/sidebar-row.tsx +2 -2
  312. package/src/components/blocks/nav/sidebar/use-ai-sidebar.ts +193 -190
  313. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +208 -176
  314. package/src/components/blocks/profile/profile-card-block.story.tsx +18 -0
  315. package/src/components/blocks/profile/profile-card-block.tsx +15 -17
  316. package/src/components/blocks/profile/type.ts +3 -5
  317. package/src/components/blocks/profile/use-profile-card.ts +17 -11
  318. package/src/components/blocks/scaffold/scaffold-canvas.tsx +4 -1
  319. package/src/components/blocks/scaffold/scaffold-root.story.tsx +36 -0
  320. package/src/components/blocks/scaffold/scaffold-root.tsx +9 -6
  321. package/src/components/blocks/scaffold/utils.ts +1 -1
  322. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +4 -4
  323. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +3 -3
  324. package/src/components/blocks/shell/animated-panel-inset.tsx +1 -1
  325. package/src/components/blocks/shell/shell-layout.story.tsx +19 -0
  326. package/src/components/blocks/shell/shell-layout.tsx +1 -1
  327. package/src/components/blocks/shell/use-shell-fit-state.ts +2 -2
  328. package/src/components/blocks/shell/use-shell-fit.ts +2 -2
  329. package/src/components/blocks/shell/use-shell-panels.ts +3 -3
  330. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +96 -0
  331. package/src/components/composed/action-bar/action.tsx +80 -0
  332. package/src/components/composed/action-bar/emojis.tsx +97 -0
  333. package/src/components/composed/action-bar/index.ts +24 -0
  334. package/src/components/composed/action-bar/toolbar.tsx +60 -0
  335. package/src/components/composed/action-bar/types.ts +58 -0
  336. package/src/components/composed/action-bar/utils.ts +141 -0
  337. package/src/components/composed/ai/__tests__/ai.test.tsx +67 -0
  338. package/src/components/composed/ai/avatar.tsx +20 -0
  339. package/src/components/composed/ai/index.ts +36 -0
  340. package/src/components/composed/ai/message.tsx +49 -0
  341. package/src/components/composed/ai/research-answer.tsx +157 -0
  342. package/src/components/composed/ai/shared.tsx +94 -0
  343. package/src/components/composed/ai/streaming-text.tsx +94 -0
  344. package/src/components/composed/ai/suggested-prompt.tsx +183 -0
  345. package/src/components/composed/ai/types.ts +81 -0
  346. package/src/components/composed/attachment.story.tsx +52 -0
  347. package/src/components/composed/chart.story.tsx +46 -0
  348. package/src/components/composed/chat/__tests__/attachment.test.tsx +45 -0
  349. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +57 -0
  350. package/src/components/composed/chat/__tests__/chart.test.tsx +29 -0
  351. package/src/components/composed/chat/__tests__/code-block.test.tsx +12 -0
  352. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +53 -0
  353. package/src/components/composed/chat/__tests__/composer.test.tsx +81 -0
  354. package/src/components/composed/chat/__tests__/flowchart.test.tsx +132 -0
  355. package/src/components/composed/chat/__tests__/markdown.test.tsx +25 -0
  356. package/src/components/composed/chat/actions.tsx +81 -0
  357. package/src/components/composed/chat/attachment.tsx +228 -0
  358. package/src/components/composed/chat/chart.tsx +193 -0
  359. package/src/components/composed/chat/code-block.tsx +123 -0
  360. package/src/components/composed/chat/composer/add-button.tsx +22 -0
  361. package/src/components/composed/chat/composer/base.tsx +248 -0
  362. package/src/components/composed/chat/composer/command-menu.tsx +42 -0
  363. package/src/components/composed/chat/composer/hooks.ts +29 -0
  364. package/src/components/composed/chat/composer/index.ts +19 -0
  365. package/src/components/composed/chat/composer/send-button.tsx +44 -0
  366. package/src/components/composed/chat/composer/suggestions.tsx +115 -0
  367. package/src/components/composed/chat/composer/utils.ts +74 -0
  368. package/src/components/composed/chat/context-cards.tsx +63 -0
  369. package/src/components/composed/chat/filter-table.tsx +119 -0
  370. package/src/components/composed/chat/flowchart/chart-node.tsx +162 -0
  371. package/src/components/composed/chat/flowchart/connector.tsx +32 -0
  372. package/src/components/composed/chat/flowchart/constant.ts +26 -0
  373. package/src/components/composed/chat/flowchart/default.tsx +230 -0
  374. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +73 -0
  375. package/src/components/composed/chat/flowchart/hooks.tsx +345 -0
  376. package/src/components/composed/chat/flowchart/index.ts +14 -0
  377. package/src/components/composed/chat/flowchart/step-body.tsx +82 -0
  378. package/src/components/composed/chat/flowchart/types.ts +89 -0
  379. package/src/components/composed/chat/flowchart/utils.ts +78 -0
  380. package/src/components/composed/chat/hint.tsx +59 -0
  381. package/src/components/composed/chat/index.ts +96 -0
  382. package/src/components/composed/chat/insight-cards.tsx +199 -0
  383. package/src/components/composed/chat/markdown-atom.ts +15 -0
  384. package/src/components/composed/chat/markdown.tsx +213 -0
  385. package/src/components/composed/chat/recommendation/checkbox.tsx +133 -0
  386. package/src/components/composed/chat/recommendation/constant.ts +25 -0
  387. package/src/components/composed/chat/recommendation/default.tsx +25 -0
  388. package/src/components/composed/chat/recommendation/group.tsx +43 -0
  389. package/src/components/composed/chat/recommendation/index.ts +19 -0
  390. package/src/components/composed/chat/recommendation/item.tsx +244 -0
  391. package/src/components/composed/chat/recommendation/types.ts +65 -0
  392. package/src/components/composed/chat/records-table.tsx +128 -0
  393. package/src/components/composed/chat/type.ts +126 -0
  394. package/src/components/composed/code-block.story.tsx +29 -0
  395. package/src/components/composed/context-cards.story.tsx +30 -0
  396. package/src/components/composed/emoji-action-bar.story.tsx +20 -0
  397. package/src/components/composed/filter-table.story.tsx +58 -0
  398. package/src/components/composed/flowchart.story.tsx +24 -0
  399. package/src/components/composed/insight-cards.story.tsx +51 -0
  400. package/src/components/composed/logo.story.tsx +21 -0
  401. package/src/components/composed/logo.tsx +24 -12
  402. package/src/components/composed/markdown.story.tsx +21 -0
  403. package/src/components/composed/password-input.story.tsx +38 -0
  404. package/src/components/composed/reader/applied-mark.tsx +32 -0
  405. package/src/components/composed/reader/apply-toast.tsx +49 -0
  406. package/src/components/composed/reader/index.ts +10 -0
  407. package/src/components/composed/reader/selection-highlight.tsx +26 -0
  408. package/src/components/composed/reader/selection-popover.tsx +149 -0
  409. package/src/components/composed/reader/type.ts +48 -0
  410. package/src/components/composed/recommendation-card.story.tsx +32 -0
  411. package/src/components/composed/records-table.story.tsx +46 -0
  412. package/src/components/composed/research-answer.story.tsx +32 -0
  413. package/src/components/composed/social-providers.story.tsx +24 -0
  414. package/src/components/composed/streaming-text.story.tsx +24 -0
  415. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +1 -1
  416. package/src/components/composed/tree/__tests__/tree.test.tsx +1 -1
  417. package/src/components/composed/tree/tree-node.tsx +1 -1
  418. package/src/components/composed/tree/use-tree.ts +20 -16
  419. package/src/components/composed/tree.story.tsx +31 -0
  420. package/src/components/composed/user/index.ts +14 -0
  421. package/src/components/composed/user/info.tsx +48 -0
  422. package/src/components/composed/user/message.tsx +10 -0
  423. package/src/components/composed/user/pill.tsx +20 -0
  424. package/src/components/composed/user/types.ts +27 -0
  425. package/src/components/composed/user/utils.ts +0 -0
  426. package/src/components/composed/user.story.tsx +29 -0
  427. package/src/components/composed/verse/__tests__/verse.test.tsx +57 -0
  428. package/src/components/composed/verse/index.ts +2 -0
  429. package/src/components/composed/verse/types.ts +24 -0
  430. package/src/components/composed/verse/verse.tsx +100 -0
  431. package/src/components/composed/verse.story.tsx +21 -0
  432. package/src/components/docs/atoms-gallery.tsx +286 -0
  433. package/src/components/docs/code-block.tsx +2 -0
  434. package/src/components/docs/demo-controls.tsx +20 -20
  435. package/src/components/docs/hero.tsx +198 -0
  436. package/src/components/docs/mermaid.tsx +55 -0
  437. package/src/components/ui/accordion.tsx +68 -0
  438. package/src/components/ui/alert-dialog.tsx +167 -0
  439. package/src/components/ui/alert.tsx +84 -0
  440. package/src/components/ui/autocomplete.tsx +303 -0
  441. package/src/components/ui/avatar.story.tsx +33 -0
  442. package/src/components/ui/avatar.tsx +81 -24
  443. package/src/components/ui/badge.tsx +73 -24
  444. package/src/components/ui/bubble.story.tsx +45 -0
  445. package/src/components/ui/button-group.tsx +4 -4
  446. package/src/components/ui/button.story.tsx +62 -0
  447. package/src/components/ui/button.tsx +3 -3
  448. package/src/components/ui/card.story.tsx +36 -0
  449. package/src/components/ui/card.tsx +2 -2
  450. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +27 -0
  451. package/src/components/ui/chat/avatar-handle.tsx +30 -0
  452. package/src/components/ui/chat/badges.tsx +85 -0
  453. package/src/components/ui/chat/buttons.tsx +94 -0
  454. package/src/components/ui/chat/chips.tsx +106 -0
  455. package/src/components/ui/chat/dot.tsx +81 -0
  456. package/src/components/ui/chat/icon-button.tsx +43 -0
  457. package/src/components/ui/chat/icon-tile.tsx +33 -0
  458. package/src/components/ui/chat/index.ts +12 -0
  459. package/src/components/ui/chat/inline-source.tsx +94 -0
  460. package/src/components/ui/chat/segmented-toggle.tsx +99 -0
  461. package/src/components/ui/chat/tag.tsx +61 -0
  462. package/src/components/ui/chat/thumbnail.tsx +31 -0
  463. package/src/components/ui/chat/waveform.tsx +30 -0
  464. package/src/components/ui/chat-atoms.story.tsx +94 -0
  465. package/src/components/ui/checkbox.story.tsx +30 -0
  466. package/src/components/ui/collapsible.tsx +42 -0
  467. package/src/components/ui/command.tsx +263 -0
  468. package/src/components/ui/context-menu.tsx +342 -0
  469. package/src/components/ui/emoji-picker.tsx +161 -0
  470. package/src/components/ui/field.story.tsx +32 -0
  471. package/src/components/ui/file-icons.story.tsx +24 -0
  472. package/src/components/ui/frame.story.tsx +32 -0
  473. package/src/components/ui/frame.tsx +2 -2
  474. package/src/components/ui/glasscn/glass-container.tsx +9 -3
  475. package/src/components/ui/glasscn/liquid-glass.tsx +5 -5
  476. package/src/components/ui/group.tsx +1 -1
  477. package/src/components/ui/input-group.story.tsx +27 -0
  478. package/src/components/ui/input-group.tsx +1 -1
  479. package/src/components/ui/input.story.tsx +42 -0
  480. package/src/components/ui/input.tsx +1 -1
  481. package/src/components/ui/kbd.tsx +32 -0
  482. package/src/components/ui/label.story.tsx +32 -0
  483. package/src/components/ui/menu-command.story.tsx +37 -0
  484. package/src/components/ui/menu-command.tsx +128 -0
  485. package/src/components/ui/otp-field.story.tsx +35 -0
  486. package/src/components/ui/otp-field.tsx +1 -1
  487. package/src/components/ui/password-input.story.tsx +19 -0
  488. package/src/components/ui/popover-glass.tsx +161 -0
  489. package/src/components/ui/popover.tsx +120 -0
  490. package/src/components/ui/preview-card.tsx +61 -0
  491. package/src/components/ui/reference.story.tsx +33 -0
  492. package/src/components/ui/scroll-area.tsx +80 -0
  493. package/src/components/ui/select.tsx +1 -1
  494. package/src/components/ui/separator.story.tsx +34 -0
  495. package/src/components/ui/tabs.tsx +120 -0
  496. package/src/components/ui/text.story.tsx +31 -0
  497. package/src/components/ui/textarea.story.tsx +34 -0
  498. package/src/components/ui/textarea.tsx +1 -1
  499. package/src/components/ui/toast.tsx +325 -0
  500. package/src/components/ui/toolbar.tsx +92 -0
  501. package/src/components/ui/tooltip.tsx +40 -39
  502. package/src/index.css +6 -250
  503. package/src/index.ts +25 -31
  504. package/src/lib/ease.ts +11 -0
  505. package/src/lib/hooks/use-mobile.ts +21 -0
  506. package/src/lib/keyed-atom.ts +60 -0
  507. package/src/lib/segmented-control.ts +42 -0
  508. package/src/{state → lib/state}/exegia-provider.tsx +5 -1
  509. package/src/lib/utils.ts +93 -1
  510. package/dist-lib/components/beste/piece/browser-frame.d.ts +0 -2
  511. package/dist-lib/components/beste/piece/type.d.ts +0 -9
  512. package/dist-lib/components/beste/piece/utils.d.ts +0 -3
  513. package/dist-lib/components/composed/user-avatar.d.ts +0 -7
  514. package/dist-lib/components/docs/component-preview.d.ts +0 -10
  515. package/dist-lib/components/docs/props-table.d.ts +0 -4
  516. package/dist-lib/components/ui/avatar.d.ts +0 -6
  517. package/dist-lib/components/ui/badge.d.ts +0 -7
  518. package/dist-lib/components/ui/tooltip.d.ts +0 -6
  519. package/dist-lib/components/user-avatar/audio-wave.d.ts +0 -2
  520. package/dist-lib/components/user-avatar/component.d.ts +0 -3
  521. package/dist-lib/components/user-avatar/fallback.d.ts +0 -5
  522. package/dist-lib/components/user-avatar/index.d.ts +0 -18
  523. package/dist-lib/components/user-avatar/presence-badge.d.ts +0 -16
  524. package/dist-lib/components/user-avatar/type.d.ts +0 -79
  525. package/dist-lib/components/user-avatar/use-user-avatar-state.d.ts +0 -26
  526. package/dist-lib/components/user-avatar/use-user-avatar.d.ts +0 -37
  527. package/dist-lib/components/user-avatar/user-avatar-atom.d.ts +0 -64
  528. package/dist-lib/components/user-avatar/utils.d.ts +0 -24
  529. package/src/components/beste/piece/browser-frame.tsx +0 -58
  530. package/src/components/beste/piece/type.ts +0 -11
  531. package/src/components/beste/piece/utils.ts +0 -21
  532. package/src/components/composed/__tests__/user-avatar.test.tsx +0 -85
  533. package/src/components/composed/user-avatar.tsx +0 -13
  534. package/src/components/docs/component-preview.tsx +0 -34
  535. package/src/components/docs/props-table.tsx +0 -35
  536. package/src/components/user-avatar/__tests__/user-avatar.test.tsx +0 -286
  537. package/src/components/user-avatar/audio-wave.tsx +0 -22
  538. package/src/components/user-avatar/component.tsx +0 -182
  539. package/src/components/user-avatar/fallback.tsx +0 -28
  540. package/src/components/user-avatar/index.ts +0 -34
  541. package/src/components/user-avatar/presence-badge.tsx +0 -56
  542. package/src/components/user-avatar/type.ts +0 -93
  543. package/src/components/user-avatar/use-user-avatar-state.ts +0 -60
  544. package/src/components/user-avatar/use-user-avatar.ts +0 -180
  545. package/src/components/user-avatar/user-avatar-atom.ts +0 -218
  546. package/src/components/user-avatar/utils.ts +0 -102
  547. /package/dist-lib/{components/blocks/auth/__tests__/auth-flow-block.test.d.ts → src/components/atoms/bubble/__tests__/bubble.test.d.ts} +0 -0
  548. /package/dist-lib/{components/blocks/auth/__tests__/auth-state-atom.test.d.ts → src/components/atoms/bubble/__tests__/reference.test.d.ts} +0 -0
  549. /package/dist-lib/{components/blocks/auth/__tests__/passkey-manager-block.test.d.ts → src/components/atoms/text/__tests__/text.test.d.ts} +0 -0
  550. /package/dist-lib/{components/blocks/auth/__tests__/linked-accounts-block.test.d.ts → src/components/atoms/text-selection/__tests__/click-popover.test.d.ts} +0 -0
  551. /package/dist-lib/{components/blocks/auth/__tests__/onboarding-block.test.d.ts → src/components/atoms/text-selection/__tests__/text-selection.test.d.ts} +0 -0
  552. /package/dist-lib/{components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts → src/components/blocks/auth/__tests__/auth-flow-block.test.d.ts} +0 -0
  553. /package/dist-lib/{components/blocks/auth/__tests__/signup-block.test.d.ts → src/components/blocks/auth/__tests__/auth-state-atom.test.d.ts} +0 -0
  554. /package/dist-lib/{components/blocks/auth/__tests__/update-password-block.test.d.ts → src/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts} +0 -0
  555. /package/dist-lib/{components/blocks/nav/sidebar/__tests__/ai-sidebar-atom.test.d.ts → src/components/blocks/auth/__tests__/onboarding-block.test.d.ts} +0 -0
  556. /package/dist-lib/{components/blocks/nav/sidebar/__tests__/ai-sidebar.test.d.ts → src/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts} +0 -0
  557. /package/dist-lib/{components/blocks/nav/sidebar/__tests__/use-ai-sidebar.test.d.ts → src/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts} +0 -0
  558. /package/dist-lib/{components/blocks/profile/__tests__/profile-card-block.test.d.ts → src/components/blocks/auth/__tests__/signup-block.test.d.ts} +0 -0
  559. /package/dist-lib/{components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts → src/components/blocks/auth/__tests__/update-password-block.test.d.ts} +0 -0
  560. /package/dist-lib/{components → src/components}/blocks/auth/auth-flow-atom.d.ts +0 -0
  561. /package/dist-lib/{components → src/components}/blocks/auth/auth-flow-block.d.ts +0 -0
  562. /package/dist-lib/{components → src/components}/blocks/auth/auth-session-atom.d.ts +0 -0
  563. /package/dist-lib/{components → src/components}/blocks/auth/auth-shell.d.ts +0 -0
  564. /package/dist-lib/{components → src/components}/blocks/auth/auth-state-type.d.ts +0 -0
  565. /package/dist-lib/{components → src/components}/blocks/auth/auth-state.d.ts +0 -0
  566. /package/dist-lib/{components → src/components}/blocks/auth/code-auth-block.d.ts +0 -0
  567. /package/dist-lib/{components → src/components}/blocks/auth/forgot-password-block.d.ts +0 -0
  568. /package/dist-lib/{components → src/components}/blocks/auth/linked-accounts-block.d.ts +0 -0
  569. /package/dist-lib/{components → src/components}/blocks/auth/login-block.d.ts +0 -0
  570. /package/dist-lib/{components → src/components}/blocks/auth/onboarding/profile-step.d.ts +0 -0
  571. /package/dist-lib/{components → src/components}/blocks/auth/onboarding-block.d.ts +0 -0
  572. /package/dist-lib/{components → src/components}/blocks/auth/passkey-manager-block.d.ts +0 -0
  573. /package/dist-lib/{components → src/components}/blocks/auth/passkey-sign-in-block.d.ts +0 -0
  574. /package/dist-lib/{components → src/components}/blocks/auth/signup-block.d.ts +0 -0
  575. /package/dist-lib/{components → src/components}/blocks/auth/update-password-block.d.ts +0 -0
  576. /package/dist-lib/{components → src/components}/blocks/auth/use-auth-state.d.ts +0 -0
  577. /package/dist-lib/{components/blocks/scaffold/__tests__/scaffold.test.d.ts → src/components/blocks/chat/__tests__/ai-panel.test.d.ts} +0 -0
  578. /package/dist-lib/{components → src/components}/blocks/layout.d.ts +0 -0
  579. /package/dist-lib/{components/blocks/shell/__tests__/shell-fit-atom.test.d.ts → src/components/blocks/nav/sidebar/__tests__/ai-sidebar-atom.test.d.ts} +0 -0
  580. /package/dist-lib/{components/blocks/shell/__tests__/shell-layout.test.d.ts → src/components/blocks/nav/sidebar/__tests__/ai-sidebar.test.d.ts} +0 -0
  581. /package/dist-lib/{components/blocks/shell/__tests__/shell-metrics.test.d.ts → src/components/blocks/nav/sidebar/__tests__/use-ai-sidebar.test.d.ts} +0 -0
  582. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/ai-sidebar-atom.d.ts +0 -0
  583. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/ai-sidebar.d.ts +0 -0
  584. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/index.d.ts +0 -0
  585. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/marquee-label.d.ts +0 -0
  586. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/sidebar-context.d.ts +0 -0
  587. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/sidebar-icon.d.ts +0 -0
  588. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/sidebar-row.d.ts +0 -0
  589. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/type.d.ts +0 -0
  590. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/use-ai-sidebar-state.d.ts +0 -0
  591. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/use-ai-sidebar.d.ts +0 -0
  592. /package/dist-lib/{components → src/components}/blocks/nav/sidebar/utils.d.ts +0 -0
  593. /package/dist-lib/{components/composed/__tests__/logo.test.d.ts → src/components/blocks/profile/__tests__/profile-card-block.test.d.ts} +0 -0
  594. /package/dist-lib/{components → src/components}/blocks/profile/index.d.ts +0 -0
  595. /package/dist-lib/{components → src/components}/blocks/profile/profile-card-atom.d.ts +0 -0
  596. /package/dist-lib/{components → src/components}/blocks/profile/use-profile-card-state.d.ts +0 -0
  597. /package/dist-lib/{components → src/components}/blocks/profile/use-profile-card.d.ts +0 -0
  598. /package/dist-lib/{components/composed/__tests__/user-avatar.test.d.ts → src/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts} +0 -0
  599. /package/dist-lib/{components/composed/tree/__tests__/tree-atom.test.d.ts → src/components/blocks/scaffold/__tests__/scaffold.test.d.ts} +0 -0
  600. /package/dist-lib/{components → src/components}/blocks/scaffold/constants.d.ts +0 -0
  601. /package/dist-lib/{components → src/components}/blocks/scaffold/index.d.ts +0 -0
  602. /package/dist-lib/{components → src/components}/blocks/scaffold/panel-close-button.d.ts +0 -0
  603. /package/dist-lib/{components → src/components}/blocks/scaffold/panel-menu-button.d.ts +0 -0
  604. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-actions.d.ts +0 -0
  605. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-atom.d.ts +0 -0
  606. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-canvas.d.ts +0 -0
  607. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-context.d.ts +0 -0
  608. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-inspector.d.ts +0 -0
  609. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-main.d.ts +0 -0
  610. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-panel.d.ts +0 -0
  611. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-root.d.ts +0 -0
  612. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-sidebar.d.ts +0 -0
  613. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-sub-panel.d.ts +0 -0
  614. /package/dist-lib/{components → src/components}/blocks/scaffold/scaffold-tab.d.ts +0 -0
  615. /package/dist-lib/{components → src/components}/blocks/scaffold/type.d.ts +0 -0
  616. /package/dist-lib/{components → src/components}/blocks/scaffold/use-scaffold-state.d.ts +0 -0
  617. /package/dist-lib/{components → src/components}/blocks/scaffold/use-scaffold.d.ts +0 -0
  618. /package/dist-lib/{components → src/components}/blocks/scaffold/utils.d.ts +0 -0
  619. /package/dist-lib/{components/composed/tree/__tests__/tree.test.d.ts → src/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts} +0 -0
  620. /package/dist-lib/{components/composed/tree/__tests__/use-tree.test.d.ts → src/components/blocks/shell/__tests__/shell-layout.test.d.ts} +0 -0
  621. /package/dist-lib/{components/icons/__tests__/icons.test.d.ts → src/components/blocks/shell/__tests__/shell-metrics.test.d.ts} +0 -0
  622. /package/dist-lib/{components → src/components}/blocks/shell/animated-panel-inset.d.ts +0 -0
  623. /package/dist-lib/{components → src/components}/blocks/shell/animated-panel-provider.d.ts +0 -0
  624. /package/dist-lib/{components → src/components}/blocks/shell/animated-panel-trigger.d.ts +0 -0
  625. /package/dist-lib/{components → src/components}/blocks/shell/animated-panel.d.ts +0 -0
  626. /package/dist-lib/{components → src/components}/blocks/shell/index.d.ts +0 -0
  627. /package/dist-lib/{components → src/components}/blocks/shell/shell-fit-atom.d.ts +0 -0
  628. /package/dist-lib/{components → src/components}/blocks/shell/shell-layout.d.ts +0 -0
  629. /package/dist-lib/{components → src/components}/blocks/shell/shell-metrics.d.ts +0 -0
  630. /package/dist-lib/{components → src/components}/blocks/shell/type.d.ts +0 -0
  631. /package/dist-lib/{components → src/components}/blocks/shell/use-shell-fit-state.d.ts +0 -0
  632. /package/dist-lib/{components → src/components}/blocks/shell/use-shell-fit.d.ts +0 -0
  633. /package/dist-lib/{components → src/components}/blocks/shell/use-shell-panels.d.ts +0 -0
  634. /package/dist-lib/{components → src/components}/blocks/shell/utils.d.ts +0 -0
  635. /package/dist-lib/{components/motion/index.d.ts → src/components/composed/__tests__/logo.test.d.ts} +0 -0
  636. /package/dist-lib/{components/user-avatar/__tests__/user-avatar.test.d.ts → src/components/composed/action-bar/__tests__/action-bar.test.d.ts} +0 -0
  637. /package/dist-lib/{lib/utils.test.d.ts → src/components/composed/ai/__tests__/ai.test.d.ts} +0 -0
  638. /package/dist-lib/{components → src/components}/composed/logo.d.ts +0 -0
  639. /package/dist-lib/{components → src/components}/composed/password-input.d.ts +0 -0
  640. /package/dist-lib/{components → src/components}/composed/social-providers.d.ts +0 -0
  641. /package/dist-lib/{components → src/components}/composed/tree/constants.d.ts +0 -0
  642. /package/dist-lib/{components → src/components}/composed/tree/index.d.ts +0 -0
  643. /package/dist-lib/{components → src/components}/composed/tree/tree-atom.d.ts +0 -0
  644. /package/dist-lib/{components → src/components}/composed/tree/tree-context.d.ts +0 -0
  645. /package/dist-lib/{components → src/components}/composed/tree/tree-node.d.ts +0 -0
  646. /package/dist-lib/{components → src/components}/composed/tree/tree.d.ts +0 -0
  647. /package/dist-lib/{components → src/components}/composed/tree/type.d.ts +0 -0
  648. /package/dist-lib/{components → src/components}/composed/tree/use-tree-dnd.d.ts +0 -0
  649. /package/dist-lib/{components → src/components}/composed/tree/use-tree-state.d.ts +0 -0
  650. /package/dist-lib/{components → src/components}/composed/tree/use-tree.d.ts +0 -0
  651. /package/dist-lib/{components → src/components}/composed/tree/utils.d.ts +0 -0
  652. /package/dist-lib/{components → src/components}/docs/code-block.d.ts +0 -0
  653. /package/dist-lib/{components → src/components}/icons/file-badge-cfm.d.ts +0 -0
  654. /package/dist-lib/{components → src/components}/icons/file-badge-corpus.d.ts +0 -0
  655. /package/dist-lib/{components → src/components}/icons/file-badge-pdf.d.ts +0 -0
  656. /package/dist-lib/{components → src/components}/icons/file-badge-tei.d.ts +0 -0
  657. /package/dist-lib/{components → src/components}/icons/file-badge-tf.d.ts +0 -0
  658. /package/dist-lib/{components → src/components}/icons/file-badge-txt.d.ts +0 -0
  659. /package/dist-lib/{components → src/components}/icons/file-badge-xml.d.ts +0 -0
  660. /package/dist-lib/{components → src/components}/icons/file-wordmark-cfm.d.ts +0 -0
  661. /package/dist-lib/{components → src/components}/icons/file-wordmark-corpus.d.ts +0 -0
  662. /package/dist-lib/{components → src/components}/icons/file-wordmark-pdf.d.ts +0 -0
  663. /package/dist-lib/{components → src/components}/icons/file-wordmark-tei.d.ts +0 -0
  664. /package/dist-lib/{components → src/components}/icons/file-wordmark-tf.d.ts +0 -0
  665. /package/dist-lib/{components → src/components}/icons/file-wordmark-txt.d.ts +0 -0
  666. /package/dist-lib/{components → src/components}/icons/file-wordmark-xml.d.ts +0 -0
  667. /package/dist-lib/{components → src/components}/icons/index.d.ts +0 -0
  668. /package/dist-lib/{components → src/components}/icons/types.d.ts +0 -0
  669. /package/dist-lib/{components → src/components}/motion/overflow-actions.d.ts +0 -0
  670. /package/dist-lib/{components → src/components}/motion/popover-morph.d.ts +0 -0
  671. /package/dist-lib/{components → src/components}/motion/popover-position.d.ts +0 -0
  672. /package/dist-lib/{components → src/components}/motion/shared-layout-bg.d.ts +0 -0
  673. /package/dist-lib/{components → src/components}/theme-provider.d.ts +0 -0
  674. /package/dist-lib/{components → src/components}/ui/button-group.d.ts +0 -0
  675. /package/dist-lib/{components → src/components}/ui/card.d.ts +0 -0
  676. /package/dist-lib/{components → src/components}/ui/checkbox.d.ts +0 -0
  677. /package/dist-lib/{components → src/components}/ui/field.d.ts +0 -0
  678. /package/dist-lib/{components → src/components}/ui/frame.d.ts +0 -0
  679. /package/dist-lib/{components → src/components}/ui/glasscn/glass-button-group.d.ts +0 -0
  680. /package/dist-lib/{components → src/components}/ui/glasscn/glass-button.d.ts +0 -0
  681. /package/dist-lib/{components → src/components}/ui/glasscn/glass-separator.d.ts +0 -0
  682. /package/dist-lib/{components → src/components}/ui/glasscn/liquid-glass.d.ts +0 -0
  683. /package/dist-lib/{components → src/components}/ui/group.d.ts +0 -0
  684. /package/dist-lib/{components → src/components}/ui/input-group.d.ts +0 -0
  685. /package/dist-lib/{components → src/components}/ui/input.d.ts +0 -0
  686. /package/dist-lib/{components → src/components}/ui/label.d.ts +0 -0
  687. /package/dist-lib/{components → src/components}/ui/menu.d.ts +0 -0
  688. /package/dist-lib/{components → src/components}/ui/otp-field.d.ts +0 -0
  689. /package/dist-lib/{components → src/components}/ui/separator.d.ts +0 -0
  690. /package/dist-lib/{components → src/components}/ui/sheet.d.ts +0 -0
  691. /package/dist-lib/{components → src/components}/ui/skeleton.d.ts +0 -0
  692. /package/dist-lib/{components → src/components}/ui/spinner.d.ts +0 -0
  693. /package/dist-lib/{components → src/components}/ui/switch.d.ts +0 -0
  694. /package/dist-lib/{components → src/components}/ui/textarea.d.ts +0 -0
  695. /package/dist-lib/{lib → src/lib}/auth-accent.d.ts +0 -0
  696. /package/dist-lib/{lib → src/lib}/glass-variants.d.ts +0 -0
  697. /package/dist-lib/{lib → src/lib}/hooks/use-hover-capable.d.ts +0 -0
  698. /package/dist-lib/{lib → src/lib}/sound.d.ts +0 -0
  699. /package/dist-lib/{state → src/lib/state}/exegia-provider.d.ts +0 -0
  700. /package/dist-lib/{state → src/lib/state}/index.d.ts +0 -0
  701. /package/dist-lib/{state → src/lib/state}/store.d.ts +0 -0
  702. /package/dist-lib/{lib → src/lib}/utils.d.ts +0 -0
  703. /package/src/{state → lib/state}/index.ts +0 -0
  704. /package/src/{state → lib/state}/store.ts +0 -0
@@ -1,4 +1,4 @@
1
- "use client";
1
+ "use client"
2
2
 
3
3
  import {
4
4
  type DragEvent,
@@ -6,12 +6,11 @@ import {
6
6
  useCallback,
7
7
  useEffect,
8
8
  useId,
9
- useLayoutEffect,
10
9
  useMemo,
11
10
  useRef,
12
11
  useState,
13
- } from "react";
14
- import { useAtomValue, useSetAtom, useStore } from "jotai";
12
+ } from "react"
13
+ import { useAtomValue, useSetAtom, useStore } from "jotai"
15
14
 
16
15
  import {
17
16
  aiSidebarAnnouncementAtom,
@@ -53,7 +52,7 @@ import {
53
52
  setAISidebarHoveredAtom,
54
53
  startAISidebarRenameAtom,
55
54
  toggleAISidebarRowAtom,
56
- } from "./ai-sidebar-atom.ts";
55
+ } from "./ai-sidebar-atom.ts"
57
56
  import type {
58
57
  AISidebarConfig,
59
58
  AISidebarController,
@@ -61,15 +60,15 @@ import type {
61
60
  AISidebarSeed,
62
61
  FlatResource,
63
62
  UseAISidebarOptions,
64
- } from "./type.ts";
63
+ } from "./type.ts"
65
64
  import {
66
65
  canContain,
67
66
  containsResource,
68
67
  findResource,
69
68
  flattenResources,
70
- } from "./utils.ts";
69
+ } from "./utils.ts"
71
70
 
72
- export type { UseAISidebarOptions };
71
+ export type { UseAISidebarOptions }
73
72
 
74
73
  /**
75
74
  * The AI sidebar's headless controller — every behaviour the block
@@ -109,26 +108,26 @@ export function useAISidebar(
109
108
  defaultActiveId = null,
110
109
  onActiveChange,
111
110
  onExpandedChange,
112
- } = options;
111
+ } = options
113
112
 
114
113
  // A generated key isolates unnamed sidebars from each other; an explicit
115
114
  // `sidebarId` is the app's handle on this one.
116
- const generatedId = useId();
117
- const sidebarId = options.sidebarId ?? generatedId;
118
- const store = useStore();
119
- const hoverLayoutId = useId();
115
+ const generatedId = useId()
116
+ const sidebarId = options.sidebarId ?? generatedId
117
+ const store = useStore()
118
+ const hoverLayoutId = useId()
120
119
 
121
- const controlledExpandedIds = options.expandedIds;
122
- const controlsItems = items !== undefined;
123
- const controlsActiveId = activeId !== undefined;
124
- const controlsExpandedIds = controlledExpandedIds !== undefined;
120
+ const controlledExpandedIds = options.expandedIds
121
+ const controlsItems = items !== undefined
122
+ const controlsActiveId = activeId !== undefined
123
+ const controlsExpandedIds = controlledExpandedIds !== undefined
125
124
 
126
125
  // Primitives only, so this object is stable and the store write below runs
127
126
  // once per real change rather than once per render.
128
127
  const config = useMemo<AISidebarConfig>(
129
128
  () => ({ controlsItems, controlsActiveId, controlsExpandedIds }),
130
129
  [controlsActiveId, controlsExpandedIds, controlsItems]
131
- );
130
+ )
132
131
 
133
132
  const handlers = useMemo<AISidebarHandlers>(
134
133
  () => ({
@@ -147,7 +146,7 @@ export function useAISidebar(
147
146
  onMoveError,
148
147
  onRename,
149
148
  ]
150
- );
149
+ )
151
150
 
152
151
  // Read once: the `default*` options describe the mount, not every render.
153
152
  const [seed] = useState<AISidebarSeed>(() => ({
@@ -157,201 +156,205 @@ export function useAISidebar(
157
156
  expandedIds: [
158
157
  ...(controlledExpandedIds ?? options.defaultExpandedIds ?? []),
159
158
  ],
160
- }));
159
+ }))
161
160
 
162
- const mount = useSetAtom(mountAISidebarAtom(sidebarId));
163
- const publishHandlers = useSetAtom(setAISidebarHandlersAtom(sidebarId));
164
- const projectItems = useSetAtom(projectAISidebarItemsAtom(sidebarId));
165
- const projectActiveId = useSetAtom(projectAISidebarActiveIdAtom(sidebarId));
161
+ const mount = useSetAtom(mountAISidebarAtom(sidebarId))
162
+ const publishHandlers = useSetAtom(setAISidebarHandlersAtom(sidebarId))
163
+ const projectItems = useSetAtom(projectAISidebarItemsAtom(sidebarId))
164
+ const projectActiveId = useSetAtom(projectAISidebarActiveIdAtom(sidebarId))
166
165
  const projectExpandedIds = useSetAtom(
167
166
  projectAISidebarExpandedIdsAtom(sidebarId)
168
- );
169
- const normalizeFocus = useSetAtom(normalizeAISidebarFocusAtom(sidebarId));
167
+ )
168
+ const normalizeFocus = useSetAtom(normalizeAISidebarFocusAtom(sidebarId))
169
+
170
+ // Reads BEFORE the write effects, and the writes in passive effects: jotai
171
+ // (v3) subscribes `useAtomValue` in its own `useEffect` with no
172
+ // post-subscription recheck, so a write from a `useLayoutEffect` (or from
173
+ // any effect declared before the reads) lands before the subscription
174
+ // exists and the sidebar never re-renders with the seeded state.
175
+ // Never `aiSidebarItemsAtom` — see the note on `aiSidebarOwnedItemsAtom`.
176
+ const ownedItems = useAtomValue(aiSidebarOwnedItemsAtom(sidebarId))
177
+ const renderedItems = items ?? ownedItems
178
+ // `activeId ?? own` rather than the projected atom: a controlled `activeId`
179
+ // of `null` has always fallen through to the hook-owned selection.
180
+ const ownActiveId = useAtomValue(aiSidebarOwnActiveIdAtom(sidebarId))
181
+ const selectedId = activeId ?? ownActiveId
182
+ const ownExpandedIds = useAtomValue(aiSidebarOwnedExpandedIdsAtom(sidebarId))
183
+ const expandedIds = useMemo(
184
+ () =>
185
+ controlledExpandedIds ? new Set(controlledExpandedIds) : ownExpandedIds,
186
+ [controlledExpandedIds, ownExpandedIds]
187
+ )
188
+ const focusedId = useAtomValue(aiSidebarFocusedIdAtom(sidebarId))
189
+ const renamingId = useAtomValue(aiSidebarRenamingIdAtom(sidebarId))
190
+ const menuOpenId = useAtomValue(aiSidebarMenuOpenIdAtom(sidebarId))
191
+ const draggingId = useAtomValue(aiSidebarDraggingIdAtom(sidebarId))
192
+ const dropTarget = useAtomValue(aiSidebarDropTargetAtom(sidebarId))
193
+ const hoveredId = useAtomValue(aiSidebarHoveredIdAtom(sidebarId))
194
+ const announcement = useAtomValue(aiSidebarAnnouncementAtom(sidebarId))
195
+ const movePending = useAtomValue(aiSidebarMovePendingAtom(sidebarId))
170
196
 
171
197
  // Handlers first — they must be in the store before any action can fire.
172
198
  // Rewritten every commit; no read atom depends on them, so nobody
173
199
  // re-renders for it.
174
- useLayoutEffect(() => {
175
- publishHandlers(handlers);
176
- }, [handlers, publishHandlers]);
200
+ useEffect(() => {
201
+ publishHandlers(handlers)
202
+ }, [handlers, publishHandlers])
177
203
 
178
- // Before paint, so a seeded row never paints closed for a frame.
179
- useLayoutEffect(() => {
180
- mount(config, seed);
181
- }, [config, mount, seed]);
204
+ useEffect(() => {
205
+ mount(config, seed)
206
+ }, [config, mount, seed])
182
207
 
183
208
  // Controlled props stay the source of truth; the store carries a projection
184
209
  // so the action atoms and remote readers see current data.
185
- useLayoutEffect(() => {
186
- if (items !== undefined) projectItems(items);
187
- }, [items, projectItems]);
210
+ useEffect(() => {
211
+ if (items !== undefined) projectItems(items)
212
+ }, [items, projectItems])
188
213
 
189
- useLayoutEffect(() => {
190
- if (activeId !== undefined) projectActiveId(activeId);
191
- }, [activeId, projectActiveId]);
214
+ useEffect(() => {
215
+ if (activeId !== undefined) projectActiveId(activeId)
216
+ }, [activeId, projectActiveId])
192
217
 
193
- useLayoutEffect(() => {
218
+ useEffect(() => {
194
219
  if (controlledExpandedIds !== undefined)
195
- projectExpandedIds(controlledExpandedIds);
196
- }, [controlledExpandedIds, projectExpandedIds]);
220
+ projectExpandedIds(controlledExpandedIds)
221
+ }, [controlledExpandedIds, projectExpandedIds])
197
222
 
198
223
  // A sidebar the hook keyed is scrap once its component goes. An explicit
199
224
  // `sidebarId` is the app's key and outlives the mount.
200
225
  useEffect(() => {
201
- if (options.sidebarId !== undefined) return;
202
- return () => removeAISidebarInstance(sidebarId);
203
- }, [options.sidebarId, sidebarId]);
204
-
205
- // Never `aiSidebarItemsAtom` — see the note on `aiSidebarOwnedItemsAtom`.
206
- const ownedItems = useAtomValue(aiSidebarOwnedItemsAtom(sidebarId));
207
- const renderedItems = items ?? ownedItems;
208
- // `activeId ?? own` rather than the projected atom: a controlled `activeId`
209
- // of `null` has always fallen through to the hook-owned selection.
210
- const ownActiveId = useAtomValue(aiSidebarOwnActiveIdAtom(sidebarId));
211
- const selectedId = activeId ?? ownActiveId;
212
- const ownExpandedIds = useAtomValue(aiSidebarOwnedExpandedIdsAtom(sidebarId));
213
- const expandedIds = useMemo(
214
- () =>
215
- controlledExpandedIds ? new Set(controlledExpandedIds) : ownExpandedIds,
216
- [controlledExpandedIds, ownExpandedIds]
217
- );
218
- const focusedId = useAtomValue(aiSidebarFocusedIdAtom(sidebarId));
219
- const renamingId = useAtomValue(aiSidebarRenamingIdAtom(sidebarId));
220
- const menuOpenId = useAtomValue(aiSidebarMenuOpenIdAtom(sidebarId));
221
- const draggingId = useAtomValue(aiSidebarDraggingIdAtom(sidebarId));
222
- const dropTarget = useAtomValue(aiSidebarDropTargetAtom(sidebarId));
223
- const hoveredId = useAtomValue(aiSidebarHoveredIdAtom(sidebarId));
224
- const announcement = useAtomValue(aiSidebarAnnouncementAtom(sidebarId));
225
- const movePending = useAtomValue(aiSidebarMovePendingAtom(sidebarId));
226
+ if (options.sidebarId !== undefined) return
227
+ return () => removeAISidebarInstance(sidebarId)
228
+ }, [options.sidebarId, sidebarId])
226
229
 
227
230
  const flat = useMemo(
228
231
  () => flattenResources(renderedItems, expandedIds),
229
232
  [expandedIds, renderedItems]
230
- );
233
+ )
231
234
 
232
235
  // The roving target must name a row that still renders: one that folds away
233
236
  // hands focus to the first visible row instead of pointing at nothing. Last
234
- // of the layout effects, so it reads the projections this commit wrote.
235
- useLayoutEffect(() => {
236
- normalizeFocus();
237
- }, [flat, focusedId, normalizeFocus]);
237
+ // of the effects, so it reads the projections this commit wrote.
238
+ useEffect(() => {
239
+ normalizeFocus()
240
+ }, [flat, focusedId, normalizeFocus])
238
241
 
239
242
  useEffect(() => {
240
- if (!menuOpenId) return;
243
+ if (!menuOpenId) return
241
244
  const frame = requestAnimationFrame(() => {
242
245
  const menus = Array.from(
243
246
  document.querySelectorAll<HTMLElement>("[data-sidebar-resource-menu]")
244
- );
247
+ )
245
248
  menus
246
249
  .find((menu) => menu.dataset.sidebarResourceMenu === menuOpenId)
247
250
  ?.querySelector<HTMLElement>("button, a[href]")
248
- ?.focus();
249
- });
250
- return () => cancelAnimationFrame(frame);
251
- }, [menuOpenId]);
251
+ ?.focus()
252
+ })
253
+ return () => cancelAnimationFrame(frame)
254
+ }, [menuOpenId])
252
255
 
253
256
  const getItem = useCallback(
254
257
  (id: string) => findResource(renderedItems, id),
255
258
  [renderedItems]
256
- );
259
+ )
257
260
 
258
261
  const isExpanded = useCallback(
259
262
  (id: string) => expandedIds.has(id),
260
263
  [expandedIds]
261
- );
264
+ )
262
265
 
263
266
  // `useSetAtom` setters are already stable — no useCallback needed.
264
- const select = useSetAtom(selectAISidebarRowAtom(sidebarId));
265
- const expand = useSetAtom(expandAISidebarRowAtom(sidebarId));
266
- const collapse = useSetAtom(collapseAISidebarRowAtom(sidebarId));
267
- const toggleExpanded = useSetAtom(toggleAISidebarRowAtom(sidebarId));
268
- const expandAll = useSetAtom(expandAllAISidebarRowsAtom(sidebarId));
269
- const collapseAll = useSetAtom(collapseAllAISidebarRowsAtom(sidebarId));
270
- const reveal = useSetAtom(revealAISidebarRowAtom(sidebarId));
271
- const startRename = useSetAtom(startAISidebarRenameAtom(sidebarId));
272
- const cancelRename = useSetAtom(cancelAISidebarRenameAtom(sidebarId));
273
- const rename = useSetAtom(renameAISidebarRowAtom(sidebarId));
274
- const openMenu = useSetAtom(openAISidebarMenuAtom(sidebarId));
275
- const closeMenuInStore = useSetAtom(closeAISidebarMenuAtom(sidebarId));
276
- const move = useSetAtom(moveAISidebarRowAtom(sidebarId));
277
- const reset = useSetAtom(resetAISidebarAtom(sidebarId));
278
- const setFocusedRow = useSetAtom(focusAISidebarRowAtom(sidebarId));
279
- const onRowHover = useSetAtom(setAISidebarHoveredAtom(sidebarId));
280
- const clearHover = useSetAtom(clearAISidebarHoverAtom(sidebarId));
281
- const onRowDragEnd = useSetAtom(endAISidebarDragAtom(sidebarId));
282
- const setDraggingId = useSetAtom(aiSidebarDraggingIdAtom(sidebarId));
283
- const setDropTarget = useSetAtom(aiSidebarDropTargetAtom(sidebarId));
267
+ const select = useSetAtom(selectAISidebarRowAtom(sidebarId))
268
+ const expand = useSetAtom(expandAISidebarRowAtom(sidebarId))
269
+ const collapse = useSetAtom(collapseAISidebarRowAtom(sidebarId))
270
+ const toggleExpanded = useSetAtom(toggleAISidebarRowAtom(sidebarId))
271
+ const expandAll = useSetAtom(expandAllAISidebarRowsAtom(sidebarId))
272
+ const collapseAll = useSetAtom(collapseAllAISidebarRowsAtom(sidebarId))
273
+ const reveal = useSetAtom(revealAISidebarRowAtom(sidebarId))
274
+ const startRename = useSetAtom(startAISidebarRenameAtom(sidebarId))
275
+ const cancelRename = useSetAtom(cancelAISidebarRenameAtom(sidebarId))
276
+ const rename = useSetAtom(renameAISidebarRowAtom(sidebarId))
277
+ const openMenu = useSetAtom(openAISidebarMenuAtom(sidebarId))
278
+ const closeMenuInStore = useSetAtom(closeAISidebarMenuAtom(sidebarId))
279
+ const move = useSetAtom(moveAISidebarRowAtom(sidebarId))
280
+ const reset = useSetAtom(resetAISidebarAtom(sidebarId))
281
+ const setFocusedRow = useSetAtom(focusAISidebarRowAtom(sidebarId))
282
+ const onRowHover = useSetAtom(setAISidebarHoveredAtom(sidebarId))
283
+ const clearHover = useSetAtom(clearAISidebarHoverAtom(sidebarId))
284
+ const onRowDragEnd = useSetAtom(endAISidebarDragAtom(sidebarId))
285
+ const setDraggingId = useSetAtom(aiSidebarDraggingIdAtom(sidebarId))
286
+ const setDropTarget = useSetAtom(aiSidebarDropTargetAtom(sidebarId))
284
287
 
285
288
  // The one piece of row state that cannot live in the store: these are DOM
286
289
  // nodes. The block owns them, and every DOM focus move goes through here.
287
- const rowRefs = useRef(new Map<string, HTMLDivElement>());
290
+ const rowRefs = useRef(new Map<string, HTMLDivElement>())
288
291
 
289
292
  const setRowRef = useCallback((id: string, node: HTMLDivElement | null) => {
290
- if (node) rowRefs.current.set(id, node);
291
- else rowRefs.current.delete(id);
292
- }, []);
293
+ if (node) rowRefs.current.set(id, node)
294
+ else rowRefs.current.delete(id)
295
+ }, [])
293
296
 
294
297
  const focusRow = useCallback((id: string) => {
295
- requestAnimationFrame(() => rowRefs.current.get(id)?.focus());
296
- }, []);
298
+ requestAnimationFrame(() => rowRefs.current.get(id)?.focus())
299
+ }, [])
297
300
 
298
301
  const focus = useCallback(
299
302
  (id: string) => {
300
- setFocusedRow(id);
301
- focusRow(id);
303
+ setFocusedRow(id)
304
+ focusRow(id)
302
305
  },
303
306
  [focusRow, setFocusedRow]
304
- );
307
+ )
305
308
 
306
309
  // Closing returns focus to the row that owned the menu — otherwise focus
307
310
  // falls back to the body and the keyboard user loses their place. The atom
308
311
  // hands back the id it closed so only the DOM half happens here.
309
312
  const closeMenu = useCallback(() => {
310
- const closed = closeMenuInStore();
311
- if (closed) focusRow(closed);
312
- }, [closeMenuInStore, focusRow]);
313
+ const closed = closeMenuInStore()
314
+ if (closed) focusRow(closed)
315
+ }, [closeMenuInStore, focusRow])
313
316
 
314
317
  // Roving nav reads the visible rows out of the store when a key lands
315
318
  // rather than closing over them, so one stable handler serves every row.
316
319
  const readFlat = useCallback(
317
320
  () => store.get(aiSidebarFlatAtom(sidebarId)),
318
321
  [sidebarId, store]
319
- );
322
+ )
320
323
 
321
324
  const onRowKeyDown = useCallback(
322
325
  (event: KeyboardEvent<HTMLDivElement>, row: FlatResource) => {
323
- const flatRows = readFlat();
324
- const expanded = store.get(aiSidebarExpandedIdsAtom(sidebarId));
325
- const index = flatRows.findIndex(({ item }) => item.id === row.item.id);
326
- const previous = flatRows[index - 1];
327
- const next = flatRows[index + 1];
328
- const moveModifier = event.altKey && event.shiftKey;
326
+ const flatRows = readFlat()
327
+ const expanded = store.get(aiSidebarExpandedIdsAtom(sidebarId))
328
+ const index = flatRows.findIndex(({ item }) => item.id === row.item.id)
329
+ const previous = flatRows[index - 1]
330
+ const next = flatRows[index + 1]
331
+ const moveModifier = event.altKey && event.shiftKey
329
332
 
330
333
  if (event.key === "ArrowDown" && !moveModifier && next) {
331
- event.preventDefault();
332
- focus(next.item.id);
333
- return;
334
+ event.preventDefault()
335
+ focus(next.item.id)
336
+ return
334
337
  }
335
338
  if (event.key === "ArrowUp" && !moveModifier && previous) {
336
- event.preventDefault();
337
- focus(previous.item.id);
338
- return;
339
+ event.preventDefault()
340
+ focus(previous.item.id)
341
+ return
339
342
  }
340
343
  if (event.key === "Home" && flatRows[0]) {
341
- event.preventDefault();
342
- focus(flatRows[0].item.id);
343
- return;
344
+ event.preventDefault()
345
+ focus(flatRows[0].item.id)
346
+ return
344
347
  }
345
348
  if (event.key === "End" && flatRows.at(-1)) {
346
- event.preventDefault();
347
- focus(flatRows.at(-1)?.item.id ?? row.item.id);
348
- return;
349
+ event.preventDefault()
350
+ focus(flatRows.at(-1)?.item.id ?? row.item.id)
351
+ return
349
352
  }
350
353
 
351
354
  if (row.item.disabled) {
352
355
  if (event.key === "ArrowLeft" && row.parentId) {
353
- event.preventDefault();
354
- focus(row.parentId);
356
+ event.preventDefault()
357
+ focus(row.parentId)
355
358
  } else if (
356
359
  moveModifier ||
357
360
  ["ArrowRight", "Enter", " ", "F2", "ContextMenu"].includes(
@@ -359,28 +362,28 @@ export function useAISidebar(
359
362
  ) ||
360
363
  (event.shiftKey && event.key === "F10")
361
364
  ) {
362
- event.preventDefault();
365
+ event.preventDefault()
363
366
  }
364
- return;
367
+ return
365
368
  }
366
369
 
367
370
  if (moveModifier && event.key === "ArrowUp" && previous) {
368
- event.preventDefault();
371
+ event.preventDefault()
369
372
  void move({
370
373
  itemId: row.item.id,
371
374
  targetId: previous.item.id,
372
375
  position: "before",
373
- });
374
- return;
376
+ })
377
+ return
375
378
  }
376
379
  if (moveModifier && event.key === "ArrowDown" && next) {
377
- event.preventDefault();
380
+ event.preventDefault()
378
381
  void move({
379
382
  itemId: row.item.id,
380
383
  targetId: next.item.id,
381
384
  position: "after",
382
- });
383
- return;
385
+ })
386
+ return
384
387
  }
385
388
  if (
386
389
  moveModifier &&
@@ -388,46 +391,46 @@ export function useAISidebar(
388
391
  previous &&
389
392
  canContain(previous.item)
390
393
  ) {
391
- event.preventDefault();
392
- expand(previous.item.id);
394
+ event.preventDefault()
395
+ expand(previous.item.id)
393
396
  void move({
394
397
  itemId: row.item.id,
395
398
  targetId: previous.item.id,
396
399
  position: "inside",
397
- });
398
- return;
400
+ })
401
+ return
399
402
  }
400
403
  if (moveModifier && event.key === "ArrowLeft" && row.parentId) {
401
- event.preventDefault();
404
+ event.preventDefault()
402
405
  void move({
403
406
  itemId: row.item.id,
404
407
  targetId: row.parentId,
405
408
  position: "after",
406
- });
407
- return;
409
+ })
410
+ return
408
411
  }
409
412
 
410
413
  if (event.key === "ArrowRight" && canContain(row.item)) {
411
- event.preventDefault();
412
- if (!expanded.has(row.item.id)) expand(row.item.id);
413
- else if (next?.parentId === row.item.id) focus(next.item.id);
414
+ event.preventDefault()
415
+ if (!expanded.has(row.item.id)) expand(row.item.id)
416
+ else if (next?.parentId === row.item.id) focus(next.item.id)
414
417
  } else if (event.key === "ArrowLeft") {
415
- event.preventDefault();
416
- if (expanded.has(row.item.id)) collapse(row.item.id);
417
- else if (row.parentId) focus(row.parentId);
418
+ event.preventDefault()
419
+ if (expanded.has(row.item.id)) collapse(row.item.id)
420
+ else if (row.parentId) focus(row.parentId)
418
421
  } else if (event.key === "Enter" || event.key === " ") {
419
- event.preventDefault();
420
- if (canContain(row.item)) toggleExpanded(row.item.id);
421
- else select(row.item.id);
422
+ event.preventDefault()
423
+ if (canContain(row.item)) toggleExpanded(row.item.id)
424
+ else select(row.item.id)
422
425
  } else if (event.key === "F2") {
423
- event.preventDefault();
424
- startRename(row.item.id);
426
+ event.preventDefault()
427
+ startRename(row.item.id)
425
428
  } else if (
426
429
  event.key === "ContextMenu" ||
427
430
  (event.shiftKey && event.key === "F10")
428
431
  ) {
429
- event.preventDefault();
430
- openMenu(row.item.id);
432
+ event.preventDefault()
433
+ openMenu(row.item.id)
431
434
  }
432
435
  },
433
436
  [
@@ -443,7 +446,7 @@ export function useAISidebar(
443
446
  store,
444
447
  toggleExpanded,
445
448
  ]
446
- );
449
+ )
447
450
 
448
451
  // The drag handlers read drag state out of the store when they run instead
449
452
  // of closing over it. That is what keeps them stable for the life of the
@@ -454,52 +457,52 @@ export function useAISidebar(
454
457
  !store.get(aiSidebarDraggingIdAtom(sidebarId)) ||
455
458
  event.target !== event.currentTarget
456
459
  )
457
- return;
458
- event.preventDefault();
459
- setDropTarget({ id: null, position: "after" });
460
+ return
461
+ event.preventDefault()
462
+ setDropTarget({ id: null, position: "after" })
460
463
  },
461
464
  [setDropTarget, sidebarId, store]
462
- );
465
+ )
463
466
 
464
467
  const onDrop = useCallback(
465
468
  (event: DragEvent<HTMLDivElement>) => {
466
- event.preventDefault();
467
- event.stopPropagation();
468
- const dragging = store.get(aiSidebarDraggingIdAtom(sidebarId));
469
- const target = store.get(aiSidebarDropTargetAtom(sidebarId));
469
+ event.preventDefault()
470
+ event.stopPropagation()
471
+ const dragging = store.get(aiSidebarDraggingIdAtom(sidebarId))
472
+ const target = store.get(aiSidebarDropTargetAtom(sidebarId))
470
473
  if (dragging && target) {
471
474
  void move({
472
475
  itemId: dragging,
473
476
  targetId: target.id,
474
477
  position: target.position,
475
- });
478
+ })
476
479
  }
477
480
  },
478
481
  [move, sidebarId, store]
479
- );
482
+ )
480
483
 
481
484
  const onRowDragStart = useCallback(
482
485
  (event: DragEvent<HTMLDivElement>, id: string) => {
483
- setDraggingId(id);
484
- event.dataTransfer.effectAllowed = "move";
485
- event.dataTransfer.setData("text/plain", id);
486
+ setDraggingId(id)
487
+ event.dataTransfer.effectAllowed = "move"
488
+ event.dataTransfer.setData("text/plain", id)
486
489
  },
487
490
  [setDraggingId]
488
- );
491
+ )
489
492
 
490
493
  const onRowDragOver = useCallback(
491
494
  (event: DragEvent<HTMLDivElement>, targetRow: FlatResource) => {
492
- const dragging = store.get(aiSidebarDraggingIdAtom(sidebarId));
493
- if (!dragging || dragging === targetRow.item.id) return;
495
+ const dragging = store.get(aiSidebarDraggingIdAtom(sidebarId))
496
+ if (!dragging || dragging === targetRow.item.id) return
494
497
  const source = findResource(
495
498
  store.get(aiSidebarItemsAtom(sidebarId)),
496
499
  dragging
497
- );
498
- if (source && containsResource(source, targetRow.item.id)) return;
499
- event.preventDefault();
500
- event.stopPropagation();
501
- const rect = event.currentTarget.getBoundingClientRect();
502
- const ratio = (event.clientY - rect.top) / rect.height;
500
+ )
501
+ if (source && containsResource(source, targetRow.item.id)) return
502
+ event.preventDefault()
503
+ event.stopPropagation()
504
+ const rect = event.currentTarget.getBoundingClientRect()
505
+ const ratio = (event.clientY - rect.top) / rect.height
503
506
  const position =
504
507
  !targetRow.item.disabled &&
505
508
  canContain(targetRow.item) &&
@@ -508,11 +511,11 @@ export function useAISidebar(
508
511
  ? "inside"
509
512
  : ratio < 0.5
510
513
  ? "before"
511
- : "after";
512
- setDropTarget({ id: targetRow.item.id, position });
514
+ : "after"
515
+ setDropTarget({ id: targetRow.item.id, position })
513
516
  },
514
517
  [setDropTarget, sidebarId, store]
515
- );
518
+ )
516
519
 
517
520
  const dnd = useMemo(
518
521
  () => ({
@@ -533,7 +536,7 @@ export function useAISidebar(
533
536
  onRowDragEnd,
534
537
  onRowDragOver,
535
538
  ]
536
- );
539
+ )
537
540
 
538
541
  const hover = useMemo(
539
542
  () => ({
@@ -543,7 +546,7 @@ export function useAISidebar(
543
546
  clear: clearHover,
544
547
  }),
545
548
  [clearHover, hoverLayoutId, hoveredId, onRowHover]
546
- );
549
+ )
547
550
 
548
551
  return useMemo<AISidebarController>(
549
552
  () => ({
@@ -612,5 +615,5 @@ export function useAISidebar(
612
615
  onRowKeyDown,
613
616
  setRowRef,
614
617
  ]
615
- );
618
+ )
616
619
  }