'use client'; import { Login } from '@theme/views/login'; import { Register } from '@theme/views/register'; import { useSession } from 'next-auth/react'; import { useSearchParams } from 'next/navigation'; import { useEffect, useMemo, useState } from 'react'; import { useLocalization, useRouter } from '@akinon/next/hooks'; import clsx from 'clsx'; import { twMerge } from 'tailwind-merge'; import { Button } from '@theme/components'; import GuestLogin from '@theme/views/guest-login'; export default function CheckoutAuth() { const { data: session } = useSession(); const router = useRouter(); const searchParams = useSearchParams(); const { t } = useLocalization(); const [activeTab, setActiveTab] = useState('login'); const tabClass = (tabName) => { return twMerge( clsx( 'text-base font-normal text-black-750/50 bg-transparent border-0 border-primary px-6 transition-all hover:border-b hover:text-black-750', { 'border-b text-black-750': activeTab === tabName } ) ); }; const pageTitle = useMemo(() => { return { login: t('auth.login.title'), register: t('auth.register.title'), guest: t('checkout.auth.guest_checkout') }[activeTab]; }, [activeTab]); useEffect(() => { if (session?.user) { router.push(searchParams.get('callbackUrl') ?? '/'); } }, [session?.user]); // eslint-disable-line react-hooks/exhaustive-deps return (
{pageTitle}
{activeTab !== 'guest' && (
)}
{activeTab === 'register' && } {activeTab === 'login' && } {activeTab === 'guest' && }
); }