@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.
- package/README.md +20 -0
- package/dist-lib/button-CIRkQXA6.js +152 -0
- package/dist-lib/button.js +3 -0
- package/dist-lib/card.js +150 -0
- package/dist-lib/components/atoms/text/default.d.ts +2 -1143
- package/dist-lib/components/blocks/shell/index.d.ts +1 -0
- package/dist-lib/components/ui/badge.d.ts +2 -2
- package/dist-lib/components/ui/button.d.ts +2 -2
- package/dist-lib/components/ui/glasscn/lazy-glass-surface.d.ts +6 -0
- package/dist-lib/components/ui/modal.d.ts +10 -0
- package/dist-lib/components/ui/overlays.d.ts +4 -0
- package/dist-lib/components/ui/select.d.ts +1 -1
- package/dist-lib/components/ui/toast.d.ts +2 -0
- package/dist-lib/ease-C9At8rnB.js +120 -0
- package/dist-lib/exegia-provider-DNTuLljX.js +124 -0
- package/dist-lib/index.css +3 -0
- package/dist-lib/index.d.ts +3 -0
- package/dist-lib/index.js +6482 -8894
- package/dist-lib/input.js +28 -0
- package/dist-lib/label.js +19 -0
- package/dist-lib/lib/segmented-control.d.ts +1 -1
- package/dist-lib/lib/state/exegia-provider.d.ts +17 -8
- package/dist-lib/lib/state/index.d.ts +2 -0
- package/dist-lib/lib/state/portal-context.d.ts +5 -0
- package/dist-lib/lib/state/sound-loading.d.ts +4 -0
- package/dist-lib/liquid-glass-BihU6nMl.js +50 -0
- package/dist-lib/modal-DLaOK-s1.js +82 -0
- package/dist-lib/overlays.js +3 -0
- package/dist-lib/rolldown-runtime-Dy4uBu1J.js +11 -0
- package/dist-lib/scaffold-Qv4hs5Pf.js +925 -0
- package/dist-lib/scaffold.js +2 -0
- package/dist-lib/shell-BQ9cjIEu.js +722 -0
- package/dist-lib/shell.js +2 -0
- package/dist-lib/sound-knGH4lj-.js +19 -0
- package/dist-lib/state.js +2 -0
- package/dist-lib/toast-CataVXHN.js +193 -0
- package/dist-lib/utils-BO0qfoA6.js +61 -0
- package/package.json +64 -23
- package/dist-lib/components/atoms/_layout.d.ts +0 -4
- package/dist-lib/components/atoms/bubble/__tests__/bubble.test.d.ts +0 -1
- package/dist-lib/components/atoms/bubble/__tests__/reference.test.d.ts +0 -1
- package/dist-lib/components/atoms/text/__tests__/text.test.d.ts +0 -1
- package/dist-lib/components/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -1
- package/dist-lib/components/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/signup-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/auth/__tests__/update-password-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/chat/__tests__/ai-panel.test.d.ts +0 -1
- package/dist-lib/components/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -1
- package/dist-lib/components/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -1
- package/dist-lib/components/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -1
- package/dist-lib/components/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -1
- package/dist-lib/components/blocks/shell/__tests__/shell-layout.test.d.ts +0 -1
- package/dist-lib/components/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -1
- package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -1
- package/dist-lib/components/blocks/sidebar/__tests__/ai-sidebar.test.d.ts +0 -1
- package/dist-lib/components/blocks/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -1
- package/dist-lib/components/composed/__tests__/logo.test.d.ts +0 -1
- package/dist-lib/components/composed/action-bar/__tests__/action-bar.test.d.ts +0 -1
- package/dist-lib/components/composed/ai/__tests__/ai.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/attachment.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/chart.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/code-block.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/composer-attachments.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/composer.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/flowchart.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/glass-material.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/markdown.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/menu-command.test.d.ts +0 -1
- package/dist-lib/components/composed/chat/__tests__/recommendation.test.d.ts +0 -1
- package/dist-lib/components/composed/tree/__tests__/tree-atom.test.d.ts +0 -1
- package/dist-lib/components/composed/tree/__tests__/tree.test.d.ts +0 -1
- package/dist-lib/components/composed/tree/__tests__/use-tree.test.d.ts +0 -1
- package/dist-lib/components/composed/user/__tests__/message.test.d.ts +0 -1
- package/dist-lib/components/composed/verse/__tests__/verse.test.d.ts +0 -1
- package/dist-lib/components/docs/atoms-gallery.d.ts +0 -12
- package/dist-lib/components/docs/block-demo-stage.d.ts +0 -7
- package/dist-lib/components/docs/blocks-gallery.d.ts +0 -2
- package/dist-lib/components/docs/browser.d.ts +0 -10
- package/dist-lib/components/docs/code-block.d.ts +0 -4
- package/dist-lib/components/docs/components-gallery.d.ts +0 -2
- package/dist-lib/components/docs/demo-controls.d.ts +0 -21
- package/dist-lib/components/docs/hero.d.ts +0 -5
- package/dist-lib/components/docs/mermaid.d.ts +0 -3
- package/dist-lib/components/icons/__tests__/icons.test.d.ts +0 -1
- package/dist-lib/components/stories/attachment.story.d.ts +0 -11
- package/dist-lib/components/stories/auth-flow-block.story.d.ts +0 -2
- package/dist-lib/components/stories/avatar.story.d.ts +0 -6
- package/dist-lib/components/stories/base.story.d.ts +0 -6
- package/dist-lib/components/stories/bubble.story.d.ts +0 -6
- package/dist-lib/components/stories/button.story.d.ts +0 -9
- package/dist-lib/components/stories/card.story.d.ts +0 -8
- package/dist-lib/components/stories/chart.story.d.ts +0 -71
- package/dist-lib/components/stories/checkbox.story.d.ts +0 -6
- package/dist-lib/components/stories/code-auth-block.story.d.ts +0 -2
- package/dist-lib/components/stories/code-block.story.d.ts +0 -12
- package/dist-lib/components/stories/composed-password-input.story.d.ts +0 -6
- package/dist-lib/components/stories/context-cards.story.d.ts +0 -3
- package/dist-lib/components/stories/emoji-action-bar.story.d.ts +0 -3
- package/dist-lib/components/stories/field.story.d.ts +0 -6
- package/dist-lib/components/stories/file-icons.story.d.ts +0 -5
- package/dist-lib/components/stories/filter-table.story.d.ts +0 -21
- package/dist-lib/components/stories/flowchart.story.d.ts +0 -3
- package/dist-lib/components/stories/forgot-password-block.story.d.ts +0 -2
- package/dist-lib/components/stories/frame.story.d.ts +0 -8
- package/dist-lib/components/stories/index.d.ts +0 -54
- package/dist-lib/components/stories/input-group.story.d.ts +0 -6
- package/dist-lib/components/stories/input.story.d.ts +0 -8
- package/dist-lib/components/stories/insight-cards.story.d.ts +0 -74
- package/dist-lib/components/stories/label.story.d.ts +0 -8
- package/dist-lib/components/stories/linked-accounts-block.story.d.ts +0 -2
- package/dist-lib/components/stories/login-block.story.d.ts +0 -2
- package/dist-lib/components/stories/logo.story.d.ts +0 -3
- package/dist-lib/components/stories/markdown.story.d.ts +0 -7
- package/dist-lib/components/stories/menu-command.story.d.ts +0 -13
- package/dist-lib/components/stories/onboarding-block.story.d.ts +0 -2
- package/dist-lib/components/stories/otp-field.story.d.ts +0 -8
- package/dist-lib/components/stories/passkey-manager-block.story.d.ts +0 -2
- package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +0 -2
- package/dist-lib/components/stories/password-input.story.d.ts +0 -9
- package/dist-lib/components/stories/profile-card-block.story.d.ts +0 -6
- package/dist-lib/components/stories/recommendation-card.story.d.ts +0 -3
- package/dist-lib/components/stories/records-table.story.d.ts +0 -23
- package/dist-lib/components/stories/reference.story.d.ts +0 -9
- package/dist-lib/components/stories/research-answer.story.d.ts +0 -10
- package/dist-lib/components/stories/scaffold-root.story.d.ts +0 -6
- package/dist-lib/components/stories/separator.story.d.ts +0 -6
- package/dist-lib/components/stories/shell-layout.story.d.ts +0 -2
- package/dist-lib/components/stories/signup-block.story.d.ts +0 -2
- package/dist-lib/components/stories/social-providers.story.d.ts +0 -3
- package/dist-lib/components/stories/streaming-text.story.d.ts +0 -3
- package/dist-lib/components/stories/text.story.d.ts +0 -8
- package/dist-lib/components/stories/textarea.story.d.ts +0 -6
- package/dist-lib/components/stories/tree.story.d.ts +0 -4
- package/dist-lib/components/stories/update-password-block.story.d.ts +0 -2
- package/dist-lib/components/stories/user.story.d.ts +0 -8
- package/dist-lib/components/stories/verse.story.d.ts +0 -6
- package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +0 -1
- package/dist-lib/index.js.map +0 -1
- package/dist-lib/lib/state/__tests__/sound.test.d.ts +0 -1
- package/dist-lib/lib/utils.test.d.ts +0 -1
- package/src/assets/css/base.css +0 -62
- package/src/assets/css/chat.css +0 -229
- package/src/assets/css/shadows.css +0 -157
- package/src/assets/css/theme.css +0 -321
- package/src/components/AGENTS.md +0 -0
- package/src/components/atoms/_layout.tsx +0 -9
- package/src/components/atoms/avatar/base.tsx +0 -70
- package/src/components/atoms/avatar/index.ts +0 -10
- package/src/components/atoms/avatar/types.ts +0 -24
- package/src/components/atoms/avatar/utils.ts +0 -54
- package/src/components/atoms/avatar/verified.tsx +0 -16
- package/src/components/atoms/background/index.ts +0 -8
- package/src/components/atoms/background/texture.tsx +0 -29
- package/src/components/atoms/background/type.ts +0 -10
- package/src/components/atoms/background/utils.ts +0 -13
- package/src/components/atoms/bubble/__tests__/bubble.test.tsx +0 -193
- package/src/components/atoms/bubble/__tests__/reference.test.tsx +0 -25
- package/src/components/atoms/bubble/actions.tsx +0 -28
- package/src/components/atoms/bubble/context.ts +0 -11
- package/src/components/atoms/bubble/default.tsx +0 -46
- package/src/components/atoms/bubble/header.tsx +0 -36
- package/src/components/atoms/bubble/index.ts +0 -37
- package/src/components/atoms/bubble/message.tsx +0 -32
- package/src/components/atoms/bubble/reactions.tsx +0 -191
- package/src/components/atoms/bubble/types.ts +0 -82
- package/src/components/atoms/bubble/utils.ts +0 -46
- package/src/components/atoms/chip.tsx +0 -61
- package/src/components/atoms/field.tsx +0 -43
- package/src/components/atoms/index.ts +0 -26
- package/src/components/atoms/loader.tsx +0 -33
- package/src/components/atoms/reference.tsx +0 -41
- package/src/components/atoms/text/__tests__/text.test.tsx +0 -47
- package/src/components/atoms/text/default.tsx +0 -59
- package/src/components/atoms/text/heading.tsx +0 -58
- package/src/components/atoms/text/index.ts +0 -28
- package/src/components/atoms/text/label.tsx +0 -16
- package/src/components/atoms/text/paragraph.tsx +0 -55
- package/src/components/atoms/text/span.tsx +0 -14
- package/src/components/atoms/text/types.ts +0 -41
- package/src/components/atoms/text/utils.ts +0 -16
- package/src/components/atoms/text-selection/__tests__/click-popover.test.tsx +0 -61
- package/src/components/atoms/text-selection/__tests__/text-selection.test.tsx +0 -90
- package/src/components/atoms/text-selection/click-popover.tsx +0 -62
- package/src/components/atoms/text-selection/index.ts +0 -30
- package/src/components/atoms/text-selection/popover.tsx +0 -103
- package/src/components/atoms/text-selection/selection-atom.ts +0 -51
- package/src/components/atoms/text-selection/selection.tsx +0 -56
- package/src/components/atoms/text-selection/types.ts +0 -125
- package/src/components/atoms/text-selection/use-selection.ts +0 -84
- package/src/components/atoms/types.ts +0 -46
- package/src/components/blocks/.gitkeep +0 -0
- package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +0 -183
- package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +0 -247
- package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +0 -128
- package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +0 -183
- package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +0 -131
- package/src/components/blocks/auth/__tests__/passkey-sign-in-block.test.tsx +0 -59
- package/src/components/blocks/auth/__tests__/signup-block.test.tsx +0 -176
- package/src/components/blocks/auth/__tests__/update-password-block.test.tsx +0 -95
- package/src/components/blocks/auth/auth-flow-atom.ts +0 -238
- package/src/components/blocks/auth/auth-flow-block.tsx +0 -211
- package/src/components/blocks/auth/auth-session-atom.ts +0 -82
- package/src/components/blocks/auth/auth-shell.tsx +0 -265
- package/src/components/blocks/auth/auth-state.ts +0 -40
- package/src/components/blocks/auth/code-auth-block.tsx +0 -176
- package/src/components/blocks/auth/forgot-password-block.tsx +0 -112
- package/src/components/blocks/auth/linked-accounts-block.tsx +0 -203
- package/src/components/blocks/auth/login-block.tsx +0 -217
- package/src/components/blocks/auth/onboarding/profile-step.tsx +0 -216
- package/src/components/blocks/auth/onboarding-block.tsx +0 -183
- package/src/components/blocks/auth/passkey-manager-block.tsx +0 -316
- package/src/components/blocks/auth/passkey-sign-in-block.tsx +0 -67
- package/src/components/blocks/auth/signup-block.tsx +0 -256
- package/src/components/blocks/auth/type.ts +0 -436
- package/src/components/blocks/auth/update-password-block.tsx +0 -139
- package/src/components/blocks/auth/use-auth-state.ts +0 -127
- package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +0 -65
- package/src/components/blocks/chat/banners.tsx +0 -61
- package/src/components/blocks/chat/base.tsx +0 -84
- package/src/components/blocks/chat/header.tsx +0 -60
- package/src/components/blocks/chat/index.ts +0 -37
- package/src/components/blocks/chat/recommendation-stack.tsx +0 -41
- package/src/components/blocks/chat/shared.tsx +0 -27
- package/src/components/blocks/chat/suggested-prompts.tsx +0 -45
- package/src/components/blocks/chat/type.ts +0 -96
- package/src/components/blocks/chat/version-history-record.tsx +0 -37
- package/src/components/blocks/layout.ts +0 -35
- package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +0 -362
- package/src/components/blocks/profile/index.ts +0 -28
- package/src/components/blocks/profile/profile-card-atom.ts +0 -247
- package/src/components/blocks/profile/profile-card-block.tsx +0 -369
- package/src/components/blocks/profile/type.ts +0 -93
- package/src/components/blocks/profile/use-profile-card-state.ts +0 -67
- package/src/components/blocks/profile/use-profile-card.ts +0 -132
- package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +0 -236
- package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +0 -524
- package/src/components/blocks/scaffold/constants.ts +0 -39
- package/src/components/blocks/scaffold/index.ts +0 -60
- package/src/components/blocks/scaffold/panel-close-button.tsx +0 -36
- package/src/components/blocks/scaffold/panel-menu-button.tsx +0 -221
- package/src/components/blocks/scaffold/scaffold-actions.tsx +0 -92
- package/src/components/blocks/scaffold/scaffold-atom.ts +0 -427
- package/src/components/blocks/scaffold/scaffold-canvas.tsx +0 -162
- package/src/components/blocks/scaffold/scaffold-context.ts +0 -20
- package/src/components/blocks/scaffold/scaffold-inspector.tsx +0 -137
- package/src/components/blocks/scaffold/scaffold-main.tsx +0 -28
- package/src/components/blocks/scaffold/scaffold-panel.tsx +0 -186
- package/src/components/blocks/scaffold/scaffold-root.tsx +0 -120
- package/src/components/blocks/scaffold/scaffold-sidebar.tsx +0 -31
- package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +0 -122
- package/src/components/blocks/scaffold/scaffold-tab.tsx +0 -108
- package/src/components/blocks/scaffold/type.ts +0 -264
- package/src/components/blocks/scaffold/use-scaffold-state.ts +0 -85
- package/src/components/blocks/scaffold/use-scaffold.ts +0 -59
- package/src/components/blocks/scaffold/utils.ts +0 -112
- package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +0 -362
- package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +0 -596
- package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +0 -154
- package/src/components/blocks/shell/animated-panel-inset.tsx +0 -27
- package/src/components/blocks/shell/animated-panel-provider.tsx +0 -269
- package/src/components/blocks/shell/animated-panel-trigger.tsx +0 -51
- package/src/components/blocks/shell/animated-panel.tsx +0 -180
- package/src/components/blocks/shell/index.ts +0 -30
- package/src/components/blocks/shell/shell-fit-atom.ts +0 -246
- package/src/components/blocks/shell/shell-layout.tsx +0 -139
- package/src/components/blocks/shell/shell-metrics.ts +0 -133
- package/src/components/blocks/shell/shell-panel-atom.ts +0 -74
- package/src/components/blocks/shell/type.ts +0 -361
- package/src/components/blocks/shell/use-shell-fit-state.ts +0 -49
- package/src/components/blocks/shell/use-shell-fit.ts +0 -153
- package/src/components/blocks/shell/use-shell-panels.ts +0 -126
- package/src/components/blocks/shell/utils.ts +0 -187
- package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
- package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
- package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
- package/src/components/blocks/sidebar/ai-sidebar-atom.ts +0 -698
- package/src/components/blocks/sidebar/ai-sidebar.tsx +0 -150
- package/src/components/blocks/sidebar/index.ts +0 -67
- package/src/components/blocks/sidebar/marquee-label.tsx +0 -59
- package/src/components/blocks/sidebar/sidebar-context.ts +0 -15
- package/src/components/blocks/sidebar/sidebar-icon.tsx +0 -14
- package/src/components/blocks/sidebar/sidebar-row.tsx +0 -378
- package/src/components/blocks/sidebar/type.ts +0 -294
- package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +0 -123
- package/src/components/blocks/sidebar/use-ai-sidebar.ts +0 -619
- package/src/components/blocks/sidebar/utils.ts +0 -170
- package/src/components/blocks/types.ts +0 -6
- package/src/components/composed/.gitkeep +0 -0
- package/src/components/composed/__tests__/logo.test.tsx +0 -60
- package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +0 -125
- package/src/components/composed/action-bar/action.tsx +0 -77
- package/src/components/composed/action-bar/emojis.tsx +0 -97
- package/src/components/composed/action-bar/index.ts +0 -24
- package/src/components/composed/action-bar/toolbar.tsx +0 -66
- package/src/components/composed/action-bar/types.ts +0 -58
- package/src/components/composed/action-bar/utils.ts +0 -140
- package/src/components/composed/ai/__tests__/ai.test.tsx +0 -66
- package/src/components/composed/ai/avatar.tsx +0 -19
- package/src/components/composed/ai/index.ts +0 -36
- package/src/components/composed/ai/message.tsx +0 -49
- package/src/components/composed/ai/research-answer.tsx +0 -157
- package/src/components/composed/ai/shared.tsx +0 -94
- package/src/components/composed/ai/streaming-text.tsx +0 -94
- package/src/components/composed/ai/suggested-prompt.tsx +0 -183
- package/src/components/composed/ai/types.ts +0 -81
- package/src/components/composed/chat/__tests__/attachment.test.tsx +0 -218
- package/src/components/composed/chat/__tests__/beautiful-ui.test.tsx +0 -57
- package/src/components/composed/chat/__tests__/chart.test.tsx +0 -316
- package/src/components/composed/chat/__tests__/code-block.test.tsx +0 -12
- package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +0 -101
- package/src/components/composed/chat/__tests__/composer.test.tsx +0 -248
- package/src/components/composed/chat/__tests__/flowchart.test.tsx +0 -145
- package/src/components/composed/chat/__tests__/glass-material.test.tsx +0 -54
- package/src/components/composed/chat/__tests__/markdown.test.tsx +0 -25
- package/src/components/composed/chat/__tests__/menu-command.test.tsx +0 -35
- package/src/components/composed/chat/__tests__/recommendation.test.tsx +0 -43
- package/src/components/composed/chat/actions.tsx +0 -81
- package/src/components/composed/chat/attachment-file.ts +0 -82
- package/src/components/composed/chat/attachment.tsx +0 -498
- package/src/components/composed/chat/chart/chart-atom.ts +0 -55
- package/src/components/composed/chat/chart/chart-context.ts +0 -9
- package/src/components/composed/chat/chart/chart-legend.tsx +0 -75
- package/src/components/composed/chat/chart/chart-plot.tsx +0 -233
- package/src/components/composed/chat/chart/chart-root.tsx +0 -229
- package/src/components/composed/chat/chart/chart-tooltip.tsx +0 -74
- package/src/components/composed/chat/chart/constants.ts +0 -8
- package/src/components/composed/chat/chart/evilcharts/README.md +0 -8
- package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +0 -2358
- package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +0 -2261
- package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +0 -233
- package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +0 -214
- package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +0 -111
- package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +0 -131
- package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +0 -2112
- package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +0 -1235
- package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +0 -125
- package/src/components/composed/chat/chart/index.ts +0 -13
- package/src/components/composed/chat/chart/type.ts +0 -88
- package/src/components/composed/chat/chart/use-chart-state.ts +0 -22
- package/src/components/composed/chat/chart/use-chart.ts +0 -70
- package/src/components/composed/chat/chart/utils.ts +0 -47
- package/src/components/composed/chat/chart.tsx +0 -3
- package/src/components/composed/chat/code-block.tsx +0 -123
- package/src/components/composed/chat/composer/add-button.tsx +0 -29
- package/src/components/composed/chat/composer/base.tsx +0 -573
- package/src/components/composed/chat/composer/command-menu.tsx +0 -47
- package/src/components/composed/chat/composer/hooks.ts +0 -29
- package/src/components/composed/chat/composer/index.ts +0 -19
- package/src/components/composed/chat/composer/send-button.tsx +0 -36
- package/src/components/composed/chat/composer/suggestions.tsx +0 -115
- package/src/components/composed/chat/composer/use-dictation.ts +0 -123
- package/src/components/composed/chat/composer/utils.ts +0 -74
- package/src/components/composed/chat/context-cards.tsx +0 -63
- package/src/components/composed/chat/filter-table.tsx +0 -119
- package/src/components/composed/chat/flowchart/chart-node.tsx +0 -162
- package/src/components/composed/chat/flowchart/connector.tsx +0 -32
- package/src/components/composed/chat/flowchart/constant.ts +0 -26
- package/src/components/composed/chat/flowchart/default.tsx +0 -230
- package/src/components/composed/chat/flowchart/edge-toolbar.tsx +0 -73
- package/src/components/composed/chat/flowchart/hooks.tsx +0 -347
- package/src/components/composed/chat/flowchart/index.ts +0 -14
- package/src/components/composed/chat/flowchart/step-body.tsx +0 -82
- package/src/components/composed/chat/flowchart/types.ts +0 -89
- package/src/components/composed/chat/flowchart/utils.ts +0 -78
- package/src/components/composed/chat/hint.tsx +0 -59
- package/src/components/composed/chat/index.ts +0 -92
- package/src/components/composed/chat/insight-cards.tsx +0 -199
- package/src/components/composed/chat/markdown-atom.ts +0 -15
- package/src/components/composed/chat/markdown.tsx +0 -213
- package/src/components/composed/chat/recommendation/checkbox.tsx +0 -122
- package/src/components/composed/chat/recommendation/constant.ts +0 -54
- package/src/components/composed/chat/recommendation/default.tsx +0 -25
- package/src/components/composed/chat/recommendation/group.tsx +0 -36
- package/src/components/composed/chat/recommendation/index.ts +0 -17
- package/src/components/composed/chat/recommendation/item.tsx +0 -215
- package/src/components/composed/chat/recommendation/types.ts +0 -76
- package/src/components/composed/chat/records-table.tsx +0 -130
- package/src/components/composed/chat/type.ts +0 -157
- package/src/components/composed/logo.tsx +0 -171
- package/src/components/composed/password-input.tsx +0 -179
- package/src/components/composed/reader/applied-mark.tsx +0 -32
- package/src/components/composed/reader/apply-toast.tsx +0 -49
- package/src/components/composed/reader/index.ts +0 -10
- package/src/components/composed/reader/selection-highlight.tsx +0 -26
- package/src/components/composed/reader/selection-popover.tsx +0 -149
- package/src/components/composed/reader/type.ts +0 -48
- package/src/components/composed/social-providers.tsx +0 -154
- package/src/components/composed/tree/CLAUDE.md +0 -145
- package/src/components/composed/tree/__tests__/tree-atom.test.tsx +0 -217
- package/src/components/composed/tree/__tests__/tree.test.tsx +0 -522
- package/src/components/composed/tree/__tests__/use-tree.test.tsx +0 -333
- package/src/components/composed/tree/constants.ts +0 -55
- package/src/components/composed/tree/index.ts +0 -51
- package/src/components/composed/tree/tree-atom.ts +0 -590
- package/src/components/composed/tree/tree-context.ts +0 -13
- package/src/components/composed/tree/tree-node.tsx +0 -496
- package/src/components/composed/tree/tree.tsx +0 -233
- package/src/components/composed/tree/type.ts +0 -322
- package/src/components/composed/tree/use-tree-dnd.ts +0 -179
- package/src/components/composed/tree/use-tree-state.ts +0 -105
- package/src/components/composed/tree/use-tree.ts +0 -311
- package/src/components/composed/tree/utils.ts +0 -172
- package/src/components/composed/types.ts +0 -9
- package/src/components/composed/user/__tests__/message.test.tsx +0 -79
- package/src/components/composed/user/index.ts +0 -14
- package/src/components/composed/user/info.tsx +0 -56
- package/src/components/composed/user/message.tsx +0 -36
- package/src/components/composed/user/pill.tsx +0 -20
- package/src/components/composed/user/types.ts +0 -47
- package/src/components/composed/user/utils.ts +0 -0
- package/src/components/composed/verse/__tests__/verse.test.tsx +0 -57
- package/src/components/composed/verse/index.ts +0 -2
- package/src/components/composed/verse/types.ts +0 -24
- package/src/components/composed/verse/verse.tsx +0 -100
- package/src/components/docs/atoms-gallery.tsx +0 -286
- package/src/components/docs/block-demo-stage.tsx +0 -38
- package/src/components/docs/blocks-gallery.tsx +0 -224
- package/src/components/docs/browser.tsx +0 -87
- package/src/components/docs/code-block.tsx +0 -10
- package/src/components/docs/components-gallery.tsx +0 -182
- package/src/components/docs/demo-controls.tsx +0 -142
- package/src/components/docs/hero.tsx +0 -197
- package/src/components/docs/mermaid.tsx +0 -55
- package/src/components/icons/README.md +0 -91
- package/src/components/icons/__tests__/icons.test.tsx +0 -58
- package/src/components/icons/file-badge-cfm.tsx +0 -615
- package/src/components/icons/file-badge-corpus.tsx +0 -604
- package/src/components/icons/file-badge-pdf.tsx +0 -570
- package/src/components/icons/file-badge-tei.tsx +0 -524
- package/src/components/icons/file-badge-tf.tsx +0 -620
- package/src/components/icons/file-badge-txt.tsx +0 -607
- package/src/components/icons/file-badge-xml.tsx +0 -576
- package/src/components/icons/file-wordmark-cfm.tsx +0 -424
- package/src/components/icons/file-wordmark-corpus.tsx +0 -454
- package/src/components/icons/file-wordmark-pdf.tsx +0 -470
- package/src/components/icons/file-wordmark-tei.tsx +0 -424
- package/src/components/icons/file-wordmark-tf.tsx +0 -406
- package/src/components/icons/file-wordmark-txt.tsx +0 -421
- package/src/components/icons/file-wordmark-xml.tsx +0 -424
- package/src/components/icons/index.ts +0 -16
- package/src/components/icons/types.ts +0 -8
- package/src/components/motion/index.ts +0 -0
- package/src/components/motion/overflow-actions.tsx +0 -376
- package/src/components/motion/popover-morph.tsx +0 -292
- package/src/components/motion/popover-position.ts +0 -86
- package/src/components/motion/shared-layout-bg.tsx +0 -151
- package/src/components/stories/attachment.story.tsx +0 -40
- package/src/components/stories/auth-flow-block.story.tsx +0 -17
- package/src/components/stories/avatar.story.tsx +0 -33
- package/src/components/stories/base.story.tsx +0 -70
- package/src/components/stories/bubble.story.tsx +0 -61
- package/src/components/stories/button.story.tsx +0 -32
- package/src/components/stories/card.story.tsx +0 -36
- package/src/components/stories/chart.story.tsx +0 -69
- package/src/components/stories/checkbox.story.tsx +0 -30
- package/src/components/stories/code-auth-block.story.tsx +0 -20
- package/src/components/stories/code-block.story.tsx +0 -35
- package/src/components/stories/composed-password-input.story.tsx +0 -41
- package/src/components/stories/context-cards.story.tsx +0 -30
- package/src/components/stories/emoji-action-bar.story.tsx +0 -20
- package/src/components/stories/field.story.tsx +0 -32
- package/src/components/stories/file-icons.story.tsx +0 -20
- package/src/components/stories/filter-table.story.tsx +0 -63
- package/src/components/stories/flowchart.story.tsx +0 -25
- package/src/components/stories/forgot-password-block.story.tsx +0 -14
- package/src/components/stories/frame.story.tsx +0 -32
- package/src/components/stories/index.ts +0 -57
- package/src/components/stories/input-group.story.tsx +0 -27
- package/src/components/stories/input.story.tsx +0 -42
- package/src/components/stories/insight-cards.story.tsx +0 -67
- package/src/components/stories/label.story.tsx +0 -32
- package/src/components/stories/linked-accounts-block.story.tsx +0 -23
- package/src/components/stories/login-block.story.tsx +0 -18
- package/src/components/stories/logo.story.tsx +0 -21
- package/src/components/stories/markdown.story.tsx +0 -31
- package/src/components/stories/menu-command.story.tsx +0 -43
- package/src/components/stories/onboarding-block.story.tsx +0 -14
- package/src/components/stories/otp-field.story.tsx +0 -35
- package/src/components/stories/passkey-manager-block.story.tsx +0 -18
- package/src/components/stories/passkey-sign-in-block.story.tsx +0 -15
- package/src/components/stories/password-input.story.tsx +0 -35
- package/src/components/stories/profile-card-block.story.tsx +0 -29
- package/src/components/stories/recommendation-card.story.tsx +0 -37
- package/src/components/stories/records-table.story.tsx +0 -52
- package/src/components/stories/reference.story.tsx +0 -33
- package/src/components/stories/research-answer.story.tsx +0 -32
- package/src/components/stories/scaffold-root.story.tsx +0 -47
- package/src/components/stories/separator.story.tsx +0 -37
- package/src/components/stories/shell-layout.story.tsx +0 -19
- package/src/components/stories/signup-block.story.tsx +0 -18
- package/src/components/stories/social-providers.story.tsx +0 -26
- package/src/components/stories/streaming-text.story.tsx +0 -25
- package/src/components/stories/text.story.tsx +0 -31
- package/src/components/stories/textarea.story.tsx +0 -34
- package/src/components/stories/tree.story.tsx +0 -31
- package/src/components/stories/update-password-block.story.tsx +0 -14
- package/src/components/stories/user.story.tsx +0 -32
- package/src/components/stories/verse.story.tsx +0 -42
- package/src/components/theme-provider.tsx +0 -230
- package/src/components/types.ts +0 -106
- package/src/components/ui/accordion.tsx +0 -68
- package/src/components/ui/alert-dialog.tsx +0 -167
- package/src/components/ui/alert.tsx +0 -84
- package/src/components/ui/autocomplete.tsx +0 -303
- package/src/components/ui/avatar.tsx +0 -109
- package/src/components/ui/badge.tsx +0 -101
- package/src/components/ui/button-group.tsx +0 -88
- package/src/components/ui/button.tsx +0 -192
- package/src/components/ui/card.tsx +0 -253
- package/src/components/ui/chat/__tests__/segmented-toggle.test.tsx +0 -27
- package/src/components/ui/chat/avatar-handle.tsx +0 -30
- package/src/components/ui/chat/badges.tsx +0 -85
- package/src/components/ui/chat/buttons.tsx +0 -94
- package/src/components/ui/chat/chips.tsx +0 -106
- package/src/components/ui/chat/dot.tsx +0 -81
- package/src/components/ui/chat/icon-button.tsx +0 -43
- package/src/components/ui/chat/icon-tile.tsx +0 -33
- package/src/components/ui/chat/index.ts +0 -12
- package/src/components/ui/chat/inline-source.tsx +0 -94
- package/src/components/ui/chat/segmented-toggle.tsx +0 -99
- package/src/components/ui/chat/tag.tsx +0 -61
- package/src/components/ui/chat/thumbnail.tsx +0 -31
- package/src/components/ui/chat/waveform.tsx +0 -30
- package/src/components/ui/checkbox.tsx +0 -83
- package/src/components/ui/collapsible.tsx +0 -42
- package/src/components/ui/command.tsx +0 -263
- package/src/components/ui/context-menu.tsx +0 -342
- package/src/components/ui/emoji-picker.tsx +0 -161
- package/src/components/ui/field.tsx +0 -89
- package/src/components/ui/frame.tsx +0 -87
- package/src/components/ui/glasscn/glass-button-group.tsx +0 -34
- package/src/components/ui/glasscn/glass-button.tsx +0 -25
- package/src/components/ui/glasscn/glass-container.tsx +0 -94
- package/src/components/ui/glasscn/glass-separator.tsx +0 -39
- package/src/components/ui/glasscn/liquid-glass.tsx +0 -59
- package/src/components/ui/group.tsx +0 -92
- package/src/components/ui/input-group.tsx +0 -105
- package/src/components/ui/input.tsx +0 -70
- package/src/components/ui/kbd.tsx +0 -32
- package/src/components/ui/label.tsx +0 -36
- package/src/components/ui/menu-command.tsx +0 -156
- package/src/components/ui/menu.tsx +0 -352
- package/src/components/ui/otp-field.tsx +0 -88
- package/src/components/ui/popover-glass.tsx +0 -158
- package/src/components/ui/popover.tsx +0 -120
- package/src/components/ui/preview-card.tsx +0 -61
- package/src/components/ui/scroll-area.tsx +0 -80
- package/src/components/ui/select.tsx +0 -257
- package/src/components/ui/separator.tsx +0 -23
- package/src/components/ui/sheet.tsx +0 -135
- package/src/components/ui/skeleton.tsx +0 -18
- package/src/components/ui/spinner.tsx +0 -17
- package/src/components/ui/switch.tsx +0 -30
- package/src/components/ui/tabs.tsx +0 -120
- package/src/components/ui/textarea.tsx +0 -58
- package/src/components/ui/toast.tsx +0 -325
- package/src/components/ui/toolbar.tsx +0 -92
- package/src/components/ui/tooltip.tsx +0 -67
- package/src/index.css +0 -10
- package/src/index.ts +0 -102
- package/src/lib/attachment-content.ts +0 -28
- package/src/lib/auth-accent.ts +0 -49
- package/src/lib/ease.ts +0 -90
- package/src/lib/glass-variants.ts +0 -22
- package/src/lib/hooks/use-hover-capable.ts +0 -23
- package/src/lib/hooks/use-mobile.ts +0 -21
- package/src/lib/keyed-atom.ts +0 -60
- package/src/lib/segmented-control.ts +0 -42
- package/src/lib/sound.ts +0 -39
- package/src/lib/specular.ts +0 -10
- package/src/lib/state/__tests__/sound.test.tsx +0 -53
- package/src/lib/state/exegia-provider.tsx +0 -83
- package/src/lib/state/index.ts +0 -4
- package/src/lib/state/store.ts +0 -19
- package/src/lib/use-motion-panel.ts +0 -78
- package/src/lib/utils.test.ts +0 -22
- package/src/lib/utils.ts +0 -100
- package/src/specular.js +0 -4
- /package/{src/components/composed/chat/composer → dist-lib}/BEAUTIFUL-UI-LICENSE.txt +0 -0
- /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
|
-
|