@exegia/corpora-ui 3.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 (587) hide show
  1. package/README.md +20 -0
  2. package/dist-lib/button-CIRkQXA6.js +152 -0
  3. package/dist-lib/button.js +3 -0
  4. package/dist-lib/card.js +150 -0
  5. package/dist-lib/components/atoms/text/default.d.ts +2 -1143
  6. package/dist-lib/components/blocks/shell/index.d.ts +1 -0
  7. package/dist-lib/components/ui/badge.d.ts +2 -2
  8. package/dist-lib/components/ui/button.d.ts +2 -2
  9. package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
  10. package/dist-lib/components/ui/modal.d.ts +10 -0
  11. package/dist-lib/components/ui/overlays.d.ts +4 -0
  12. package/dist-lib/components/ui/select.d.ts +1 -1
  13. package/dist-lib/components/ui/toast.d.ts +2 -0
  14. package/dist-lib/ease-C9At8rnB.js +120 -0
  15. package/dist-lib/exegia-provider-DNTuLljX.js +124 -0
  16. package/dist-lib/index.css +3 -0
  17. package/dist-lib/index.d.ts +3 -0
  18. package/dist-lib/index.js +6482 -8894
  19. package/dist-lib/input.js +28 -0
  20. package/dist-lib/label.js +19 -0
  21. package/dist-lib/lib/segmented-control.d.ts +1 -1
  22. package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
  23. package/dist-lib/lib/state/index.d.ts +2 -0
  24. package/dist-lib/lib/state/portal-context.d.ts +5 -0
  25. package/dist-lib/lib/state/sound-loading.d.ts +4 -0
  26. package/dist-lib/liquid-glass-BihU6nMl.js +50 -0
  27. package/dist-lib/modal-DLaOK-s1.js +82 -0
  28. package/dist-lib/overlays.js +3 -0
  29. package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  30. package/dist-lib/scaffold-Qv4hs5Pf.js +925 -0
  31. package/dist-lib/scaffold.js +2 -0
  32. package/dist-lib/shell-BQ9cjIEu.js +722 -0
  33. package/dist-lib/shell.js +2 -0
  34. package/dist-lib/sound-knGH4lj-.js +19 -0
  35. package/dist-lib/state.js +2 -0
  36. package/dist-lib/toast-CataVXHN.js +193 -0
  37. package/dist-lib/utils-BO0qfoA6.js +61 -0
  38. package/package.json +64 -23
  39. package/dist-lib/components/atoms/_layout.d.ts +0 -4
  40. package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
  41. package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
  42. package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
  43. package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
  44. package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
  45. package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
  46. package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
  47. package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
  48. package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
  49. package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
  50. package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
  51. package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
  52. package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
  53. package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
  54. package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
  55. package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
  56. package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
  57. package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
  58. package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
  59. package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
  60. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
  61. package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
  62. package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
  63. package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
  64. package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
  65. package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
  66. package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
  67. package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
  68. package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
  69. package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
  70. package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
  71. package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
  72. package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
  73. package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
  74. package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
  75. package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
  76. package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
  77. package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
  78. package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
  79. package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
  80. package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
  81. package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
  82. package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
  83. package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
  84. package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
  85. package/dist-lib/components/docs/browser.d.ts +0 -10
  86. package/dist-lib/components/docs/code-block.d.ts +0 -4
  87. package/dist-lib/components/docs/components-gallery.d.ts +0 -2
  88. package/dist-lib/components/docs/demo-controls.d.ts +0 -21
  89. package/dist-lib/components/docs/hero.d.ts +0 -5
  90. package/dist-lib/components/docs/mermaid.d.ts +0 -3
  91. package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
  92. package/dist-lib/components/stories/attachment.story.d.ts +0 -11
  93. package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
  94. package/dist-lib/components/stories/avatar.story.d.ts +0 -6
  95. package/dist-lib/components/stories/base.story.d.ts +0 -6
  96. package/dist-lib/components/stories/bubble.story.d.ts +0 -6
  97. package/dist-lib/components/stories/button.story.d.ts +0 -9
  98. package/dist-lib/components/stories/card.story.d.ts +0 -8
  99. package/dist-lib/components/stories/chart.story.d.ts +0 -71
  100. package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
  101. package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
  102. package/dist-lib/components/stories/code-block.story.d.ts +0 -12
  103. package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
  104. package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
  105. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
  106. package/dist-lib/components/stories/field.story.d.ts +0 -6
  107. package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
  108. package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
  109. package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
  110. package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
  111. package/dist-lib/components/stories/frame.story.d.ts +0 -8
  112. package/dist-lib/components/stories/index.d.ts +0 -54
  113. package/dist-lib/components/stories/input-group.story.d.ts +0 -6
  114. package/dist-lib/components/stories/input.story.d.ts +0 -8
  115. package/dist-lib/components/stories/insight-cards.story.d.ts +0 -74
  116. package/dist-lib/components/stories/label.story.d.ts +0 -8
  117. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
  118. package/dist-lib/components/stories/login-block.story.d.ts +0 -2
  119. package/dist-lib/components/stories/logo.story.d.ts +0 -3
  120. package/dist-lib/components/stories/markdown.story.d.ts +0 -7
  121. package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
  122. package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
  123. package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
  124. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
  125. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
  126. package/dist-lib/components/stories/password-input.story.d.ts +0 -9
  127. package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
  128. package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
  129. package/dist-lib/components/stories/records-table.story.d.ts +0 -23
  130. package/dist-lib/components/stories/reference.story.d.ts +0 -9
  131. package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
  132. package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
  133. package/dist-lib/components/stories/separator.story.d.ts +0 -6
  134. package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
  135. package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
  136. package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
  137. package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
  138. package/dist-lib/components/stories/text.story.d.ts +0 -8
  139. package/dist-lib/components/stories/textarea.story.d.ts +0 -6
  140. package/dist-lib/components/stories/tree.story.d.ts +0 -4
  141. package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
  142. package/dist-lib/components/stories/user.story.d.ts +0 -8
  143. package/dist-lib/components/stories/verse.story.d.ts +0 -6
  144. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
  145. package/dist-lib/index.js.map +0 -1
  146. package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
  147. package/dist-lib/lib/utils.test.d.ts +0 -1
  148. package/src/assets/css/base.css +0 -62
  149. package/src/assets/css/chat.css +0 -229
  150. package/src/assets/css/shadows.css +0 -157
  151. package/src/assets/css/theme.css +0 -321
  152. package/src/components/AGENTS.md +0 -0
  153. package/src/components/atoms/_layout.tsx +0 -9
  154. package/src/components/atoms/avatar/base.tsx +0 -70
  155. package/src/components/atoms/avatar/index.ts +0 -10
  156. package/src/components/atoms/avatar/types.ts +0 -24
  157. package/src/components/atoms/avatar/utils.ts +0 -54
  158. package/src/components/atoms/avatar/verified.tsx +0 -16
  159. package/src/components/atoms/background/index.ts +0 -8
  160. package/src/components/atoms/background/texture.tsx +0 -29
  161. package/src/components/atoms/background/type.ts +0 -10
  162. package/src/components/atoms/background/utils.ts +0 -13
  163. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
  164. package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
  165. package/src/components/atoms/bubble/actions.tsx +0 -28
  166. package/src/components/atoms/bubble/context.ts +0 -11
  167. package/src/components/atoms/bubble/default.tsx +0 -46
  168. package/src/components/atoms/bubble/header.tsx +0 -36
  169. package/src/components/atoms/bubble/index.ts +0 -37
  170. package/src/components/atoms/bubble/message.tsx +0 -32
  171. package/src/components/atoms/bubble/reactions.tsx +0 -191
  172. package/src/components/atoms/bubble/types.ts +0 -82
  173. package/src/components/atoms/bubble/utils.ts +0 -46
  174. package/src/components/atoms/chip.tsx +0 -61
  175. package/src/components/atoms/field.tsx +0 -43
  176. package/src/components/atoms/index.ts +0 -26
  177. package/src/components/atoms/loader.tsx +0 -33
  178. package/src/components/atoms/reference.tsx +0 -41
  179. package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
  180. package/src/components/atoms/text/default.tsx +0 -59
  181. package/src/components/atoms/text/heading.tsx +0 -58
  182. package/src/components/atoms/text/index.ts +0 -28
  183. package/src/components/atoms/text/label.tsx +0 -16
  184. package/src/components/atoms/text/paragraph.tsx +0 -55
  185. package/src/components/atoms/text/span.tsx +0 -14
  186. package/src/components/atoms/text/types.ts +0 -41
  187. package/src/components/atoms/text/utils.ts +0 -16
  188. package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
  189. package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
  190. package/src/components/atoms/text-selection/click-popover.tsx +0 -62
  191. package/src/components/atoms/text-selection/index.ts +0 -30
  192. package/src/components/atoms/text-selection/popover.tsx +0 -103
  193. package/src/components/atoms/text-selection/selection-atom.ts +0 -51
  194. package/src/components/atoms/text-selection/selection.tsx +0 -56
  195. package/src/components/atoms/text-selection/types.ts +0 -125
  196. package/src/components/atoms/text-selection/use-selection.ts +0 -84
  197. package/src/components/atoms/types.ts +0 -46
  198. package/src/components/blocks/.gitkeep +0 -0
  199. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
  200. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
  201. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
  202. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
  203. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
  204. package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
  205. package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
  206. package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
  207. package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
  208. package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
  209. package/src/components/blocks/auth/auth-session-atom.ts +0 -82
  210. package/src/components/blocks/auth/auth-shell.tsx +0 -265
  211. package/src/components/blocks/auth/auth-state.ts +0 -40
  212. package/src/components/blocks/auth/code-auth-block.tsx +0 -176
  213. package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
  214. package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
  215. package/src/components/blocks/auth/login-block.tsx +0 -217
  216. package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
  217. package/src/components/blocks/auth/onboarding-block.tsx +0 -183
  218. package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
  219. package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
  220. package/src/components/blocks/auth/signup-block.tsx +0 -256
  221. package/src/components/blocks/auth/type.ts +0 -436
  222. package/src/components/blocks/auth/update-password-block.tsx +0 -139
  223. package/src/components/blocks/auth/use-auth-state.ts +0 -127
  224. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
  225. package/src/components/blocks/chat/banners.tsx +0 -61
  226. package/src/components/blocks/chat/base.tsx +0 -84
  227. package/src/components/blocks/chat/header.tsx +0 -60
  228. package/src/components/blocks/chat/index.ts +0 -37
  229. package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
  230. package/src/components/blocks/chat/shared.tsx +0 -27
  231. package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
  232. package/src/components/blocks/chat/type.ts +0 -96
  233. package/src/components/blocks/chat/version-history-record.tsx +0 -37
  234. package/src/components/blocks/layout.ts +0 -35
  235. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
  236. package/src/components/blocks/profile/index.ts +0 -28
  237. package/src/components/blocks/profile/profile-card-atom.ts +0 -247
  238. package/src/components/blocks/profile/profile-card-block.tsx +0 -369
  239. package/src/components/blocks/profile/type.ts +0 -93
  240. package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
  241. package/src/components/blocks/profile/use-profile-card.ts +0 -132
  242. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
  243. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
  244. package/src/components/blocks/scaffold/constants.ts +0 -39
  245. package/src/components/blocks/scaffold/index.ts +0 -60
  246. package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
  247. package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
  248. package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
  249. package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
  250. package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
  251. package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
  252. package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
  253. package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
  254. package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
  255. package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
  256. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
  257. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
  258. package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
  259. package/src/components/blocks/scaffold/type.ts +0 -264
  260. package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
  261. package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
  262. package/src/components/blocks/scaffold/utils.ts +0 -112
  263. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
  264. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
  265. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
  266. package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
  267. package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
  268. package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
  269. package/src/components/blocks/shell/animated-panel.tsx +0 -180
  270. package/src/components/blocks/shell/index.ts +0 -30
  271. package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
  272. package/src/components/blocks/shell/shell-layout.tsx +0 -139
  273. package/src/components/blocks/shell/shell-metrics.ts +0 -133
  274. package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
  275. package/src/components/blocks/shell/type.ts +0 -361
  276. package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
  277. package/src/components/blocks/shell/use-shell-fit.ts +0 -153
  278. package/src/components/blocks/shell/use-shell-panels.ts +0 -126
  279. package/src/components/blocks/shell/utils.ts +0 -187
  280. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  281. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  282. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  283. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
  284. package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
  285. package/src/components/blocks/sidebar/index.ts +0 -67
  286. package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
  287. package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
  288. package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
  289. package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
  290. package/src/components/blocks/sidebar/type.ts +0 -294
  291. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
  292. package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
  293. package/src/components/blocks/sidebar/utils.ts +0 -170
  294. package/src/components/blocks/types.ts +0 -6
  295. package/src/components/composed/.gitkeep +0 -0
  296. package/src/components/composed/__tests__/logo.test.tsx +0 -60
  297. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
  298. package/src/components/composed/action-bar/action.tsx +0 -77
  299. package/src/components/composed/action-bar/emojis.tsx +0 -97
  300. package/src/components/composed/action-bar/index.ts +0 -24
  301. package/src/components/composed/action-bar/toolbar.tsx +0 -66
  302. package/src/components/composed/action-bar/types.ts +0 -58
  303. package/src/components/composed/action-bar/utils.ts +0 -140
  304. package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
  305. package/src/components/composed/ai/avatar.tsx +0 -19
  306. package/src/components/composed/ai/index.ts +0 -36
  307. package/src/components/composed/ai/message.tsx +0 -49
  308. package/src/components/composed/ai/research-answer.tsx +0 -157
  309. package/src/components/composed/ai/shared.tsx +0 -94
  310. package/src/components/composed/ai/streaming-text.tsx +0 -94
  311. package/src/components/composed/ai/suggested-prompt.tsx +0 -183
  312. package/src/components/composed/ai/types.ts +0 -81
  313. package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
  314. package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
  315. package/src/components/composed/chat/__tests__/chart.test.tsx +0 -316
  316. package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
  317. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
  318. package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
  319. package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
  320. package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
  321. package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
  322. package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
  323. package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
  324. package/src/components/composed/chat/actions.tsx +0 -81
  325. package/src/components/composed/chat/attachment-file.ts +0 -82
  326. package/src/components/composed/chat/attachment.tsx +0 -498
  327. package/src/components/composed/chat/chart/chart-atom.ts +0 -55
  328. package/src/components/composed/chat/chart/chart-context.ts +0 -9
  329. package/src/components/composed/chat/chart/chart-legend.tsx +0 -75
  330. package/src/components/composed/chat/chart/chart-plot.tsx +0 -233
  331. package/src/components/composed/chat/chart/chart-root.tsx +0 -229
  332. package/src/components/composed/chat/chart/chart-tooltip.tsx +0 -74
  333. package/src/components/composed/chat/chart/constants.ts +0 -8
  334. package/src/components/composed/chat/chart/evilcharts/README.md +0 -8
  335. package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +0 -2358
  336. package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +0 -2261
  337. package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +0 -233
  338. package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +0 -214
  339. package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +0 -111
  340. package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +0 -131
  341. package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +0 -2112
  342. package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +0 -1235
  343. package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +0 -125
  344. package/src/components/composed/chat/chart/index.ts +0 -13
  345. package/src/components/composed/chat/chart/type.ts +0 -88
  346. package/src/components/composed/chat/chart/use-chart-state.ts +0 -22
  347. package/src/components/composed/chat/chart/use-chart.ts +0 -70
  348. package/src/components/composed/chat/chart/utils.ts +0 -47
  349. package/src/components/composed/chat/chart.tsx +0 -3
  350. package/src/components/composed/chat/code-block.tsx +0 -123
  351. package/src/components/composed/chat/composer/add-button.tsx +0 -29
  352. package/src/components/composed/chat/composer/base.tsx +0 -573
  353. package/src/components/composed/chat/composer/command-menu.tsx +0 -47
  354. package/src/components/composed/chat/composer/hooks.ts +0 -29
  355. package/src/components/composed/chat/composer/index.ts +0 -19
  356. package/src/components/composed/chat/composer/send-button.tsx +0 -36
  357. package/src/components/composed/chat/composer/suggestions.tsx +0 -115
  358. package/src/components/composed/chat/composer/use-dictation.ts +0 -123
  359. package/src/components/composed/chat/composer/utils.ts +0 -74
  360. package/src/components/composed/chat/context-cards.tsx +0 -63
  361. package/src/components/composed/chat/filter-table.tsx +0 -119
  362. package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
  363. package/src/components/composed/chat/flowchart/connector.tsx +0 -32
  364. package/src/components/composed/chat/flowchart/constant.ts +0 -26
  365. package/src/components/composed/chat/flowchart/default.tsx +0 -230
  366. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
  367. package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
  368. package/src/components/composed/chat/flowchart/index.ts +0 -14
  369. package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
  370. package/src/components/composed/chat/flowchart/types.ts +0 -89
  371. package/src/components/composed/chat/flowchart/utils.ts +0 -78
  372. package/src/components/composed/chat/hint.tsx +0 -59
  373. package/src/components/composed/chat/index.ts +0 -92
  374. package/src/components/composed/chat/insight-cards.tsx +0 -199
  375. package/src/components/composed/chat/markdown-atom.ts +0 -15
  376. package/src/components/composed/chat/markdown.tsx +0 -213
  377. package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
  378. package/src/components/composed/chat/recommendation/constant.ts +0 -54
  379. package/src/components/composed/chat/recommendation/default.tsx +0 -25
  380. package/src/components/composed/chat/recommendation/group.tsx +0 -36
  381. package/src/components/composed/chat/recommendation/index.ts +0 -17
  382. package/src/components/composed/chat/recommendation/item.tsx +0 -215
  383. package/src/components/composed/chat/recommendation/types.ts +0 -76
  384. package/src/components/composed/chat/records-table.tsx +0 -130
  385. package/src/components/composed/chat/type.ts +0 -157
  386. package/src/components/composed/logo.tsx +0 -171
  387. package/src/components/composed/password-input.tsx +0 -179
  388. package/src/components/composed/reader/applied-mark.tsx +0 -32
  389. package/src/components/composed/reader/apply-toast.tsx +0 -49
  390. package/src/components/composed/reader/index.ts +0 -10
  391. package/src/components/composed/reader/selection-highlight.tsx +0 -26
  392. package/src/components/composed/reader/selection-popover.tsx +0 -149
  393. package/src/components/composed/reader/type.ts +0 -48
  394. package/src/components/composed/social-providers.tsx +0 -154
  395. package/src/components/composed/tree/CLAUDE.md +0 -145
  396. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
  397. package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
  398. package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
  399. package/src/components/composed/tree/constants.ts +0 -55
  400. package/src/components/composed/tree/index.ts +0 -51
  401. package/src/components/composed/tree/tree-atom.ts +0 -590
  402. package/src/components/composed/tree/tree-context.ts +0 -13
  403. package/src/components/composed/tree/tree-node.tsx +0 -496
  404. package/src/components/composed/tree/tree.tsx +0 -233
  405. package/src/components/composed/tree/type.ts +0 -322
  406. package/src/components/composed/tree/use-tree-dnd.ts +0 -179
  407. package/src/components/composed/tree/use-tree-state.ts +0 -105
  408. package/src/components/composed/tree/use-tree.ts +0 -311
  409. package/src/components/composed/tree/utils.ts +0 -172
  410. package/src/components/composed/types.ts +0 -9
  411. package/src/components/composed/user/__tests__/message.test.tsx +0 -79
  412. package/src/components/composed/user/index.ts +0 -14
  413. package/src/components/composed/user/info.tsx +0 -56
  414. package/src/components/composed/user/message.tsx +0 -36
  415. package/src/components/composed/user/pill.tsx +0 -20
  416. package/src/components/composed/user/types.ts +0 -47
  417. package/src/components/composed/user/utils.ts +0 -0
  418. package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
  419. package/src/components/composed/verse/index.ts +0 -2
  420. package/src/components/composed/verse/types.ts +0 -24
  421. package/src/components/composed/verse/verse.tsx +0 -100
  422. package/src/components/docs/atoms-gallery.tsx +0 -286
  423. package/src/components/docs/block-demo-stage.tsx +0 -38
  424. package/src/components/docs/blocks-gallery.tsx +0 -224
  425. package/src/components/docs/browser.tsx +0 -87
  426. package/src/components/docs/code-block.tsx +0 -10
  427. package/src/components/docs/components-gallery.tsx +0 -182
  428. package/src/components/docs/demo-controls.tsx +0 -142
  429. package/src/components/docs/hero.tsx +0 -197
  430. package/src/components/docs/mermaid.tsx +0 -55
  431. package/src/components/icons/README.md +0 -91
  432. package/src/components/icons/__tests__/icons.test.tsx +0 -58
  433. package/src/components/icons/file-badge-cfm.tsx +0 -615
  434. package/src/components/icons/file-badge-corpus.tsx +0 -604
  435. package/src/components/icons/file-badge-pdf.tsx +0 -570
  436. package/src/components/icons/file-badge-tei.tsx +0 -524
  437. package/src/components/icons/file-badge-tf.tsx +0 -620
  438. package/src/components/icons/file-badge-txt.tsx +0 -607
  439. package/src/components/icons/file-badge-xml.tsx +0 -576
  440. package/src/components/icons/file-wordmark-cfm.tsx +0 -424
  441. package/src/components/icons/file-wordmark-corpus.tsx +0 -454
  442. package/src/components/icons/file-wordmark-pdf.tsx +0 -470
  443. package/src/components/icons/file-wordmark-tei.tsx +0 -424
  444. package/src/components/icons/file-wordmark-tf.tsx +0 -406
  445. package/src/components/icons/file-wordmark-txt.tsx +0 -421
  446. package/src/components/icons/file-wordmark-xml.tsx +0 -424
  447. package/src/components/icons/index.ts +0 -16
  448. package/src/components/icons/types.ts +0 -8
  449. package/src/components/motion/index.ts +0 -0
  450. package/src/components/motion/overflow-actions.tsx +0 -376
  451. package/src/components/motion/popover-morph.tsx +0 -292
  452. package/src/components/motion/popover-position.ts +0 -86
  453. package/src/components/motion/shared-layout-bg.tsx +0 -151
  454. package/src/components/stories/attachment.story.tsx +0 -40
  455. package/src/components/stories/auth-flow-block.story.tsx +0 -17
  456. package/src/components/stories/avatar.story.tsx +0 -33
  457. package/src/components/stories/base.story.tsx +0 -70
  458. package/src/components/stories/bubble.story.tsx +0 -61
  459. package/src/components/stories/button.story.tsx +0 -32
  460. package/src/components/stories/card.story.tsx +0 -36
  461. package/src/components/stories/chart.story.tsx +0 -69
  462. package/src/components/stories/checkbox.story.tsx +0 -30
  463. package/src/components/stories/code-auth-block.story.tsx +0 -20
  464. package/src/components/stories/code-block.story.tsx +0 -35
  465. package/src/components/stories/composed-password-input.story.tsx +0 -41
  466. package/src/components/stories/context-cards.story.tsx +0 -30
  467. package/src/components/stories/emoji-action-bar.story.tsx +0 -20
  468. package/src/components/stories/field.story.tsx +0 -32
  469. package/src/components/stories/file-icons.story.tsx +0 -20
  470. package/src/components/stories/filter-table.story.tsx +0 -63
  471. package/src/components/stories/flowchart.story.tsx +0 -25
  472. package/src/components/stories/forgot-password-block.story.tsx +0 -14
  473. package/src/components/stories/frame.story.tsx +0 -32
  474. package/src/components/stories/index.ts +0 -57
  475. package/src/components/stories/input-group.story.tsx +0 -27
  476. package/src/components/stories/input.story.tsx +0 -42
  477. package/src/components/stories/insight-cards.story.tsx +0 -67
  478. package/src/components/stories/label.story.tsx +0 -32
  479. package/src/components/stories/linked-accounts-block.story.tsx +0 -23
  480. package/src/components/stories/login-block.story.tsx +0 -18
  481. package/src/components/stories/logo.story.tsx +0 -21
  482. package/src/components/stories/markdown.story.tsx +0 -31
  483. package/src/components/stories/menu-command.story.tsx +0 -43
  484. package/src/components/stories/onboarding-block.story.tsx +0 -14
  485. package/src/components/stories/otp-field.story.tsx +0 -35
  486. package/src/components/stories/passkey-manager-block.story.tsx +0 -18
  487. package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
  488. package/src/components/stories/password-input.story.tsx +0 -35
  489. package/src/components/stories/profile-card-block.story.tsx +0 -29
  490. package/src/components/stories/recommendation-card.story.tsx +0 -37
  491. package/src/components/stories/records-table.story.tsx +0 -52
  492. package/src/components/stories/reference.story.tsx +0 -33
  493. package/src/components/stories/research-answer.story.tsx +0 -32
  494. package/src/components/stories/scaffold-root.story.tsx +0 -47
  495. package/src/components/stories/separator.story.tsx +0 -37
  496. package/src/components/stories/shell-layout.story.tsx +0 -19
  497. package/src/components/stories/signup-block.story.tsx +0 -18
  498. package/src/components/stories/social-providers.story.tsx +0 -26
  499. package/src/components/stories/streaming-text.story.tsx +0 -25
  500. package/src/components/stories/text.story.tsx +0 -31
  501. package/src/components/stories/textarea.story.tsx +0 -34
  502. package/src/components/stories/tree.story.tsx +0 -31
  503. package/src/components/stories/update-password-block.story.tsx +0 -14
  504. package/src/components/stories/user.story.tsx +0 -32
  505. package/src/components/stories/verse.story.tsx +0 -42
  506. package/src/components/theme-provider.tsx +0 -230
  507. package/src/components/types.ts +0 -106
  508. package/src/components/ui/accordion.tsx +0 -68
  509. package/src/components/ui/alert-dialog.tsx +0 -167
  510. package/src/components/ui/alert.tsx +0 -84
  511. package/src/components/ui/autocomplete.tsx +0 -303
  512. package/src/components/ui/avatar.tsx +0 -109
  513. package/src/components/ui/badge.tsx +0 -101
  514. package/src/components/ui/button-group.tsx +0 -88
  515. package/src/components/ui/button.tsx +0 -192
  516. package/src/components/ui/card.tsx +0 -253
  517. package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
  518. package/src/components/ui/chat/avatar-handle.tsx +0 -30
  519. package/src/components/ui/chat/badges.tsx +0 -85
  520. package/src/components/ui/chat/buttons.tsx +0 -94
  521. package/src/components/ui/chat/chips.tsx +0 -106
  522. package/src/components/ui/chat/dot.tsx +0 -81
  523. package/src/components/ui/chat/icon-button.tsx +0 -43
  524. package/src/components/ui/chat/icon-tile.tsx +0 -33
  525. package/src/components/ui/chat/index.ts +0 -12
  526. package/src/components/ui/chat/inline-source.tsx +0 -94
  527. package/src/components/ui/chat/segmented-toggle.tsx +0 -99
  528. package/src/components/ui/chat/tag.tsx +0 -61
  529. package/src/components/ui/chat/thumbnail.tsx +0 -31
  530. package/src/components/ui/chat/waveform.tsx +0 -30
  531. package/src/components/ui/checkbox.tsx +0 -83
  532. package/src/components/ui/collapsible.tsx +0 -42
  533. package/src/components/ui/command.tsx +0 -263
  534. package/src/components/ui/context-menu.tsx +0 -342
  535. package/src/components/ui/emoji-picker.tsx +0 -161
  536. package/src/components/ui/field.tsx +0 -89
  537. package/src/components/ui/frame.tsx +0 -87
  538. package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
  539. package/src/components/ui/glasscn/glass-button.tsx +0 -25
  540. package/src/components/ui/glasscn/glass-container.tsx +0 -94
  541. package/src/components/ui/glasscn/glass-separator.tsx +0 -39
  542. package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
  543. package/src/components/ui/group.tsx +0 -92
  544. package/src/components/ui/input-group.tsx +0 -105
  545. package/src/components/ui/input.tsx +0 -70
  546. package/src/components/ui/kbd.tsx +0 -32
  547. package/src/components/ui/label.tsx +0 -36
  548. package/src/components/ui/menu-command.tsx +0 -156
  549. package/src/components/ui/menu.tsx +0 -352
  550. package/src/components/ui/otp-field.tsx +0 -88
  551. package/src/components/ui/popover-glass.tsx +0 -158
  552. package/src/components/ui/popover.tsx +0 -120
  553. package/src/components/ui/preview-card.tsx +0 -61
  554. package/src/components/ui/scroll-area.tsx +0 -80
  555. package/src/components/ui/select.tsx +0 -257
  556. package/src/components/ui/separator.tsx +0 -23
  557. package/src/components/ui/sheet.tsx +0 -135
  558. package/src/components/ui/skeleton.tsx +0 -18
  559. package/src/components/ui/spinner.tsx +0 -17
  560. package/src/components/ui/switch.tsx +0 -30
  561. package/src/components/ui/tabs.tsx +0 -120
  562. package/src/components/ui/textarea.tsx +0 -58
  563. package/src/components/ui/toast.tsx +0 -325
  564. package/src/components/ui/toolbar.tsx +0 -92
  565. package/src/components/ui/tooltip.tsx +0 -67
  566. package/src/index.css +0 -10
  567. package/src/index.ts +0 -102
  568. package/src/lib/attachment-content.ts +0 -28
  569. package/src/lib/auth-accent.ts +0 -49
  570. package/src/lib/ease.ts +0 -90
  571. package/src/lib/glass-variants.ts +0 -22
  572. package/src/lib/hooks/use-hover-capable.ts +0 -23
  573. package/src/lib/hooks/use-mobile.ts +0 -21
  574. package/src/lib/keyed-atom.ts +0 -60
  575. package/src/lib/segmented-control.ts +0 -42
  576. package/src/lib/sound.ts +0 -39
  577. package/src/lib/specular.ts +0 -10
  578. package/src/lib/state/__tests__/sound.test.tsx +0 -53
  579. package/src/lib/state/exegia-provider.tsx +0 -83
  580. package/src/lib/state/index.ts +0 -4
  581. package/src/lib/state/store.ts +0 -19
  582. package/src/lib/use-motion-panel.ts +0 -78
  583. package/src/lib/utils.test.ts +0 -22
  584. package/src/lib/utils.ts +0 -100
  585. package/src/specular.js +0 -4
  586. /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
  587. /package/{src/components/composed/chat/chart/evilcharts/LICENSE → dist-lib/EVILCHARTS-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
-