'use client'; import type { Provider } from '@supabase/supabase-js'; import { isBrowser } from '@kit/shared/utils'; import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert'; import { If } from '@kit/ui/if'; import { Separator } from '@kit/ui/separator'; import { Trans } from '@kit/ui/trans'; import { MagicLinkAuthContainer } from './magic-link-auth-container'; import { OauthProviders } from './oauth-providers'; import { EmailPasswordSignUpContainer } from './password-sign-up-container'; import { redirect } from 'next/navigation'; export function SignUpMethodsContainer(props: { paths: { callback: string; appHome: string; updateAccount: string; }; providers: { password: boolean; magicLink: boolean; oAuth: Provider[]; }; displayTermsCheckbox?: boolean; inviteToken?: string; }) { const redirectUrl = getCallbackUrl(props); const defaultValues = getDefaultValues(); return ( <> redirect(redirectUrl)} />
); } function getCallbackUrl(props: { paths: { callback: string; appHome: string; }; inviteToken?: string; }) { if (!isBrowser()) { return ''; } const redirectPath = props.paths.callback; const origin = window.location.origin; const url = new URL(redirectPath, origin); if (props.inviteToken) { url.searchParams.set('invite_token', props.inviteToken); } const searchParams = new URLSearchParams(window.location.search); const next = searchParams.get('next'); if (next) { url.searchParams.set('next', next); } return url.href; } function getDefaultValues() { if (!isBrowser()) { return { email: '' }; } const searchParams = new URLSearchParams(window.location.search); const inviteToken = searchParams.get('invite_token'); if (!inviteToken) { return { email: '' }; } return { email: searchParams.get('email') ?? '', }; } function InviteAlert() { return ( ); }