| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { Form, Head } from '@inertiajs/react';
- import { LoaderCircle } from 'lucide-react';
- import AuthenticatedSessionController from '@/actions/App/Http/Controllers/Auth/AuthenticatedSessionController';
- import { InputError } from '@/common/InputError';
- import { TextLink } from '@/common/TextLink';
- import AuthLayout from '@/pages/layouts/AuthLayout';
- import { register } from '@/routes';
- import { request } from '@/routes/password';
- import { Button } from '@/shadcn/button';
- import { Checkbox } from '@/shadcn/checkbox';
- import { Input } from '@/shadcn/input';
- import { Label } from '@/shadcn/label';
- interface LoginProps {
- status?: string;
- canResetPassword: boolean;
- }
- export default function LoginPage({ status, canResetPassword }: LoginProps) {
- return (
- <AuthLayout title="Log in to your account" description="Enter your email and password below to log in">
- <Head title="Log in" />
- <Form {...AuthenticatedSessionController.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">Email address</Label>
- <Input
- id="email"
- type="email"
- name="email"
- required
- autoFocus
- tabIndex={1}
- autoComplete="email"
- placeholder="email@example.com"
- />
- <InputError message={errors.email} />
- </div>
- <div className="grid gap-2">
- <div className="flex items-center">
- <Label htmlFor="password">Password</Label>
- {canResetPassword && (
- <TextLink href={request()} className="ml-auto text-sm" tabIndex={5}>
- Forgot password?
- </TextLink>
- )}
- </div>
- <Input
- id="password"
- type="password"
- name="password"
- required
- tabIndex={2}
- autoComplete="current-password"
- placeholder="Password"
- />
- <InputError message={errors.password} />
- </div>
- <div className="flex items-center space-x-3">
- <Checkbox id="remember" name="remember" tabIndex={3} />
- <Label htmlFor="remember">Remember me</Label>
- </div>
- <Button type="submit" className="mt-4 w-full" tabIndex={4} disabled={processing}>
- {processing && <LoaderCircle className="h-4 w-4 animate-spin" />}
- Log in
- </Button>
- </div>
- <div className="text-center text-sm text-muted-foreground">
- Don't have an account?{' '}
- <TextLink href={register()} tabIndex={5}>
- Sign up
- </TextLink>
- </div>
- </>
- )}
- </Form>
- {status && <div className="mb-4 text-center text-sm font-medium text-green-600">{status}</div>}
- </AuthLayout>
- );
- }
|