import React, { useMemo } from 'react'; import { Box, Text, color } from 'folds'; import { Link, useSearchParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useAuthServer } from '../../../hooks/useAuthServer'; import { RegisterFlowStatus, useAuthFlows } from '../../../hooks/useAuthFlows'; import { PasswordRegisterForm, SUPPORTED_REGISTER_STAGES } from '../register/PasswordRegisterForm'; import { SupportedUIAFlowsLoader } from '../../../components/SupportedUIAFlowsLoader'; import { getLoginPath } from '../../pathUtils'; import { RegisterPathSearchParams } from '../../paths'; import * as css from '../styles.css'; const useRegisterSearchParams = (searchParams: URLSearchParams): RegisterPathSearchParams => useMemo( () => ({ username: searchParams.get('username') ?? undefined, email: searchParams.get('email') ?? undefined, token: searchParams.get('token') ?? undefined, }), [searchParams] ); export function Register() { const { t } = useTranslation(); const server = useAuthServer(); const { registerFlows } = useAuthFlows(); const [searchParams] = useSearchParams(); const registerSearchParams = useRegisterSearchParams(searchParams); return ( {registerFlows.status === RegisterFlowStatus.RegistrationDisabled && ( {t('Auth.register_disabled')} )} {registerFlows.status === RegisterFlowStatus.RateLimited && ( {t('Auth.register_rate_limited')} )} {registerFlows.status === RegisterFlowStatus.InvalidRequest && ( {t('Auth.register_invalid_request')} )} {registerFlows.status === RegisterFlowStatus.FlowRequired && ( {(supportedFlows) => supportedFlows.length === 0 ? ( {t('Auth.register_unsupported')} ) : ( ) } )} {t('Auth.already_have_account')}{' '} {t('Auth.title_login')} ); }