'use client'; import { Suspense, useEffect, useMemo, useState } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import Image from 'next/image'; import { signIn, useSession } from 'next-auth/react'; import { Box, Button, Field, Flex, Input, Stack, Text } from '@chakra-ui/react'; const SigninContent = () => { const router = useRouter(); const searchParams = useSearchParams(); const { status } = useSession(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const callbackUrl = useMemo( () => searchParams.get('callbackUrl') ?? '/routes/dashboard', [searchParams], ); useEffect(() => { if (status === 'authenticated') { router.replace(callbackUrl); } }, [status, router, callbackUrl]); useEffect(() => { const suggestedUsername = searchParams.get('username')?.trim(); if (suggestedUsername) { setUsername((current) => current || suggestedUsername); } }, [searchParams]); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setError(''); if (!username.trim() || !password) { setError('Please enter username and password'); return; } setIsSubmitting(true); const result = await signIn('credentials', { redirect: false, username, password, callbackUrl, }); setIsSubmitting(false); if (!result || result.error) { setError('Invalid username or password'); return; } router.replace(callbackUrl); }; return (
SIGN IN Trade JS Username setUsername(event.target.value)} autoComplete="username" placeholder="Username" /> Password setPassword(event.target.value)} type="password" autoComplete="current-password" placeholder="Password" /> {error ? ( {error} ) : null}
Market chart background
); }; const SigninFallback = () => ; const Signin = () => ( }> ); export default Signin;