@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,139 +0,0 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
-
5
- import {
6
- getPasswordStrength,
7
- PasswordInput,
8
- } from "@/components/composed/password-input";
9
- import { Button } from "@/components/ui/button";
10
- import { Field, FieldLabel } from "@/components/ui/field";
11
- import { authAccentActionStyles } from "@/lib/auth-accent";
12
- import { cn } from "@/lib/utils";
13
- import {
14
- AuthCard,
15
- AuthError,
16
- AuthSuccess,
17
- MorphStep,
18
- Reveal,
19
- } from "./auth-shell";
20
- import type { IUpdatePasswordBlockProps, TAuthStatus } from "./type";
21
-
22
- /**
23
- * Password change form for an already-authenticated user: a strength-metered
24
- * new password gates the confirm field, which in turn gates the submit
25
- * button. Mismatch is caught client-side; everything else comes back as a
26
- * rejection from `onSubmit`.
27
- */
28
- export function UpdatePasswordBlock({
29
- title = "Update your password",
30
- description = "Choose a new password for your account",
31
- logo,
32
- accent,
33
- minStrength = 4,
34
- onSubmit,
35
- onDone,
36
- }: IUpdatePasswordBlockProps) {
37
- const passwordId = React.useId();
38
- const confirmId = React.useId();
39
- const [status, setStatus] = React.useState<TAuthStatus>("idle");
40
- const [error, setError] = React.useState<string | null>(null);
41
- const [password, setPassword] = React.useState("");
42
- const [confirmPassword, setConfirmPassword] = React.useState("");
43
-
44
- // Progressive disclosure, matching the signup block: the confirm field
45
- // appears once the new password clears the policy, the submit button once
46
- // the two match.
47
- const strongEnough = getPasswordStrength(password) >= minStrength;
48
- const matches = confirmPassword.length > 0 && confirmPassword === password;
49
- const canSubmit = strongEnough && matches;
50
-
51
- // Only flag a mismatch once the confirmation has diverged — while it is
52
- // still a prefix of the new password the user is simply mid-keystroke, and
53
- // nagging on every character would shake the field the whole way through.
54
- const mismatch =
55
- confirmPassword.length > 0 && !password.startsWith(confirmPassword);
56
-
57
- async function handleSubmit(event: React.FormEvent<HTMLFormElement>) {
58
- event.preventDefault();
59
- // Enter in any field submits the form even while the button is hidden.
60
- if (!canSubmit) return;
61
- setError(null);
62
- setStatus("loading");
63
- try {
64
- await onSubmit?.({ password });
65
- setStatus("success");
66
- } catch (cause) {
67
- setStatus("idle");
68
- setError(
69
- cause instanceof Error ? cause.message : "Unable to update password.",
70
- );
71
- }
72
- }
73
-
74
- return (
75
- <AuthCard
76
- title={title}
77
- description={description}
78
- logo={logo}
79
- accent={accent}
80
- >
81
- <MorphStep step={status === "success" ? "success" : "form"}>
82
- {status === "success" ? (
83
- <AuthSuccess
84
- title="Password updated"
85
- description="Your password has been changed successfully."
86
- >
87
- {onDone && (
88
- <Button variant="link" onClick={onDone}>
89
- Continue
90
- </Button>
91
- )}
92
- </AuthSuccess>
93
- ) : (
94
- <form className="flex flex-col gap-4" onSubmit={handleSubmit}>
95
- <Field name="password">
96
- <FieldLabel htmlFor={passwordId}>New password</FieldLabel>
97
- <PasswordInput
98
- id={passwordId}
99
- name="password"
100
- autoComplete="new-password"
101
- required
102
- showStrength
103
- disabled={status === "loading"}
104
- value={password}
105
- onChange={(event) => setPassword(event.target.value)}
106
- />
107
- </Field>
108
- <Reveal show={strongEnough}>
109
- <Field name="confirmPassword">
110
- <FieldLabel htmlFor={confirmId}>Confirm new password</FieldLabel>
111
- <PasswordInput
112
- id={confirmId}
113
- name="confirmPassword"
114
- autoComplete="new-password"
115
- required
116
- disabled={status === "loading"}
117
- value={confirmPassword}
118
- onChange={(event) => setConfirmPassword(event.target.value)}
119
- />
120
- </Field>
121
- </Reveal>
122
- <AuthError
123
- message={error ?? (mismatch ? "Passwords do not match." : null)}
124
- />
125
- <Reveal show={canSubmit}>
126
- <Button
127
- className={cn("w-full", accent && authAccentActionStyles)}
128
- type="submit"
129
- loading={status === "loading"}
130
- >
131
- Update password
132
- </Button>
133
- </Reveal>
134
- </form>
135
- )}
136
- </MorphStep>
137
- </AuthCard>
138
- );
139
- }
@@ -1,127 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import { useAtomValue, useSetAtom } from "jotai"
5
-
6
- import {
7
- DEFAULT_AUTH_FLOW_ID,
8
- authFlowStateAtom,
9
- beginAuthAttemptAtom,
10
- beginAuthVerificationAtom,
11
- completeAuthFlowAtom,
12
- endAuthSessionAtom,
13
- failAuthFlowAtom,
14
- goToAuthStepAtom,
15
- resetAuthFlowAtom,
16
- } from "./auth-flow-atom"
17
- import {
18
- authSessionStateAtom,
19
- isAuthenticatedAtom,
20
- markUnauthenticatedAtom,
21
- signInAtom,
22
- updateAuthUserAtom,
23
- } from "./auth-session-atom"
24
- import type {
25
- IAuthFlowActions,
26
- TAuthFlowId,
27
- IAuthFlowState,
28
- IAuthSessionActions,
29
- IAuthSessionState,
30
- } from "./type"
31
-
32
- /**
33
- * Read the auth flow registered under `flowId` from anywhere below
34
- * `ExegiaProvider`. Pairs with `useAuthFlowActions` to wire the auth blocks
35
- * into one flow — the blocks keep passwords and codes in local state, the
36
- * flow tracks which block shows and what identifier is in flight:
37
- *
38
- * ```tsx
39
- * const flow = useAuthFlow()
40
- * const { beginVerification, complete, fail } = useAuthFlowActions()
41
- *
42
- * {flow.step === "login" && (
43
- * <LoginBlock
44
- * onSubmit={async ({ email }) => {
45
- * await api.requestCode(email)
46
- * beginVerification({ identifier: email })
47
- * }}
48
- * />
49
- * )}
50
- * {flow.step === "verify-code" && (
51
- * <CodeAuthBlock
52
- * destination={flow.maskedIdentifier ?? undefined}
53
- * onVerify={async (code) => complete(await api.verify(code))}
54
- * />
55
- * )}
56
- * ```
57
- *
58
- * This returns the whole state object, so the caller re-renders on any
59
- * change. A component that reads one field should subscribe to that field's
60
- * atom instead: `useAtomValue(authFlowStepAtom(flowId))`.
61
- */
62
- export function useAuthFlow(
63
- flowId: TAuthFlowId = DEFAULT_AUTH_FLOW_ID
64
- ): IAuthFlowState {
65
- return useAtomValue(authFlowStateAtom(flowId))
66
- }
67
-
68
- /**
69
- * Drive the auth flow registered under `flowId` from anywhere. Writes only —
70
- * the caller never re-renders when the flow changes. See `useAuthFlow` for
71
- * the intended wiring; a block's submit handler typically runs
72
- * `beginAttempt()` → the API call → `complete(user)` or `fail(message)`.
73
- */
74
- export function useAuthFlowActions(
75
- flowId: TAuthFlowId = DEFAULT_AUTH_FLOW_ID
76
- ): IAuthFlowActions {
77
- const goToStep = useSetAtom(goToAuthStepAtom(flowId))
78
- const beginVerification = useSetAtom(beginAuthVerificationAtom(flowId))
79
- const beginAttempt = useSetAtom(beginAuthAttemptAtom(flowId))
80
- const fail = useSetAtom(failAuthFlowAtom(flowId))
81
- const complete = useSetAtom(completeAuthFlowAtom(flowId))
82
- const reset = useSetAtom(resetAuthFlowAtom(flowId))
83
-
84
- return React.useMemo(
85
- () => ({
86
- goToStep,
87
- beginVerification,
88
- beginAttempt,
89
- fail,
90
- complete,
91
- reset,
92
- }),
93
- [goToStep, beginVerification, beginAttempt, fail, complete, reset]
94
- )
95
- }
96
-
97
- /**
98
- * Read the session: `status` (`"unknown"` until the app restores or rejects
99
- * a session at boot), the signed-in `user`, and derived `isAuthenticated`.
100
- */
101
- export function useAuthSession(): IAuthSessionState & {
102
- isAuthenticated: boolean
103
- } {
104
- const state = useAtomValue(authSessionStateAtom)
105
- const isAuthenticated = useAtomValue(isAuthenticatedAtom)
106
- return React.useMemo(
107
- () => ({ ...state, isAuthenticated }),
108
- [state, isAuthenticated]
109
- )
110
- }
111
-
112
- /**
113
- * Drive the session. Writes only. `signOut` is the composite
114
- * `endAuthSessionAtom`: it clears the session AND returns the default flow
115
- * to the login step — the one to wire to a logout button.
116
- */
117
- export function useAuthSessionActions(): IAuthSessionActions {
118
- const signIn = useSetAtom(signInAtom)
119
- const updateUser = useSetAtom(updateAuthUserAtom)
120
- const markUnauthenticated = useSetAtom(markUnauthenticatedAtom)
121
- const signOut = useSetAtom(endAuthSessionAtom)
122
-
123
- return React.useMemo(
124
- () => ({ signIn, updateUser, markUnauthenticated, signOut }),
125
- [signIn, updateUser, markUnauthenticated, signOut]
126
- )
127
- }
@@ -1,65 +0,0 @@
1
- import { describe, expect, mock, test } from "bun:test"
2
- import { render, screen } from "@testing-library/react"
3
- import userEvent from "@testing-library/user-event"
4
- import { Provider } from "jotai"
5
- import { AiPanel, SelectionPopover, type IAiScope } from "../index"
6
- import { formatScopeLabel } from "../shared"
7
-
8
- const passageScope: IAiScope = {
9
- kind: "passage",
10
- label: "a.1",
11
- range: "¶1–¶2",
12
- nodeIds: ["p-1", "p-2"],
13
- }
14
-
15
- describe("AI curation component set", () => {
16
- test("keeps the word popover content and appends one Add to chat action", async () => {
17
- const onAddToChat = mock(() => {})
18
- const user = userEvent.setup()
19
- render(
20
- <SelectionPopover
21
- open
22
- onAddToChat={onAddToChat}
23
- variant="word"
24
- word={{
25
- lemma: "doctrina",
26
- partOfSpeech: "noun",
27
- frequency: 12,
28
- onViewDetails: mock(() => {}),
29
- }}
30
- >
31
- <span>doctrina in context</span>
32
- </SelectionPopover>
33
- )
34
-
35
- expect(screen.getByText("doctrina")).toBeDefined()
36
- expect(screen.getByText("noun · 12×")).toBeDefined()
37
- expect(screen.getByRole("button", { name: /View details/ })).toBeDefined()
38
- expect(screen.getAllByRole("button", { name: /Add to chat/ })).toHaveLength(
39
- 1
40
- )
41
- await user.click(screen.getByRole("button", { name: /Add to chat/ }))
42
- expect(onAddToChat).toHaveBeenCalledTimes(1)
43
- })
44
-
45
- test("formats range and pinned scope labels", () => {
46
- expect(formatScopeLabel(passageScope)).toBe("a.1 ¶1–¶2 · passage")
47
- expect(
48
- formatScopeLabel({ kind: "passage", label: "a.1 ¶1–¶2", pinned: true })
49
- ).toBe("PINNED · a.1 ¶1–¶2")
50
- })
51
-
52
- test("panel is a named region carrying the thread and the composer", () => {
53
- render(
54
- <Provider>
55
- <AiPanel scope={passageScope} thread={<p>Validate this passage.</p>} />
56
- </Provider>
57
- )
58
-
59
- expect(
60
- screen.getByRole("complementary", { name: "AI panel" })
61
- ).toBeDefined()
62
- expect(screen.getByText("Validate this passage.")).toBeDefined()
63
- expect(screen.getByRole("textbox", { name: "Message" })).toBeDefined()
64
- })
65
- })
@@ -1,61 +0,0 @@
1
- "use client"
2
-
3
- import type * as React from "react"
4
- import { cn } from "@/lib/utils"
5
- import { Button } from "@/components/ui/button"
6
- import { Alert, AlertAction, AlertDescription } from "@/components/ui/alert"
7
- import type { IDegradedBannerProps, ILockedBannerProps, IPinnedThreadBannerProps } from "./type"
8
-
9
- export function LockedBanner({
10
- children = "This published corpus is locked. Ask questions here, or continue in a working draft to make changes.",
11
- className,
12
- }: ILockedBannerProps): React.ReactElement {
13
- return (
14
- <Alert className={cn("rounded-sm text-xs", className)} role="status">
15
- <AlertDescription className="text-xs">
16
- <span>
17
- <span aria-hidden="true">🔒 </span>
18
- {children}
19
- </span>
20
- </AlertDescription>
21
- </Alert>
22
- )
23
- }
24
-
25
- export function PinnedThreadBanner({
26
- className,
27
- }: IPinnedThreadBannerProps): React.ReactElement {
28
- return (
29
- <Alert className={cn("rounded-sm", className)} role="status">
30
- <AlertDescription className="text-xs">
31
- Thread follows its passage, not your view.
32
- </AlertDescription>
33
- </Alert>
34
- )
35
- }
36
-
37
-
38
-
39
- export function DegradedBanner({
40
- reason = "The model is unavailable right now.",
41
- onRetry,
42
- className,
43
- }: IDegradedBannerProps): React.ReactElement {
44
- return (
45
- <Alert className={cn("rounded-sm", className)} variant="warning">
46
- <AlertDescription className="text-xs">{reason}</AlertDescription>
47
- {onRetry ? (
48
- <AlertAction>
49
- <Button
50
- className="font-normal"
51
- onClick={onRetry}
52
- size="xs"
53
- variant="outline"
54
- >
55
- Retry
56
- </Button>
57
- </AlertAction>
58
- ) : null}
59
- </Alert>
60
- )
61
- }
@@ -1,84 +0,0 @@
1
- "use client"
2
-
3
- import type * as React from "react"
4
- import { cn } from "@/lib/utils"
5
- import { Composer } from "@/components/composed/chat/composer"
6
- import { ScrollArea } from "@/components/ui/scroll-area"
7
- import Background from "@/components/atoms/background"
8
- import { AiPanelHeader } from "./header"
9
- import { SuggestedPrompts } from "./suggested-prompts"
10
- import type { IAiPanelProps } from "./type"
11
-
12
- /**
13
- * Full-height curation rail, designed to sit inside a host container such as
14
- * the shell's right panel — it brings no surface chrome or close affordance
15
- * of its own. Data fetching, streaming and version writes stay with the host
16
- * application; this component only establishes layout and the focus order
17
- * shared by all panel states.
18
- */
19
- export function AiPanel({
20
- onNewThread,
21
- thread,
22
- prompts = [],
23
- onPromptSelect,
24
- composerProps,
25
- locked = false,
26
- headerTitle = "AI panel",
27
- className,
28
- ...props
29
- }: IAiPanelProps): React.ReactElement {
30
- return (
31
- // A landmark, not a bare div: `aria-label` on a roleless element is not
32
- // exposed, so the panel would lose both its name and its region.
33
- <aside
34
- aria-label={headerTitle}
35
- className={cn(
36
- "relative flex h-full w-full flex-col bg-background",
37
- className
38
- )}
39
- data-slot="ai-panel"
40
- {...props}
41
- >
42
- <Background.Texture
43
- variant="paper"
44
- className="relative flex h-full w-full flex-col"
45
- >
46
- <AiPanelHeader
47
- locked={locked}
48
- onNewThread={onNewThread}
49
- title={headerTitle}
50
- />
51
-
52
- <div className="relative min-h-0 flex-1">
53
- <ScrollArea
54
- aria-label="Thread"
55
- role="region"
56
- scrollFade="bottom"
57
- fill
58
- >
59
- {/* `w-full`, not `mx-auto`: as a flex item, auto margins shrink the
60
- column to fit-content, so the thread would drift off the
61
- composer's gutters. px-3 lines it up with the footer. */}
62
- <div className="flex min-h-0 flex-1 flex-col px-5">
63
- <div className="w-full">{thread}</div>
64
- {!thread && (
65
- <div className="flex h-full min-h-44 flex-col justify-end">
66
- <SuggestedPrompts
67
- onSelect={onPromptSelect}
68
- prompts={prompts}
69
- />
70
- </div>
71
- )}
72
- </div>
73
- </ScrollArea>
74
- </div>
75
- <footer className="shrink-0 px-5 pb-3.5">
76
- <Composer
77
- {...composerProps}
78
- disabled={locked || composerProps?.disabled}
79
- />
80
- </footer>
81
- </Background.Texture>
82
- </aside>
83
- )
84
- }
@@ -1,60 +0,0 @@
1
- "use client"
2
-
3
- import type * as React from "react"
4
- import { cn } from "@/lib/utils"
5
- import { Button } from "@/components/ui/button"
6
- import { Lock, Plus } from "lucide-react"
7
- import { Tooltip, TooltipPopup, TooltipTrigger } from "@/components/ui/tooltip"
8
- import type { IAiPanelHeaderProps } from "./type"
9
-
10
- function LockedHint({ locked }: { locked?: boolean }): React.ReactElement {
11
- return (
12
- <Tooltip>
13
- <TooltipTrigger
14
- disabled={locked}
15
- render={
16
- <Button variant="ghost" size="icon-xs" className="opacity-50" />
17
- }
18
- >
19
- <Lock className="size-3" />
20
- </TooltipTrigger>
21
- <TooltipPopup side="bottom">
22
- <div>
23
- <div className="flex items-center gap-1">
24
- <Lock className="size-2.5" />
25
- <h6 className="text-sm">Published corpus</h6>
26
- </div>
27
- <p className="text-xs text-muted-foreground">
28
- Editing is disabled. Answers only.
29
- </p>
30
- </div>
31
- </TooltipPopup>
32
- </Tooltip>
33
- )
34
- }
35
-
36
- /** The panel's sticky top row: title, lock hint and the new-thread button. */
37
- export function AiPanelHeader({
38
- title,
39
- locked = false,
40
- onNewThread,
41
- }: IAiPanelHeaderProps): React.ReactElement {
42
- return (
43
- <header className="sticky top-0 flex shrink-0 flex-col items-center gap-2 border-b border-border bg-sidebar p-3.5">
44
- <div className="flex w-full flex-row items-center justify-between">
45
- <div className="flex flex-1 items-center">
46
- <h2 className="text-sm font-semibold text-foreground">{title}</h2>
47
- {!locked && <LockedHint locked={locked} />}
48
- </div>
49
- <Button
50
- className={cn("font-semibold")}
51
- onClick={onNewThread}
52
- size="icon-xs"
53
- variant="ghost"
54
- >
55
- <Plus className="size-4 stroke-3" />
56
- </Button>
57
- </div>
58
- </header>
59
- )
60
- }
@@ -1,37 +0,0 @@
1
- import { AiPanel } from "./base"
2
-
3
- export { AiPanel }
4
- export { AiPanelHeader } from "./header"
5
- export { SuggestedPrompts } from "./suggested-prompts"
6
- export { RecommendationStack } from "./recommendation-stack"
7
- export { DegradedBanner, LockedBanner, PinnedThreadBanner } from "./banners"
8
- export { VersionHistoryRecord } from "./version-history-record"
9
-
10
- export {
11
- AppliedMark,
12
- ApplyToast,
13
- SelectionHighlight,
14
- SelectionPopover,
15
- } from "@/components/composed/reader"
16
- export type {
17
- IAppliedMarkProps,
18
- IApplyToastProps,
19
- ISelectionHighlightProps,
20
- ISelectionPopoverProps,
21
- } from "@/components/composed/reader"
22
- export type {
23
- IAiPanelHeaderProps,
24
- IAiPanelProps,
25
- ILockedBannerProps,
26
- IAiScope,
27
- TAiScopeKind,
28
- TComposerMode,
29
- IDiffRow,
30
- INodeSelection,
31
- TSuggestionState,
32
- IVersionHistoryEntry,
33
- ISuggestedPromptsProps,
34
- IWordSelection,
35
- } from "./type"
36
-
37
- export default AiPanel
@@ -1,41 +0,0 @@
1
- "use client"
2
-
3
- import type * as React from "react"
4
- import { Group } from "@/components/ui/group"
5
- import { cn } from "@/lib/utils"
6
- import type { IRecommendationStackProps } from "./type"
7
-
8
-
9
-
10
- /**
11
- * Fuses a run of RecommendationCards into one bordered stack for the thread.
12
- *
13
- * The ui Group only fuses bordered direct children, but each card wraps its
14
- * frame in a borderless accordion root — so the frames are fused one level
15
- * down instead, and the Group-injected ::before (which would render as a
16
- * phantom flex item between the cards) is dropped.
17
- */
18
- export function RecommendationStack({
19
- className,
20
- children,
21
- ...props
22
- }: IRecommendationStackProps): React.ReactElement {
23
- return (
24
- <Group
25
- className={cn(
26
- "w-full *:before:content-none mt-3",
27
- "[&>*:not(:last-child)_[data-slot=recommendation-card]]:rounded-b-none",
28
- "[&>*:not(:last-child)_[data-slot=recommendation-card]]:before:rounded-b-none",
29
- "[&>*+*_[data-slot=recommendation-card]]:rounded-t-none",
30
- "[&>*+*_[data-slot=recommendation-card]]:border-t-0",
31
- "[&>*+*_[data-slot=recommendation-card]]:before:rounded-t-none",
32
- className
33
- )}
34
- data-slot="recommendation-stack"
35
- orientation="vertical"
36
- {...props}
37
- >
38
- {children}
39
- </Group>
40
- )
41
- }
@@ -1,27 +0,0 @@
1
- // The visual language (accent constants, ✦ icon, close glyph) lives with the
2
- // reusable AI components in `components/composed/ai`; the block re-uses it
3
- // from there.
4
- export {
5
- accentRing,
6
- accentSolid,
7
- accentText,
8
- ghostMuted,
9
- mutedText,
10
- surface,
11
- } from "@/components/composed/ai/shared"
12
-
13
- export function formatScopeLabel(scope: {
14
- kind: string
15
- label: string
16
- location?: string
17
- range?: string
18
- pinned?: boolean
19
- }): string {
20
- if (scope.pinned) {
21
- return `PINNED · ${scope.label}${scope.range ? ` ${scope.range}` : ""}`
22
- }
23
- if (scope.range && scope.kind === "passage") {
24
- return `${scope.label} ${scope.range} · passage`
25
- }
26
- return `${scope.label} · ${scope.kind}${scope.location ? ` · ${scope.location}` : ""}`
27
- }
@@ -1,45 +0,0 @@
1
- "use client"
2
-
3
- import type * as React from "react"
4
- import { cn } from "@/lib/utils"
5
- import { Button } from "@/components/ui/button"
6
- import { accentRing, mutedText } from "./shared"
7
- import { Sparkles } from "lucide-react"
8
- import type { ISuggestedPromptsProps } from "./type";
9
-
10
-
11
- export function SuggestedPrompts({
12
- prompts = [],
13
- onSelect,
14
- emptyLabel = "Ask about this selection or validate it against the schema.",
15
- className,
16
- }: ISuggestedPromptsProps): React.ReactElement | null {
17
- if (!prompts.length) {
18
- return (
19
- <p className={cn("px-1 py-3", mutedText, className)} data-empty="true">
20
- <Sparkles className="mr-1.5" />
21
- {emptyLabel}
22
- </p>
23
- )
24
- }
25
- return (
26
- <div
27
- className={cn("grid gap-1.5", className)}
28
- aria-label="Suggested prompts"
29
- >
30
- {prompts.map((prompt) => (
31
- <Button
32
- className={cn(
33
- "h-auto justify-start border bg-muted/30 px-3 py-2 text-left text-xs font-normal whitespace-normal text-muted-foreground hover:border-amber-500/30 hover:text-foreground sm:h-auto sm:text-xs",
34
- accentRing
35
- )}
36
- key={prompt}
37
- onClick={() => onSelect?.(prompt)}
38
- variant="ghost"
39
- >
40
- {prompt}
41
- </Button>
42
- ))}
43
- </div>
44
- )
45
- }