The Link component is modified to be nested within the Button component in various JSX files. This change was made with the aid of the 'asChild' property, it ensures that the link remains operable even when wrapped by the button, improving the site's semantics and accessibility.
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import Link from 'next/link';
|
|
|
|
import { SignUpMethodsContainer } from '@kit/auth/sign-up';
|
|
import { Button } from '@kit/ui/button';
|
|
import { Heading } from '@kit/ui/heading';
|
|
import { Trans } from '@kit/ui/trans';
|
|
|
|
import authConfig from '~/config/auth.config';
|
|
import pathsConfig from '~/config/paths.config';
|
|
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
export const generateMetadata = async () => {
|
|
const i18n = await createI18nServerInstance();
|
|
|
|
return {
|
|
title: i18n.t('auth:signUp'),
|
|
};
|
|
};
|
|
|
|
interface Props {
|
|
searchParams: {
|
|
invite_token?: string;
|
|
};
|
|
}
|
|
|
|
const paths = {
|
|
callback: pathsConfig.auth.callback,
|
|
appHome: pathsConfig.app.home,
|
|
};
|
|
|
|
function SignUpPage({ searchParams }: Props) {
|
|
const inviteToken = searchParams.invite_token;
|
|
|
|
return (
|
|
<>
|
|
<Heading level={4}>
|
|
<Trans i18nKey={'auth:signUpHeading'} />
|
|
</Heading>
|
|
|
|
<SignUpMethodsContainer
|
|
providers={authConfig.providers}
|
|
inviteToken={inviteToken}
|
|
paths={paths}
|
|
/>
|
|
|
|
<div className={'justify-centers flex'}>
|
|
<Button asChild variant={'link'} size={'sm'}>
|
|
<Link href={pathsConfig.auth.signIn}>
|
|
<Trans i18nKey={'auth:alreadyHaveAnAccount'} />
|
|
</Link>
|
|
</Button>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default withI18n(SignUpPage);
|