dress/resources/js/pages/auth/login.tsx

96 lines
3.6 KiB
TypeScript

import { Form, Head } from '@inertiajs/react';
import InputError from '@/components/input-error';
import PasswordInput from '@/components/password-input';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Spinner } from '@/components/ui/spinner';
import { store } from '@/routes/login';
type Props = {
status?: string;
};
export default function Login({
status,
}: Props) {
return (
<>
<Head title="Masuk" />
<Form
{...store.form()}
resetOnSuccess={['password']}
className="flex flex-col gap-6"
>
{({ processing, errors }) => (
<>
<div className="grid gap-6">
<div className="grid gap-2">
<Label htmlFor="email">Alamat Surel</Label>
<Input
id="email"
type="email"
name="email"
required
autoFocus
tabIndex={1}
autoComplete="off"
placeholder="johndoe@example.com"
/>
<InputError message={errors.email} />
</div>
<div className="grid gap-2">
<div className="flex items-center">
<Label htmlFor="password">Kata Sandi</Label>
</div>
<PasswordInput
id="password"
name="password"
required
tabIndex={2}
autoComplete="off"
placeholder="********"
/>
<InputError message={errors.password} />
</div>
<div className="flex items-center space-x-3">
<Checkbox
id="remember"
name="remember"
tabIndex={3}
/>
<Label htmlFor="remember">Ingat saya</Label>
</div>
<Button
type="submit"
className="mt-4 w-full"
tabIndex={4}
disabled={processing}
data-test="login-button"
>
{processing && <Spinner />}
Masuk
</Button>
</div>
</>
)}
</Form>
{status && (
<div className="mb-4 text-center text-sm font-medium text-green-600">
{status}
</div>
)}
</>
);
}
Login.layout = {
title: 'Masuk ke akun Anda',
description: 'Masukkan alamat surel atau nama pengguna dan kata sandi Anda di bawah untuk masuk.',
};