Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | import Checkbox from '@/Components/Checkbox'; import InputError from '@/Components/InputError'; import InputLabel from '@/Components/InputLabel'; import PrimaryButton from '@/Components/PrimaryButton'; import TextInput from '@/Components/TextInput'; import GuestLayout from '@/Layouts/GuestLayout'; import { Head, Link, useForm } from '@inertiajs/react'; import { FormEventHandler } from 'react'; export default function Login({ status, canResetPassword, }: { status?: string; canResetPassword: boolean; }) { const { data, setData, post, processing, errors, reset } = useForm({ email: '', password: '', remember: false as boolean, }); const submit: FormEventHandler = (e) => { e.preventDefault(); post(route('login'), { onFinish: () => reset('password'), }); }; return ( <GuestLayout> <Head title="Log in" /> {status && ( <div className="mb-4 text-sm font-medium text-green-600"> {status} </div> )} <form onSubmit={submit}> <div> <InputLabel htmlFor="email" value="Email" /> <TextInput id="email" type="email" name="email" value={data.email} className="mt-1 block w-full" autoComplete="username" isFocused={true} onChange={(e) => setData('email', e.target.value)} /> <InputError message={errors.email} className="mt-2" /> </div> <div className="mt-4"> <InputLabel htmlFor="password" value="Password" /> <TextInput id="password" type="password" name="password" value={data.password} className="mt-1 block w-full" autoComplete="current-password" onChange={(e) => setData('password', e.target.value)} /> <InputError message={errors.password} className="mt-2" /> </div> <div className="mt-4 block"> <label className="flex items-center"> <Checkbox name="remember" checked={data.remember} onChange={(e) => setData( 'remember', (e.target.checked || false) as false, ) } /> <span className="ms-2 text-sm text-gray-600 dark:text-gray-400"> Remember me </span> </label> </div> <div className="mt-4 flex items-center justify-end"> {canResetPassword && ( <Link href={route('password.request')} className="rounded-md text-sm text-gray-600 underline hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:text-gray-400 dark:hover:text-gray-100 dark:focus:ring-offset-gray-800" > Forgot your password? </Link> )} <PrimaryButton className="ms-4" disabled={processing}> Log in </PrimaryButton> </div> </form> </GuestLayout> ); } |