@hexclave/next 1.0.41 → 1.0.42
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/dist/account-settings-cTsj8rpJ.d.ts +56 -0
- package/dist/account-settings-cTsj8rpJ.d.ts.map +1 -0
- package/dist/admin-app-impl-B4i11dbJ.d.ts +1282 -0
- package/dist/admin-app-impl-B4i11dbJ.d.ts.map +1 -0
- package/dist/auth-page-YnM_LtbN.d.ts +24 -0
- package/dist/auth-page-YnM_LtbN.d.ts.map +1 -0
- package/dist/cli-auth-confirm-BW3PYpKb.d.ts +19 -0
- package/dist/cli-auth-confirm-BW3PYpKb.d.ts.map +1 -0
- package/dist/clickmap/clickmap-core.d.ts +1 -2
- package/dist/clickmap/clickmap-core.d.ts.map +1 -1
- package/dist/clickmap/clickmap-core.js +2 -4
- package/dist/clickmap/clickmap-core.js.map +1 -1
- package/dist/clickmap/clickmap-styles.js +3 -6
- package/dist/clickmap/clickmap-styles.js.map +1 -1
- package/dist/clickmap/index.d.ts +1 -2
- package/dist/clickmap/index.d.ts.map +1 -1
- package/dist/clickmap/index.js +2 -4
- package/dist/clickmap/index.js.map +1 -1
- package/dist/client-app-Bi8p4lxS.d.ts +1359 -0
- package/dist/client-app-Bi8p4lxS.d.ts.map +1 -0
- package/dist/common-B2gkWlXX.d.ts +183 -0
- package/dist/common-B2gkWlXX.d.ts.map +1 -0
- package/dist/common-BK_sydxF.d.ts +66 -0
- package/dist/common-BK_sydxF.d.ts.map +1 -0
- package/dist/components/api-key-dialogs.d.ts +3 -4
- package/dist/components/api-key-dialogs.d.ts.map +1 -1
- package/dist/components/api-key-dialogs.js +3 -6
- package/dist/components/api-key-dialogs.js.map +1 -1
- package/dist/components/api-key-table.d.ts +2 -3
- package/dist/components/api-key-table.d.ts.map +1 -1
- package/dist/components/api-key-table.js +3 -6
- package/dist/components/api-key-table.js.map +1 -1
- package/dist/components/credential-sign-in.d.ts +2 -7
- package/dist/components/credential-sign-in.js +3 -6
- package/dist/components/credential-sign-in.js.map +1 -1
- package/dist/components/credential-sign-up.d.ts +2 -9
- package/dist/components/credential-sign-up.js +6 -8
- package/dist/components/credential-sign-up.js.map +1 -1
- package/dist/components/elements/form-warning.d.ts +1 -3
- package/dist/components/elements/form-warning.d.ts.map +1 -1
- package/dist/components/elements/form-warning.js +3 -6
- package/dist/components/elements/form-warning.js.map +1 -1
- package/dist/components/elements/maybe-full-page.d.ts +1 -2
- package/dist/components/elements/maybe-full-page.d.ts.map +1 -1
- package/dist/components/elements/maybe-full-page.js +4 -6
- package/dist/components/elements/maybe-full-page.js.map +1 -1
- package/dist/components/elements/separator-with-text.d.ts +1 -3
- package/dist/components/elements/separator-with-text.d.ts.map +1 -1
- package/dist/components/elements/separator-with-text.js +3 -6
- package/dist/components/elements/separator-with-text.js.map +1 -1
- package/dist/components/elements/sidebar-layout.d.ts +1 -2
- package/dist/components/elements/sidebar-layout.d.ts.map +1 -1
- package/dist/components/elements/sidebar-layout.js +5 -7
- package/dist/components/elements/sidebar-layout.js.map +1 -1
- package/dist/components/elements/ssr-layout-effect.d.ts +1 -3
- package/dist/components/elements/ssr-layout-effect.d.ts.map +1 -1
- package/dist/components/elements/ssr-layout-effect.js +2 -5
- package/dist/components/elements/ssr-layout-effect.js.map +1 -1
- package/dist/components/elements/user-avatar.d.ts +2 -15
- package/dist/components/elements/user-avatar.js +2 -4
- package/dist/components/elements/user-avatar.js.map +1 -1
- package/dist/components/link.d.ts +2 -4
- package/dist/components/link.d.ts.map +1 -1
- package/dist/components/link.js +5 -7
- package/dist/components/link.js.map +1 -1
- package/dist/components/magic-link-sign-in.d.ts +2 -7
- package/dist/components/magic-link-sign-in.js +3 -6
- package/dist/components/magic-link-sign-in.js.map +1 -1
- package/dist/components/message-cards/known-error-message-card.d.ts +1 -2
- package/dist/components/message-cards/known-error-message-card.d.ts.map +1 -1
- package/dist/components/message-cards/known-error-message-card.js +2 -5
- package/dist/components/message-cards/known-error-message-card.js.map +1 -1
- package/dist/components/message-cards/message-card.d.ts +2 -19
- package/dist/components/message-cards/message-card.js +5 -7
- package/dist/components/message-cards/message-card.js.map +1 -1
- package/dist/components/message-cards/predefined-message-card.d.ts +1 -3
- package/dist/components/message-cards/predefined-message-card.d.ts.map +1 -1
- package/dist/components/message-cards/predefined-message-card.js +2 -5
- package/dist/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/components/oauth-button-group.d.ts +2 -19
- package/dist/components/oauth-button-group.js +3 -6
- package/dist/components/oauth-button-group.js.map +1 -1
- package/dist/components/oauth-button.d.ts +2 -17
- package/dist/components/oauth-button.js +5 -7
- package/dist/components/oauth-button.js.map +1 -1
- package/dist/components/passkey-button.d.ts +1 -3
- package/dist/components/passkey-button.d.ts.map +1 -1
- package/dist/components/passkey-button.js +3 -6
- package/dist/components/passkey-button.js.map +1 -1
- package/dist/components/profile-image-editor.d.ts +2 -3
- package/dist/components/profile-image-editor.d.ts.map +1 -1
- package/dist/components/profile-image-editor.js +5 -6
- package/dist/components/profile-image-editor.js.map +1 -1
- package/dist/components/selected-team-switcher.d.ts +2 -31
- package/dist/components/selected-team-switcher.js +3 -6
- package/dist/components/selected-team-switcher.js.map +1 -1
- package/dist/components/team-icon.d.ts +2 -4
- package/dist/components/team-icon.d.ts.map +1 -1
- package/dist/components/team-icon.js +2 -4
- package/dist/components/team-icon.js.map +1 -1
- package/dist/components/team-switcher.d.ts +2 -31
- package/dist/components/team-switcher.js +3 -6
- package/dist/components/team-switcher.js.map +1 -1
- package/dist/components/use-in-iframe.d.ts.map +1 -1
- package/dist/components/use-in-iframe.js +3 -6
- package/dist/components/use-in-iframe.js.map +1 -1
- package/dist/components/user-button.d.ts +2 -22
- package/dist/components/user-button.js +5 -7
- package/dist/components/user-button.js.map +1 -1
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.d.ts +1 -3
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +2 -4
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
- package/dist/components-page/account-settings/api-keys/api-keys-page.d.ts +1 -3
- package/dist/components-page/account-settings/api-keys/api-keys-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/api-keys/api-keys-page.js +2 -4
- package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
- package/dist/components-page/account-settings/editable-text.d.ts +1 -3
- package/dist/components-page/account-settings/editable-text.d.ts.map +1 -1
- package/dist/components-page/account-settings/editable-text.js +2 -4
- package/dist/components-page/account-settings/editable-text.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js +2 -4
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/emails-section.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/emails-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/emails-section.js +2 -4
- package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/mfa-section.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/mfa-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/mfa-section.js +5 -6
- package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/otp-section.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/otp-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/otp-section.js +2 -4
- package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/passkey-section.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/passkey-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/passkey-section.js +2 -4
- package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/password-section.d.ts +1 -3
- package/dist/components-page/account-settings/email-and-auth/password-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/email-and-auth/password-section.js +4 -5
- package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
- package/dist/components-page/account-settings/notifications/notifications-page.d.ts +1 -3
- package/dist/components-page/account-settings/notifications/notifications-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/notifications/notifications-page.js +2 -4
- package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
- package/dist/components-page/account-settings/page-layout.d.ts +1 -3
- package/dist/components-page/account-settings/page-layout.d.ts.map +1 -1
- package/dist/components-page/account-settings/page-layout.js +2 -4
- package/dist/components-page/account-settings/page-layout.js.map +1 -1
- package/dist/components-page/account-settings/payments/payments-page.d.ts +2 -4
- package/dist/components-page/account-settings/payments/payments-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/payments/payments-page.js +3 -6
- package/dist/components-page/account-settings/payments/payments-page.js.map +1 -1
- package/dist/components-page/account-settings/payments/payments-panel.d.ts +2 -3
- package/dist/components-page/account-settings/payments/payments-panel.d.ts.map +1 -1
- package/dist/components-page/account-settings/payments/payments-panel.js +3 -6
- package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -1
- package/dist/components-page/account-settings/profile-page/profile-page.d.ts +1 -3
- package/dist/components-page/account-settings/profile-page/profile-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/profile-page/profile-page.js +2 -4
- package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
- package/dist/components-page/account-settings/section.d.ts +1 -3
- package/dist/components-page/account-settings/section.d.ts.map +1 -1
- package/dist/components-page/account-settings/section.js +2 -4
- package/dist/components-page/account-settings/section.js.map +1 -1
- package/dist/components-page/account-settings/settings/delete-account-section.d.ts +1 -3
- package/dist/components-page/account-settings/settings/delete-account-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/settings/delete-account-section.js +2 -4
- package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/components-page/account-settings/settings/settings-page.d.ts +1 -3
- package/dist/components-page/account-settings/settings/settings-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/settings/settings-page.js +2 -4
- package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
- package/dist/components-page/account-settings/settings/sign-out-section.d.ts +1 -3
- package/dist/components-page/account-settings/settings/sign-out-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/settings/sign-out-section.js +2 -4
- package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/leave-team-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/leave-team-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/leave-team-section.js +2 -4
- package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts +2 -3
- package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-api-keys-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-creation-page.d.ts +1 -3
- package/dist/components-page/account-settings/teams/team-creation-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-creation-page.js +2 -4
- package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-display-name-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-display-name-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-list-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-member-list-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-member-list-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-page.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-page.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-page.js +2 -4
- package/dist/components-page/account-settings/teams/team-page.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-image-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +2 -4
- package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts.map +1 -1
- package/dist/components-page/account-settings/teams/team-profile-user-section.js +2 -4
- package/dist/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
- package/dist/components-page/account-settings.d.ts +2 -58
- package/dist/components-page/account-settings.js +5 -7
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.d.ts +2 -26
- package/dist/components-page/auth-page.js +3 -6
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.d.ts +2 -21
- package/dist/components-page/cli-auth-confirm.js +3 -6
- package/dist/components-page/cli-auth-confirm.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.test.js +3 -4
- package/dist/components-page/cli-auth-confirm.test.js.map +1 -1
- package/dist/components-page/email-verification.d.ts +2 -10
- package/dist/components-page/email-verification.js +5 -7
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/error-page.d.ts +2 -10
- package/dist/components-page/error-page.js +3 -6
- package/dist/components-page/error-page.js.map +1 -1
- package/dist/components-page/forgot-password.d.ts +2 -14
- package/dist/components-page/forgot-password.js +3 -6
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/hexclave-handler-client.d.ts +2 -62
- package/dist/components-page/hexclave-handler-client.js +2 -5
- package/dist/components-page/hexclave-handler-client.js.map +1 -1
- package/dist/components-page/hexclave-handler-client.test.js +1 -3
- package/dist/components-page/hexclave-handler-client.test.js.map +1 -1
- package/dist/components-page/hexclave-handler.d.ts +2 -37
- package/dist/components-page/hexclave-handler.js +5 -4
- package/dist/components-page/hexclave-handler.js.map +1 -1
- package/dist/components-page/magic-link-callback.d.ts +2 -10
- package/dist/components-page/magic-link-callback.js +6 -9
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/mfa.d.ts +2 -11
- package/dist/components-page/mfa.js +2 -5
- package/dist/components-page/mfa.js.map +1 -1
- package/dist/components-page/oauth-callback.d.ts +2 -11
- package/dist/components-page/oauth-callback.js +3 -6
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/oauth-callback.test.js +3 -4
- package/dist/components-page/oauth-callback.test.js.map +1 -1
- package/dist/components-page/onboarding.d.ts +2 -9
- package/dist/components-page/onboarding.js +3 -6
- package/dist/components-page/onboarding.js.map +1 -1
- package/dist/components-page/password-reset.d.ts +2 -17
- package/dist/components-page/password-reset.js +8 -7
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/section.js +2 -2
- package/dist/components-page/sign-in.d.ts +2 -23
- package/dist/components-page/sign-in.js +2 -4
- package/dist/components-page/sign-in.js.map +1 -1
- package/dist/components-page/sign-out.d.ts +2 -10
- package/dist/components-page/sign-out.js +3 -6
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/sign-up.d.ts +2 -13
- package/dist/components-page/sign-up.js +3 -6
- package/dist/components-page/sign-up.js.map +1 -1
- package/dist/components-page/team-creation.d.ts +1 -3
- package/dist/components-page/team-creation.d.ts.map +1 -1
- package/dist/components-page/team-creation.js +3 -6
- package/dist/components-page/team-creation.js.map +1 -1
- package/dist/components-page/team-invitation.d.ts +2 -13
- package/dist/components-page/team-invitation.js +5 -7
- package/dist/components-page/team-invitation.js.map +1 -1
- package/dist/config.js +17 -19
- package/dist/convex-D2mFhYyd.d.ts +13 -0
- package/dist/convex-D2mFhYyd.d.ts.map +1 -0
- package/dist/cookie-DTOQvCYn.d.ts +42 -0
- package/dist/cookie-DTOQvCYn.d.ts.map +1 -0
- package/dist/credential-sign-in-BxCi9NEV.d.ts +5 -0
- package/dist/credential-sign-in-BxCi9NEV.d.ts.map +1 -0
- package/dist/credential-sign-up-tYm5rV86.d.ts +7 -0
- package/dist/credential-sign-up-tYm5rV86.d.ts.map +1 -0
- package/dist/dev-tool/dev-tool-core.d.ts +1 -2
- package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-core.js +2 -4
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/dev-tool-styles.js +3 -6
- package/dist/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.js +6 -7
- package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.test.js +1 -3
- package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/dev-tool/index.d.ts +1 -2
- package/dist/dev-tool/index.d.ts.map +1 -1
- package/dist/dev-tool/index.js +2 -4
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/email-verification-Cr_KKvtQ.d.ts +8 -0
- package/dist/email-verification-Cr_KKvtQ.d.ts.map +1 -0
- package/dist/error-page-D0KwN73t.d.ts +8 -0
- package/dist/error-page-D0KwN73t.d.ts.map +1 -0
- package/dist/esm/clickmap/clickmap-core.d.ts +1 -1
- package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -1
- package/dist/esm/clickmap/clickmap-core.js +1 -2
- package/dist/esm/clickmap/clickmap-core.js.map +1 -1
- package/dist/esm/clickmap/clickmap-styles.js +1 -2
- package/dist/esm/clickmap/clickmap-styles.js.map +1 -1
- package/dist/esm/clickmap/index.d.ts +1 -1
- package/dist/esm/clickmap/index.d.ts.map +1 -1
- package/dist/esm/clickmap/index.js +1 -2
- package/dist/esm/clickmap/index.js.map +1 -1
- package/dist/esm/components/api-key-dialogs.d.ts +3 -4
- package/dist/esm/components/api-key-dialogs.d.ts.map +1 -1
- package/dist/esm/components/api-key-dialogs.js +2 -4
- package/dist/esm/components/api-key-dialogs.js.map +1 -1
- package/dist/esm/components/api-key-table.d.ts +2 -3
- package/dist/esm/components/api-key-table.d.ts.map +1 -1
- package/dist/esm/components/api-key-table.js +2 -4
- package/dist/esm/components/api-key-table.js.map +1 -1
- package/dist/esm/components/credential-sign-in.d.ts +1 -3
- package/dist/esm/components/credential-sign-in.d.ts.map +1 -1
- package/dist/esm/components/credential-sign-in.js +2 -4
- package/dist/esm/components/credential-sign-in.js.map +1 -1
- package/dist/esm/components/credential-sign-up.d.ts +1 -3
- package/dist/esm/components/credential-sign-up.d.ts.map +1 -1
- package/dist/esm/components/credential-sign-up.js +3 -5
- package/dist/esm/components/credential-sign-up.js.map +1 -1
- package/dist/esm/components/elements/form-warning.d.ts +1 -3
- package/dist/esm/components/elements/form-warning.d.ts.map +1 -1
- package/dist/esm/components/elements/form-warning.js +2 -4
- package/dist/esm/components/elements/form-warning.js.map +1 -1
- package/dist/esm/components/elements/maybe-full-page.d.ts +1 -2
- package/dist/esm/components/elements/maybe-full-page.d.ts.map +1 -1
- package/dist/esm/components/elements/maybe-full-page.js +2 -4
- package/dist/esm/components/elements/maybe-full-page.js.map +1 -1
- package/dist/esm/components/elements/separator-with-text.d.ts +1 -3
- package/dist/esm/components/elements/separator-with-text.d.ts.map +1 -1
- package/dist/esm/components/elements/separator-with-text.js +2 -4
- package/dist/esm/components/elements/separator-with-text.js.map +1 -1
- package/dist/esm/components/elements/sidebar-layout.d.ts +1 -2
- package/dist/esm/components/elements/sidebar-layout.d.ts.map +1 -1
- package/dist/esm/components/elements/sidebar-layout.js +3 -5
- package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
- package/dist/esm/components/elements/ssr-layout-effect.d.ts +1 -3
- package/dist/esm/components/elements/ssr-layout-effect.d.ts.map +1 -1
- package/dist/esm/components/elements/ssr-layout-effect.js +1 -3
- package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -1
- package/dist/esm/components/elements/user-avatar.d.ts +1 -3
- package/dist/esm/components/elements/user-avatar.d.ts.map +1 -1
- package/dist/esm/components/elements/user-avatar.js +1 -2
- package/dist/esm/components/elements/user-avatar.js.map +1 -1
- package/dist/esm/components/link.d.ts +2 -4
- package/dist/esm/components/link.d.ts.map +1 -1
- package/dist/esm/components/link.js +2 -4
- package/dist/esm/components/link.js.map +1 -1
- package/dist/esm/components/magic-link-sign-in.d.ts +1 -3
- package/dist/esm/components/magic-link-sign-in.d.ts.map +1 -1
- package/dist/esm/components/magic-link-sign-in.js +2 -4
- package/dist/esm/components/magic-link-sign-in.js.map +1 -1
- package/dist/esm/components/message-cards/known-error-message-card.d.ts +1 -2
- package/dist/esm/components/message-cards/known-error-message-card.d.ts.map +1 -1
- package/dist/esm/components/message-cards/known-error-message-card.js +1 -3
- package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
- package/dist/esm/components/message-cards/message-card.d.ts +1 -2
- package/dist/esm/components/message-cards/message-card.d.ts.map +1 -1
- package/dist/esm/components/message-cards/message-card.js +3 -5
- package/dist/esm/components/message-cards/message-card.js.map +1 -1
- package/dist/esm/components/message-cards/predefined-message-card.d.ts +1 -3
- package/dist/esm/components/message-cards/predefined-message-card.d.ts.map +1 -1
- package/dist/esm/components/message-cards/predefined-message-card.js +1 -3
- package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
- package/dist/esm/components/oauth-button-group.d.ts +1 -3
- package/dist/esm/components/oauth-button-group.d.ts.map +1 -1
- package/dist/esm/components/oauth-button-group.js +2 -4
- package/dist/esm/components/oauth-button-group.js.map +1 -1
- package/dist/esm/components/oauth-button.d.ts +1 -3
- package/dist/esm/components/oauth-button.d.ts.map +1 -1
- package/dist/esm/components/oauth-button.js +2 -4
- package/dist/esm/components/oauth-button.js.map +1 -1
- package/dist/esm/components/passkey-button.d.ts +1 -3
- package/dist/esm/components/passkey-button.d.ts.map +1 -1
- package/dist/esm/components/passkey-button.js +2 -4
- package/dist/esm/components/passkey-button.js.map +1 -1
- package/dist/esm/components/profile-image-editor.d.ts +2 -3
- package/dist/esm/components/profile-image-editor.d.ts.map +1 -1
- package/dist/esm/components/profile-image-editor.js +1 -2
- package/dist/esm/components/profile-image-editor.js.map +1 -1
- package/dist/esm/components/selected-team-switcher.d.ts +2 -3
- package/dist/esm/components/selected-team-switcher.d.ts.map +1 -1
- package/dist/esm/components/selected-team-switcher.js +2 -4
- package/dist/esm/components/selected-team-switcher.js.map +1 -1
- package/dist/esm/components/team-icon.d.ts +2 -3
- package/dist/esm/components/team-icon.d.ts.map +1 -1
- package/dist/esm/components/team-icon.js +1 -2
- package/dist/esm/components/team-icon.js.map +1 -1
- package/dist/esm/components/team-switcher.d.ts +2 -3
- package/dist/esm/components/team-switcher.d.ts.map +1 -1
- package/dist/esm/components/team-switcher.js +2 -4
- package/dist/esm/components/team-switcher.js.map +1 -1
- package/dist/esm/components/use-in-iframe.d.ts.map +1 -1
- package/dist/esm/components/use-in-iframe.js +2 -4
- package/dist/esm/components/use-in-iframe.js.map +1 -1
- package/dist/esm/components/user-button.d.ts +1 -2
- package/dist/esm/components/user-button.d.ts.map +1 -1
- package/dist/esm/components/user-button.js +3 -5
- package/dist/esm/components/user-button.js.map +1 -1
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -2
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/api-keys/api-keys-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/api-keys/api-keys-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js +1 -2
- package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/editable-text.d.ts +1 -3
- package/dist/esm/components-page/account-settings/editable-text.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/editable-text.js +1 -2
- package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js +1 -2
- package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +1 -2
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +2 -3
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/otp-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/otp-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js +1 -2
- package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js +1 -2
- package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +1 -2
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/notifications/notifications-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/notifications/notifications-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/notifications/notifications-page.js +1 -2
- package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/page-layout.d.ts +1 -3
- package/dist/esm/components-page/account-settings/page-layout.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/page-layout.js +1 -2
- package/dist/esm/components-page/account-settings/page-layout.js.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-page.d.ts +2 -3
- package/dist/esm/components-page/account-settings/payments/payments-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-page.js +2 -4
- package/dist/esm/components-page/account-settings/payments/payments-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-panel.d.ts +2 -3
- package/dist/esm/components-page/account-settings/payments/payments-panel.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/payments/payments-panel.js +2 -4
- package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -1
- package/dist/esm/components-page/account-settings/profile-page/profile-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/profile-page/profile-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/profile-page/profile-page.js +1 -2
- package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/section.js +1 -2
- package/dist/esm/components-page/account-settings/section.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/delete-account-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/settings/delete-account-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/settings/delete-account-section.js +1 -2
- package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/settings-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/settings/settings-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/settings/settings-page.js +1 -2
- package/dist/esm/components-page/account-settings/settings/settings-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/sign-out-section.d.ts +1 -3
- package/dist/esm/components-page/account-settings/settings/sign-out-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/settings/sign-out-section.js +1 -2
- package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/leave-team-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/leave-team-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/leave-team-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-creation-page.d.ts +1 -3
- package/dist/esm/components-page/account-settings/teams/team-creation-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-creation-page.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-display-name-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-display-name-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-display-name-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-page.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-page.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-page.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.d.ts +2 -3
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js +1 -2
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
- package/dist/esm/components-page/account-settings.d.ts +9 -11
- package/dist/esm/components-page/account-settings.d.ts.map +1 -1
- package/dist/esm/components-page/account-settings.js +3 -5
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.d.ts +1 -3
- package/dist/esm/components-page/auth-page.d.ts.map +1 -1
- package/dist/esm/components-page/auth-page.js +2 -4
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.d.ts +1 -3
- package/dist/esm/components-page/cli-auth-confirm.d.ts.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.js +2 -4
- package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.test.js +3 -4
- package/dist/esm/components-page/cli-auth-confirm.test.js.map +1 -1
- package/dist/esm/components-page/email-verification.d.ts +1 -3
- package/dist/esm/components-page/email-verification.d.ts.map +1 -1
- package/dist/esm/components-page/email-verification.js +2 -4
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/error-page.d.ts +1 -3
- package/dist/esm/components-page/error-page.d.ts.map +1 -1
- package/dist/esm/components-page/error-page.js +2 -4
- package/dist/esm/components-page/error-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.d.ts +2 -4
- package/dist/esm/components-page/forgot-password.d.ts.map +1 -1
- package/dist/esm/components-page/forgot-password.js +2 -4
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/hexclave-handler-client.d.ts +14 -14
- package/dist/esm/components-page/hexclave-handler-client.d.ts.map +1 -1
- package/dist/esm/components-page/hexclave-handler-client.js +1 -3
- package/dist/esm/components-page/hexclave-handler-client.js.map +1 -1
- package/dist/esm/components-page/hexclave-handler-client.test.js +2 -3
- package/dist/esm/components-page/hexclave-handler-client.test.js.map +1 -1
- package/dist/esm/components-page/hexclave-handler.d.ts +2 -3
- package/dist/esm/components-page/hexclave-handler.d.ts.map +1 -1
- package/dist/esm/components-page/hexclave-handler.js +1 -2
- package/dist/esm/components-page/hexclave-handler.js.map +1 -1
- package/dist/esm/components-page/magic-link-callback.d.ts +1 -3
- package/dist/esm/components-page/magic-link-callback.d.ts.map +1 -1
- package/dist/esm/components-page/magic-link-callback.js +2 -4
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/mfa.d.ts +1 -3
- package/dist/esm/components-page/mfa.d.ts.map +1 -1
- package/dist/esm/components-page/mfa.js +1 -3
- package/dist/esm/components-page/mfa.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.d.ts +1 -3
- package/dist/esm/components-page/oauth-callback.d.ts.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +2 -4
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.test.js +3 -4
- package/dist/esm/components-page/oauth-callback.test.js.map +1 -1
- package/dist/esm/components-page/onboarding.d.ts +1 -3
- package/dist/esm/components-page/onboarding.d.ts.map +1 -1
- package/dist/esm/components-page/onboarding.js +2 -4
- package/dist/esm/components-page/onboarding.js.map +1 -1
- package/dist/esm/components-page/password-reset.d.ts +2 -4
- package/dist/esm/components-page/password-reset.d.ts.map +1 -1
- package/dist/esm/components-page/password-reset.js +2 -4
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/section.js +3 -4
- package/dist/esm/components-page/sign-in.d.ts +1 -3
- package/dist/esm/components-page/sign-in.d.ts.map +1 -1
- package/dist/esm/components-page/sign-in.js +1 -2
- package/dist/esm/components-page/sign-in.js.map +1 -1
- package/dist/esm/components-page/sign-out.d.ts +1 -3
- package/dist/esm/components-page/sign-out.d.ts.map +1 -1
- package/dist/esm/components-page/sign-out.js +2 -4
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/sign-up.d.ts +1 -3
- package/dist/esm/components-page/sign-up.d.ts.map +1 -1
- package/dist/esm/components-page/sign-up.js +2 -4
- package/dist/esm/components-page/sign-up.js.map +1 -1
- package/dist/esm/components-page/team-creation.d.ts +1 -3
- package/dist/esm/components-page/team-creation.d.ts.map +1 -1
- package/dist/esm/components-page/team-creation.js +2 -4
- package/dist/esm/components-page/team-creation.js.map +1 -1
- package/dist/esm/components-page/team-invitation.d.ts +1 -3
- package/dist/esm/components-page/team-invitation.d.ts.map +1 -1
- package/dist/esm/components-page/team-invitation.js +2 -4
- package/dist/esm/components-page/team-invitation.js.map +1 -1
- package/dist/esm/config.js +1 -2
- package/dist/esm/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +1 -2
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.js +1 -2
- package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.js +5 -5
- package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +2 -3
- package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/esm/dev-tool/index.d.ts +1 -1
- package/dist/esm/dev-tool/index.d.ts.map +1 -1
- package/dist/esm/dev-tool/index.js +1 -2
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/generated/env.js +1 -1
- package/dist/esm/generated/env.js.map +1 -1
- package/dist/esm/generated/global-css.js +1 -1
- package/dist/esm/generated/quetzal-translations.d.ts +2 -2
- package/dist/esm/generated/quetzal-translations.js +1 -2
- package/dist/esm/generated/quetzal-translations.js.map +1 -1
- package/dist/esm/global.d.ts.map +1 -1
- package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -1
- package/dist/esm/in-page-ui/base-styles.js +1 -1
- package/dist/esm/in-page-ui/base-styles.js.map +1 -1
- package/dist/esm/in-page-ui/dom.d.ts.map +1 -1
- package/dist/esm/in-page-ui/dom.js +1 -1
- package/dist/esm/in-page-ui/dom.js.map +1 -1
- package/dist/esm/index.d.ts +25 -25
- package/dist/esm/index.js +2 -4
- package/dist/esm/integrations/convex/component/convex.config.d.ts +1 -3
- package/dist/esm/integrations/convex/component/convex.config.d.ts.map +1 -1
- package/dist/esm/integrations/convex/component/convex.config.js +1 -2
- package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/esm/integrations/convex.js +1 -2
- package/dist/esm/integrations/convex.js.map +1 -1
- package/dist/esm/lib/auth.js +1 -2
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/auth.test.js +2 -3
- package/dist/esm/lib/auth.test.js.map +1 -1
- package/dist/esm/lib/cookie.d.ts.map +1 -1
- package/dist/esm/lib/cookie.js +4 -22
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/hexclave-app/api-keys/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/api-keys/index.js +1 -2
- package/dist/esm/lib/hexclave-app/api-keys/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +34 -42
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +2 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +26 -28
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +2 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js +7 -8
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +2 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts +3 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +13 -13
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +2 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +13 -7
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js +134 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/index.d.ts +3 -3
- package/dist/esm/lib/hexclave-app/apps/index.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +8 -8
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +6 -6
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +7 -7
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js +1 -2
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/common.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/common.js +1 -1
- package/dist/esm/lib/hexclave-app/common.js.map +1 -1
- package/dist/esm/lib/hexclave-app/connected-accounts/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/connected-accounts/index.js +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.js +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/customers/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/customers/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/customers/index.js +1 -1
- package/dist/esm/lib/hexclave-app/data-vault/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/data-vault/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/data-vault/index.js +1 -1
- package/dist/esm/lib/hexclave-app/email/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/email/index.js +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.js +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/index.d.ts +14 -14
- package/dist/esm/lib/hexclave-app/index.js +1 -2
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.js +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/notification-categories/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/notification-categories/index.js +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.js +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/plan-usage/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/plan-usage/index.js +1 -1
- package/dist/esm/lib/hexclave-app/project-configs/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/project-configs/index.js +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.d.ts +2 -2
- package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.js +5 -1
- package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/session-replays/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/session-replays/index.js +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.d.ts +4 -4
- package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.js +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.js +2 -3
- package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.test.js +2 -3
- package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/users/index.d.ts +9 -9
- package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/users/index.js +1 -2
- package/dist/esm/lib/hexclave-app/users/index.js.map +1 -1
- package/dist/esm/lib/hooks.d.ts +1 -1
- package/dist/esm/lib/hooks.d.ts.map +1 -1
- package/dist/esm/lib/hooks.js +1 -2
- package/dist/esm/lib/hooks.js.map +1 -1
- package/dist/esm/lib/translations.d.ts.map +1 -1
- package/dist/esm/lib/translations.js +1 -2
- package/dist/esm/lib/translations.js.map +1 -1
- package/dist/esm/providers/hexclave-context.d.ts +1 -1
- package/dist/esm/providers/hexclave-context.d.ts.map +1 -1
- package/dist/esm/providers/hexclave-context.js +1 -3
- package/dist/esm/providers/hexclave-context.js.map +1 -1
- package/dist/esm/providers/hexclave-provider-client.d.ts +2 -3
- package/dist/esm/providers/hexclave-provider-client.d.ts.map +1 -1
- package/dist/esm/providers/hexclave-provider-client.js +2 -4
- package/dist/esm/providers/hexclave-provider-client.js.map +1 -1
- package/dist/esm/providers/hexclave-provider.d.ts +3 -4
- package/dist/esm/providers/hexclave-provider.d.ts.map +1 -1
- package/dist/esm/providers/hexclave-provider.js +2 -3
- package/dist/esm/providers/hexclave-provider.js.map +1 -1
- package/dist/esm/providers/theme-provider.d.ts +1 -2
- package/dist/esm/providers/theme-provider.d.ts.map +1 -1
- package/dist/esm/providers/theme-provider.js +3 -5
- package/dist/esm/providers/theme-provider.js.map +1 -1
- package/dist/esm/providers/translation-provider-client.d.ts +1 -2
- package/dist/esm/providers/translation-provider-client.d.ts.map +1 -1
- package/dist/esm/providers/translation-provider-client.js +1 -3
- package/dist/esm/providers/translation-provider-client.js.map +1 -1
- package/dist/esm/providers/translation-provider.d.ts +2 -3
- package/dist/esm/providers/translation-provider.d.ts.map +1 -1
- package/dist/esm/providers/translation-provider.js +1 -2
- package/dist/esm/providers/translation-provider.js.map +1 -1
- package/dist/esm/pushed-config-error-overlay/index.d.ts +1 -1
- package/dist/esm/pushed-config-error-overlay/index.d.ts.map +1 -1
- package/dist/esm/pushed-config-error-overlay/index.js +1 -2
- package/dist/esm/pushed-config-error-overlay/index.js.map +1 -1
- package/dist/esm/pushed-config-error-overlay/index.test.js +2 -3
- package/dist/esm/pushed-config-error-overlay/index.test.js.map +1 -1
- package/dist/esm/tanstack-start-server-context.d.ts +1 -3
- package/dist/esm/tanstack-start-server-context.d.ts.map +1 -1
- package/dist/esm/utils/browser-script.d.ts +1 -3
- package/dist/esm/utils/browser-script.d.ts.map +1 -1
- package/dist/esm/utils/browser-script.js +1 -2
- package/dist/esm/utils/browser-script.js.map +1 -1
- package/dist/esm/utils/constants.js +1 -1
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/url.d.ts.map +1 -1
- package/dist/esm/utils/url.js +1 -2
- package/dist/esm/utils/url.js.map +1 -1
- package/dist/forgot-password-B7RLLsC2.d.ts +12 -0
- package/dist/forgot-password-B7RLLsC2.d.ts.map +1 -0
- package/dist/generated/env.js +2 -3
- package/dist/generated/env.js.map +1 -1
- package/dist/generated/global-css.js +2 -3
- package/dist/generated/global-css.js.map +1 -1
- package/dist/generated/quetzal-translations.d.ts +2 -6
- package/dist/generated/quetzal-translations.js +2 -4
- package/dist/generated/quetzal-translations.js.map +1 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/hexclave-provider-BdiqjaCz.d.ts +29 -0
- package/dist/hexclave-provider-BdiqjaCz.d.ts.map +1 -0
- package/dist/hooks-psPwqxZ4.d.ts +43 -0
- package/dist/hooks-psPwqxZ4.d.ts.map +1 -0
- package/dist/in-page-ui/base-styles.d.ts.map +1 -1
- package/dist/in-page-ui/base-styles.js +2 -3
- package/dist/in-page-ui/base-styles.js.map +1 -1
- package/dist/in-page-ui/dom.d.ts.map +1 -1
- package/dist/in-page-ui/dom.js +2 -3
- package/dist/in-page-ui/dom.js.map +1 -1
- package/dist/index-BKZ67WMa.d.ts +1 -0
- package/dist/index-BSr2pd22.d.ts +14 -0
- package/dist/index-BSr2pd22.d.ts.map +1 -0
- package/dist/index-BVVgDSdq.d.ts +1 -0
- package/dist/index-Bo5DpPFH.d.ts +17 -0
- package/dist/index-Bo5DpPFH.d.ts.map +1 -0
- package/dist/index-CBDR4cNg.d.ts +206 -0
- package/dist/index-CBDR4cNg.d.ts.map +1 -0
- package/dist/index-C_kxyHao.d.ts +57 -0
- package/dist/{lib/hexclave-app/connected-accounts/index.d.ts.map → index-C_kxyHao.d.ts.map} +1 -1
- package/dist/index-D7Vdg30O.d.ts +27 -0
- package/dist/index-D7Vdg30O.d.ts.map +1 -0
- package/dist/index-DN04TjLM.d.ts +43 -0
- package/dist/index-DN04TjLM.d.ts.map +1 -0
- package/dist/index-DSzMf-rS.d.ts +43 -0
- package/dist/index-DSzMf-rS.d.ts.map +1 -0
- package/dist/index-DbiyXho6.d.ts +129 -0
- package/dist/index-DbiyXho6.d.ts.map +1 -0
- package/dist/index-Dq4xsW7_.d.ts +106 -0
- package/dist/index-Dq4xsW7_.d.ts.map +1 -0
- package/dist/index-O3hJsHSl.d.ts +11 -0
- package/dist/index-O3hJsHSl.d.ts.map +1 -0
- package/dist/index-TUtJOdMm.d.ts +42 -0
- package/dist/index-TUtJOdMm.d.ts.map +1 -0
- package/dist/index-fOYcs4NH.d.ts +53 -0
- package/dist/{lib/hexclave-app/api-keys/index.d.ts.map → index-fOYcs4NH.d.ts.map} +1 -1
- package/dist/index-hYjsGKNc.d.ts +66 -0
- package/dist/index-hYjsGKNc.d.ts.map +1 -0
- package/dist/index-p0N9MbE5.d.ts +147 -0
- package/dist/index-p0N9MbE5.d.ts.map +1 -0
- package/dist/index.d.ts +33 -41
- package/dist/index.js +193 -193
- package/dist/integrations/convex/component/convex.config.d.ts +1 -1
- package/dist/integrations/convex/component/convex.config.d.ts.map +1 -1
- package/dist/integrations/convex/component/convex.config.js +2 -5
- package/dist/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/integrations/convex.d.ts +2 -13
- package/dist/integrations/convex.js +2 -4
- package/dist/integrations/convex.js.map +1 -1
- package/dist/lib/auth.js +2 -4
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/auth.test.js +1 -3
- package/dist/lib/auth.test.js.map +1 -1
- package/dist/lib/cookie.d.ts +2 -42
- package/dist/lib/cookie.js +7 -25
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/hexclave-app/api-keys/index.d.ts +2 -53
- package/dist/lib/hexclave-app/api-keys/index.js +2 -4
- package/dist/lib/hexclave-app/api-keys/index.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +2 -449
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +2 -4
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +1 -3
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +2 -611
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +7 -8
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -3
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/common.d.ts +2 -66
- package/dist/lib/hexclave-app/apps/implementations/common.js +9 -10
- package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +2 -4
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +1 -3
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -3
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/index.js +2 -4
- package/dist/lib/hexclave-app/apps/implementations/index.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +2 -35
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +2 -4
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +2 -274
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +2 -4
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +2 -3
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +1 -3
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts +2 -122
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js +14 -9
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js +135 -3
- package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/index.d.ts +1 -3
- package/dist/lib/hexclave-app/apps/index.js +32 -34
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +3 -272
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js +3 -6
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +2 -237
- package/dist/lib/hexclave-app/apps/interfaces/client-app.js +3 -6
- package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +2 -174
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js +3 -6
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/lib/hexclave-app/common.d.ts +2 -183
- package/dist/lib/hexclave-app/common.js +2 -3
- package/dist/lib/hexclave-app/common.js.map +1 -1
- package/dist/lib/hexclave-app/connected-accounts/index.d.ts +2 -57
- package/dist/lib/hexclave-app/contact-channels/index.d.ts +2 -43
- package/dist/lib/hexclave-app/contact-channels/index.js +2 -3
- package/dist/lib/hexclave-app/contact-channels/index.js.map +1 -1
- package/dist/lib/hexclave-app/customers/index.d.ts +2 -129
- package/dist/lib/hexclave-app/data-vault/index.d.ts +2 -14
- package/dist/lib/hexclave-app/email/index.d.ts +2 -206
- package/dist/lib/hexclave-app/email-templates/index.d.ts +2 -17
- package/dist/lib/hexclave-app/email-templates/index.js +2 -3
- package/dist/lib/hexclave-app/email-templates/index.js.map +1 -1
- package/dist/lib/hexclave-app/index.d.ts +10 -15
- package/dist/lib/hexclave-app/index.js +49 -51
- package/dist/lib/hexclave-app/internal-api-keys/index.d.ts +2 -42
- package/dist/lib/hexclave-app/internal-api-keys/index.js +2 -3
- package/dist/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
- package/dist/lib/hexclave-app/notification-categories/index.d.ts +2 -11
- package/dist/lib/hexclave-app/permissions/index.d.ts +2 -43
- package/dist/lib/hexclave-app/permissions/index.js +2 -3
- package/dist/lib/hexclave-app/permissions/index.js.map +1 -1
- package/dist/lib/hexclave-app/plan-usage/index.d.ts +2 -27
- package/dist/lib/hexclave-app/project-configs/index.d.ts +2 -106
- package/dist/lib/hexclave-app/projects/index.d.ts +2 -154
- package/dist/lib/hexclave-app/projects/index.js +6 -3
- package/dist/lib/hexclave-app/projects/index.js.map +1 -1
- package/dist/lib/hexclave-app/session-replays/index.d.ts +2 -66
- package/dist/lib/hexclave-app/teams/index.d.ts +2 -167
- package/dist/lib/hexclave-app/teams/index.js +2 -3
- package/dist/lib/hexclave-app/teams/index.js.map +1 -1
- package/dist/lib/hexclave-app/url-targets.d.ts +2 -39
- package/dist/lib/hexclave-app/url-targets.js +3 -5
- package/dist/lib/hexclave-app/url-targets.js.map +1 -1
- package/dist/lib/hexclave-app/url-targets.test.js +1 -3
- package/dist/lib/hexclave-app/url-targets.test.js.map +1 -1
- package/dist/lib/hexclave-app/users/index.d.ts +2 -400
- package/dist/lib/hexclave-app/users/index.js +2 -4
- package/dist/lib/hexclave-app/users/index.js.map +1 -1
- package/dist/lib/hooks.d.ts +2 -45
- package/dist/lib/hooks.js +2 -4
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/translations.d.ts.map +1 -1
- package/dist/lib/translations.js +4 -5
- package/dist/lib/translations.js.map +1 -1
- package/dist/magic-link-callback-DOfNLydt.d.ts +8 -0
- package/dist/magic-link-callback-DOfNLydt.d.ts.map +1 -0
- package/dist/magic-link-sign-in-D5MFDeWQ.d.ts +5 -0
- package/dist/magic-link-sign-in-D5MFDeWQ.d.ts.map +1 -0
- package/dist/message-card-C0AQX5-y.d.ts +18 -0
- package/dist/message-card-C0AQX5-y.d.ts.map +1 -0
- package/dist/mfa-CwYuxAd-.d.ts +9 -0
- package/dist/mfa-CwYuxAd-.d.ts.map +1 -0
- package/dist/oauth-button-PE3z60ay.d.ts +15 -0
- package/dist/oauth-button-PE3z60ay.d.ts.map +1 -0
- package/dist/oauth-button-group-slCOrSxK.d.ts +17 -0
- package/dist/oauth-button-group-slCOrSxK.d.ts.map +1 -0
- package/dist/oauth-callback-tCVTRbF2.d.ts +9 -0
- package/dist/oauth-callback-tCVTRbF2.d.ts.map +1 -0
- package/dist/onboarding-CdpQNCZF.d.ts +7 -0
- package/dist/onboarding-CdpQNCZF.d.ts.map +1 -0
- package/dist/password-reset-CxIuXeIx.d.ts +15 -0
- package/dist/password-reset-CxIuXeIx.d.ts.map +1 -0
- package/dist/providers/hexclave-context.d.ts +1 -1
- package/dist/providers/hexclave-context.d.ts.map +1 -1
- package/dist/providers/hexclave-context.js +5 -8
- package/dist/providers/hexclave-context.js.map +1 -1
- package/dist/providers/hexclave-provider-client.d.ts +2 -3
- package/dist/providers/hexclave-provider-client.d.ts.map +1 -1
- package/dist/providers/hexclave-provider-client.js +4 -6
- package/dist/providers/hexclave-provider-client.js.map +1 -1
- package/dist/providers/hexclave-provider.d.ts +2 -32
- package/dist/providers/hexclave-provider.js +7 -5
- package/dist/providers/hexclave-provider.js.map +1 -1
- package/dist/providers/theme-provider.d.ts +2 -50
- package/dist/providers/theme-provider.js +6 -8
- package/dist/providers/theme-provider.js.map +1 -1
- package/dist/providers/translation-provider-client.d.ts +1 -2
- package/dist/providers/translation-provider-client.d.ts.map +1 -1
- package/dist/providers/translation-provider-client.js +5 -8
- package/dist/providers/translation-provider-client.js.map +1 -1
- package/dist/providers/translation-provider.d.ts +2 -16
- package/dist/providers/translation-provider.js +2 -4
- package/dist/providers/translation-provider.js.map +1 -1
- package/dist/pushed-config-error-overlay/index.d.ts +1 -2
- package/dist/pushed-config-error-overlay/index.d.ts.map +1 -1
- package/dist/pushed-config-error-overlay/index.js +2 -4
- package/dist/pushed-config-error-overlay/index.js.map +1 -1
- package/dist/pushed-config-error-overlay/index.test.js +1 -3
- package/dist/pushed-config-error-overlay/index.test.js.map +1 -1
- package/dist/quetzal-translations-XeH3zQ9l.d.ts +6 -0
- package/dist/quetzal-translations-XeH3zQ9l.d.ts.map +1 -0
- package/dist/redirect-page-urls-NUHUchgR.d.ts +35 -0
- package/dist/redirect-page-urls-NUHUchgR.d.ts.map +1 -0
- package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
- package/dist/session-replay-CQ849yH1.d.ts +122 -0
- package/dist/session-replay-CQ849yH1.d.ts.map +1 -0
- package/dist/sign-in-BT45jb_W.d.ts +21 -0
- package/dist/sign-in-BT45jb_W.d.ts.map +1 -0
- package/dist/sign-out-DBnSkfDz.d.ts +8 -0
- package/dist/sign-out-DBnSkfDz.d.ts.map +1 -0
- package/dist/sign-up-BjE_0DB4.d.ts +11 -0
- package/dist/sign-up-BjE_0DB4.d.ts.map +1 -0
- package/dist/{storage-ksajV_p6.d.ts → storage-kputlpQY.d.ts} +1 -1
- package/dist/storage-kputlpQY.d.ts.map +1 -0
- package/dist/tanstack-start-server-context.d.ts +2635 -2
- package/dist/tanstack-start-server-context.d.ts.map +1 -1
- package/dist/team-invitation-B5Ol7vdd.d.ts +11 -0
- package/dist/team-invitation-B5Ol7vdd.d.ts.map +1 -0
- package/dist/theme-provider-D9_ngSbi.d.ts +49 -0
- package/dist/theme-provider-D9_ngSbi.d.ts.map +1 -0
- package/dist/translation-provider-WOaZXqAz.d.ts +15 -0
- package/dist/translation-provider-WOaZXqAz.d.ts.map +1 -0
- package/dist/url-targets-CWO0mjTr.d.ts +39 -0
- package/dist/url-targets-CWO0mjTr.d.ts.map +1 -0
- package/dist/user-avatar-CTyDsibI.d.ts +13 -0
- package/dist/user-avatar-CTyDsibI.d.ts.map +1 -0
- package/dist/user-button-CykqVKoH.d.ts +21 -0
- package/dist/user-button-CykqVKoH.d.ts.map +1 -0
- package/dist/utils/browser-script.d.ts +1 -3
- package/dist/utils/browser-script.d.ts.map +1 -1
- package/dist/utils/browser-script.js +2 -4
- package/dist/utils/browser-script.js.map +1 -1
- package/dist/utils/constants.js +2 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +2 -4
- package/dist/utils/url.js.map +1 -1
- package/package.json +6 -6
- package/src/lib/hexclave-app/apps/implementations/session-replay.test.ts +160 -1
- package/src/lib/hexclave-app/apps/implementations/session-replay.ts +38 -12
- package/dist/components/credential-sign-in.d.ts.map +0 -1
- package/dist/components/credential-sign-up.d.ts.map +0 -1
- package/dist/components/elements/user-avatar.d.ts.map +0 -1
- package/dist/components/magic-link-sign-in.d.ts.map +0 -1
- package/dist/components/message-cards/message-card.d.ts.map +0 -1
- package/dist/components/oauth-button-group.d.ts.map +0 -1
- package/dist/components/oauth-button.d.ts.map +0 -1
- package/dist/components/selected-team-switcher.d.ts.map +0 -1
- package/dist/components/team-switcher.d.ts.map +0 -1
- package/dist/components/user-button.d.ts.map +0 -1
- package/dist/components-page/account-settings.d.ts.map +0 -1
- package/dist/components-page/auth-page.d.ts.map +0 -1
- package/dist/components-page/cli-auth-confirm.d.ts.map +0 -1
- package/dist/components-page/email-verification.d.ts.map +0 -1
- package/dist/components-page/error-page.d.ts.map +0 -1
- package/dist/components-page/forgot-password.d.ts.map +0 -1
- package/dist/components-page/hexclave-handler-client.d.ts.map +0 -1
- package/dist/components-page/hexclave-handler.d.ts.map +0 -1
- package/dist/components-page/magic-link-callback.d.ts.map +0 -1
- package/dist/components-page/mfa.d.ts.map +0 -1
- package/dist/components-page/oauth-callback.d.ts.map +0 -1
- package/dist/components-page/onboarding.d.ts.map +0 -1
- package/dist/components-page/password-reset.d.ts.map +0 -1
- package/dist/components-page/sign-in.d.ts.map +0 -1
- package/dist/components-page/sign-out.d.ts.map +0 -1
- package/dist/components-page/sign-up.d.ts.map +0 -1
- package/dist/components-page/team-invitation.d.ts.map +0 -1
- package/dist/generated/quetzal-translations.d.ts.map +0 -1
- package/dist/integrations/convex.d.ts.map +0 -1
- package/dist/lib/cookie.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/common.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +0 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +0 -1
- package/dist/lib/hexclave-app/common.d.ts.map +0 -1
- package/dist/lib/hexclave-app/contact-channels/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/customers/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/data-vault/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/email/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/email-templates/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/internal-api-keys/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/notification-categories/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/permissions/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/plan-usage/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/project-configs/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/projects/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/session-replays/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/teams/index.d.ts.map +0 -1
- package/dist/lib/hexclave-app/url-targets.d.ts.map +0 -1
- package/dist/lib/hexclave-app/users/index.d.ts.map +0 -1
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/providers/hexclave-provider.d.ts.map +0 -1
- package/dist/providers/theme-provider.d.ts.map +0 -1
- package/dist/providers/translation-provider.d.ts.map +0 -1
- package/dist/storage-ksajV_p6.d.ts.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
3
2
|
import { runAsynchronously } from "@hexclave/shared/dist/utils/promises";
|
|
4
3
|
import { captureError } from "@hexclave/shared/dist/utils/errors";
|
|
5
4
|
import { Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, Typography, cn } from "@hexclave/ui";
|
|
@@ -20,7 +19,6 @@ import { MagicLinkSignIn } from "../components/magic-link-sign-in.js";
|
|
|
20
19
|
import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card.js";
|
|
21
20
|
import { OAuthButtonGroup } from "../components/oauth-button-group.js";
|
|
22
21
|
import { PasskeyButton } from "../components/passkey-button.js";
|
|
23
|
-
|
|
24
22
|
//#region src/components-page/auth-page.tsx
|
|
25
23
|
function AuthPage(props) {
|
|
26
24
|
return /* @__PURE__ */ jsx(Suspense, {
|
|
@@ -200,7 +198,7 @@ function Inner(props) {
|
|
|
200
198
|
})
|
|
201
199
|
});
|
|
202
200
|
}
|
|
203
|
-
|
|
204
201
|
//#endregion
|
|
205
202
|
export { AuthPage };
|
|
203
|
+
|
|
206
204
|
//# sourceMappingURL=auth-page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-page.js","names":["MessageCard"],"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownError } from '@hexclave/shared';\nimport { captureError } from '@hexclave/shared/dist/utils/errors';\nimport { runAsynchronously } from '@hexclave/shared/dist/utils/promises';\nimport { use } from '@hexclave/shared/dist/utils/react';\nimport { Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, Typography, cn } from '@hexclave/ui';\nimport { Suspense, useMemo } from 'react';\nimport { useStackApp, useUser } from '..';\nimport { CredentialSignIn } from '../components/credential-sign-in';\nimport { CredentialSignUp } from '../components/credential-sign-up';\nimport { MaybeFullPage } from '../components/elements/maybe-full-page';\nimport { SeparatorWithText } from '../components/elements/separator-with-text';\nimport { StyledLink } from '../components/link';\nimport { KnownErrorMessageCard } from '../components/message-cards/known-error-message-card';\nimport { MessageCard } from '../components/message-cards/message-card';\nimport { MagicLinkSignIn } from '../components/magic-link-sign-in';\nimport { PredefinedMessageCard } from '../components/message-cards/predefined-message-card';\nimport { OAuthButtonGroup } from '../components/oauth-button-group';\nimport { PasskeyButton } from '../components/passkey-button';\nimport { useTranslation } from '../lib/translations';\n\ntype Props = {\n noPasswordRepeat?: boolean,\n firstTab?: 'magic-link' | 'password',\n fullPage?: boolean,\n type: 'sign-in' | 'sign-up',\n automaticRedirect?: boolean,\n extraInfo?: React.ReactNode,\n mockProject?: {\n config: {\n signUpEnabled: boolean,\n credentialEnabled: boolean,\n passkeyEnabled: boolean,\n magicLinkEnabled: boolean,\n oauthProviders: {\n id: string,\n }[],\n },\n },\n}\n\ntype AutomaticRedirectResult =\n | { status: \"success\" }\n | { status: \"known-error\", error: KnownError }\n | { status: \"unknown-error\" };\n\nexport function AuthPage(props: Props) {\n return <Suspense fallback={<Fallback {...props} />}>\n <Inner {...props} />\n </Suspense>;\n}\n\nfunction Fallback(props: Props) {\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className='stack-scope flex flex-col items-stretch' style={{ maxWidth: '380px', flexBasis: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <div className=\"text-center mb-6 flex flex-col\">\n <Skeleton className='h-9 w-2/3 self-center' />\n\n <Skeleton className='h-3 w-16 mt-8' />\n <Skeleton className='h-9 w-full mt-1' />\n\n <Skeleton className='h-3 w-24 mt-2' />\n <Skeleton className='h-9 w-full mt-1' />\n\n <Skeleton className='h-9 w-full mt-6' />\n </div>\n </div>\n </MaybeFullPage>\n );\n}\n\nfunction AutomaticRedirect(props: {\n fullPage?: boolean,\n isRestricted: boolean,\n type: 'sign-in' | 'sign-up',\n}) {\n const hexclaveApp = useStackApp();\n const { t } = useTranslation();\n const redirectResultPromise = useMemo(async (): Promise<AutomaticRedirectResult> => {\n try {\n await (\n props.isRestricted\n ? hexclaveApp.redirectToOnboarding({ replace: true })\n : props.type === 'sign-in'\n ? hexclaveApp.redirectToAfterSignIn({ replace: true })\n : hexclaveApp.redirectToAfterSignUp({ replace: true })\n );\n return { status: \"success\" };\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n return { status: \"known-error\", error: e };\n }\n captureError(\"<AuthPage automaticRedirect />\", e);\n return { status: \"unknown-error\" };\n }\n }, [hexclaveApp, props.isRestricted, props.type]);\n\n const redirectResult = use(redirectResultPromise);\n if (redirectResult.status === \"known-error\") {\n return <KnownErrorMessageCard error={redirectResult.error} fullPage={props.fullPage} />;\n }\n if (redirectResult.status === \"unknown-error\") {\n return <PredefinedMessageCard type='unknownError' fullPage={props.fullPage} />;\n }\n return <MessageCard title={t(\"Redirecting...\")} fullPage={props.fullPage} />;\n}\n\nfunction Inner(props: Props) {\n const hexclaveApp = useStackApp();\n const user = useUser({ includeRestricted: true });\n const projectFromHook = hexclaveApp.useProject();\n const project = props.mockProject || projectFromHook;\n const { t } = useTranslation();\n\n if (props.automaticRedirect && user && !props.mockProject) {\n return <Suspense fallback={<MessageCard title={t(\"Redirecting...\")} fullPage={props.fullPage} />}>\n <AutomaticRedirect fullPage={props.fullPage} isRestricted={user.isRestricted} type={props.type} />\n </Suspense>;\n }\n\n if (user && !props.mockProject && !props.automaticRedirect) {\n return <PredefinedMessageCard type='signedIn' fullPage={props.fullPage} />;\n }\n\n if (props.type === 'sign-up' && !project.config.signUpEnabled) {\n return <PredefinedMessageCard type='signUpDisabled' fullPage={props.fullPage} />;\n }\n\n const hasOAuthProviders = project.config.oauthProviders.length > 0;\n const hasPasskey = (project.config.passkeyEnabled === true && props.type === \"sign-in\");\n const enableSeparator = (project.config.credentialEnabled || project.config.magicLinkEnabled) && (hasOAuthProviders || hasPasskey);\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className='stack-scope flex flex-col items-stretch' style={{ maxWidth: '380px', flexBasis: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <div className=\"text-center mb-6\">\n <Typography type='h2'>\n {props.type === 'sign-in' ? t(\"Sign in to your account\") : t(\"Create a new account\")}\n </Typography>\n {props.type === 'sign-in' ? (\n project.config.signUpEnabled && (\n <Typography>\n {t(\"Don't have an account?\")}{\" \"}\n <StyledLink href=\"#\" onClick={(e) => {\n runAsynchronously(hexclaveApp.redirectToSignUp());\n e.preventDefault();\n }}>{t(\"Sign up\")}</StyledLink>\n </Typography>\n )\n ) : (\n <Typography>\n {t(\"Already have an account?\")}{\" \"}\n <StyledLink href=\"#\" onClick={(e) => {\n runAsynchronously(hexclaveApp.redirectToSignIn());\n e.preventDefault();\n }}>{t(\"Sign in\")}</StyledLink>\n </Typography>\n )}\n </div>\n {(hasOAuthProviders || hasPasskey) && (\n <div className='gap-4 flex flex-col items-stretch stack-scope'>\n {hasOAuthProviders && <OAuthButtonGroup type={props.type} mockProject={props.mockProject} />}\n {hasPasskey && <PasskeyButton type={props.type} />}\n </div>\n )}\n\n {enableSeparator && <SeparatorWithText text={t('Or continue with')} />}\n {project.config.credentialEnabled && project.config.magicLinkEnabled ? (\n <Tabs defaultValue={props.firstTab || 'magic-link'}>\n <TabsList className={cn('w-full mb-2', {\n 'flex-row-reverse': props.firstTab === 'password'\n })}>\n <TabsTrigger value='magic-link' className='flex-1'>{t(\"Email\")}</TabsTrigger>\n <TabsTrigger value='password' className='flex-1'>{t(\"Email & Password\")}</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn />\n </TabsContent>\n <TabsContent value='password'>\n {props.type === 'sign-up' ? <CredentialSignUp noPasswordRepeat={props.noPasswordRepeat} /> : <CredentialSignIn />}\n </TabsContent>\n </Tabs>\n ) : project.config.credentialEnabled ? (\n props.type === 'sign-up' ? <CredentialSignUp noPasswordRepeat={props.noPasswordRepeat} /> : <CredentialSignIn />\n ) : project.config.magicLinkEnabled ? (\n <MagicLinkSignIn />\n ) : !(hasOAuthProviders || hasPasskey) ? <Typography variant={\"destructive\"} className=\"text-center\">{t(\"No authentication method enabled.\")}</Typography> : null}\n {props.extraInfo && (\n <div className={cn('flex flex-col items-center text-center text-sm text-gray-500', {\n 'mt-2': project.config.credentialEnabled || project.config.magicLinkEnabled,\n 'mt-6': !(project.config.credentialEnabled || project.config.magicLinkEnabled),\n })}>\n <div>{props.extraInfo}</div>\n </div>\n )}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-page.js","names":["MessageCard"],"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownError } from '@hexclave/shared';\nimport { captureError } from '@hexclave/shared/dist/utils/errors';\nimport { runAsynchronously } from '@hexclave/shared/dist/utils/promises';\nimport { use } from '@hexclave/shared/dist/utils/react';\nimport { Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, Typography, cn } from '@hexclave/ui';\nimport { Suspense, useMemo } from 'react';\nimport { useStackApp, useUser } from '..';\nimport { CredentialSignIn } from '../components/credential-sign-in';\nimport { CredentialSignUp } from '../components/credential-sign-up';\nimport { MaybeFullPage } from '../components/elements/maybe-full-page';\nimport { SeparatorWithText } from '../components/elements/separator-with-text';\nimport { StyledLink } from '../components/link';\nimport { KnownErrorMessageCard } from '../components/message-cards/known-error-message-card';\nimport { MessageCard } from '../components/message-cards/message-card';\nimport { MagicLinkSignIn } from '../components/magic-link-sign-in';\nimport { PredefinedMessageCard } from '../components/message-cards/predefined-message-card';\nimport { OAuthButtonGroup } from '../components/oauth-button-group';\nimport { PasskeyButton } from '../components/passkey-button';\nimport { useTranslation } from '../lib/translations';\n\ntype Props = {\n noPasswordRepeat?: boolean,\n firstTab?: 'magic-link' | 'password',\n fullPage?: boolean,\n type: 'sign-in' | 'sign-up',\n automaticRedirect?: boolean,\n extraInfo?: React.ReactNode,\n mockProject?: {\n config: {\n signUpEnabled: boolean,\n credentialEnabled: boolean,\n passkeyEnabled: boolean,\n magicLinkEnabled: boolean,\n oauthProviders: {\n id: string,\n }[],\n },\n },\n}\n\ntype AutomaticRedirectResult =\n | { status: \"success\" }\n | { status: \"known-error\", error: KnownError }\n | { status: \"unknown-error\" };\n\nexport function AuthPage(props: Props) {\n return <Suspense fallback={<Fallback {...props} />}>\n <Inner {...props} />\n </Suspense>;\n}\n\nfunction Fallback(props: Props) {\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className='stack-scope flex flex-col items-stretch' style={{ maxWidth: '380px', flexBasis: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <div className=\"text-center mb-6 flex flex-col\">\n <Skeleton className='h-9 w-2/3 self-center' />\n\n <Skeleton className='h-3 w-16 mt-8' />\n <Skeleton className='h-9 w-full mt-1' />\n\n <Skeleton className='h-3 w-24 mt-2' />\n <Skeleton className='h-9 w-full mt-1' />\n\n <Skeleton className='h-9 w-full mt-6' />\n </div>\n </div>\n </MaybeFullPage>\n );\n}\n\nfunction AutomaticRedirect(props: {\n fullPage?: boolean,\n isRestricted: boolean,\n type: 'sign-in' | 'sign-up',\n}) {\n const hexclaveApp = useStackApp();\n const { t } = useTranslation();\n const redirectResultPromise = useMemo(async (): Promise<AutomaticRedirectResult> => {\n try {\n await (\n props.isRestricted\n ? hexclaveApp.redirectToOnboarding({ replace: true })\n : props.type === 'sign-in'\n ? hexclaveApp.redirectToAfterSignIn({ replace: true })\n : hexclaveApp.redirectToAfterSignUp({ replace: true })\n );\n return { status: \"success\" };\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n return { status: \"known-error\", error: e };\n }\n captureError(\"<AuthPage automaticRedirect />\", e);\n return { status: \"unknown-error\" };\n }\n }, [hexclaveApp, props.isRestricted, props.type]);\n\n const redirectResult = use(redirectResultPromise);\n if (redirectResult.status === \"known-error\") {\n return <KnownErrorMessageCard error={redirectResult.error} fullPage={props.fullPage} />;\n }\n if (redirectResult.status === \"unknown-error\") {\n return <PredefinedMessageCard type='unknownError' fullPage={props.fullPage} />;\n }\n return <MessageCard title={t(\"Redirecting...\")} fullPage={props.fullPage} />;\n}\n\nfunction Inner(props: Props) {\n const hexclaveApp = useStackApp();\n const user = useUser({ includeRestricted: true });\n const projectFromHook = hexclaveApp.useProject();\n const project = props.mockProject || projectFromHook;\n const { t } = useTranslation();\n\n if (props.automaticRedirect && user && !props.mockProject) {\n return <Suspense fallback={<MessageCard title={t(\"Redirecting...\")} fullPage={props.fullPage} />}>\n <AutomaticRedirect fullPage={props.fullPage} isRestricted={user.isRestricted} type={props.type} />\n </Suspense>;\n }\n\n if (user && !props.mockProject && !props.automaticRedirect) {\n return <PredefinedMessageCard type='signedIn' fullPage={props.fullPage} />;\n }\n\n if (props.type === 'sign-up' && !project.config.signUpEnabled) {\n return <PredefinedMessageCard type='signUpDisabled' fullPage={props.fullPage} />;\n }\n\n const hasOAuthProviders = project.config.oauthProviders.length > 0;\n const hasPasskey = (project.config.passkeyEnabled === true && props.type === \"sign-in\");\n const enableSeparator = (project.config.credentialEnabled || project.config.magicLinkEnabled) && (hasOAuthProviders || hasPasskey);\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className='stack-scope flex flex-col items-stretch' style={{ maxWidth: '380px', flexBasis: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <div className=\"text-center mb-6\">\n <Typography type='h2'>\n {props.type === 'sign-in' ? t(\"Sign in to your account\") : t(\"Create a new account\")}\n </Typography>\n {props.type === 'sign-in' ? (\n project.config.signUpEnabled && (\n <Typography>\n {t(\"Don't have an account?\")}{\" \"}\n <StyledLink href=\"#\" onClick={(e) => {\n runAsynchronously(hexclaveApp.redirectToSignUp());\n e.preventDefault();\n }}>{t(\"Sign up\")}</StyledLink>\n </Typography>\n )\n ) : (\n <Typography>\n {t(\"Already have an account?\")}{\" \"}\n <StyledLink href=\"#\" onClick={(e) => {\n runAsynchronously(hexclaveApp.redirectToSignIn());\n e.preventDefault();\n }}>{t(\"Sign in\")}</StyledLink>\n </Typography>\n )}\n </div>\n {(hasOAuthProviders || hasPasskey) && (\n <div className='gap-4 flex flex-col items-stretch stack-scope'>\n {hasOAuthProviders && <OAuthButtonGroup type={props.type} mockProject={props.mockProject} />}\n {hasPasskey && <PasskeyButton type={props.type} />}\n </div>\n )}\n\n {enableSeparator && <SeparatorWithText text={t('Or continue with')} />}\n {project.config.credentialEnabled && project.config.magicLinkEnabled ? (\n <Tabs defaultValue={props.firstTab || 'magic-link'}>\n <TabsList className={cn('w-full mb-2', {\n 'flex-row-reverse': props.firstTab === 'password'\n })}>\n <TabsTrigger value='magic-link' className='flex-1'>{t(\"Email\")}</TabsTrigger>\n <TabsTrigger value='password' className='flex-1'>{t(\"Email & Password\")}</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn />\n </TabsContent>\n <TabsContent value='password'>\n {props.type === 'sign-up' ? <CredentialSignUp noPasswordRepeat={props.noPasswordRepeat} /> : <CredentialSignIn />}\n </TabsContent>\n </Tabs>\n ) : project.config.credentialEnabled ? (\n props.type === 'sign-up' ? <CredentialSignUp noPasswordRepeat={props.noPasswordRepeat} /> : <CredentialSignIn />\n ) : project.config.magicLinkEnabled ? (\n <MagicLinkSignIn />\n ) : !(hasOAuthProviders || hasPasskey) ? <Typography variant={\"destructive\"} className=\"text-center\">{t(\"No authentication method enabled.\")}</Typography> : null}\n {props.extraInfo && (\n <div className={cn('flex flex-col items-center text-center text-sm text-gray-500', {\n 'mt-2': project.config.credentialEnabled || project.config.magicLinkEnabled,\n 'mt-6': !(project.config.credentialEnabled || project.config.magicLinkEnabled),\n })}>\n <div>{props.extraInfo}</div>\n </div>\n )}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoDA,SAAgB,SAAS,OAAc;CACrC,OAAO,oBAAC,UAAD;EAAU,UAAU,oBAAC,UAAD,EAAU,GAAI,MAAQ,CAAA;YAC/C,oBAAC,OAAD,EAAO,GAAI,MAAQ,CAAA;CACX,CAAA;AACZ;AAEA,SAAS,SAAS,OAAc;CAC9B,OACE,oBAAC,eAAD;EAAe,UAAU,CAAC,CAAC,MAAM;YAC/B,oBAAC,OAAD;GAAK,WAAU;GAA0C,OAAO;IAAE,UAAU;IAAS,WAAW;IAAS,SAAS,MAAM,WAAW,SAAS;GAAE;aAC5I,qBAAC,OAAD;IAAK,WAAU;cAAf;KACE,oBAAC,UAAD,EAAU,WAAU,wBAAyB,CAAA;KAE7C,oBAAC,UAAD,EAAU,WAAU,gBAAiB,CAAA;KACrC,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;KAEvC,oBAAC,UAAD,EAAU,WAAU,gBAAiB,CAAA;KACrC,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;KAEvC,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;IACpC;;EACF,CAAA;CACQ,CAAA;AAEnB;AAEA,SAAS,kBAAkB,OAIxB;CACD,MAAM,cAAc,YAAY;CAChC,MAAM,EAAE,MAAM,eAAe;CAoB7B,MAAM,iBAAiB,IAnBO,QAAQ,YAA8C;EAClF,IAAI;GACF,OACE,MAAM,eACF,YAAY,qBAAqB,EAAE,SAAS,KAAK,CAAC,IAClD,MAAM,SAAS,YACb,YAAY,sBAAsB,EAAE,SAAS,KAAK,CAAC,IACnD,YAAY,sBAAsB,EAAE,SAAS,KAAK,CAAC;GAE3D,OAAO,EAAE,QAAQ,UAAU;EAC7B,SAAS,GAAG;GACV,IAAI,WAAW,aAAa,CAAC,GAC3B,OAAO;IAAE,QAAQ;IAAe,OAAO;GAAE;GAE3C,aAAa,kCAAkC,CAAC;GAChD,OAAO,EAAE,QAAQ,gBAAgB;EACnC;CACF,GAAG;EAAC;EAAa,MAAM;EAAc,MAAM;CAAI,CAEA,CAAC;CAChD,IAAI,eAAe,WAAW,eAC5B,OAAO,oBAAC,uBAAD;EAAuB,OAAO,eAAe;EAAO,UAAU,MAAM;CAAW,CAAA;CAExF,IAAI,eAAe,WAAW,iBAC5B,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAe,UAAU,MAAM;CAAW,CAAA;CAE/E,OAAO,oBAACA,eAAD;EAAa,OAAO,EAAE,gBAAgB;EAAG,UAAU,MAAM;CAAW,CAAA;AAC7E;AAEA,SAAS,MAAM,OAAc;CAC3B,MAAM,cAAc,YAAY;CAChC,MAAM,OAAO,QAAQ,EAAE,mBAAmB,KAAK,CAAC;CAChD,MAAM,kBAAkB,YAAY,WAAW;CAC/C,MAAM,UAAU,MAAM,eAAe;CACrC,MAAM,EAAE,MAAM,eAAe;CAE7B,IAAI,MAAM,qBAAqB,QAAQ,CAAC,MAAM,aAC5C,OAAO,oBAAC,UAAD;EAAU,UAAU,oBAACA,eAAD;GAAa,OAAO,EAAE,gBAAgB;GAAG,UAAU,MAAM;EAAW,CAAA;YAC7F,oBAAC,mBAAD;GAAmB,UAAU,MAAM;GAAU,cAAc,KAAK;GAAc,MAAM,MAAM;EAAO,CAAA;CACzF,CAAA;CAGZ,IAAI,QAAQ,CAAC,MAAM,eAAe,CAAC,MAAM,mBACvC,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAW,UAAU,MAAM;CAAW,CAAA;CAG3E,IAAI,MAAM,SAAS,aAAa,CAAC,QAAQ,OAAO,eAC9C,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAiB,UAAU,MAAM;CAAW,CAAA;CAGjF,MAAM,oBAAoB,QAAQ,OAAO,eAAe,SAAS;CACjE,MAAM,aAAc,QAAQ,OAAO,mBAAmB,QAAQ,MAAM,SAAS;CAC7E,MAAM,mBAAmB,QAAQ,OAAO,qBAAqB,QAAQ,OAAO,sBAAsB,qBAAqB;CAEvH,OACE,oBAAC,eAAD;EAAe,UAAU,CAAC,CAAC,MAAM;YAC/B,qBAAC,OAAD;GAAK,WAAU;GAA0C,OAAO;IAAE,UAAU;IAAS,WAAW;IAAS,SAAS,MAAM,WAAW,SAAS;GAAE;aAA9I;IACE,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,YAAD;MAAY,MAAK;gBACd,MAAM,SAAS,YAAY,EAAE,yBAAyB,IAAI,EAAE,sBAAsB;KACzE,CAAA,GACX,MAAM,SAAS,YACd,QAAQ,OAAO,iBACb,qBAAC,YAAD,EAAA,UAAA;MACG,EAAE,wBAAwB;MAAG;MAC9B,oBAAC,YAAD;OAAY,MAAK;OAAI,UAAU,MAAM;QACnC,kBAAkB,YAAY,iBAAiB,CAAC;QAChD,EAAE,eAAe;OACnB;iBAAI,EAAE,SAAS;MAAc,CAAA;KACnB,EAAA,CAAA,IAGd,qBAAC,YAAD,EAAA,UAAA;MACG,EAAE,0BAA0B;MAAG;MAChC,oBAAC,YAAD;OAAY,MAAK;OAAI,UAAU,MAAM;QACnC,kBAAkB,YAAY,iBAAiB,CAAC;QAChD,EAAE,eAAe;OACnB;iBAAI,EAAE,SAAS;MAAc,CAAA;KACnB,EAAA,CAAA,CAEX;;KACH,qBAAqB,eACrB,qBAAC,OAAD;KAAK,WAAU;eAAf,CACG,qBAAqB,oBAAC,kBAAD;MAAkB,MAAM,MAAM;MAAM,aAAa,MAAM;KAAc,CAAA,GAC1F,cAAc,oBAAC,eAAD,EAAe,MAAM,MAAM,KAAO,CAAA,CAC9C;;IAGN,mBAAmB,oBAAC,mBAAD,EAAmB,MAAM,EAAE,kBAAkB,EAAI,CAAA;IACpE,QAAQ,OAAO,qBAAqB,QAAQ,OAAO,mBAClD,qBAAC,MAAD;KAAM,cAAc,MAAM,YAAY;eAAtC;MACE,qBAAC,UAAD;OAAU,WAAW,GAAG,eAAe,EACrC,oBAAoB,MAAM,aAAa,WACzC,CAAC;iBAFD,CAGE,oBAAC,aAAD;QAAa,OAAM;QAAa,WAAU;kBAAU,EAAE,OAAO;OAAe,CAAA,GAC5E,oBAAC,aAAD;QAAa,OAAM;QAAW,WAAU;kBAAU,EAAE,kBAAkB;OAAe,CAAA,CAC7E;;MACV,oBAAC,aAAD;OAAa,OAAM;iBACjB,oBAAC,iBAAD,CAAkB,CAAA;MACP,CAAA;MACb,oBAAC,aAAD;OAAa,OAAM;iBAChB,MAAM,SAAS,YAAY,oBAAC,kBAAD,EAAkB,kBAAkB,MAAM,iBAAmB,CAAA,IAAI,oBAAC,kBAAD,CAAmB,CAAA;MACrG,CAAA;KACT;SACJ,QAAQ,OAAO,oBACjB,MAAM,SAAS,YAAY,oBAAC,kBAAD,EAAkB,kBAAkB,MAAM,iBAAmB,CAAA,IAAI,oBAAC,kBAAD,CAAmB,CAAA,IAC7G,QAAQ,OAAO,mBACjB,oBAAC,iBAAD,CAAkB,CAAA,IAChB,EAAE,qBAAqB,cAAc,oBAAC,YAAD;KAAY,SAAS;KAAe,WAAU;eAAe,EAAE,mCAAmC;IAAc,CAAA,IAAI;IAC5J,MAAM,aACL,oBAAC,OAAD;KAAK,WAAW,GAAG,gEAAgE;MACjF,QAAQ,QAAQ,OAAO,qBAAqB,QAAQ,OAAO;MAC3D,QAAQ,EAAE,QAAQ,OAAO,qBAAqB,QAAQ,OAAO;KAC/D,CAAC;eACC,oBAAC,OAAD,EAAA,UAAM,MAAM,UAAe,CAAA;IACxB,CAAA;GAEJ;;CACQ,CAAA;AAEnB"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components-page/cli-auth-confirm.d.ts
|
|
4
2
|
type CliAuthConfirmationStatus = "idle" | "invalid" | "authorizing" | "redirecting" | "success" | "error";
|
|
5
3
|
type CliAuthConfirmationState = {
|
|
@@ -15,7 +13,7 @@ declare function CliAuthConfirmation({
|
|
|
15
13
|
fullPage
|
|
16
14
|
}: {
|
|
17
15
|
fullPage?: boolean;
|
|
18
|
-
}):
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
19
17
|
//#endregion
|
|
20
18
|
export { CliAuthConfirmation, CliAuthConfirmationState, CliAuthConfirmationStatus, useCliAuthConfirmation };
|
|
21
19
|
//# sourceMappingURL=cli-auth-confirm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-auth-confirm.d.ts","names":[],"sources":["../../../src/components-page/cli-auth-confirm.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-auth-confirm.d.ts","names":[],"sources":["../../../src/components-page/cli-auth-confirm.tsx"],"mappings":";KAiEY,yBAAA;AAAA,KAQA,wBAAA;EACV,MAAA,EAAQ,yBAAA;EACR,SAAA;EACA,KAAA,EAAO,KAAA;EACP,SAAA;EACA,SAAA,QAAiB,OAAA;EACjB,KAAA;AAAA;AAAA,iBAGc,sBAAA,IAA0B,wBAAwB;AAAA,iBAgIlD,mBAAA;EAAsB;AAAA;EAAqB,QAAA;AAAA,gCAAoB,GAAA,CAAA,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
3
2
|
import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
|
|
4
3
|
import { hexclaveAppInternalsSymbol } from "../lib/hexclave-app/common.js";
|
|
5
4
|
import { Typography } from "@hexclave/ui";
|
|
@@ -8,7 +7,6 @@ import { useTranslation } from "../lib/translations.js";
|
|
|
8
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
8
|
import { useStackApp } from "../lib/hooks.js";
|
|
10
9
|
import { MessageCard } from "../components/message-cards/message-card.js";
|
|
11
|
-
|
|
12
10
|
//#region src/components-page/cli-auth-confirm.tsx
|
|
13
11
|
async function postCliAuthComplete(app, body) {
|
|
14
12
|
return await app[hexclaveAppInternalsSymbol].sendRequest("/auth/cli/complete", {
|
|
@@ -207,7 +205,7 @@ function CliAuthConfirmation({ fullPage = true }) {
|
|
|
207
205
|
})]
|
|
208
206
|
});
|
|
209
207
|
}
|
|
210
|
-
|
|
211
208
|
//#endregion
|
|
212
209
|
export { CliAuthConfirmation, useCliAuthConfirmation };
|
|
210
|
+
|
|
213
211
|
//# sourceMappingURL=cli-auth-confirm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-auth-confirm.js","names":[],"sources":["../../../src/components-page/cli-auth-confirm.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Typography } from \"@hexclave/ui\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { useTranslation } from \"../lib/translations\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { useStackApp } from \"../lib/hooks\";\n\nasync function postCliAuthComplete(app: StackClientApp, body: Record<string, unknown>) {\n return await app[hexclaveAppInternalsSymbol].sendRequest(\"/auth/cli/complete\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n}\n\nasync function ensureCliCompleteOk(result: Response) {\n if (!result.ok) {\n throw new Error(`Authorization failed: ${result.status} ${await result.text()}`);\n }\n}\n\nasync function completeCliAuthWithRefreshToken(app: StackClientApp, loginCode: string, refreshToken: string) {\n const result = await postCliAuthComplete(app, { login_code: loginCode, refresh_token: refreshToken });\n await ensureCliCompleteOk(result);\n}\n\n// Hexclave rebrand: sessionStorage key — straight rename (per-tab, low TTL).\nconst CLI_AUTH_CONFIRMED_KEY = \"hexclave-cli-auth-confirmed\";\n\nfunction markConfirmed(loginCode: string) {\n sessionStorage.setItem(CLI_AUTH_CONFIRMED_KEY, loginCode);\n}\n\nfunction isConfirmed(loginCode: string): boolean {\n return sessionStorage.getItem(CLI_AUTH_CONFIRMED_KEY) === loginCode;\n}\n\nfunction clearConfirmed() {\n sessionStorage.removeItem(CLI_AUTH_CONFIRMED_KEY);\n}\n\nfunction getError(err: unknown): Error {\n return err instanceof Error ? err : new Error(String(err));\n}\n\nfunction getObjectField(data: unknown, fieldName: string): unknown {\n return typeof data === \"object\" && data !== null && fieldName in data\n ? data[fieldName as keyof typeof data]\n : undefined;\n}\n\nfunction getStringField(data: unknown, fieldName: string): string | undefined {\n const value = getObjectField(data, fieldName);\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport type CliAuthConfirmationStatus =\n | \"idle\"\n | \"invalid\"\n | \"authorizing\"\n | \"redirecting\"\n | \"success\"\n | \"error\";\n\nexport type CliAuthConfirmationState = {\n status: CliAuthConfirmationStatus,\n loginCode: string | null,\n error: Error | null,\n isLoading: boolean,\n authorize: () => Promise<void>,\n retry: () => void,\n};\n\nexport function useCliAuthConfirmation(): CliAuthConfirmationState {\n const app = useStackApp();\n const user = app.useUser({ includeRestricted: true });\n const [status, setStatus] = useState<Exclude<CliAuthConfirmationStatus, \"invalid\">>(\"idle\");\n const [error, setError] = useState<Error | null>(null);\n const autoCompleteRef = useRef(false);\n const authorizeInProgressRef = useRef(false);\n const [loginCode] = useState(() => {\n if (typeof window === 'undefined') return null;\n return new URLSearchParams(window.location.search).get(\"login_code\");\n });\n const [confirmed] = useState(() => {\n if (typeof window === 'undefined') return false;\n return loginCode != null && isConfirmed(loginCode);\n });\n\n const completeWithCurrentUser = useCallback(async () => {\n if (!loginCode) {\n throw new Error(\"Missing login code in URL parameters\");\n }\n if (!user) {\n throw new Error(\"Cannot complete CLI authorization without a signed-in user\");\n }\n const refreshToken = (await user.currentSession.getTokens()).refreshToken;\n if (!refreshToken) {\n throw new Error(\"Could not retrieve session token\");\n }\n await completeCliAuthWithRefreshToken(app, loginCode, refreshToken);\n }, [app, loginCode, user]);\n\n useEffect(() => {\n if (!confirmed || !user || autoCompleteRef.current) {\n return;\n }\n autoCompleteRef.current = true;\n runAsynchronouslyWithAlert(async () => {\n setStatus(\"authorizing\");\n try {\n await completeWithCurrentUser();\n clearConfirmed();\n setStatus(\"success\");\n } catch (err) {\n setError(getError(err));\n setStatus(\"error\");\n }\n });\n }, [confirmed, user, completeWithCurrentUser]);\n\n const authorize = useCallback(async () => {\n if (authorizeInProgressRef.current) {\n return;\n }\n authorizeInProgressRef.current = true;\n\n try {\n if (!loginCode) {\n setError(new Error(\"Missing login code in URL parameters\"));\n setStatus(\"error\");\n return;\n }\n\n setError(null);\n setStatus(\"authorizing\");\n if (user) {\n await completeWithCurrentUser();\n clearConfirmed();\n setStatus(\"success\");\n return;\n }\n\n const checkResult = await postCliAuthComplete(app, { login_code: loginCode, mode: \"check\" });\n if (!checkResult.ok) {\n throw new Error(`Failed to verify login code: ${checkResult.status} ${await checkResult.text()}`);\n }\n const checkData: unknown = await checkResult.json();\n const cliSessionState = getStringField(checkData, \"cli_session_state\") ?? null;\n\n if (cliSessionState === \"anonymous\") {\n const claimResult = await postCliAuthComplete(app, { login_code: loginCode, mode: \"claim-anon-session\" });\n\n if (!claimResult.ok) {\n throw new Error(`Failed to claim anonymous session: ${claimResult.status} ${await claimResult.text()}`);\n }\n\n const tokens: unknown = await claimResult.json();\n const accessToken = getStringField(tokens, \"access_token\");\n const refreshToken = getStringField(tokens, \"refresh_token\");\n if (!accessToken || !refreshToken) {\n throw new Error(\"Anonymous CLI session claim did not return tokens\");\n }\n await app[hexclaveAppInternalsSymbol].signInWithTokens({\n accessToken,\n refreshToken,\n });\n markConfirmed(loginCode);\n setStatus(\"redirecting\");\n await app.redirectToSignUp({ replace: true });\n return;\n }\n\n markConfirmed(loginCode);\n setStatus(\"redirecting\");\n await app.redirectToSignIn({ replace: true });\n } catch (err) {\n setError(getError(err));\n setStatus(\"error\");\n } finally {\n authorizeInProgressRef.current = false;\n }\n }, [app, completeWithCurrentUser, loginCode, user]);\n\n const retry = useCallback(() => {\n setError(null);\n autoCompleteRef.current = false;\n setStatus(\"idle\");\n }, []);\n\n const visibleStatus = loginCode == null ? \"invalid\" : status;\n return {\n status: visibleStatus,\n loginCode,\n error,\n isLoading: visibleStatus === \"authorizing\" || visibleStatus === \"redirecting\",\n authorize,\n retry,\n };\n}\n\nexport function CliAuthConfirmation({ fullPage = true }: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const cliAuth = useCliAuthConfirmation();\n\n if (cliAuth.status === \"success\") {\n return (\n <MessageCard title={t(\"CLI Authorization Successful\")} fullPage={fullPage}>\n <Typography>\n {t(\"The CLI application has been authorized successfully. You can close this window and return to the command line.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"error\") {\n return (\n <MessageCard\n title={t(\"Authorization Failed\")}\n fullPage={fullPage}\n primaryButtonText={t(\"Try Again\")}\n primaryAction={cliAuth.retry}\n >\n <Typography className=\"text-red-600\">\n {t(\"Failed to authorize the CLI application:\")}\n </Typography>\n <Typography className=\"text-red-600\">\n {cliAuth.error?.message}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"invalid\") {\n return (\n <MessageCard title={t(\"Invalid CLI Authorization Link\")} fullPage={fullPage}>\n <Typography className=\"text-red-600\">\n {t(\"This CLI authorization link is missing a login code. Please return to the command line and start the login process again.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"authorizing\" || cliAuth.status === \"redirecting\") {\n return (\n <MessageCard title={t(\"Completing Authorization...\")} fullPage={fullPage}>\n <Typography>\n {t(\"Finishing up the CLI authorization...\")}\n </Typography>\n </MessageCard>\n );\n }\n\n return (\n <MessageCard\n title={t(\"Authorize CLI Application\")}\n fullPage={fullPage}\n primaryButtonText={cliAuth.isLoading ? t(\"Authorizing...\") : t(\"Authorize\")}\n primaryAction={cliAuth.authorize}\n >\n <Typography>\n {t(\"A command line application is requesting access to your account. Click the button below to authorize it.\")}\n </Typography>\n <Typography variant=\"destructive\">\n {t(\"WARNING: Make sure you trust the command line application, as it will gain access to your account. If you did not initiate this request, you can close this page and ignore it. We will never send you this link via email or any other means.\")}\n </Typography>\n </MessageCard>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-auth-confirm.js","names":[],"sources":["../../../src/components-page/cli-auth-confirm.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Typography } from \"@hexclave/ui\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { useTranslation } from \"../lib/translations\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { useStackApp } from \"../lib/hooks\";\n\nasync function postCliAuthComplete(app: StackClientApp, body: Record<string, unknown>) {\n return await app[hexclaveAppInternalsSymbol].sendRequest(\"/auth/cli/complete\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n}\n\nasync function ensureCliCompleteOk(result: Response) {\n if (!result.ok) {\n throw new Error(`Authorization failed: ${result.status} ${await result.text()}`);\n }\n}\n\nasync function completeCliAuthWithRefreshToken(app: StackClientApp, loginCode: string, refreshToken: string) {\n const result = await postCliAuthComplete(app, { login_code: loginCode, refresh_token: refreshToken });\n await ensureCliCompleteOk(result);\n}\n\n// Hexclave rebrand: sessionStorage key — straight rename (per-tab, low TTL).\nconst CLI_AUTH_CONFIRMED_KEY = \"hexclave-cli-auth-confirmed\";\n\nfunction markConfirmed(loginCode: string) {\n sessionStorage.setItem(CLI_AUTH_CONFIRMED_KEY, loginCode);\n}\n\nfunction isConfirmed(loginCode: string): boolean {\n return sessionStorage.getItem(CLI_AUTH_CONFIRMED_KEY) === loginCode;\n}\n\nfunction clearConfirmed() {\n sessionStorage.removeItem(CLI_AUTH_CONFIRMED_KEY);\n}\n\nfunction getError(err: unknown): Error {\n return err instanceof Error ? err : new Error(String(err));\n}\n\nfunction getObjectField(data: unknown, fieldName: string): unknown {\n return typeof data === \"object\" && data !== null && fieldName in data\n ? data[fieldName as keyof typeof data]\n : undefined;\n}\n\nfunction getStringField(data: unknown, fieldName: string): string | undefined {\n const value = getObjectField(data, fieldName);\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport type CliAuthConfirmationStatus =\n | \"idle\"\n | \"invalid\"\n | \"authorizing\"\n | \"redirecting\"\n | \"success\"\n | \"error\";\n\nexport type CliAuthConfirmationState = {\n status: CliAuthConfirmationStatus,\n loginCode: string | null,\n error: Error | null,\n isLoading: boolean,\n authorize: () => Promise<void>,\n retry: () => void,\n};\n\nexport function useCliAuthConfirmation(): CliAuthConfirmationState {\n const app = useStackApp();\n const user = app.useUser({ includeRestricted: true });\n const [status, setStatus] = useState<Exclude<CliAuthConfirmationStatus, \"invalid\">>(\"idle\");\n const [error, setError] = useState<Error | null>(null);\n const autoCompleteRef = useRef(false);\n const authorizeInProgressRef = useRef(false);\n const [loginCode] = useState(() => {\n if (typeof window === 'undefined') return null;\n return new URLSearchParams(window.location.search).get(\"login_code\");\n });\n const [confirmed] = useState(() => {\n if (typeof window === 'undefined') return false;\n return loginCode != null && isConfirmed(loginCode);\n });\n\n const completeWithCurrentUser = useCallback(async () => {\n if (!loginCode) {\n throw new Error(\"Missing login code in URL parameters\");\n }\n if (!user) {\n throw new Error(\"Cannot complete CLI authorization without a signed-in user\");\n }\n const refreshToken = (await user.currentSession.getTokens()).refreshToken;\n if (!refreshToken) {\n throw new Error(\"Could not retrieve session token\");\n }\n await completeCliAuthWithRefreshToken(app, loginCode, refreshToken);\n }, [app, loginCode, user]);\n\n useEffect(() => {\n if (!confirmed || !user || autoCompleteRef.current) {\n return;\n }\n autoCompleteRef.current = true;\n runAsynchronouslyWithAlert(async () => {\n setStatus(\"authorizing\");\n try {\n await completeWithCurrentUser();\n clearConfirmed();\n setStatus(\"success\");\n } catch (err) {\n setError(getError(err));\n setStatus(\"error\");\n }\n });\n }, [confirmed, user, completeWithCurrentUser]);\n\n const authorize = useCallback(async () => {\n if (authorizeInProgressRef.current) {\n return;\n }\n authorizeInProgressRef.current = true;\n\n try {\n if (!loginCode) {\n setError(new Error(\"Missing login code in URL parameters\"));\n setStatus(\"error\");\n return;\n }\n\n setError(null);\n setStatus(\"authorizing\");\n if (user) {\n await completeWithCurrentUser();\n clearConfirmed();\n setStatus(\"success\");\n return;\n }\n\n const checkResult = await postCliAuthComplete(app, { login_code: loginCode, mode: \"check\" });\n if (!checkResult.ok) {\n throw new Error(`Failed to verify login code: ${checkResult.status} ${await checkResult.text()}`);\n }\n const checkData: unknown = await checkResult.json();\n const cliSessionState = getStringField(checkData, \"cli_session_state\") ?? null;\n\n if (cliSessionState === \"anonymous\") {\n const claimResult = await postCliAuthComplete(app, { login_code: loginCode, mode: \"claim-anon-session\" });\n\n if (!claimResult.ok) {\n throw new Error(`Failed to claim anonymous session: ${claimResult.status} ${await claimResult.text()}`);\n }\n\n const tokens: unknown = await claimResult.json();\n const accessToken = getStringField(tokens, \"access_token\");\n const refreshToken = getStringField(tokens, \"refresh_token\");\n if (!accessToken || !refreshToken) {\n throw new Error(\"Anonymous CLI session claim did not return tokens\");\n }\n await app[hexclaveAppInternalsSymbol].signInWithTokens({\n accessToken,\n refreshToken,\n });\n markConfirmed(loginCode);\n setStatus(\"redirecting\");\n await app.redirectToSignUp({ replace: true });\n return;\n }\n\n markConfirmed(loginCode);\n setStatus(\"redirecting\");\n await app.redirectToSignIn({ replace: true });\n } catch (err) {\n setError(getError(err));\n setStatus(\"error\");\n } finally {\n authorizeInProgressRef.current = false;\n }\n }, [app, completeWithCurrentUser, loginCode, user]);\n\n const retry = useCallback(() => {\n setError(null);\n autoCompleteRef.current = false;\n setStatus(\"idle\");\n }, []);\n\n const visibleStatus = loginCode == null ? \"invalid\" : status;\n return {\n status: visibleStatus,\n loginCode,\n error,\n isLoading: visibleStatus === \"authorizing\" || visibleStatus === \"redirecting\",\n authorize,\n retry,\n };\n}\n\nexport function CliAuthConfirmation({ fullPage = true }: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const cliAuth = useCliAuthConfirmation();\n\n if (cliAuth.status === \"success\") {\n return (\n <MessageCard title={t(\"CLI Authorization Successful\")} fullPage={fullPage}>\n <Typography>\n {t(\"The CLI application has been authorized successfully. You can close this window and return to the command line.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"error\") {\n return (\n <MessageCard\n title={t(\"Authorization Failed\")}\n fullPage={fullPage}\n primaryButtonText={t(\"Try Again\")}\n primaryAction={cliAuth.retry}\n >\n <Typography className=\"text-red-600\">\n {t(\"Failed to authorize the CLI application:\")}\n </Typography>\n <Typography className=\"text-red-600\">\n {cliAuth.error?.message}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"invalid\") {\n return (\n <MessageCard title={t(\"Invalid CLI Authorization Link\")} fullPage={fullPage}>\n <Typography className=\"text-red-600\">\n {t(\"This CLI authorization link is missing a login code. Please return to the command line and start the login process again.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (cliAuth.status === \"authorizing\" || cliAuth.status === \"redirecting\") {\n return (\n <MessageCard title={t(\"Completing Authorization...\")} fullPage={fullPage}>\n <Typography>\n {t(\"Finishing up the CLI authorization...\")}\n </Typography>\n </MessageCard>\n );\n }\n\n return (\n <MessageCard\n title={t(\"Authorize CLI Application\")}\n fullPage={fullPage}\n primaryButtonText={cliAuth.isLoading ? t(\"Authorizing...\") : t(\"Authorize\")}\n primaryAction={cliAuth.authorize}\n >\n <Typography>\n {t(\"A command line application is requesting access to your account. Click the button below to authorize it.\")}\n </Typography>\n <Typography variant=\"destructive\">\n {t(\"WARNING: Make sure you trust the command line application, as it will gain access to your account. If you did not initiate this request, you can close this page and ignore it. We will never send you this link via email or any other means.\")}\n </Typography>\n </MessageCard>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { runAsynchronously } from "@hexclave/shared/dist/utils/promises";
|
|
2
2
|
import { hexclaveAppInternalsSymbol } from "../lib/hexclave-app/common.js";
|
|
3
|
-
import
|
|
3
|
+
import { act } from "react";
|
|
4
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { createRoot } from "react-dom/client";
|
|
6
6
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
7
7
|
import { HexclaveContext } from "../providers/hexclave-context.js";
|
|
8
8
|
import { useCliAuthConfirmation } from "./cli-auth-confirm.js";
|
|
9
|
-
|
|
10
9
|
//#region src/components-page/cli-auth-confirm.test.tsx
|
|
11
10
|
// @vitest-environment jsdom
|
|
12
11
|
const previousActEnvironment = Reflect.get(globalThis, "IS_REACT_ACT_ENVIRONMENT");
|
|
@@ -169,7 +168,7 @@ describe("useCliAuthConfirmation", () => {
|
|
|
169
168
|
expect(getByTestId("status").textContent).toBe("invalid");
|
|
170
169
|
});
|
|
171
170
|
});
|
|
172
|
-
|
|
173
171
|
//#endregion
|
|
174
|
-
export {
|
|
172
|
+
export {};
|
|
173
|
+
|
|
175
174
|
//# sourceMappingURL=cli-auth-confirm.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-auth-confirm.test.js","names":[],"sources":["../../../src/components-page/cli-auth-confirm.test.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n// @vitest-environment jsdom\n\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport React, { act } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { HexclaveContext } from \"../providers/hexclave-context\";\nimport { useCliAuthConfirmation } from \"./cli-auth-confirm\";\n\nconst previousActEnvironment = Reflect.get(globalThis, \"IS_REACT_ACT_ENVIRONMENT\");\n\nfunction responseJson(data: unknown, init?: ResponseInit) {\n return new Response(JSON.stringify(data), {\n status: init?.status ?? 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n}\n\nfunction createAppTestDouble(options: {\n user: unknown,\n sendRequest: (path: string, requestOptions: RequestInit) => Promise<Response>,\n signInWithTokens?: (tokens: { accessToken: string, refreshToken: string }) => Promise<void>,\n redirectToSignIn?: (options: { replace: true }) => Promise<void>,\n redirectToSignUp?: (options: { replace: true }) => Promise<void>,\n}) {\n const app = {\n useUser: () => options.user,\n redirectToSignIn: options.redirectToSignIn ?? vi.fn(async () => {}),\n redirectToSignUp: options.redirectToSignUp ?? vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n sendRequest: options.sendRequest,\n signInWithTokens: options.signInWithTokens ?? vi.fn(async () => {}),\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that useCliAuthConfirmation touches.\n return app as unknown as StackClientApp<true>;\n}\n\nfunction HookProbe() {\n const cliAuth = useCliAuthConfirmation();\n return (\n <>\n <div data-testid=\"status\">{cliAuth.status}</div>\n <div data-testid=\"error\">{cliAuth.error?.message}</div>\n <button type=\"button\" onClick={() => runAsynchronously(cliAuth.authorize)}>authorize</button>\n <button onClick={cliAuth.retry}>retry</button>\n </>\n );\n}\n\nlet root: Root | null = null;\nlet container: HTMLDivElement | null = null;\n\nasync function renderWithApp(app: StackClientApp<true>) {\n container = document.createElement(\"div\");\n document.body.append(container);\n root = createRoot(container);\n await act(async () => {\n root?.render(\n <HexclaveContext.Provider value={{ app }}>\n <HookProbe />\n </HexclaveContext.Provider>\n );\n });\n}\n\nfunction getByTestId(testId: string): HTMLElement {\n const element = container?.querySelector(`[data-testid=\"${testId}\"]`);\n if (!(element instanceof HTMLElement)) {\n throw new Error(`Could not find test element ${testId}`);\n }\n return element;\n}\n\nfunction getButton(label: string): HTMLButtonElement {\n const button = [...container?.querySelectorAll(\"button\") ?? []]\n .find((element) => element.textContent === label);\n if (!(button instanceof HTMLButtonElement)) {\n throw new Error(`Could not find button ${label}`);\n }\n return button;\n}\n\ndescribe(\"useCliAuthConfirmation\", () => {\n beforeEach(() => {\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", true);\n });\n\n afterEach(() => {\n act(() => {\n root?.unmount();\n });\n container?.remove();\n root = null;\n container = null;\n vi.restoreAllMocks();\n window.history.replaceState({}, \"\", \"/\");\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", previousActEnvironment);\n });\n\n it(\"completes CLI auth with the current user's refresh token\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const getTokens = vi.fn(async () => ({ refreshToken: \"refresh-token\" }));\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }));\n const app = createAppTestDouble({\n user: { currentSession: { getTokens } },\n sendRequest,\n });\n\n await renderWithApp(app);\n await act(async () => {\n getButton(\"authorize\").click();\n });\n\n expect(getByTestId(\"status\").textContent).toBe(\"success\");\n expect(getTokens).toHaveBeenCalledOnce();\n expect(sendRequest).toHaveBeenCalledOnce();\n expect(sendRequest.mock.calls[0][0]).toBe(\"/auth/cli/complete\");\n expect(JSON.parse(String(sendRequest.mock.calls[0][1].body))).toMatchInlineSnapshot(`\n {\n \"login_code\": \"login-code\",\n \"refresh_token\": \"refresh-token\",\n }\n `);\n });\n\n it(\"ignores duplicate authorize clicks before React re-renders\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const getTokens = vi.fn(async () => ({ refreshToken: \"refresh-token\" }));\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }));\n const app = createAppTestDouble({\n user: { currentSession: { getTokens } },\n sendRequest,\n });\n\n await renderWithApp(app);\n await act(async () => {\n const authorizeButton = getButton(\"authorize\");\n authorizeButton.click();\n authorizeButton.click();\n });\n\n expect(sendRequest).toHaveBeenCalledOnce();\n });\n\n it(\"claims anonymous CLI sessions before redirecting to sign-up\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const signInWithTokens = vi.fn(async (_tokens: { accessToken: string, refreshToken: string }) => {});\n const redirectToSignUp = vi.fn(async (_options: { replace: true }) => {});\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }))\n .mockResolvedValueOnce(responseJson({ cli_session_state: \"anonymous\" }))\n .mockResolvedValueOnce(responseJson({ access_token: \"access-token\", refresh_token: \"refresh-token\" }));\n const app = createAppTestDouble({\n user: null,\n sendRequest,\n signInWithTokens,\n redirectToSignUp,\n });\n\n await renderWithApp(app);\n await act(async () => {\n getButton(\"authorize\").click();\n });\n\n expect(redirectToSignUp).toHaveBeenCalledWith({ replace: true });\n expect(signInWithTokens).toHaveBeenCalledWith({\n accessToken: \"access-token\",\n refreshToken: \"refresh-token\",\n });\n expect(sessionStorage.getItem(\"hexclave-cli-auth-confirmed\")).toBe(\"login-code\");\n expect(sendRequest.mock.calls.map(call => JSON.parse(String(call[1].body)))).toMatchInlineSnapshot(`\n [\n {\n \"login_code\": \"login-code\",\n \"mode\": \"check\",\n },\n {\n \"login_code\": \"login-code\",\n \"mode\": \"claim-anon-session\",\n },\n ]\n `);\n });\n\n it(\"reports invalid when the login code is missing\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm\");\n const app = createAppTestDouble({\n user: null,\n sendRequest: vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 })),\n });\n\n await renderWithApp(app);\n\n expect(getByTestId(\"status\").textContent).toBe(\"invalid\");\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-auth-confirm.test.js","names":[],"sources":["../../../src/components-page/cli-auth-confirm.test.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n// @vitest-environment jsdom\n\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport React, { act } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { HexclaveContext } from \"../providers/hexclave-context\";\nimport { useCliAuthConfirmation } from \"./cli-auth-confirm\";\n\nconst previousActEnvironment = Reflect.get(globalThis, \"IS_REACT_ACT_ENVIRONMENT\");\n\nfunction responseJson(data: unknown, init?: ResponseInit) {\n return new Response(JSON.stringify(data), {\n status: init?.status ?? 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n}\n\nfunction createAppTestDouble(options: {\n user: unknown,\n sendRequest: (path: string, requestOptions: RequestInit) => Promise<Response>,\n signInWithTokens?: (tokens: { accessToken: string, refreshToken: string }) => Promise<void>,\n redirectToSignIn?: (options: { replace: true }) => Promise<void>,\n redirectToSignUp?: (options: { replace: true }) => Promise<void>,\n}) {\n const app = {\n useUser: () => options.user,\n redirectToSignIn: options.redirectToSignIn ?? vi.fn(async () => {}),\n redirectToSignUp: options.redirectToSignUp ?? vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n sendRequest: options.sendRequest,\n signInWithTokens: options.signInWithTokens ?? vi.fn(async () => {}),\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that useCliAuthConfirmation touches.\n return app as unknown as StackClientApp<true>;\n}\n\nfunction HookProbe() {\n const cliAuth = useCliAuthConfirmation();\n return (\n <>\n <div data-testid=\"status\">{cliAuth.status}</div>\n <div data-testid=\"error\">{cliAuth.error?.message}</div>\n <button type=\"button\" onClick={() => runAsynchronously(cliAuth.authorize)}>authorize</button>\n <button onClick={cliAuth.retry}>retry</button>\n </>\n );\n}\n\nlet root: Root | null = null;\nlet container: HTMLDivElement | null = null;\n\nasync function renderWithApp(app: StackClientApp<true>) {\n container = document.createElement(\"div\");\n document.body.append(container);\n root = createRoot(container);\n await act(async () => {\n root?.render(\n <HexclaveContext.Provider value={{ app }}>\n <HookProbe />\n </HexclaveContext.Provider>\n );\n });\n}\n\nfunction getByTestId(testId: string): HTMLElement {\n const element = container?.querySelector(`[data-testid=\"${testId}\"]`);\n if (!(element instanceof HTMLElement)) {\n throw new Error(`Could not find test element ${testId}`);\n }\n return element;\n}\n\nfunction getButton(label: string): HTMLButtonElement {\n const button = [...container?.querySelectorAll(\"button\") ?? []]\n .find((element) => element.textContent === label);\n if (!(button instanceof HTMLButtonElement)) {\n throw new Error(`Could not find button ${label}`);\n }\n return button;\n}\n\ndescribe(\"useCliAuthConfirmation\", () => {\n beforeEach(() => {\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", true);\n });\n\n afterEach(() => {\n act(() => {\n root?.unmount();\n });\n container?.remove();\n root = null;\n container = null;\n vi.restoreAllMocks();\n window.history.replaceState({}, \"\", \"/\");\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", previousActEnvironment);\n });\n\n it(\"completes CLI auth with the current user's refresh token\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const getTokens = vi.fn(async () => ({ refreshToken: \"refresh-token\" }));\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }));\n const app = createAppTestDouble({\n user: { currentSession: { getTokens } },\n sendRequest,\n });\n\n await renderWithApp(app);\n await act(async () => {\n getButton(\"authorize\").click();\n });\n\n expect(getByTestId(\"status\").textContent).toBe(\"success\");\n expect(getTokens).toHaveBeenCalledOnce();\n expect(sendRequest).toHaveBeenCalledOnce();\n expect(sendRequest.mock.calls[0][0]).toBe(\"/auth/cli/complete\");\n expect(JSON.parse(String(sendRequest.mock.calls[0][1].body))).toMatchInlineSnapshot(`\n {\n \"login_code\": \"login-code\",\n \"refresh_token\": \"refresh-token\",\n }\n `);\n });\n\n it(\"ignores duplicate authorize clicks before React re-renders\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const getTokens = vi.fn(async () => ({ refreshToken: \"refresh-token\" }));\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }));\n const app = createAppTestDouble({\n user: { currentSession: { getTokens } },\n sendRequest,\n });\n\n await renderWithApp(app);\n await act(async () => {\n const authorizeButton = getButton(\"authorize\");\n authorizeButton.click();\n authorizeButton.click();\n });\n\n expect(sendRequest).toHaveBeenCalledOnce();\n });\n\n it(\"claims anonymous CLI sessions before redirecting to sign-up\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm?login_code=login-code\");\n const signInWithTokens = vi.fn(async (_tokens: { accessToken: string, refreshToken: string }) => {});\n const redirectToSignUp = vi.fn(async (_options: { replace: true }) => {});\n const sendRequest = vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 }))\n .mockResolvedValueOnce(responseJson({ cli_session_state: \"anonymous\" }))\n .mockResolvedValueOnce(responseJson({ access_token: \"access-token\", refresh_token: \"refresh-token\" }));\n const app = createAppTestDouble({\n user: null,\n sendRequest,\n signInWithTokens,\n redirectToSignUp,\n });\n\n await renderWithApp(app);\n await act(async () => {\n getButton(\"authorize\").click();\n });\n\n expect(redirectToSignUp).toHaveBeenCalledWith({ replace: true });\n expect(signInWithTokens).toHaveBeenCalledWith({\n accessToken: \"access-token\",\n refreshToken: \"refresh-token\",\n });\n expect(sessionStorage.getItem(\"hexclave-cli-auth-confirmed\")).toBe(\"login-code\");\n expect(sendRequest.mock.calls.map(call => JSON.parse(String(call[1].body)))).toMatchInlineSnapshot(`\n [\n {\n \"login_code\": \"login-code\",\n \"mode\": \"check\",\n },\n {\n \"login_code\": \"login-code\",\n \"mode\": \"claim-anon-session\",\n },\n ]\n `);\n });\n\n it(\"reports invalid when the login code is missing\", async () => {\n window.history.replaceState({}, \"\", \"/handler/cli-auth-confirm\");\n const app = createAppTestDouble({\n user: null,\n sendRequest: vi.fn(async (_path: string, _requestOptions: RequestInit) => new Response(null, { status: 200 })),\n });\n\n await renderWithApp(app);\n\n expect(getByTestId(\"status\").textContent).toBe(\"invalid\");\n });\n});\n"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components-page/email-verification.d.ts
|
|
4
2
|
declare function EmailVerification(props: {
|
|
5
3
|
searchParams?: Record<string, string>;
|
|
6
4
|
fullPage?: boolean;
|
|
7
|
-
}):
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
6
|
//#endregion
|
|
9
7
|
export { EmailVerification };
|
|
10
8
|
//# sourceMappingURL=email-verification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-verification.d.ts","names":[],"sources":["../../../src/components-page/email-verification.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-verification.d.ts","names":[],"sources":["../../../src/components-page/email-verification.tsx"],"mappings":";iBAcgB,iBAAA,CAAkB,KAAA;EAChC,YAAA,GAAe,MAAM;EACrB,QAAA;AAAA,gCACD,GAAA,CAAA,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
3
2
|
import { throwErr } from "@hexclave/shared/dist/utils/errors";
|
|
4
3
|
import React from "react";
|
|
5
4
|
import { useStackApp, useUser } from "../index.js";
|
|
@@ -7,7 +6,6 @@ import { useTranslation } from "../lib/translations.js";
|
|
|
7
6
|
import { jsx } from "react/jsx-runtime";
|
|
8
7
|
import { KnownErrors } from "@hexclave/shared";
|
|
9
8
|
import { MessageCard as MessageCard$1 } from "../components/message-cards/message-card.js";
|
|
10
|
-
|
|
11
9
|
//#region src/components-page/email-verification.tsx
|
|
12
10
|
function EmailVerification(props) {
|
|
13
11
|
const { t } = useTranslation();
|
|
@@ -51,7 +49,7 @@ function EmailVerification(props) {
|
|
|
51
49
|
});
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
//#endregion
|
|
56
53
|
export { EmailVerification };
|
|
54
|
+
|
|
57
55
|
//# sourceMappingURL=email-verification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-verification.js","names":["MessageCard"],"sources":["../../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { throwErr } from \"@hexclave/shared/dist/utils/errors\";\nimport React from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function EmailVerification(props: {\n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [result, setResult] = React.useState<Awaited<ReturnType<typeof hexclaveApp.verifyEmail>> | null>(null);\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Verification Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Please check if you have the correct link. If you continue to have issues, please contact support.\")}</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Verification Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Your email verification link has expired. Please request a new verification link from your account settings.\")}</p>\n </MessageCard>\n );\n\n if (!props.searchParams?.code) {\n return invalidJsx;\n }\n\n if (!result) {\n return <MessageCard\n title={t(\"Do you want to verify your email?\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Verify\")}\n primaryAction={async () => {\n const result = await hexclaveApp.verifyEmail(props.searchParams?.code || throwErr(\"No verification code provided\"));\n setResult(result);\n }}\n secondaryButtonText={t(\"Cancel\")}\n secondaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n } else {\n if (result.status === 'error') {\n if (KnownErrors.VerificationCodeNotFound.isInstance(result.error)) {\n return invalidJsx;\n } else if (KnownErrors.VerificationCodeExpired.isInstance(result.error)) {\n return expiredJsx;\n } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(result.error)) {\n // everything fine, continue\n } else {\n throw result.error;\n }\n }\n\n return <MessageCard\n title={t(\"You email has been verified!\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go home\")}\n primaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-verification.js","names":["MessageCard"],"sources":["../../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { throwErr } from \"@hexclave/shared/dist/utils/errors\";\nimport React from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function EmailVerification(props: {\n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [result, setResult] = React.useState<Awaited<ReturnType<typeof hexclaveApp.verifyEmail>> | null>(null);\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Verification Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Please check if you have the correct link. If you continue to have issues, please contact support.\")}</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Verification Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Your email verification link has expired. Please request a new verification link from your account settings.\")}</p>\n </MessageCard>\n );\n\n if (!props.searchParams?.code) {\n return invalidJsx;\n }\n\n if (!result) {\n return <MessageCard\n title={t(\"Do you want to verify your email?\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Verify\")}\n primaryAction={async () => {\n const result = await hexclaveApp.verifyEmail(props.searchParams?.code || throwErr(\"No verification code provided\"));\n setResult(result);\n }}\n secondaryButtonText={t(\"Cancel\")}\n secondaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n } else {\n if (result.status === 'error') {\n if (KnownErrors.VerificationCodeNotFound.isInstance(result.error)) {\n return invalidJsx;\n } else if (KnownErrors.VerificationCodeExpired.isInstance(result.error)) {\n return expiredJsx;\n } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(result.error)) {\n // everything fine, continue\n } else {\n throw result.error;\n }\n }\n\n return <MessageCard\n title={t(\"You email has been verified!\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go home\")}\n primaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n }\n}\n"],"mappings":";;;;;;;;;AAcA,SAAgB,kBAAkB,OAG/B;CACD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,cAAc,YAAY;CACnB,QAAQ;CACrB,MAAM,CAAC,QAAQ,aAAa,MAAM,SAAqE,IAAI;CAE3G,MAAM,aACJ,oBAACA,eAAD;EAAa,OAAO,EAAE,2BAA2B;EAAG,UAAU,CAAC,CAAC,MAAM;YACpE,oBAAC,KAAD,EAAA,UAAI,EAAE,oGAAoG,EAAK,CAAA;CACpG,CAAA;CAGf,MAAM,aACJ,oBAACA,eAAD;EAAa,OAAO,EAAE,2BAA2B;EAAG,UAAU,CAAC,CAAC,MAAM;YACpE,oBAAC,KAAD,EAAA,UAAI,EAAE,8GAA8G,EAAK,CAAA;CAC9G,CAAA;CAGf,IAAI,CAAC,MAAM,cAAc,MACvB,OAAO;CAGT,IAAI,CAAC,QACH,OAAO,oBAACA,eAAD;EACL,OAAO,EAAE,mCAAmC;EAC5C,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,QAAQ;EAC7B,eAAe,YAAY;GAEzB,UAAU,MADW,YAAY,YAAY,MAAM,cAAc,QAAQ,SAAS,+BAA+B,CAAC,CAClG;EAClB;EACA,qBAAqB,EAAE,QAAQ;EAC/B,iBAAiB,YAAY;GAC3B,MAAM,YAAY,eAAe;EACnC;CACD,CAAA;MACI;EACL,IAAI,OAAO,WAAW,SACpB,IAAI,YAAY,yBAAyB,WAAW,OAAO,KAAK,GAC9D,OAAO;OACF,IAAI,YAAY,wBAAwB,WAAW,OAAO,KAAK,GACpE,OAAO;OACF,IAAI,YAAY,4BAA4B,WAAW,OAAO,KAAK,GAAG,CAE7E,OACE,MAAM,OAAO;EAIjB,OAAO,oBAACA,eAAD;GACL,OAAO,EAAE,8BAA8B;GACvC,UAAU,CAAC,CAAC,MAAM;GAClB,mBAAmB,EAAE,SAAS;GAC9B,eAAe,YAAY;IACzB,MAAM,YAAY,eAAe;GACnC;EACD,CAAA;CACH;AACF"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components-page/error-page.d.ts
|
|
4
2
|
declare function ErrorPage(props: {
|
|
5
3
|
fullPage?: boolean;
|
|
6
4
|
searchParams: Record<string, string>;
|
|
7
|
-
}):
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
6
|
//#endregion
|
|
9
7
|
export { ErrorPage };
|
|
10
8
|
//# sourceMappingURL=error-page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-page.d.ts","names":[],"sources":["../../../src/components-page/error-page.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"error-page.d.ts","names":[],"sources":["../../../src/components-page/error-page.tsx"],"mappings":";iBAgBgB,SAAA,CAAU,KAAA;EAAS,QAAA;EAAoB,YAAA,EAAc,MAAM;AAAA,gCAAkB,GAAA,CAAA,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
3
2
|
import { Typography } from "@hexclave/ui";
|
|
4
3
|
import { useStackApp } from "../index.js";
|
|
5
4
|
import { useTranslation } from "../lib/translations.js";
|
|
@@ -8,7 +7,6 @@ import { KnownError, KnownErrors } from "@hexclave/shared";
|
|
|
8
7
|
import { KnownErrorMessageCard } from "../components/message-cards/known-error-message-card.js";
|
|
9
8
|
import { MessageCard as MessageCard$1 } from "../components/message-cards/message-card.js";
|
|
10
9
|
import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card.js";
|
|
11
|
-
|
|
12
10
|
//#region src/components-page/error-page.tsx
|
|
13
11
|
function ErrorPage(props) {
|
|
14
12
|
const { t } = useTranslation();
|
|
@@ -69,7 +67,7 @@ function ErrorPage(props) {
|
|
|
69
67
|
fullPage: !!props.fullPage
|
|
70
68
|
});
|
|
71
69
|
}
|
|
72
|
-
|
|
73
70
|
//#endregion
|
|
74
71
|
export { ErrorPage };
|
|
72
|
+
|
|
75
73
|
//# sourceMappingURL=error-page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-page.js","names":["MessageCard"],"sources":["../../../src/components-page/error-page.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownError, KnownErrors } from \"@hexclave/shared\";\nimport { Typography } from \"@hexclave/ui\";\nimport { useStackApp } from \"..\";\nimport { KnownErrorMessageCard } from \"../components/message-cards/known-error-message-card\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\n\nexport function ErrorPage(props: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const errorCode = props.searchParams.errorCode;\n const message = props.searchParams.message;\n const details = props.searchParams.details;\n\n const unknownErrorCard = <PredefinedMessageCard type='unknownError' fullPage={!!props.fullPage} />;\n\n if (!errorCode || !message) {\n return unknownErrorCard;\n }\n\n let error;\n try {\n const detailJson = details ? JSON.parse(details) : {};\n error = KnownError.fromJson({ code: errorCode, message, details: detailJson });\n } catch (e) {\n return unknownErrorCard;\n }\n\n if (KnownErrors.OAuthConnectionAlreadyConnectedToAnotherUser.isInstance(error)) {\n // TODO: add \"Connect a different account\" button\n return (\n <MessageCard\n title={t(\"Failed to connect account\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go Home\")}\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"This account is already connected to another user. Please connect a different account.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.UserAlreadyConnectedToAnotherOAuthConnection.isInstance(error)) {\n // TODO: add \"Connect again\" button\n return (\n <MessageCard\n title={t(\"Failed to connect account\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go Home\")}\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The user is already connected to another OAuth account. Did you maybe selected the wrong account on the OAuth provider page?\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.OAuthProviderAccessDenied.isInstance(error)) {\n return (\n <MessageCard\n title={t(\"OAuth provider access denied\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Sign in again\")}\n primaryAction={() => hexclaveApp.redirectToSignIn()}\n secondaryButtonText={t(\"Go Home\")}\n secondaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The sign-in operation has been cancelled or denied. Please try again.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.OAuthProviderTemporarilyUnavailable.isInstance(error)) {\n return (\n <MessageCard\n title={t(\"OAuth provider is temporarily unavailable\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Try again\")}\n primaryAction={() => hexclaveApp.redirectToSignIn()}\n secondaryButtonText={t(\"Go Home\")}\n secondaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The OAuth provider could not complete sign-in right now. Please try again in a moment.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n return <KnownErrorMessageCard error={error} fullPage={!!props.fullPage} />;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"error-page.js","names":["MessageCard"],"sources":["../../../src/components-page/error-page.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownError, KnownErrors } from \"@hexclave/shared\";\nimport { Typography } from \"@hexclave/ui\";\nimport { useStackApp } from \"..\";\nimport { KnownErrorMessageCard } from \"../components/message-cards/known-error-message-card\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\n\nexport function ErrorPage(props: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const errorCode = props.searchParams.errorCode;\n const message = props.searchParams.message;\n const details = props.searchParams.details;\n\n const unknownErrorCard = <PredefinedMessageCard type='unknownError' fullPage={!!props.fullPage} />;\n\n if (!errorCode || !message) {\n return unknownErrorCard;\n }\n\n let error;\n try {\n const detailJson = details ? JSON.parse(details) : {};\n error = KnownError.fromJson({ code: errorCode, message, details: detailJson });\n } catch (e) {\n return unknownErrorCard;\n }\n\n if (KnownErrors.OAuthConnectionAlreadyConnectedToAnotherUser.isInstance(error)) {\n // TODO: add \"Connect a different account\" button\n return (\n <MessageCard\n title={t(\"Failed to connect account\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go Home\")}\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"This account is already connected to another user. Please connect a different account.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.UserAlreadyConnectedToAnotherOAuthConnection.isInstance(error)) {\n // TODO: add \"Connect again\" button\n return (\n <MessageCard\n title={t(\"Failed to connect account\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go Home\")}\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The user is already connected to another OAuth account. Did you maybe selected the wrong account on the OAuth provider page?\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.OAuthProviderAccessDenied.isInstance(error)) {\n return (\n <MessageCard\n title={t(\"OAuth provider access denied\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Sign in again\")}\n primaryAction={() => hexclaveApp.redirectToSignIn()}\n secondaryButtonText={t(\"Go Home\")}\n secondaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The sign-in operation has been cancelled or denied. Please try again.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n if (KnownErrors.OAuthProviderTemporarilyUnavailable.isInstance(error)) {\n return (\n <MessageCard\n title={t(\"OAuth provider is temporarily unavailable\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Try again\")}\n primaryAction={() => hexclaveApp.redirectToSignIn()}\n secondaryButtonText={t(\"Go Home\")}\n secondaryAction={() => hexclaveApp.redirectToHome()}\n >\n <Typography>\n {t(\"The OAuth provider could not complete sign-in right now. Please try again in a moment.\")}\n </Typography>\n </MessageCard>\n );\n }\n\n return <KnownErrorMessageCard error={error} fullPage={!!props.fullPage} />;\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,UAAU,OAAqE;CAC7F,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,cAAc,YAAY;CAChC,MAAM,YAAY,MAAM,aAAa;CACrC,MAAM,UAAU,MAAM,aAAa;CACnC,MAAM,UAAU,MAAM,aAAa;CAEnC,MAAM,mBAAmB,oBAAC,uBAAD;EAAuB,MAAK;EAAe,UAAU,CAAC,CAAC,MAAM;CAAW,CAAA;CAEjG,IAAI,CAAC,aAAa,CAAC,SACjB,OAAO;CAGT,IAAI;CACJ,IAAI;EACF,MAAM,aAAa,UAAU,KAAK,MAAM,OAAO,IAAI,CAAC;EACpD,QAAQ,WAAW,SAAS;GAAE,MAAM;GAAW;GAAS,SAAS;EAAW,CAAC;CAC/E,SAAS,GAAG;EACV,OAAO;CACT;CAEA,IAAI,YAAY,6CAA6C,WAAW,KAAK,GAE3E,OACE,oBAACA,eAAD;EACE,OAAO,EAAE,2BAA2B;EACpC,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,SAAS;EAC9B,qBAAqB,YAAY,eAAe;YAEhD,oBAAC,YAAD,EAAA,UACG,EAAE,wFAAwF,EACjF,CAAA;CACD,CAAA;CAIjB,IAAI,YAAY,6CAA6C,WAAW,KAAK,GAE3E,OACE,oBAACA,eAAD;EACE,OAAO,EAAE,2BAA2B;EACpC,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,SAAS;EAC9B,qBAAqB,YAAY,eAAe;YAEhD,oBAAC,YAAD,EAAA,UACG,EAAE,8HAA8H,EACvH,CAAA;CACD,CAAA;CAIjB,IAAI,YAAY,0BAA0B,WAAW,KAAK,GACxD,OACE,oBAACA,eAAD;EACE,OAAO,EAAE,8BAA8B;EACvC,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,eAAe;EACpC,qBAAqB,YAAY,iBAAiB;EAClD,qBAAqB,EAAE,SAAS;EAChC,uBAAuB,YAAY,eAAe;YAElD,oBAAC,YAAD,EAAA,UACG,EAAE,uEAAuE,EAChE,CAAA;CACD,CAAA;CAIjB,IAAI,YAAY,oCAAoC,WAAW,KAAK,GAClE,OACE,oBAACA,eAAD;EACE,OAAO,EAAE,2CAA2C;EACpD,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,WAAW;EAChC,qBAAqB,YAAY,iBAAiB;EAClD,qBAAqB,EAAE,SAAS;EAChC,uBAAuB,YAAY,eAAe;YAElD,oBAAC,YAAD,EAAA,UACG,EAAE,wFAAwF,EACjF,CAAA;CACD,CAAA;CAIjB,OAAO,oBAAC,uBAAD;EAA8B;EAAO,UAAU,CAAC,CAAC,MAAM;CAAW,CAAA;AAC3E"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
|
|
3
1
|
//#region src/components-page/forgot-password.d.ts
|
|
4
2
|
declare function ForgotPasswordForm({
|
|
5
3
|
onSent
|
|
6
4
|
}: {
|
|
7
5
|
onSent?: () => void;
|
|
8
|
-
}):
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
7
|
declare function ForgotPassword(props: {
|
|
10
8
|
fullPage?: boolean;
|
|
11
|
-
}):
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
10
|
//#endregion
|
|
13
11
|
export { ForgotPassword, ForgotPasswordForm };
|
|
14
12
|
//# sourceMappingURL=forgot-password.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot-password.d.ts","names":[],"sources":["../../../src/components-page/forgot-password.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"forgot-password.d.ts","names":[],"sources":["../../../src/components-page/forgot-password.tsx"],"mappings":";iBAqBgB,kBAAA;EAAqB;AAAA;EAAY,MAAA;AAAA,gCAAqB,GAAA,CAAA,OAAA;AAAA,iBA+CtD,cAAA,CAAe,KAAA;EAAS,QAAA;AAAA,gCAAoB,GAAA,CAAA,OAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
3
2
|
import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
|
|
4
3
|
import { yupResolver } from "@hookform/resolvers/yup";
|
|
5
4
|
import { strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
|
|
@@ -13,7 +12,6 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
13
12
|
import { MaybeFullPage } from "../components/elements/maybe-full-page.js";
|
|
14
13
|
import { StyledLink } from "../components/link.js";
|
|
15
14
|
import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card.js";
|
|
16
|
-
|
|
17
15
|
//#region src/components-page/forgot-password.tsx
|
|
18
16
|
function ForgotPasswordForm({ onSent }) {
|
|
19
17
|
const { t } = useTranslation();
|
|
@@ -97,7 +95,7 @@ function ForgotPassword(props) {
|
|
|
97
95
|
})
|
|
98
96
|
});
|
|
99
97
|
}
|
|
100
|
-
|
|
101
98
|
//#endregion
|
|
102
99
|
export { ForgotPassword, ForgotPasswordForm };
|
|
100
|
+
|
|
103
101
|
//# sourceMappingURL=forgot-password.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot-password.js","names":[],"sources":["../../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { strictEmailSchema, yupObject } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function ForgotPasswordForm({ onSent }: { onSent?: () => void }) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n email: strictEmailSchema(t(\"Please enter a valid email\")).defined().nonEmpty(t(\"Please enter your email\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n await hexclaveApp.sendForgotPasswordEmail(email);\n onSent?.();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form\n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">{t(\"Your Email\")}</Label>\n <Input\n id=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n {...register('email', { onChange: () => clearErrors('email') })}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Send Email\")}\n </Button>\n </form>\n );\n}\n\n\nexport function ForgotPassword(props: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n if (sent) {\n return <PredefinedMessageCard type='emailSent' fullPage={!!props.fullPage} />;\n }\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"stack-scope max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n <Typography>\n {t(\"Don't need to reset?\")}{\" \"}\n <StyledLink\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n runAsynchronouslyWithAlert(hexclaveApp.redirectToSignIn());\n }}\n >\n {t(\"Sign in\")}\n </StyledLink>\n </Typography>\n </div>\n <div className=\"mt-6\">\n <ForgotPasswordForm onSent={() => setSent(true)} />\n </div>\n </div>\n </MaybeFullPage>\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"forgot-password.js","names":[],"sources":["../../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { strictEmailSchema, yupObject } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function ForgotPasswordForm({ onSent }: { onSent?: () => void }) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n email: strictEmailSchema(t(\"Please enter a valid email\")).defined().nonEmpty(t(\"Please enter your email\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n await hexclaveApp.sendForgotPasswordEmail(email);\n onSent?.();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form\n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">{t(\"Your Email\")}</Label>\n <Input\n id=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n {...register('email', { onChange: () => clearErrors('email') })}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Send Email\")}\n </Button>\n </form>\n );\n}\n\n\nexport function ForgotPassword(props: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n if (sent) {\n return <PredefinedMessageCard type='emailSent' fullPage={!!props.fullPage} />;\n }\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"stack-scope max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n <Typography>\n {t(\"Don't need to reset?\")}{\" \"}\n <StyledLink\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n runAsynchronouslyWithAlert(hexclaveApp.redirectToSignIn());\n }}\n >\n {t(\"Sign in\")}\n </StyledLink>\n </Typography>\n </div>\n <div className=\"mt-6\">\n <ForgotPasswordForm onSent={() => setSent(true)} />\n </div>\n </div>\n </MaybeFullPage>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,SAAgB,mBAAmB,EAAE,UAAmC;CACtE,MAAM,EAAE,MAAM,eAAe;CAM7B,MAAM,EAAE,UAAU,cAAc,WAAW,EAAE,UAAU,gBAAgB,QAAQ,EAC7E,UAAU,YALG,UAAU,EACvB,OAAO,kBAAkB,EAAE,4BAA4B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,yBAAyB,CAAC,EAC3G,CAG6B,CAAC,EAC9B,CAAC;CACD,MAAM,cAAc,YAAY;CAChC,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAE5C,MAAM,WAAW,OAAO,SAAuC;EAC7D,WAAW,IAAI;EACf,IAAI;GACF,MAAM,EAAE,UAAU;GAClB,MAAM,YAAY,wBAAwB,KAAK;GACjD,SAAS;EACT,UAAU;GACR,WAAW,KAAK;EAClB;CACF;CAEA,OACE,qBAAC,QAAD;EACE,WAAU;EACV,WAAU,MAAK,2BAA2B,aAAa,QAAQ,CAAC,CAAC,CAAC,CAAC;EACnE,YAAA;YAHF;GAKE,oBAAC,OAAD;IAAO,SAAQ;IAAQ,WAAU;cAAQ,EAAE,YAAY;GAAS,CAAA;GAChE,oBAAC,OAAD;IACE,IAAG;IACH,MAAK;IACL,cAAa;IACb,GAAI,SAAS,SAAS,EAAE,gBAAgB,YAAY,OAAO,EAAE,CAAC;GAC/D,CAAA;GACD,oBAAC,iBAAD,EAAiB,MAAM,OAAO,OAAO,SAAS,SAAS,EAAI,CAAA;GAE3D,oBAAC,QAAD;IAAQ,MAAK;IAAS,WAAU;IAAgB;cAC7C,EAAE,YAAY;GACT,CAAA;EACJ;;AAEV;AAGA,SAAgB,eAAe,OAA+B;CAC5D,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,cAAc,YAAY;CAChC,MAAM,OAAO,QAAQ;CACrB,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CAEtC,IAAI,MACF,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAW,UAAU,CAAC,CAAC,MAAM;CAAW,CAAA;CAG7E,IAAI,MACF,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAY,UAAU,CAAC,CAAC,MAAM;CAAW,CAAA;CAG9E,OACE,oBAAC,eAAD;EAAe,UAAU,CAAC,CAAC,MAAM;YAC/B,qBAAC,OAAD;GAAK,WAAW,GACd,gDACA,MAAM,WAAW,QAAQ,KAC3B;aAHA,CAIE,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,YAAD;KAAY,MAAK;eAAM,EAAE,qBAAqB;IAAc,CAAA,GAC5D,qBAAC,YAAD,EAAA,UAAA;KACG,EAAE,sBAAsB;KAAG;KAC5B,oBAAC,YAAD;MACE,MAAK;MACL,UAAU,MAAM;OACd,EAAE,eAAe;OACjB,2BAA2B,YAAY,iBAAiB,CAAC;MAC3D;gBAEC,EAAE,SAAS;KACF,CAAA;IACF,EAAA,CAAA,CACT;OACL,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,oBAAD,EAAoB,cAAc,QAAQ,IAAI,EAAI,CAAA;GAC/C,CAAA,CACF;;CACQ,CAAA;AAEnB"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
+
import { SignIn, SignUp } from "../index.js";
|
|
1
2
|
import { KnownError } from "@hexclave/shared";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { AccountSettings } from "./account-settings";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { TeamInvitation } from "./team-invitation";
|
|
3
|
+
import { CliAuthConfirmation } from "./cli-auth-confirm.js";
|
|
4
|
+
import { HandlerUrls, StackClientApp } from "../lib/hexclave-app/index.js";
|
|
5
|
+
import { AccountSettings } from "./account-settings.js";
|
|
6
|
+
import { EmailVerification } from "./email-verification.js";
|
|
7
|
+
import { ErrorPage } from "./error-page.js";
|
|
8
|
+
import { ForgotPassword } from "./forgot-password.js";
|
|
9
|
+
import { MagicLinkCallback } from "./magic-link-callback.js";
|
|
10
|
+
import { MFA } from "./mfa.js";
|
|
11
|
+
import { OAuthCallback } from "./oauth-callback.js";
|
|
12
|
+
import { Onboarding } from "./onboarding.js";
|
|
13
|
+
import { PasswordReset } from "./password-reset.js";
|
|
14
|
+
import { SignOut } from "./sign-out.js";
|
|
15
|
+
import { TeamInvitation } from "./team-invitation.js";
|
|
16
16
|
|
|
17
17
|
//#region src/components-page/hexclave-handler-client.d.ts
|
|
18
18
|
type Components = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hexclave-handler-client.d.ts","names":[],"sources":["../../../src/components-page/hexclave-handler-client.tsx"],"mappings":";;;;;;;;;;;;;;;;;KAmCK,UAAA;EACH,MAAA,SAAe,MAAA;EACf,MAAA,SAAe,MAAA;EACf,iBAAA,SAA0B,iBAAA;EAC1B,aAAA,SAAsB,aAAA;EACtB,cAAA,SAAuB,cAAA;EACvB,OAAA,SAAgB,OAAA;EAChB,aAAA,SAAsB,aAAA;EACtB,iBAAA,SAA0B,iBAAA;EAC1B,cAAA,SAAuB,cAAA;EACvB,SAAA,SAAkB,SAAA;EAClB,eAAA,SAAwB,eAAA;EACxB,mBAAA,SAA4B,mBAAA;EAC5B,GAAA,SAAY,GAAA;EACZ,UAAA,SAAmB,UAAA;AAAA;AAAA,KAGhB,UAAA;EACH,MAAA,EAAQ,OAAA;IAAU,KAAA;EAAA;IAAwB,KAAA;EAAA;EAC1C,YAAA,EAAc,OAAA,CAAQ,MAAA,oBAA0B,MAAA;AAAA;AAAA,KAG7C,oBAAA;EACC,MAAA;AAAA;EACA,MAAA;EAAuB,KAAA,EAAO,
|
|
1
|
+
{"version":3,"file":"hexclave-handler-client.d.ts","names":[],"sources":["../../../src/components-page/hexclave-handler-client.tsx"],"mappings":";;;;;;;;;;;;;;;;;KAmCK,UAAA;EACH,MAAA,SAAe,MAAA;EACf,MAAA,SAAe,MAAA;EACf,iBAAA,SAA0B,iBAAA;EAC1B,aAAA,SAAsB,aAAA;EACtB,cAAA,SAAuB,cAAA;EACvB,OAAA,SAAgB,OAAA;EAChB,aAAA,SAAsB,aAAA;EACtB,iBAAA,SAA0B,iBAAA;EAC1B,cAAA,SAAuB,cAAA;EACvB,SAAA,SAAkB,SAAA;EAClB,eAAA,SAAwB,eAAA;EACxB,mBAAA,SAA4B,mBAAA;EAC5B,GAAA,SAAY,GAAA;EACZ,UAAA,SAAmB,UAAA;AAAA;AAAA,KAGhB,UAAA;EACH,MAAA,EAAQ,OAAA;IAAU,KAAA;EAAA;IAAwB,KAAA;EAAA;EAC1C,YAAA,EAAc,OAAA,CAAQ,MAAA,oBAA0B,MAAA;AAAA;AAAA,KAG7C,oBAAA;EACC,MAAA;AAAA;EACA,MAAA;EAAuB,KAAA,EAAO,UAAU;AAAA;EACxC,MAAA;AAAA;AAAA,KA4BM,gBAAA;EACV,QAAA;EACA,cAAA,iBACc,UAAA,IAAc,UAAA,CAAW,UAAA,CAAW,CAAA;AAAA;AAAA,iBAgJ9B,uBAAA,CACpB,GAAA,EAAK,cAAA,EACL,cAAA,QAAsB,WAAA,GACrB,OAAA,CAAQ,oBAAA;AAAA,iBAiCK,qBAAA,CAAsB,KAAA,EAAO,gBAAA,GAAmB,OAAA,CAAQ,UAAA;EAAgB,QAAA;AAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { HexclaveAssertionError, captureError } from "@hexclave/shared/dist/utils/errors";
|
|
4
3
|
import { Suspense, useMemo, useSyncExternalStore } from "react";
|
|
5
4
|
import { SignIn, SignUp } from "../index.js";
|
|
@@ -27,7 +26,6 @@ import { Onboarding } from "./onboarding.js";
|
|
|
27
26
|
import { PasswordReset } from "./password-reset.js";
|
|
28
27
|
import { SignOut } from "./sign-out.js";
|
|
29
28
|
import { TeamInvitation } from "./team-invitation.js";
|
|
30
|
-
|
|
31
29
|
//#region src/components-page/hexclave-handler-client.tsx
|
|
32
30
|
const availablePaths = {
|
|
33
31
|
signIn: "sign-in",
|
|
@@ -252,7 +250,7 @@ function toAbsoluteOrRelativeRedirectTarget(url) {
|
|
|
252
250
|
function useClientOriginAfterHydration() {
|
|
253
251
|
return useSyncExternalStore(() => () => {}, () => window.location.origin, () => void 0);
|
|
254
252
|
}
|
|
255
|
-
|
|
256
253
|
//#endregion
|
|
257
254
|
export { HexclaveHandlerClient, getRedirectToPageResult };
|
|
255
|
+
|
|
258
256
|
//# sourceMappingURL=hexclave-handler-client.js.map
|