import {Link, Navigate, useLocation, useSearchParams} from 'react-router-dom'; import {useForm} from 'react-hook-form'; import {FormTextField} from '../../ui/forms/input-field/text-field/text-field'; import {Button} from '../../ui/buttons/button'; import {Form} from '../../ui/forms/form'; import {LinkStyle} from '../../ui/buttons/external-link'; import {RegisterPayload, useRegister} from '../requests/use-register'; import {SocialAuthSection} from './social-auth-section'; import {AuthLayout} from './auth-layout/auth-layout'; import {Trans} from '../../i18n/trans'; import {FormCheckbox} from '../../ui/forms/toggle/checkbox'; import {CustomMenuItem} from '../../menus/custom-menu'; import {useRecaptcha} from '../../recaptcha/use-recaptcha'; import {StaticPageTitle} from '../../seo/static-page-title'; import {useSettings} from '../../core/settings/use-settings'; import {useContext} from 'react'; import {SiteConfigContext} from '@common/core/settings/site-config-context'; export function RegisterPage() { const { branding, registration: {disable}, social, } = useSettings(); const {auth} = useContext(SiteConfigContext); const {verify, isVerifying} = useRecaptcha('register'); const {pathname} = useLocation(); const [searchParams] = useSearchParams(); const isWorkspaceRegister = pathname.includes('workspace'); const isBillingRegister = searchParams.get('redirectFrom') === 'pricing'; const searchParamsEmail = searchParams.get('email') || undefined; const form = useForm({ defaultValues: {email: searchParamsEmail}, }); const register = useRegister(form); if (disable) { return ; } let heading = ; if (isWorkspaceRegister) { heading = ( ); } else if (isBillingRegister) { heading = ; } const message = ( ( {parts} ), }} message="Already have an account? Sign in." /> ); return (
{ const isValid = await verify(); if (isValid) { register.mutate(payload); } }} > } required /> } required /> } required /> {auth?.registerFields ? : null} ) : ( ) } />
); } function PolicyCheckboxes() { const { registration: {policies}, } = useSettings(); if (!policies) return null; return (
{policies.map(policy => ( LinkStyle} item={policy} /> ), }} /> ))}
); }