@stackframe/stack 2.8.12 → 2.8.17
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/CHANGELOG.md +46 -0
- package/dist/components/api-key-dialogs.js +5 -4
- package/dist/components/api-key-dialogs.js.map +1 -1
- package/dist/components/credential-sign-in.js +4 -4
- package/dist/components/credential-sign-up.js +3 -3
- package/dist/components/elements/maybe-full-page.js +1 -1
- package/dist/components/elements/sidebar-layout.js +1 -1
- package/dist/components/magic-link-sign-in.js +3 -3
- package/dist/components/message-cards/known-error-message-card.js +2 -2
- package/dist/components/message-cards/message-card.js +1 -1
- package/dist/components/message-cards/predefined-message-card.js +3 -3
- package/dist/components/oauth-button-group.js +2 -2
- package/dist/components/oauth-button.js +27 -16
- package/dist/components/oauth-button.js.map +1 -1
- package/dist/components/passkey-button.js +2 -2
- package/dist/components/profile-image-editor.js +87 -34
- package/dist/components/profile-image-editor.js.map +1 -1
- package/dist/components/selected-team-switcher.js +60 -14
- package/dist/components/selected-team-switcher.js.map +1 -1
- package/dist/components/team-icon.js +4 -0
- package/dist/components/team-icon.js.map +1 -1
- package/dist/components/{iframe-preventer.js → use-in-iframe.js} +9 -19
- package/dist/components/use-in-iframe.js.map +1 -0
- package/dist/components/user-button.js +41 -8
- package/dist/components/user-button.js.map +1 -1
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +57 -12
- 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.js +100 -12
- package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
- package/dist/components-page/account-settings/editable-text.js +1 -1
- package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js +12 -12
- 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.js +14 -5
- 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.js +18 -5
- 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.js +18 -5
- 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.js +19 -6
- 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.js +20 -7
- package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
- package/dist/components-page/account-settings/notifications/notifications-page.js +59 -0
- package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -0
- package/dist/components-page/account-settings/profile-page/profile-page.js +18 -8
- package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
- package/dist/components-page/account-settings/settings/delete-account-section.js +19 -10
- package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
- package/dist/components-page/account-settings/settings/settings-page.js +6 -6
- package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
- package/dist/components-page/account-settings/settings/sign-out-section.js +15 -6
- package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
- package/dist/components-page/account-settings/teams/leave-team-section.js +3 -3
- package/dist/components-page/account-settings/teams/team-api-keys-section.js +5 -5
- package/dist/components-page/account-settings/teams/team-creation-page.js +19 -10
- 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.js +4 -4
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
- package/dist/components-page/account-settings/teams/team-member-list-section.js +3 -3
- package/dist/components-page/account-settings/teams/team-page.js +8 -8
- package/dist/components-page/account-settings/teams/team-profile-image-section.js +4 -4
- package/dist/components-page/account-settings/teams/team-profile-user-section.js +4 -4
- package/dist/components-page/account-settings.js +43 -21
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.js +11 -12
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/cli-auth-confirm.js +3 -3
- package/dist/components-page/email-verification.js +3 -3
- package/dist/components-page/error-page.js +6 -6
- package/dist/components-page/error-page.js.map +1 -1
- package/dist/components-page/forgot-password.js +6 -6
- package/dist/components-page/magic-link-callback.js +4 -4
- package/dist/components-page/mfa.js +190 -0
- package/dist/components-page/mfa.js.map +1 -0
- package/dist/components-page/oauth-callback.js +4 -4
- package/dist/components-page/password-reset.js +6 -6
- package/dist/components-page/sign-in.js +3 -2
- package/dist/components-page/sign-in.js.map +1 -1
- package/dist/components-page/sign-out.js +2 -2
- package/dist/components-page/sign-up.js +1 -1
- package/dist/components-page/stack-handler.js +25 -14
- package/dist/components-page/stack-handler.js.map +1 -1
- package/dist/components-page/team-creation.js +4 -4
- package/dist/components-page/team-invitation.js +3 -3
- package/dist/esm/components/api-key-dialogs.js +5 -4
- package/dist/esm/components/api-key-dialogs.js.map +1 -1
- package/dist/esm/components/credential-sign-in.js +4 -4
- package/dist/esm/components/credential-sign-up.js +3 -3
- package/dist/esm/components/elements/maybe-full-page.js +1 -1
- package/dist/esm/components/elements/sidebar-layout.js +1 -1
- package/dist/esm/components/magic-link-sign-in.js +3 -3
- package/dist/esm/components/message-cards/known-error-message-card.js +2 -2
- package/dist/esm/components/message-cards/message-card.js +1 -1
- package/dist/esm/components/message-cards/predefined-message-card.js +3 -3
- package/dist/esm/components/oauth-button-group.js +2 -2
- package/dist/esm/components/oauth-button.js +28 -17
- package/dist/esm/components/oauth-button.js.map +1 -1
- package/dist/esm/components/passkey-button.js +2 -2
- package/dist/esm/components/profile-image-editor.js +86 -34
- package/dist/esm/components/profile-image-editor.js.map +1 -1
- package/dist/esm/components/selected-team-switcher.js +60 -14
- package/dist/esm/components/selected-team-switcher.js.map +1 -1
- package/dist/esm/components/team-icon.js +4 -0
- package/dist/esm/components/team-icon.js.map +1 -1
- package/dist/esm/components/use-in-iframe.js +18 -0
- package/dist/esm/components/use-in-iframe.js.map +1 -0
- package/dist/esm/components/user-button.js +41 -8
- package/dist/esm/components/user-button.js.map +1 -1
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +57 -12
- 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.js +100 -12
- 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.js +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js +12 -12
- 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.js +14 -5
- 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.js +18 -5
- 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.js +18 -5
- 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.js +19 -6
- 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.js +20 -7
- 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.js +34 -0
- package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -0
- package/dist/esm/components-page/account-settings/profile-page/profile-page.js +18 -8
- package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
- package/dist/esm/components-page/account-settings/settings/delete-account-section.js +19 -10
- 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.js +6 -6
- 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.js +15 -6
- 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.js +3 -3
- package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +5 -5
- package/dist/esm/components-page/account-settings/teams/team-creation-page.js +19 -10
- 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.js +4 -4
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
- package/dist/esm/components-page/account-settings/teams/team-member-list-section.js +3 -3
- package/dist/esm/components-page/account-settings/teams/team-page.js +8 -8
- package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js +4 -4
- package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js +4 -4
- package/dist/esm/components-page/account-settings.js +43 -21
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.js +11 -12
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/cli-auth-confirm.js +3 -3
- package/dist/esm/components-page/email-verification.js +3 -3
- package/dist/esm/components-page/error-page.js +6 -6
- package/dist/esm/components-page/error-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.js +6 -6
- package/dist/esm/components-page/magic-link-callback.js +4 -4
- package/dist/esm/components-page/mfa.js +174 -0
- package/dist/esm/components-page/mfa.js.map +1 -0
- package/dist/esm/components-page/oauth-callback.js +4 -4
- package/dist/esm/components-page/password-reset.js +6 -6
- package/dist/esm/components-page/sign-in.js +3 -2
- package/dist/esm/components-page/sign-in.js.map +1 -1
- package/dist/esm/components-page/sign-out.js +2 -2
- package/dist/esm/components-page/sign-up.js +1 -1
- package/dist/esm/components-page/stack-handler.js +25 -14
- package/dist/esm/components-page/stack-handler.js.map +1 -1
- package/dist/esm/components-page/team-creation.js +4 -4
- package/dist/esm/components-page/team-invitation.js +3 -3
- package/dist/esm/generated/global-css.js +1 -1
- package/dist/esm/generated/global-css.js.map +1 -1
- package/dist/esm/generated/quetzal-translations.js +3616 -2364
- package/dist/esm/generated/quetzal-translations.js.map +1 -1
- package/dist/esm/index.js +22 -22
- package/dist/esm/lib/auth.js +2 -2
- package/dist/esm/lib/cookie.js +1 -129
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/hooks.js +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +11 -8
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +79 -21
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js +2 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.js +3 -3
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js +34 -8
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/index.js +3 -3
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -1
- package/dist/esm/lib/stack-app/common.js.map +1 -1
- package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/esm/lib/stack-app/index.js +2 -2
- package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/esm/lib/stack-app/notification-categories/index.js +1 -0
- package/dist/esm/lib/stack-app/notification-categories/index.js.map +1 -0
- package/dist/esm/lib/stack-app/users/index.js.map +1 -1
- package/dist/esm/lib/translations.js +1 -1
- package/dist/esm/providers/stack-provider-client.js +2 -2
- package/dist/esm/providers/stack-provider.js +3 -3
- package/dist/esm/providers/theme-provider.js +3 -3
- package/dist/esm/providers/translation-provider.js +2 -2
- package/dist/esm/utils/browser-script.js +1 -1
- package/dist/generated/global-css.js +1 -1
- package/dist/generated/global-css.js.map +1 -1
- package/dist/generated/quetzal-translations.js +3616 -2364
- package/dist/generated/quetzal-translations.js.map +1 -1
- package/dist/index.d.mts +91 -6
- package/dist/index.d.ts +91 -6
- package/dist/index.js +23 -23
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.js +2 -2
- package/dist/lib/cookie.js +4 -132
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/hooks.js +1 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +11 -8
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js +79 -21
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js +2 -1
- package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/index.js +3 -3
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js +34 -8
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/index.js +3 -3
- package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -1
- package/dist/lib/stack-app/common.js.map +1 -1
- package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/lib/stack-app/index.js +2 -2
- package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/lib/stack-app/notification-categories/index.js +19 -0
- package/dist/lib/stack-app/notification-categories/index.js.map +1 -0
- package/dist/lib/stack-app/users/index.js.map +1 -1
- package/dist/lib/translations.js +1 -1
- package/dist/providers/stack-provider-client.js +2 -2
- package/dist/providers/stack-provider.js +3 -3
- package/dist/providers/theme-provider.js +3 -3
- package/dist/providers/translation-provider.js +2 -2
- package/dist/utils/browser-script.js +1 -1
- package/package.json +5 -5
- package/dist/components/iframe-preventer.js.map +0 -1
- package/dist/esm/components/iframe-preventer.js +0 -28
- package/dist/esm/components/iframe-preventer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@stackframe/stack-shared/dist/helpers/password';\nimport { passwordSchema as schemaFieldsPasswordSchema, yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronously, runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label, PasswordInput, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp } from '../../..';\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\n\nexport function PasswordSection() {\n const { t } = useTranslation();\n const user = useUser({ or: \"throw\" });\n const contactChannels = user.useContactChannels();\n const [changingPassword, setChangingPassword] = useState(false);\n const [loading, setLoading] = useState(false);\n const project = useStackApp().useProject();\n\n const passwordSchema = yupObject({\n oldPassword: user.hasPassword ? schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your old password')) : yupString(),\n newPassword: schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your password')).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n newPasswordRepeat: yupString().nullable().oneOf([yup.ref('newPassword'), \"\", null], t('Passwords do not match')).defined().nonEmpty(t('Please repeat your password'))\n });\n\n const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = useForm({\n resolver: yupResolver(passwordSchema)\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasValidEmail = contactChannels.filter(x => x.type === 'email' && x.usedForAuth).length > 0;\n\n const onSubmit = async (data: yup.InferType<typeof passwordSchema>) => {\n setLoading(true);\n try {\n const { oldPassword, newPassword } = data;\n const error = user.hasPassword\n ? await user.updatePassword({ oldPassword: oldPassword!, newPassword })\n : await user.setPassword({ password: newPassword! });\n if (error) {\n setError('oldPassword', { type: 'manual', message: t('Incorrect password') });\n } else {\n reset();\n setChangingPassword(false);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const registerPassword = register('newPassword');\n const registerPasswordRepeat = register('newPasswordRepeat');\n\n if (!project.config.credentialEnabled) {\n return null;\n }\n\n return (\n <Section\n title={t(\"Password\")}\n description={user.hasPassword ? t(\"Update your password\") : t(\"Set a password for your account\")}\n >\n <div className='flex flex-col gap-4'>\n {!changingPassword ? (\n hasValidEmail ? (\n <Button\n variant='secondary'\n onClick={() => setChangingPassword(true)}\n >\n {user.hasPassword ? t(\"Update password\") : t(\"Set password\")}\n </Button>\n ) : (\n <Typography variant='secondary' type='label'>{t(\"To set a password, please add a sign-in email.\")}</Typography>\n )\n ) : (\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n {user.hasPassword && (\n <>\n <Label htmlFor=\"old-password\" className=\"mb-1\">{t(\"Old password\")}</Label>\n <Input\n id=\"old-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n {...register(\"oldPassword\")}\n />\n <FormWarningText text={errors.oldPassword?.message?.toString()} />\n </>\n )}\n\n <Label htmlFor=\"new-password\" className=\"mt-4 mb-1\">{t(\"New password\")}</Label>\n <PasswordInput\n id=\"new-password\"\n autoComplete=\"new-password\"\n {...registerPassword}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPassword.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPassword?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat new password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...registerPasswordRepeat}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPasswordRepeat.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPasswordRepeat?.message?.toString()} />\n\n <div className=\"mt-6 flex gap-4\">\n <Button type=\"submit\" loading={loading}>\n {user.hasPassword ? t(\"Update Password\") : t(\"Set Password\")}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setChangingPassword(false);\n reset();\n }}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Section>\n );\n}\n"],"mappings":"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","names":["schemaFieldsPasswordSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@stackframe/stack-shared/dist/helpers/password';\nimport { passwordSchema as schemaFieldsPasswordSchema, yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronously, runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label, PasswordInput, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp } from '../../..';\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\n\nexport function PasswordSection(props?: {\n mockMode?: boolean,\n}) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? 'return-null' : \"throw\" });\n\n // In mock mode, show a placeholder message\n if (props?.mockMode && !user) {\n return (\n <Section\n title={t(\"Password\")}\n description={t(\"Password management is not available in demo mode.\")}\n >\n <Typography variant='secondary'>{t(\"Password management is not available in demo mode.\")}</Typography>\n </Section>\n );\n }\n\n if (!user) {\n return null; // This shouldn't happen in non-mock mode due to throw\n }\n const contactChannels = user.useContactChannels();\n const [changingPassword, setChangingPassword] = useState(false);\n const [loading, setLoading] = useState(false);\n const project = useStackApp().useProject();\n\n const passwordSchema = yupObject({\n oldPassword: user.hasPassword ? schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your old password')) : yupString(),\n newPassword: schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your password')).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n newPasswordRepeat: yupString().nullable().oneOf([yup.ref('newPassword'), \"\", null], t('Passwords do not match')).defined().nonEmpty(t('Please repeat your password'))\n });\n\n const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = useForm({\n resolver: yupResolver(passwordSchema)\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasValidEmail = contactChannels.filter(x => x.type === 'email' && x.usedForAuth).length > 0;\n\n const onSubmit = async (data: yup.InferType<typeof passwordSchema>) => {\n setLoading(true);\n try {\n const { oldPassword, newPassword } = data;\n const error = user.hasPassword\n ? await user.updatePassword({ oldPassword: oldPassword!, newPassword })\n : await user.setPassword({ password: newPassword! });\n if (error) {\n setError('oldPassword', { type: 'manual', message: t('Incorrect password') });\n } else {\n reset();\n setChangingPassword(false);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const registerPassword = register('newPassword');\n const registerPasswordRepeat = register('newPasswordRepeat');\n\n if (!project.config.credentialEnabled) {\n return null;\n }\n\n return (\n <Section\n title={t(\"Password\")}\n description={user.hasPassword ? t(\"Update your password\") : t(\"Set a password for your account\")}\n >\n <div className='flex flex-col gap-4'>\n {!changingPassword ? (\n hasValidEmail ? (\n <Button\n variant='secondary'\n onClick={() => setChangingPassword(true)}\n >\n {user.hasPassword ? t(\"Update password\") : t(\"Set password\")}\n </Button>\n ) : (\n <Typography variant='secondary' type='label'>{t(\"To set a password, please add a sign-in email.\")}</Typography>\n )\n ) : (\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n {user.hasPassword && (\n <>\n <Label htmlFor=\"old-password\" className=\"mb-1\">{t(\"Old password\")}</Label>\n <Input\n id=\"old-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n {...register(\"oldPassword\")}\n />\n <FormWarningText text={errors.oldPassword?.message?.toString()} />\n </>\n )}\n\n <Label htmlFor=\"new-password\" className=\"mt-4 mb-1\">{t(\"New password\")}</Label>\n <PasswordInput\n id=\"new-password\"\n autoComplete=\"new-password\"\n {...registerPassword}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPassword.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPassword?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat new password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...registerPasswordRepeat}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPasswordRepeat.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPasswordRepeat?.message?.toString()} />\n\n <div className=\"mt-6 flex gap-4\">\n <Button type=\"submit\" loading={loading}>\n {user.hasPassword ? t(\"Update Password\") : t(\"Set Password\")}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setChangingPassword(false);\n reset();\n }}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Section>\n );\n}\n"],"mappings":"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","names":["schemaFieldsPasswordSchema"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/components-page/account-settings/notifications/notifications-page.tsx
|
|
21
|
+
var notifications_page_exports = {};
|
|
22
|
+
__export(notifications_page_exports, {
|
|
23
|
+
NotificationsPage: () => NotificationsPage
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(notifications_page_exports);
|
|
26
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
27
|
+
var import_translations = require("../../../lib/translations.js");
|
|
28
|
+
var import_page_layout = require("../page-layout.js");
|
|
29
|
+
var import_stack_ui = require("@stackframe/stack-ui");
|
|
30
|
+
var import_stack_ui2 = require("@stackframe/stack-ui");
|
|
31
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
|
+
function NotificationsPage() {
|
|
33
|
+
const { t } = (0, import_translations.useTranslation)();
|
|
34
|
+
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
35
|
+
const notificationCategories = user.useNotificationCategories();
|
|
36
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_page_layout.PageLayout, { children: [
|
|
37
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui2.Separator, {}),
|
|
38
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
39
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "sm:flex-1 flex flex-col justify-center pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui2.Typography, { className: "font-medium", children: t("Choose which emails you want to receive") }) }),
|
|
40
|
+
notificationCategories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex justify-start gap-4 items-center", children: [
|
|
41
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
42
|
+
import_stack_ui.Switch,
|
|
43
|
+
{
|
|
44
|
+
checked: category.enabled,
|
|
45
|
+
onCheckedChange: (value) => void category.setEnabled(value),
|
|
46
|
+
disabled: !category.canDisable
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui2.Typography, { children: category.name }),
|
|
50
|
+
!category.canDisable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui2.Typography, { variant: "secondary", type: "footnote", children: "(cannot be disabled)" })
|
|
51
|
+
] }, category.id))
|
|
52
|
+
] })
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
NotificationsPage
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=notifications-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/notifications/notifications-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Switch } from \"@stackframe/stack-ui\";\nimport { Separator, Typography } from \"@stackframe/stack-ui\";\n\n\nexport function NotificationsPage() {\n const { t } = useTranslation();\n const user = useUser({ or: 'redirect' });\n const notificationCategories = user.useNotificationCategories();\n\n return (\n <PageLayout>\n <Separator />\n <div className='flex flex-col gap-2'>\n <div className='sm:flex-1 flex flex-col justify-center pb-2'>\n <Typography className=\"font-medium\">\n {t('Choose which emails you want to receive')}\n </Typography>\n </div>\n {notificationCategories.map((category) => (\n <div key={category.id} className=\"flex justify-start gap-4 items-center\">\n <Switch\n checked={category.enabled}\n onCheckedChange={(value) => void category.setEnabled(value)}\n disabled={!category.canDisable}\n />\n <Typography>{category.name}</Typography>\n {!category.canDisable && (\n <Typography variant='secondary' type='footnote'>\n (cannot be disabled)\n </Typography>\n )}\n </div>\n ))}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAwB;AACxB,0BAA+B;AAC/B,yBAA2B;AAC3B,sBAAuB;AACvB,IAAAA,mBAAsC;AAUhC;AAPC,SAAS,oBAAoB;AAClC,QAAM,EAAE,EAAE,QAAI,oCAAe;AAC7B,QAAM,WAAO,sBAAQ,EAAE,IAAI,WAAW,CAAC;AACvC,QAAM,yBAAyB,KAAK,0BAA0B;AAE9D,SACE,6CAAC,iCACC;AAAA,gDAAC,8BAAU;AAAA,IACX,6CAAC,SAAI,WAAU,uBACb;AAAA,kDAAC,SAAI,WAAU,+CACb,sDAAC,+BAAW,WAAU,eACnB,YAAE,yCAAyC,GAC9C,GACF;AAAA,MACC,uBAAuB,IAAI,CAAC,aAC3B,6CAAC,SAAsB,WAAU,yCAC/B;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,SAAS;AAAA,YAClB,iBAAiB,CAAC,UAAU,KAAK,SAAS,WAAW,KAAK;AAAA,YAC1D,UAAU,CAAC,SAAS;AAAA;AAAA,QACtB;AAAA,QACA,4CAAC,+BAAY,mBAAS,MAAK;AAAA,QAC1B,CAAC,SAAS,cACT,4CAAC,+BAAW,SAAQ,aAAY,MAAK,YAAW,kCAEhD;AAAA,WAVM,SAAS,EAYnB,CACD;AAAA,OACH;AAAA,KACF;AAEJ;","names":["import_stack_ui"]}
|
|
@@ -23,16 +23,26 @@ __export(profile_page_exports, {
|
|
|
23
23
|
ProfilePage: () => ProfilePage
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(profile_page_exports);
|
|
26
|
-
var import_profile_image_editor = require("../../../components/profile-image-editor");
|
|
27
|
-
var import_hooks = require("../../../lib/hooks");
|
|
28
|
-
var import_translations = require("../../../lib/translations");
|
|
29
|
-
var import_editable_text = require("../editable-text");
|
|
30
|
-
var import_page_layout = require("../page-layout");
|
|
31
|
-
var import_section = require("../section");
|
|
26
|
+
var import_profile_image_editor = require("../../../components/profile-image-editor.js");
|
|
27
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
28
|
+
var import_translations = require("../../../lib/translations.js");
|
|
29
|
+
var import_editable_text = require("../editable-text.js");
|
|
30
|
+
var import_page_layout = require("../page-layout.js");
|
|
31
|
+
var import_section = require("../section.js");
|
|
32
32
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
33
|
-
function ProfilePage() {
|
|
33
|
+
function ProfilePage(props) {
|
|
34
34
|
const { t } = (0, import_translations.useTranslation)();
|
|
35
|
-
const
|
|
35
|
+
const userFromHook = (0, import_hooks.useUser)({ or: props?.mockUser ? "return-null" : "redirect" });
|
|
36
|
+
const user = props?.mockUser ? {
|
|
37
|
+
displayName: props.mockUser.displayName || "John Doe",
|
|
38
|
+
profileImageUrl: props.mockUser.profileImageUrl || null,
|
|
39
|
+
update: async () => {
|
|
40
|
+
console.log("Mock update called");
|
|
41
|
+
}
|
|
42
|
+
} : userFromHook;
|
|
43
|
+
if (!user) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
36
46
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_page_layout.PageLayout, { children: [
|
|
37
47
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
38
48
|
import_section.Section,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/profile-page/profile-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { ProfileImageEditor } from \"../../../components/profile-image-editor\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { EditableText } from \"../editable-text\";\nimport { PageLayout } from \"../page-layout\";\nimport { Section } from \"../section\";\n\nexport function ProfilePage() {\n const { t } = useTranslation();\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/profile-page/profile-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { ProfileImageEditor } from \"../../../components/profile-image-editor\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { EditableText } from \"../editable-text\";\nimport { PageLayout } from \"../page-layout\";\nimport { Section } from \"../section\";\n\nexport function ProfilePage(props?: {\n mockUser?: {\n displayName?: string,\n profileImageUrl?: string,\n },\n}) {\n const { t } = useTranslation();\n const userFromHook = useUser({ or: props?.mockUser ? 'return-null' : 'redirect' });\n\n // Use mock data if provided, otherwise use real user\n const user = props?.mockUser ? {\n displayName: props.mockUser.displayName || 'John Doe',\n profileImageUrl: props.mockUser.profileImageUrl || null,\n update: async () => {\n // Mock update - do nothing in demo mode\n console.log('Mock update called');\n }\n } : userFromHook;\n\n if (!user) {\n return null; // This shouldn't happen in practice\n }\n\n return (\n <PageLayout>\n <Section\n title={t(\"User name\")}\n description={t(\"This is a display name and is not used for authentication\")}\n >\n <EditableText\n value={user.displayName || ''}\n onSave={async (newDisplayName) => {\n await user.update({ displayName: newDisplayName });\n }}/>\n </Section>\n\n <Section\n title={t(\"Profile image\")}\n description={t(\"Upload your own image as your avatar\")}\n >\n <ProfileImageEditor\n user={user as any}\n onProfileImageUrlChange={async (profileImageUrl: string | null) => {\n await user.update({ profileImageUrl });\n }}\n />\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,kCAAmC;AACnC,mBAAwB;AACxB,0BAA+B;AAC/B,2BAA6B;AAC7B,yBAA2B;AAC3B,qBAAwB;AA0BpB;AAxBG,SAAS,YAAY,OAKzB;AACD,QAAM,EAAE,EAAE,QAAI,oCAAe;AAC7B,QAAM,mBAAe,sBAAQ,EAAE,IAAI,OAAO,WAAW,gBAAgB,WAAW,CAAC;AAGjF,QAAM,OAAO,OAAO,WAAW;AAAA,IAC7B,aAAa,MAAM,SAAS,eAAe;AAAA,IAC3C,iBAAiB,MAAM,SAAS,mBAAmB;AAAA,IACnD,QAAQ,YAAY;AAElB,cAAQ,IAAI,oBAAoB;AAAA,IAClC;AAAA,EACF,IAAI;AAEJ,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SACE,6CAAC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,WAAW;AAAA,QACpB,aAAa,EAAE,2DAA2D;AAAA,QAE1E;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,KAAK,eAAe;AAAA,YAC3B,QAAQ,OAAO,mBAAmB;AAChC,oBAAM,KAAK,OAAO,EAAE,aAAa,eAAe,CAAC;AAAA,YACnD;AAAA;AAAA,QAAE;AAAA;AAAA,IACN;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,eAAe;AAAA,QACxB,aAAa,EAAE,sCAAsC;AAAA,QAErD;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,yBAAyB,OAAO,oBAAmC;AACjE,oBAAM,KAAK,OAAO,EAAE,gBAAgB,CAAC;AAAA,YACvC;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -25,19 +25,31 @@ __export(delete_account_section_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(delete_account_section_exports);
|
|
26
26
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
27
27
|
var import_react = require("react");
|
|
28
|
-
var import_hooks = require("../../../lib/hooks");
|
|
29
|
-
var import_translations = require("../../../lib/translations");
|
|
30
|
-
var import_section = require("../section");
|
|
28
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
29
|
+
var import_translations = require("../../../lib/translations.js");
|
|
30
|
+
var import_section = require("../section.js");
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
|
-
function DeleteAccountSection() {
|
|
32
|
+
function DeleteAccountSection(props) {
|
|
33
33
|
const { t } = (0, import_translations.useTranslation)();
|
|
34
|
-
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
34
|
+
const user = (0, import_hooks.useUser)({ or: props?.mockMode ? "return-null" : "redirect" });
|
|
35
35
|
const app = (0, import_hooks.useStackApp)();
|
|
36
36
|
const project = app.useProject();
|
|
37
37
|
const [deleting, setDeleting] = (0, import_react.useState)(false);
|
|
38
|
-
|
|
38
|
+
const showDeleteSection = props?.mockMode || project.config.clientUserDeletionEnabled;
|
|
39
|
+
if (!showDeleteSection) {
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
42
|
+
const handleDeleteAccount = async () => {
|
|
43
|
+
if (props?.mockMode) {
|
|
44
|
+
alert("Mock mode: Account deletion clicked");
|
|
45
|
+
setDeleting(false);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (user) {
|
|
49
|
+
await user.delete();
|
|
50
|
+
await app.redirectToHome();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
41
53
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
42
54
|
import_section.Section,
|
|
43
55
|
{
|
|
@@ -59,10 +71,7 @@ function DeleteAccountSection() {
|
|
|
59
71
|
import_stack_ui.Button,
|
|
60
72
|
{
|
|
61
73
|
variant: "destructive",
|
|
62
|
-
onClick:
|
|
63
|
-
await user.delete();
|
|
64
|
-
await app.redirectToHome();
|
|
65
|
-
},
|
|
74
|
+
onClick: handleDeleteAccount,
|
|
66
75
|
children: t("Delete Account")
|
|
67
76
|
}
|
|
68
77
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/delete-account-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Button, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useStackApp, useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\nexport function DeleteAccountSection() {\n const { t } = useTranslation();\n const user = useUser({ or: 'redirect' });\n const app = useStackApp();\n const project = app.useProject();\n const [deleting, setDeleting] = useState(false);\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/delete-account-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Button, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useStackApp, useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\nexport function DeleteAccountSection(props?: { mockMode?: boolean }) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? 'return-null' : 'redirect' });\n const app = useStackApp();\n const project = app.useProject();\n const [deleting, setDeleting] = useState(false);\n\n // In mock mode, always show the delete section\n const showDeleteSection = props?.mockMode || project.config.clientUserDeletionEnabled;\n\n if (!showDeleteSection) {\n return null;\n }\n\n const handleDeleteAccount = async () => {\n if (props?.mockMode) {\n // Mock mode - just show an alert\n alert(\"Mock mode: Account deletion clicked\");\n setDeleting(false);\n return;\n }\n\n if (user) {\n await user.delete();\n await app.redirectToHome();\n }\n };\n\n return (\n <Section\n title={t(\"Delete Account\")}\n description={t(\"Permanently remove your account and all associated data\")}\n >\n <div className='stack-scope flex flex-col items-stretch'>\n <Accordion type=\"single\" collapsible className=\"w-full\">\n <AccordionItem value=\"item-1\">\n <AccordionTrigger>{t(\"Danger zone\")}</AccordionTrigger>\n <AccordionContent>\n {!deleting ? (\n <div>\n <Button\n variant='destructive'\n onClick={() => setDeleting(true)}\n >\n {t(\"Delete account\")}\n </Button>\n </div>\n ) : (\n <div className='flex flex-col gap-2'>\n <Typography variant='destructive'>\n {t(\"Are you sure you want to delete your account? This action is IRREVERSIBLE and will delete ALL associated data.\")}\n </Typography>\n <div className='flex gap-2'>\n <Button\n variant='destructive'\n onClick={handleDeleteAccount}\n >\n {t(\"Delete Account\")}\n </Button>\n <Button\n variant='secondary'\n onClick={() => setDeleting(false)}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </div>\n )}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n </div>\n </Section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,sBAAiG;AACjG,mBAAyB;AACzB,mBAAqC;AACrC,0BAA+B;AAC/B,qBAAwB;AAsCZ;AApCL,SAAS,qBAAqB,OAAgC;AACnE,QAAM,EAAE,EAAE,QAAI,oCAAe;AAC7B,QAAM,WAAO,sBAAQ,EAAE,IAAI,OAAO,WAAW,gBAAgB,WAAW,CAAC;AACzE,QAAM,UAAM,0BAAY;AACxB,QAAM,UAAU,IAAI,WAAW;AAC/B,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAG9C,QAAM,oBAAoB,OAAO,YAAY,QAAQ,OAAO;AAE5D,MAAI,CAAC,mBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,sBAAsB,YAAY;AACtC,QAAI,OAAO,UAAU;AAEnB,YAAM,qCAAqC;AAC3C,kBAAY,KAAK;AACjB;AAAA,IACF;AAEA,QAAI,MAAM;AACR,YAAM,KAAK,OAAO;AAClB,YAAM,IAAI,eAAe;AAAA,IAC3B;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,gBAAgB;AAAA,MACzB,aAAa,EAAE,yDAAyD;AAAA,MAExE,sDAAC,SAAI,WAAU,2CACb,sDAAC,6BAAU,MAAK,UAAS,aAAW,MAAC,WAAU,UAC7C,uDAAC,iCAAc,OAAM,UACnB;AAAA,oDAAC,oCAAkB,YAAE,aAAa,GAAE;AAAA,QACpC,4CAAC,oCACE,WAAC,WACA,4CAAC,SACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,YAAY,IAAI;AAAA,YAE9B,YAAE,gBAAgB;AAAA;AAAA,QACrB,GACF,IAEA,6CAAC,SAAI,WAAU,uBACb;AAAA,sDAAC,8BAAW,SAAQ,eACjB,YAAE,gHAAgH,GACrH;AAAA,UACA,6CAAC,SAAI,WAAU,cACb;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,SAAS;AAAA,gBAER,YAAE,gBAAgB;AAAA;AAAA,YACrB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,SAAS,MAAM,YAAY,KAAK;AAAA,gBAE/B,YAAE,QAAQ;AAAA;AAAA,YACb;AAAA,aACF;AAAA,WACF,GAEJ;AAAA,SACF,GACF,GACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -23,14 +23,14 @@ __export(settings_page_exports, {
|
|
|
23
23
|
SettingsPage: () => SettingsPage
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(settings_page_exports);
|
|
26
|
-
var import_page_layout = require("../page-layout");
|
|
27
|
-
var import_delete_account_section = require("./delete-account-section");
|
|
28
|
-
var import_sign_out_section = require("./sign-out-section");
|
|
26
|
+
var import_page_layout = require("../page-layout.js");
|
|
27
|
+
var import_delete_account_section = require("./delete-account-section.js");
|
|
28
|
+
var import_sign_out_section = require("./sign-out-section.js");
|
|
29
29
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
30
|
-
function SettingsPage() {
|
|
30
|
+
function SettingsPage(props) {
|
|
31
31
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_page_layout.PageLayout, { children: [
|
|
32
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_delete_account_section.DeleteAccountSection, {}),
|
|
33
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_out_section.SignOutSection, {})
|
|
32
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_delete_account_section.DeleteAccountSection, { mockMode: props?.mockMode }),
|
|
33
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_out_section.SignOutSection, { mockMode: props?.mockMode })
|
|
34
34
|
] });
|
|
35
35
|
}
|
|
36
36
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/settings-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { PageLayout } from \"../page-layout\";\nimport { DeleteAccountSection } from \"./delete-account-section\";\nimport { SignOutSection } from \"./sign-out-section\";\n\n\nexport function SettingsPage() {\n return (\n <PageLayout>\n <DeleteAccountSection />\n <SignOutSection />\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA2B;AAC3B,oCAAqC;AACrC,8BAA+B;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/settings-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { PageLayout } from \"../page-layout\";\nimport { DeleteAccountSection } from \"./delete-account-section\";\nimport { SignOutSection } from \"./sign-out-section\";\n\n\nexport function SettingsPage(props?: {\n mockMode?: boolean,\n}) {\n return (\n <PageLayout>\n <DeleteAccountSection mockMode={props?.mockMode} />\n <SignOutSection mockMode={props?.mockMode} />\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA2B;AAC3B,oCAAqC;AACrC,8BAA+B;AAO3B;AAJG,SAAS,aAAa,OAE1B;AACD,SACE,6CAAC,iCACC;AAAA,gDAAC,sDAAqB,UAAU,OAAO,UAAU;AAAA,IACjD,4CAAC,0CAAe,UAAU,OAAO,UAAU;AAAA,KAC7C;AAEJ;","names":[]}
|
|
@@ -24,13 +24,22 @@ __export(sign_out_section_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(sign_out_section_exports);
|
|
26
26
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
27
|
-
var import_hooks = require("../../../lib/hooks");
|
|
28
|
-
var import_translations = require("../../../lib/translations");
|
|
29
|
-
var import_section = require("../section");
|
|
27
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
28
|
+
var import_translations = require("../../../lib/translations.js");
|
|
29
|
+
var import_section = require("../section.js");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
-
function SignOutSection() {
|
|
31
|
+
function SignOutSection(props) {
|
|
32
32
|
const { t } = (0, import_translations.useTranslation)();
|
|
33
|
-
const user = (0, import_hooks.useUser)({ or: "throw" });
|
|
33
|
+
const user = (0, import_hooks.useUser)({ or: props?.mockMode ? "return-null" : "throw" });
|
|
34
|
+
const handleSignOut = async () => {
|
|
35
|
+
if (props?.mockMode) {
|
|
36
|
+
alert("Mock mode: Sign out clicked");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (user) {
|
|
40
|
+
await user.signOut();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
34
43
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
35
44
|
import_section.Section,
|
|
36
45
|
{
|
|
@@ -40,7 +49,7 @@ function SignOutSection() {
|
|
|
40
49
|
import_stack_ui.Button,
|
|
41
50
|
{
|
|
42
51
|
variant: "secondary",
|
|
43
|
-
onClick:
|
|
52
|
+
onClick: handleSignOut,
|
|
44
53
|
children: t("Sign out")
|
|
45
54
|
}
|
|
46
55
|
) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/sign-out-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { Button } from \"@stackframe/stack-ui\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\nexport function SignOutSection() {\n const { t } = useTranslation();\n const user = useUser({ or: \"throw\" });\n\n return (\n <Section\n title={t(\"Sign out\")}\n description={t(\"End your current session\")}\n >\n <div>\n <Button\n variant='secondary'\n onClick={
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/settings/sign-out-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { Button } from \"@stackframe/stack-ui\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\nexport function SignOutSection(props?: { mockMode?: boolean }) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? \"return-null\" : \"throw\" });\n\n const handleSignOut = async () => {\n if (props?.mockMode) {\n // Mock mode - just show an alert or do nothing\n alert(\"Mock mode: Sign out clicked\");\n return;\n }\n if (user) {\n await user.signOut();\n }\n };\n\n return (\n <Section\n title={t(\"Sign out\")}\n description={t(\"End your current session\")}\n >\n <div>\n <Button\n variant='secondary'\n onClick={handleSignOut}\n >\n {t(\"Sign out\")}\n </Button>\n </div>\n </Section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,sBAAuB;AACvB,mBAAwB;AACxB,0BAA+B;AAC/B,qBAAwB;AAuBhB;AArBD,SAAS,eAAe,OAAgC;AAC7D,QAAM,EAAE,EAAE,QAAI,oCAAe;AAC7B,QAAM,WAAO,sBAAQ,EAAE,IAAI,OAAO,WAAW,gBAAgB,QAAQ,CAAC;AAEtE,QAAM,gBAAgB,YAAY;AAChC,QAAI,OAAO,UAAU;AAEnB,YAAM,6BAA6B;AACnC;AAAA,IACF;AACA,QAAI,MAAM;AACR,YAAM,KAAK,QAAQ;AAAA,IACrB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,UAAU;AAAA,MACnB,aAAa,EAAE,0BAA0B;AAAA,MAEzC,sDAAC,SACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS;AAAA,UAER,YAAE,UAAU;AAAA;AAAA,MACf,GACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -25,9 +25,9 @@ __export(leave_team_section_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(leave_team_section_exports);
|
|
26
26
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
27
27
|
var import_react = require("react");
|
|
28
|
-
var import_hooks = require("../../../lib/hooks");
|
|
29
|
-
var import_translations = require("../../../lib/translations");
|
|
30
|
-
var import_section = require("../section");
|
|
28
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
29
|
+
var import_translations = require("../../../lib/translations.js");
|
|
30
|
+
var import_section = require("../section.js");
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
32
|
function LeaveTeamSection(props) {
|
|
33
33
|
const { t } = (0, import_translations.useTranslation)();
|
|
@@ -26,11 +26,11 @@ module.exports = __toCommonJS(team_api_keys_section_exports);
|
|
|
26
26
|
var import_errors = require("@stackframe/stack-shared/dist/utils/errors");
|
|
27
27
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
28
28
|
var import_react = require("react");
|
|
29
|
-
var import_api_key_dialogs = require("../../../components/api-key-dialogs");
|
|
30
|
-
var import_api_key_table = require("../../../components/api-key-table");
|
|
31
|
-
var import_hooks = require("../../../lib/hooks");
|
|
32
|
-
var import_translations = require("../../../lib/translations");
|
|
33
|
-
var import_section = require("../section");
|
|
29
|
+
var import_api_key_dialogs = require("../../../components/api-key-dialogs.js");
|
|
30
|
+
var import_api_key_table = require("../../../components/api-key-table.js");
|
|
31
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
32
|
+
var import_translations = require("../../../lib/translations.js");
|
|
33
|
+
var import_section = require("../section.js");
|
|
34
34
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
35
|
function TeamApiKeysSection(props) {
|
|
36
36
|
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
@@ -29,14 +29,14 @@ var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
|
29
29
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
30
30
|
var import_react = require("react");
|
|
31
31
|
var import_react_hook_form = require("react-hook-form");
|
|
32
|
-
var import_form_warning = require("../../../components/elements/form-warning");
|
|
33
|
-
var import_message_card = require("../../../components/message-cards/message-card");
|
|
34
|
-
var import_hooks = require("../../../lib/hooks");
|
|
35
|
-
var import_translations = require("../../../lib/translations");
|
|
36
|
-
var import_page_layout = require("../page-layout");
|
|
37
|
-
var import_section = require("../section");
|
|
32
|
+
var import_form_warning = require("../../../components/elements/form-warning.js");
|
|
33
|
+
var import_message_card = require("../../../components/message-cards/message-card.js");
|
|
34
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
35
|
+
var import_translations = require("../../../lib/translations.js");
|
|
36
|
+
var import_page_layout = require("../page-layout.js");
|
|
37
|
+
var import_section = require("../section.js");
|
|
38
38
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
39
|
-
function TeamCreationPage() {
|
|
39
|
+
function TeamCreationPage(props) {
|
|
40
40
|
const { t } = (0, import_translations.useTranslation)();
|
|
41
41
|
const teamCreationSchema = (0, import_schema_fields.yupObject)({
|
|
42
42
|
displayName: (0, import_schema_fields.yupString)().defined().nonEmpty(t("Please enter a team name"))
|
|
@@ -46,21 +46,30 @@ function TeamCreationPage() {
|
|
|
46
46
|
});
|
|
47
47
|
const app = (0, import_hooks.useStackApp)();
|
|
48
48
|
const project = app.useProject();
|
|
49
|
-
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
49
|
+
const user = (0, import_hooks.useUser)({ or: props?.mockMode ? "return-null" : "redirect" });
|
|
50
50
|
const navigate = app.useNavigate();
|
|
51
51
|
const [loading, setLoading] = (0, import_react.useState)(false);
|
|
52
|
+
if (props?.mockMode) {
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_page_layout.PageLayout, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.MessageCard, { title: t("Team creation is disabled in demo mode") }) });
|
|
54
|
+
}
|
|
52
55
|
if (!project.config.clientTeamCreationEnabled) {
|
|
53
56
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.MessageCard, { title: t("Team creation is not enabled") });
|
|
54
57
|
}
|
|
55
58
|
const onSubmit = async (data) => {
|
|
59
|
+
if (props?.mockMode) {
|
|
60
|
+
alert("Mock mode: Team creation clicked");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
56
63
|
setLoading(true);
|
|
57
64
|
let team;
|
|
58
65
|
try {
|
|
59
|
-
team = await user
|
|
66
|
+
team = await user?.createTeam({ displayName: data.displayName });
|
|
60
67
|
} finally {
|
|
61
68
|
setLoading(false);
|
|
62
69
|
}
|
|
63
|
-
|
|
70
|
+
if (team) {
|
|
71
|
+
navigate(`#team-${team.id}`);
|
|
72
|
+
}
|
|
64
73
|
};
|
|
65
74
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_page_layout.PageLayout, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_section.Section, { title: t("Create a Team"), description: t("Enter a display name for your new team"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
66
75
|
"form",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components-page/account-settings/teams/team-creation-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { MessageCard } from \"../../../components/message-cards/message-card\";\nimport { useStackApp, useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Section } from \"../section\";\n\nexport function TeamCreationPage() {\n const { t } = useTranslation();\n\n const teamCreationSchema = yupObject({\n displayName: yupString().defined().nonEmpty(t(\"Please enter a team name\")),\n });\n\n const { register, handleSubmit, formState: { errors } } = useForm({\n resolver: yupResolver(teamCreationSchema)\n });\n const app = useStackApp();\n const project = app.useProject();\n const user = useUser({ or: 'redirect' });\n const navigate = app.useNavigate();\n const [loading, setLoading] = useState(false);\n\n if (!project.config.clientTeamCreationEnabled) {\n return <MessageCard title={t(\"Team creation is not enabled\")} />;\n }\n\n const onSubmit = async (data: yup.InferType<typeof teamCreationSchema>) => {\n setLoading(true);\n\n let team;\n try {\n team = await user
|
|
1
|
+
{"version":3,"sources":["../../../../src/components-page/account-settings/teams/team-creation-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { MessageCard } from \"../../../components/message-cards/message-card\";\nimport { useStackApp, useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Section } from \"../section\";\n\nexport function TeamCreationPage(props?: {\n mockMode?: boolean,\n}) {\n const { t } = useTranslation();\n\n const teamCreationSchema = yupObject({\n displayName: yupString().defined().nonEmpty(t(\"Please enter a team name\")),\n });\n\n const { register, handleSubmit, formState: { errors } } = useForm({\n resolver: yupResolver(teamCreationSchema)\n });\n const app = useStackApp();\n const project = app.useProject();\n const user = useUser({ or: props?.mockMode ? 'return-null' : 'redirect' });\n const navigate = app.useNavigate();\n const [loading, setLoading] = useState(false);\n\n // In mock mode, show that team creation is disabled\n if (props?.mockMode) {\n return (\n <PageLayout>\n <MessageCard title={t(\"Team creation is disabled in demo mode\")} />\n </PageLayout>\n );\n }\n\n if (!project.config.clientTeamCreationEnabled) {\n return <MessageCard title={t(\"Team creation is not enabled\")} />;\n }\n\n const onSubmit = async (data: yup.InferType<typeof teamCreationSchema>) => {\n if (props?.mockMode) {\n // Mock mode - just show an alert\n alert(\"Mock mode: Team creation clicked\");\n return;\n }\n\n setLoading(true);\n\n let team;\n try {\n team = await user?.createTeam({ displayName: data.displayName });\n } finally {\n setLoading(false);\n }\n\n if (team) {\n navigate(`#team-${team.id}`);\n }\n };\n\n return (\n <PageLayout>\n <Section title={t(\"Create a Team\")} description={t(\"Enter a display name for your new team\")}>\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n className='flex gap-2 flex-col sm:flex-row'\n >\n <div className='flex flex-col flex-1'>\n <Input\n id=\"displayName\"\n type=\"text\"\n {...register(\"displayName\")}\n />\n <FormWarningText text={errors.displayName?.message?.toString()} />\n </div>\n <Button type=\"submit\" loading={loading}>{t(\"Create\")}</Button>\n </form>\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,iBAA4B;AAC5B,2BAAqC;AACrC,sBAA2C;AAC3C,sBAA8B;AAC9B,mBAAyB;AACzB,6BAAwB;AAExB,0BAAgC;AAChC,0BAA4B;AAC5B,mBAAqC;AACrC,0BAA+B;AAC/B,yBAA2B;AAC3B,qBAAwB;AAwBhB;AAtBD,SAAS,iBAAiB,OAE9B;AACD,QAAM,EAAE,EAAE,QAAI,oCAAe;AAE7B,QAAM,yBAAqB,gCAAU;AAAA,IACnC,iBAAa,gCAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,0BAA0B,CAAC;AAAA,EAC3E,CAAC;AAED,QAAM,EAAE,UAAU,cAAc,WAAW,EAAE,OAAO,EAAE,QAAI,gCAAQ;AAAA,IAChE,cAAU,wBAAY,kBAAkB;AAAA,EAC1C,CAAC;AACD,QAAM,UAAM,0BAAY;AACxB,QAAM,UAAU,IAAI,WAAW;AAC/B,QAAM,WAAO,sBAAQ,EAAE,IAAI,OAAO,WAAW,gBAAgB,WAAW,CAAC;AACzE,QAAM,WAAW,IAAI,YAAY;AACjC,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,KAAK;AAG5C,MAAI,OAAO,UAAU;AACnB,WACE,4CAAC,iCACC,sDAAC,mCAAY,OAAO,EAAE,wCAAwC,GAAG,GACnE;AAAA,EAEJ;AAEA,MAAI,CAAC,QAAQ,OAAO,2BAA2B;AAC7C,WAAO,4CAAC,mCAAY,OAAO,EAAE,8BAA8B,GAAG;AAAA,EAChE;AAEA,QAAM,WAAW,OAAO,SAAmD;AACzE,QAAI,OAAO,UAAU;AAEnB,YAAM,kCAAkC;AACxC;AAAA,IACF;AAEA,eAAW,IAAI;AAEf,QAAI;AACJ,QAAI;AACF,aAAO,MAAM,MAAM,WAAW,EAAE,aAAa,KAAK,YAAY,CAAC;AAAA,IACjE,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAEA,QAAI,MAAM;AACR,eAAS,SAAS,KAAK,EAAE,EAAE;AAAA,IAC7B;AAAA,EACF;AAEA,SACE,4CAAC,iCACC,sDAAC,0BAAQ,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,wCAAwC,GACzF;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,WAAK,4CAA2B,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,MACnE,YAAU;AAAA,MACV,WAAU;AAAA,MAEV;AAAA,qDAAC,SAAI,WAAU,wBACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACH,MAAK;AAAA,cACJ,GAAG,SAAS,aAAa;AAAA;AAAA,UAC5B;AAAA,UACA,4CAAC,uCAAgB,MAAM,OAAO,aAAa,SAAS,SAAS,GAAG;AAAA,WAClE;AAAA,QACA,4CAAC,0BAAO,MAAK,UAAS,SAAmB,YAAE,QAAQ,GAAE;AAAA;AAAA;AAAA,EACvD,GACF,GACF;AAEJ;","names":[]}
|
|
@@ -23,10 +23,10 @@ __export(team_display_name_section_exports, {
|
|
|
23
23
|
TeamDisplayNameSection: () => TeamDisplayNameSection
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(team_display_name_section_exports);
|
|
26
|
-
var import_hooks = require("../../../lib/hooks");
|
|
27
|
-
var import_translations = require("../../../lib/translations");
|
|
28
|
-
var import_editable_text = require("../editable-text");
|
|
29
|
-
var import_section = require("../section");
|
|
26
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
27
|
+
var import_translations = require("../../../lib/translations.js");
|
|
28
|
+
var import_editable_text = require("../editable-text.js");
|
|
29
|
+
var import_section = require("../section.js");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
31
|
function TeamDisplayNameSection(props) {
|
|
32
32
|
const { t } = (0, import_translations.useTranslation)();
|
|
@@ -30,10 +30,10 @@ var import_stack_ui = require("@stackframe/stack-ui");
|
|
|
30
30
|
var import_lucide_react = require("lucide-react");
|
|
31
31
|
var import_react = require("react");
|
|
32
32
|
var import_react_hook_form = require("react-hook-form");
|
|
33
|
-
var import_form_warning = require("../../../components/elements/form-warning");
|
|
34
|
-
var import_hooks = require("../../../lib/hooks");
|
|
35
|
-
var import_translations = require("../../../lib/translations");
|
|
36
|
-
var import_section = require("../section");
|
|
33
|
+
var import_form_warning = require("../../../components/elements/form-warning.js");
|
|
34
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
35
|
+
var import_translations = require("../../../lib/translations.js");
|
|
36
|
+
var import_section = require("../section.js");
|
|
37
37
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
38
38
|
function TeamMemberInvitationSection(props) {
|
|
39
39
|
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
@@ -24,9 +24,9 @@ __export(team_member_list_section_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(team_member_list_section_exports);
|
|
26
26
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
27
|
-
var import_user_avatar = require("../../../components/elements/user-avatar");
|
|
28
|
-
var import_hooks = require("../../../lib/hooks");
|
|
29
|
-
var import_translations = require("../../../lib/translations");
|
|
27
|
+
var import_user_avatar = require("../../../components/elements/user-avatar.js");
|
|
28
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
29
|
+
var import_translations = require("../../../lib/translations.js");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
31
|
function TeamMemberListSection(props) {
|
|
32
32
|
const user = (0, import_hooks.useUser)({ or: "redirect" });
|
|
@@ -23,14 +23,14 @@ __export(team_page_exports, {
|
|
|
23
23
|
TeamPage: () => TeamPage
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(team_page_exports);
|
|
26
|
-
var import_page_layout = require("../page-layout");
|
|
27
|
-
var import_leave_team_section = require("./leave-team-section");
|
|
28
|
-
var import_team_api_keys_section = require("./team-api-keys-section");
|
|
29
|
-
var import_team_display_name_section = require("./team-display-name-section");
|
|
30
|
-
var import_team_member_invitation_section = require("./team-member-invitation-section");
|
|
31
|
-
var import_team_member_list_section = require("./team-member-list-section");
|
|
32
|
-
var import_team_profile_image_section = require("./team-profile-image-section");
|
|
33
|
-
var import_team_profile_user_section = require("./team-profile-user-section");
|
|
26
|
+
var import_page_layout = require("../page-layout.js");
|
|
27
|
+
var import_leave_team_section = require("./leave-team-section.js");
|
|
28
|
+
var import_team_api_keys_section = require("./team-api-keys-section.js");
|
|
29
|
+
var import_team_display_name_section = require("./team-display-name-section.js");
|
|
30
|
+
var import_team_member_invitation_section = require("./team-member-invitation-section.js");
|
|
31
|
+
var import_team_member_list_section = require("./team-member-list-section.js");
|
|
32
|
+
var import_team_profile_image_section = require("./team-profile-image-section.js");
|
|
33
|
+
var import_team_profile_user_section = require("./team-profile-user-section.js");
|
|
34
34
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
35
|
function TeamPage(props) {
|
|
36
36
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_page_layout.PageLayout, { children: [
|
|
@@ -23,10 +23,10 @@ __export(team_profile_image_section_exports, {
|
|
|
23
23
|
TeamProfileImageSection: () => TeamProfileImageSection
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(team_profile_image_section_exports);
|
|
26
|
-
var import_profile_image_editor = require("../../../components/profile-image-editor");
|
|
27
|
-
var import_hooks = require("../../../lib/hooks");
|
|
28
|
-
var import_translations = require("../../../lib/translations");
|
|
29
|
-
var import_section = require("../section");
|
|
26
|
+
var import_profile_image_editor = require("../../../components/profile-image-editor.js");
|
|
27
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
28
|
+
var import_translations = require("../../../lib/translations.js");
|
|
29
|
+
var import_section = require("../section.js");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
31
|
function TeamProfileImageSection(props) {
|
|
32
32
|
const { t } = (0, import_translations.useTranslation)();
|
|
@@ -23,10 +23,10 @@ __export(team_profile_user_section_exports, {
|
|
|
23
23
|
TeamUserProfileSection: () => TeamUserProfileSection
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(team_profile_user_section_exports);
|
|
26
|
-
var import_hooks = require("../../../lib/hooks");
|
|
27
|
-
var import_translations = require("../../../lib/translations");
|
|
28
|
-
var import_editable_text = require("../editable-text");
|
|
29
|
-
var import_section = require("../section");
|
|
26
|
+
var import_hooks = require("../../../lib/hooks.js");
|
|
27
|
+
var import_translations = require("../../../lib/translations.js");
|
|
28
|
+
var import_editable_text = require("../editable-text.js");
|
|
29
|
+
var import_section = require("../section.js");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
31
|
function TeamUserProfileSection(props) {
|
|
32
32
|
const { t } = (0, import_translations.useTranslation)();
|