@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,256 +0,0 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
-
5
- import {
6
- PasswordInput,
7
- getPasswordStrength,
8
- passwordRequirements,
9
- } from "@/components/composed/password-input";
10
- import {
11
- SocialProviders,
12
- } from "@/components/composed/social-providers";
13
- import { Button } from "@/components/ui/button";
14
- import { Checkbox } from "@/components/ui/checkbox";
15
- import { Field, FieldLabel } from "@/components/ui/field";
16
- import { Input } from "@/components/ui/input";
17
- import { Label } from "@/components/ui/label";
18
- import { authAccentActionStyles } from "@/lib/auth-accent";
19
- import { cn } from "@/lib/utils";
20
- import {
21
- AuthCard,
22
- AuthError,
23
- AuthSeparator,
24
- AuthSuccess,
25
- MorphStep,
26
- Reveal,
27
- } from "./auth-shell";
28
- import type { ISignupBlockProps, TAuthStatus } from "./type";
29
- import type { TSocialProvider } from "@/components/composed/types";
30
-
31
-
32
- export function SignupBlock({
33
- title = "Create your account",
34
- description = "Start exploring manuscripts in minutes",
35
- logo,
36
- accent,
37
- providers = ["google", "apple", "github"],
38
- showNameField = true,
39
- showTerms = true,
40
- termsChecked,
41
- defaultTermsChecked = false,
42
- onTermsCheckedChange,
43
- enforceStrongPassword = true,
44
- onSubmit,
45
- termsComponent,
46
- onProviderSelect,
47
- onLogin,
48
- onTerms,
49
- }: ISignupBlockProps) {
50
- const nameId = React.useId();
51
- const emailId = React.useId();
52
- const passwordId = React.useId();
53
- const termsId = React.useId();
54
- const [status, setStatus] = React.useState<TAuthStatus>("idle");
55
- const [error, setError] = React.useState<string | null>(null);
56
- const [loadingProvider, setLoadingProvider] =
57
- React.useState<TSocialProvider | null>(null);
58
- const [password, setPassword] = React.useState("");
59
- // Controlled when `termsChecked` is passed, uncontrolled otherwise. The
60
- // internal state is kept either way, so a block that switches between the
61
- // two mid-life does not lose the box, and the callback fires in both modes.
62
- const [uncontrolledTerms, setUncontrolledTerms] =
63
- React.useState(defaultTermsChecked);
64
- const terms = termsChecked ?? uncontrolledTerms;
65
-
66
- function handleTermsChange(checked: boolean) {
67
- if (termsChecked === undefined) setUncontrolledTerms(checked);
68
- onTermsCheckedChange?.(checked);
69
- }
70
- // Tracked from each input's own constraint validation rather than a regex.
71
- // The values stay uncontrolled — only validity is needed, and the form reads
72
- // values from FormData on submit.
73
- const [emailValid, setEmailValid] = React.useState(false);
74
- const [nameValid, setNameValid] = React.useState(false);
75
-
76
- const busy = status === "loading" || loadingProvider !== null;
77
- const strongEnough =
78
- !enforceStrongPassword ||
79
- getPasswordStrength(password) === passwordRequirements.length;
80
-
81
- // The social providers retire once the email path is filled in and valid —
82
- // the user has committed to a path, so the alternatives are just noise. It
83
- // comes back if they invalidate a field again.
84
- const passwordValid = password.trim().length > 0 && strongEnough;
85
- const emailPathComplete =
86
- (!showNameField || nameValid) && emailValid && passwordValid;
87
-
88
- async function handleSubmit(event: React.SubmitEvent<HTMLFormElement>) {
89
- event.preventDefault();
90
- setError(null);
91
- if (!strongEnough) {
92
- setError("Please meet all password requirements.");
93
- return;
94
- }
95
- if (showTerms && !terms) {
96
- setError("Please accept the terms to continue.");
97
- return;
98
- }
99
- const form = new FormData(event.currentTarget);
100
- setStatus("loading");
101
- try {
102
- await onSubmit?.({
103
- name: String(form.get("name") ?? ""),
104
- email: String(form.get("email") ?? ""),
105
- password,
106
- });
107
- setStatus("success");
108
- } catch (cause) {
109
- setStatus("idle");
110
- setError(
111
- cause instanceof Error ? cause.message : "Unable to create account.",
112
- );
113
- }
114
- }
115
-
116
- async function handleProvider(provider: TSocialProvider) {
117
- setError(null);
118
- setLoadingProvider(provider);
119
- try {
120
- await onProviderSelect?.(provider);
121
- setStatus("success");
122
- } catch (cause) {
123
- setError(
124
- cause instanceof Error ? cause.message : "Unable to create account.",
125
- );
126
- } finally {
127
- setLoadingProvider(null);
128
- }
129
- }
130
-
131
- return (
132
- <AuthCard
133
- title={title}
134
- description={description}
135
- logo={logo}
136
- accent={accent}
137
- footer={
138
- status !== "success" && (
139
- <>
140
- Already have an account?{" "}
141
- <Button variant="link" onClick={onLogin}>
142
- Login
143
- </Button>
144
- </>
145
- )
146
- }
147
- >
148
- <MorphStep step={status === "success" ? "success" : "form"}>
149
- {status === "success" ? (
150
- <AuthSuccess
151
- title="Account created"
152
- description="Check your inbox to confirm your email address."
153
- />
154
- ) : (
155
- <div className="flex flex-col gap-4">
156
- {providers.length > 0 && (
157
- // gap-4 on the wrapper reproduces the spacing the two children
158
- // had as direct flex items of the column above.
159
- <Reveal show={!emailPathComplete} className="flex flex-col gap-4">
160
- <SocialProviders
161
- providers={providers}
162
- action="signup"
163
- loadingProvider={loadingProvider}
164
- disabled={status === "loading"}
165
- onSelect={handleProvider}
166
- />
167
- <AuthSeparator label="Or with email" />
168
- </Reveal>
169
- )}
170
- <form className="flex flex-col gap-4" onSubmit={handleSubmit}>
171
- {showNameField && (
172
- <Field name="name">
173
- <FieldLabel htmlFor={nameId}>Name</FieldLabel>
174
- <Input
175
- aria-label="Name"
176
- id={nameId}
177
- name="name"
178
- autoComplete="name"
179
- placeholder="Your name"
180
- required
181
- disabled={busy}
182
- onChange={(event) =>
183
- setNameValid(event.currentTarget.validity.valid)
184
- }
185
- />
186
- </Field>
187
- )}
188
- <Field name="email">
189
- <FieldLabel htmlFor={emailId}>Email</FieldLabel>
190
- <Input
191
- id={emailId}
192
- name="email"
193
- type="email"
194
- aria-label="Email"
195
- autoComplete="email"
196
- placeholder="you@example.com"
197
- required
198
- disabled={busy}
199
- onChange={(event) =>
200
- setEmailValid(event.currentTarget.validity.valid)
201
- }
202
- />
203
- </Field>
204
- <Reveal show={emailValid}>
205
- <Field name="password">
206
- <FieldLabel htmlFor={passwordId}>Password</FieldLabel>
207
- <PasswordInput
208
- id={passwordId}
209
- name="password"
210
- aria-label="Password"
211
- autoComplete="new-password"
212
- placeholder="Create a password"
213
- showStrength
214
- required
215
- disabled={busy}
216
- value={password}
217
- onChange={(event) => setPassword(event.target.value)}
218
- />
219
- </Field>
220
- </Reveal>
221
- {showTerms && (
222
- <div className="flex items-center gap-2">
223
- <Checkbox
224
- id={termsId}
225
- checked={terms}
226
- onCheckedChange={(checked) =>
227
- handleTermsChange(checked === true)
228
- }
229
- disabled={busy}
230
- />
231
- <Label htmlFor={termsId} className="font-normal">
232
- I agree to the{" "}
233
- {termsComponent ?? (
234
- <Button variant="link" type="button" onClick={onTerms}>
235
- terms
236
- </Button>
237
- )}
238
- </Label>
239
- </div>
240
- )}
241
- <AuthError message={error} />
242
- <Button
243
- className={cn("w-full", accent && authAccentActionStyles)}
244
- type="submit"
245
- loading={status === "loading"}
246
- disabled={busy}
247
- >
248
- Create account
249
- </Button>
250
- </form>
251
- </div>
252
- )}
253
- </MorphStep>
254
- </AuthCard>
255
- );
256
- }
@@ -1,436 +0,0 @@
1
- import type { TSocialProvider } from "@/components/composed/types";
2
- import type { TAuthAccent } from "@/lib/auth-accent";
3
-
4
- export interface IUpdatePasswordBlockProps {
5
- title?: string;
6
- description?: string;
7
- /** Brand mark rendered above the title. Omit for no logo row at all. */
8
- logo?: React.ReactNode;
9
- /** Brand accent for the primary action. Omit to keep the default primary. */
10
- accent?: TAuthAccent;
11
- /**
12
- * Minimum strength (0-4, as scored by `getPasswordStrength`) the new
13
- * password must reach before the confirm field is revealed. 0 disables the
14
- * gate.
15
- */
16
- minStrength?: number;
17
- /** Reject (or throw) to show the error state with the error's message. */
18
- onSubmit?: (data: { password: string }) => Promise<void> | void;
19
- onDone?: () => void;
20
- }
21
-
22
- export interface ISignupBlockProps {
23
- title?: string;
24
- description?: string;
25
- /**
26
- * Replaces the built-in "terms" link inside the consent label — pass your
27
- * own dialog trigger to render it inline instead of wiring `onTerms`.
28
- */
29
- termsComponent?: React.ReactNode;
30
- /** Brand mark rendered above the title. Omit for no logo row at all. */
31
- logo?: React.ReactNode;
32
- /** Brand accent for the primary action. Omit keeping the default primary. */
33
- accent?: TAuthAccent;
34
- providers?: TSocialProvider[];
35
- showNameField?: boolean;
36
- /** Require the term checkbox before submitting. */
37
- showTerms?: boolean;
38
- /**
39
- * Controls the term checkbox. Pass it with `onTermsCheckedChange` when
40
- * something outside the block has to tick the box — an "I agree" action in
41
- * your own terms dialog, say. Omit letting the block own the state.
42
- */
43
- termsChecked?: boolean;
44
- /** Starting state of the term checkbox while it is uncontrolled. */
45
- defaultTermsChecked?: boolean;
46
- /** Fires on every change, controlled or not. */
47
- onTermsCheckedChange?: (checked: boolean) => void;
48
- /** Block submission until every password requirement is met. */
49
- enforceStrongPassword?: boolean;
50
- onSubmit?: (data: {
51
- name: string;
52
- email: string;
53
- password: string;
54
- }) => Promise<void> | void;
55
- onProviderSelect?: (provider: TSocialProvider) => Promise<void> | void;
56
- onLogin?: () => void;
57
- onTerms?: () => void;
58
- }
59
-
60
- export interface IPasskeySignInBlockProps {
61
- /**
62
- * Whether this device can use passkeys. `false` renders nothing at all —
63
- * a passkey button that is guaranteed to fail is worse than no button.
64
- */
65
- available?: boolean;
66
- /** Button label. */
67
- label?: string;
68
- /**
69
- * Reject (or throw) to show the inline error. Resolving with
70
- * `{ cancelled: true }` returns silently to idle — a dismissed OS prompt is
71
- * not a failure and must not surface an error.
72
- */
73
- onSignIn?: () => Promise<{ cancelled?: boolean } | void> | void;
74
- /** Hint shown under an error, pointing at the remaining sign-in methods. */
75
- fallbackHint?: React.ReactNode;
76
- className?: string;
77
- }
78
-
79
- /** One registered passkey, as rendered by {@link PasskeyManagerBlock}. */
80
- export interface IPasskeyRecord {
81
- id: string
82
- /** Server-derived name; falls back to "Passkey" when absent. */
83
- name?: string | null
84
- /** ISO timestamps. Unparseable values are simply not shown. */
85
- createdAt?: string | null
86
- lastUsedAt?: string | null
87
- }
88
-
89
- /** Value a single onboarding field can hold. */
90
- export type TOnboardingValue = string | boolean;
91
-
92
- export interface IOnboardingSelectOption {
93
- value: string;
94
- label: string;
95
- }
96
-
97
- interface IOnboardingFieldBase {
98
- /** Key the value is collected under; unique within the flow. */
99
- name: string;
100
- label: string;
101
- /** Required fields gate the step's advance. */
102
- required?: boolean;
103
- placeholder?: string;
104
- /** Extra validation; return a message to reject, `null` to accept. */
105
- validate?: (value: string) => string | null;
106
- }
107
-
108
- export interface IOnboardingTextField extends IOnboardingFieldBase {
109
- kind: "text" | "textarea" | "url";
110
- }
111
-
112
- export interface IOnboardingCheckboxField extends IOnboardingFieldBase {
113
- kind: "checkbox";
114
- }
115
-
116
- export interface IOnboardingSelectField extends IOnboardingFieldBase {
117
- kind: "select";
118
- options: IOnboardingSelectOption[];
119
- }
120
-
121
- /** Discriminated on `kind`. */
122
- export type TOnboardingFieldConfig =
123
- | IOnboardingTextField
124
- | IOnboardingCheckboxField
125
- | IOnboardingSelectField;
126
-
127
- export interface IOnboardingStepConfig {
128
- /** Unique within the flow and stable across releases. */
129
- id: string;
130
- title: string;
131
- description?: string;
132
- fields: TOnboardingFieldConfig[];
133
- }
134
-
135
- export interface IOnboardingBlockProps {
136
- /** Declared profile steps. */
137
- steps?: IOnboardingStepConfig[];
138
- /** Brand mark rendered above the title. Omit for no logo row at all. */
139
- logo?: React.ReactNode;
140
- /** Brand accent for the primary action. Omit to keep the default primary. */
141
- accent?: TAuthAccent;
142
- /**
143
- * Fires per step as it is submitted. Reject (or throw) to keep the user on
144
- * the step and show the error.
145
- */
146
- onStepSubmit?: (
147
- stepId: string,
148
- values: Record<string, TOnboardingValue>,
149
- ) => Promise<void> | void;
150
- /** Fires once, after the final step is accepted, with the merged profile. */
151
- onComplete?: (profile: Record<string, TOnboardingValue>) => Promise<void> | void;
152
- /** Shows a brief success screen once onboarding completes. */
153
- showCompleteScreen?: boolean;
154
- /** Move focus to step headings. Disable when embedding a gallery preview. */
155
- autoFocus?: boolean;
156
- className?: string;
157
- }
158
-
159
- export interface ILoginBlockProps {
160
- title?: string;
161
- description?: string;
162
- /** Brand mark rendered above the title. Omit for no logo row at all. */
163
- logo?: React.ReactNode;
164
- /** Brand accent for the primary action. Omit to keep the default primary. */
165
- accent?: TAuthAccent;
166
- /** Social providers to offer; empty array hides the social section. */
167
- providers?: TSocialProvider[];
168
- showRememberMe?: boolean;
169
- showForgotPassword?: boolean;
170
- /** Reject (or throw) to show the error state with the error's message. */
171
- onSubmit?: (data: {
172
- email: string;
173
- password: string;
174
- remember: boolean;
175
- }) => Promise<void> | void;
176
- onProviderSelect?: (provider: TSocialProvider) => Promise<void> | void;
177
- onForgotPassword?: () => void;
178
- onSignup?: () => void;
179
- }
180
-
181
- /** One sign-in identity attached to the account. */
182
- export interface ILinkedIdentity {
183
- id: string
184
- provider: TSocialProvider
185
- /** Account address shown under the provider name, when known. */
186
- email?: string | null
187
- }
188
-
189
- export interface ILinkedAccountsBlockProps {
190
- title?: string
191
- description?: string
192
- /** Identities already attached to the account. */
193
- identities?: ILinkedIdentity[]
194
- /** Providers offered as connect candidates; connected ones are filtered out. */
195
- providers?: TSocialProvider[]
196
- /** Shows the loading row instead of the list. */
197
- loading?: boolean
198
- /**
199
- * The account can also sign in through a method that has no row in this
200
- * list — an email/password credential, say. Lifts the last-method guard,
201
- * which otherwise refuses to disconnect the final listed identity.
202
- */
203
- hasOtherSignInMethods?: boolean
204
- /** Reject (or throw) to show the inline error. */
205
- onLink?: (provider: TSocialProvider) => Promise<void> | void
206
- onUnlink?: (id: string) => Promise<void> | void
207
- className?: string
208
- }
209
-
210
-
211
- export interface IForgotPasswordBlockProps {
212
- title?: string;
213
- description?: string;
214
- /** Brand mark rendered above the title. Omit for no logo row at all. */
215
- logo?: React.ReactNode;
216
- /** Brand accent for the primary action. Omit to keep the default primary. */
217
- accent?: TAuthAccent;
218
- onSubmit?: (data: { email: string }) => Promise<void> | void;
219
- onBackToLogin?: () => void;
220
- }
221
-
222
-
223
- export interface ICodeAuthBlockProps {
224
- /** Brand mark rendered above the title. Omit for no logo row at all. */
225
- logo?: React.ReactNode;
226
- /** Brand accent for the primary action. Omit to keep the default primary. */
227
- accent?: TAuthAccent;
228
- /** Where the code was sent; drives copy and icon. */
229
- channel?: "email" | "sms";
230
- /** Masked destination shown in the description, e.g. "y•••@example.com". */
231
- destination?: string;
232
- length?: number;
233
- /** Submit automatically once all digits are entered. */
234
- autoSubmit?: boolean;
235
- /** Seconds before "Resend code" becomes available. 0 disables the wait. */
236
- resendSeconds?: number;
237
- /** Reject (or throw) to show the error shake and clear the code. */
238
- onVerify?: (code: string) => Promise<void> | void;
239
- onResend?: () => Promise<void> | void;
240
- onBack?: () => void;
241
- }
242
-
243
-
244
- export type TAuthFlowId = string
245
-
246
- /** Which auth block the app is showing. */
247
- export type TAuthFlowStep =
248
- | "login"
249
- | "signup"
250
- | "verify-code"
251
- | "forgot-password"
252
- | "update-password"
253
- | "onboarding"
254
- | "success"
255
-
256
- export type TAuthFlowChannel = "email" | "sms"
257
-
258
- export interface IAuthFlowState {
259
- step: TAuthFlowStep
260
- /** The identifier in flight — an email or phone number. Cleared by reset
261
- * and by signOut. Never store passwords or codes here. */
262
- identifier: string | null
263
- /** `identifier` masked for display — "y•••@example.com", "•••1234". */
264
- maskedIdentifier: string | null
265
- channel: TAuthFlowChannel
266
- status: TAuthStatus
267
- error: string | null
268
- }
269
-
270
- /** Options for `beginAuthVerificationAtom` / `beginVerification`. */
271
- export interface IBeginAuthVerificationOptions {
272
- identifier: string
273
- /** @default "email" */
274
- channel?: TAuthFlowChannel
275
- /** @default "verify-code" */
276
- step?: TAuthFlowStep
277
- }
278
-
279
- /** What `useAuthFlowActions(flowId)` returns. */
280
- export interface IAuthFlowActions {
281
- /** Show a step; resets status to `"idle"` and clears the error. Keeps the
282
- * identifier. */
283
- goToStep: (step: TAuthFlowStep) => void
284
- /** Record the identifier in flight and move to the verification step. */
285
- beginVerification: (options: IBeginAuthVerificationOptions) => void
286
- /** Mark the flow `"loading"` while an async attempt is in flight. */
287
- beginAttempt: () => void
288
- /** Mark the flow `"error"` with a message. */
289
- fail: (message: string) => void
290
- /** Mark the flow `"success"`; when a user is given, also sign the session
291
- * in. */
292
- complete: (user?: IAuthUser) => void
293
- /** Back to the initial values (login step, no identifier). */
294
- reset: () => void
295
- }
296
-
297
- /** The signed-in identity, kept for the whole session. Structurally
298
- * assignable to `ProfileCardUser`, so it drops into `ProfileCardBlock`. */
299
- export interface IAuthUser {
300
- id: string
301
- name: string
302
- /** Secondary line — a handle, an email, a role. */
303
- username?: string
304
- email?: string
305
- /** Avatar image URL. */
306
- avatar?: string
307
- initials?: string
308
- /** App-specific extras the library never interprets. */
309
- metadata?: Record<string, unknown>
310
- }
311
-
312
- /** `unknown` until the app restores or rejects a session at boot. */
313
- export type TAuthSessionStatus = "unknown" | "unauthenticated" | "authenticated"
314
-
315
- export interface IAuthSessionState {
316
- status: TAuthSessionStatus
317
- user: IAuthUser | null
318
- }
319
-
320
- /** What `useAuthSessionActions()` returns. */
321
- export interface IAuthSessionActions {
322
- signIn: (user: IAuthUser) => void
323
- /** Shallow-merge a patch into the signed-in user; no-op when signed out. */
324
- updateUser: (patch: Partial<IAuthUser>) => void
325
- /** What an app calls at boot when session restore fails. */
326
- markUnauthenticated: () => void
327
- /** Sign out AND return the default auth flow to the login step. */
328
- signOut: () => void
329
- }
330
-
331
- export type TAuthStatus = "idle" | "loading" | "success" | "error";
332
-
333
- export type TAuthFlowDirective =
334
- | { user: IAuthUser }
335
- | { verify: IBeginAuthVerificationOptions }
336
- | { step: TAuthFlowStep }
337
- | void
338
-
339
- export type TAuthFlowHandler<Data = void> = (
340
- data: Data
341
- ) => Promise<TAuthFlowDirective> | TAuthFlowDirective
342
-
343
- /** Per-step prop overrides, merged over the orchestrator's wiring — spread
344
- * last, so an app can restyle a block or unhook a default navigation link
345
- * (`{ login: { onSignup: undefined } }` removes the sign-up hand-off). */
346
- export interface IAuthFlowStepOverrides {
347
- login?: Partial<ILoginBlockProps>
348
- signup?: Partial<ISignupBlockProps>
349
- "verify-code"?: Partial<ICodeAuthBlockProps>
350
- "forgot-password"?: Partial<IForgotPasswordBlockProps>
351
- "update-password"?: Partial<IUpdatePasswordBlockProps>
352
- onboarding?: Partial<IOnboardingBlockProps>
353
- }
354
-
355
- export interface IAuthFlowBlockProps {
356
- /** Which flow instance to orchestrate. The default flow unless a re-auth
357
- * modal or a second surface needs its own. */
358
- flowId?: TAuthFlowId
359
- /** Brand mark handed to every step's card. */
360
- logo?: React.ReactNode
361
- /** Brand accent handed to every step's card. */
362
- accent?: TAuthAccent
363
- /** Social providers offered on the login and signup steps. */
364
- providers?: TSocialProvider[]
365
- /** The login attempt. Resolve with a directive; reject to show the error
366
- * in the block. */
367
- onLogin?: TAuthFlowHandler<{
368
- email: string
369
- password: string
370
- remember: boolean
371
- }>
372
- /** The signup attempt. */
373
- onSignup?: TAuthFlowHandler<{ name: string; email: string; password: string }>
374
- /** A social provider chosen on the login or signup step. */
375
- onProviderSelect?: TAuthFlowHandler<TSocialProvider>
376
- /** The forgot-password request. Resolving without a directive stays on the
377
- * step (the block shows its own "link sent" state). */
378
- onRequestReset?: TAuthFlowHandler<{ email: string }>
379
- /** The code entered on the verification step. */
380
- onVerifyCode?: TAuthFlowHandler<string>
381
- /** "Resend code" on the verification step. */
382
- onResendCode?: TAuthFlowHandler
383
- /** The update-password submit. */
384
- onUpdatePassword?: TAuthFlowHandler<{ password: string }>
385
- /** Onboarding finished, with the merged profile. */
386
- onOnboardingComplete?: TAuthFlowHandler<Record<string, TOnboardingValue>>
387
- /** Declared onboarding steps, handed to `OnboardingBlock`. */
388
- onboardingSteps?: IOnboardingStepConfig[]
389
- /** Per-step prop overrides, merged over the orchestrator's wiring. */
390
- steps?: IAuthFlowStepOverrides
391
- /** Replace any step's UI entirely; return `undefined` to keep the default
392
- * for that step. Receives the flow state for destination copy etc. */
393
- renderStep?: (
394
- step: TAuthFlowStep,
395
- flow: IAuthFlowState
396
- ) => React.ReactNode | undefined
397
- /** Replaces the whole default success card. */
398
- success?: React.ReactNode
399
- /** Card title of the default success step. */
400
- successTitle?: string
401
- /** Body under the default success step's "You're signed in" check. */
402
- successDescription?: string
403
- className?: string
404
- }
405
-
406
- export interface IProfileStepProps {
407
- step: IOnboardingStepConfig;
408
- /** Seed values, so drafts survive back/forward navigation. */
409
- values: Record<string, TOnboardingValue>;
410
- submitting?: boolean;
411
- submitLabel: string;
412
- onSubmit: (values: Record<string, TOnboardingValue>) => void | Promise<void>;
413
- onBack?: () => void;
414
- /** Reports every edit so the flow can restore drafts across navigation. */
415
- onDraftChange?: (name: string, value: TOnboardingValue) => void;
416
- }
417
-
418
- export interface IPasskeyManagerBlockProps {
419
- title?: string
420
- description?: string
421
- /** The account's passkeys, newest first. */
422
- passkeys?: IPasskeyRecord[]
423
- /** Whether this device can register passkeys at all. */
424
- available?: boolean
425
- /** Shows the loading row instead of the list. */
426
- loading?: boolean
427
- /**
428
- * Reject (or throw) to show the error. Resolving with `{ cancelled: true }`
429
- * returns silently to idle — a dismissed OS prompt is not a failure.
430
- */
431
- onRegister?: () => Promise<{ cancelled?: boolean } | void> | void
432
- onRename?: (id: string, name: string) => Promise<void> | void
433
- onDelete?: (id: string) => Promise<void> | void
434
- className?: string
435
- }
436
-