100 lines
3.8 KiB
JavaScript
100 lines
3.8 KiB
JavaScript
import { useEffect } from 'react';
|
|
import { Head, Link, useForm } from '@inertiajs/react';
|
|
// import { InertiaLink, usePage } from '@inertiajs/react';
|
|
|
|
function Login({ status }) {
|
|
const { data, setData, post, processing, errors, reset } = useForm({
|
|
nis: '',
|
|
password: '',
|
|
remember: false,
|
|
});
|
|
|
|
useEffect(() => {
|
|
return () => {
|
|
reset('password');
|
|
};
|
|
}, []);
|
|
|
|
const submit = (e) => {
|
|
e.preventDefault();
|
|
post(route('login'));
|
|
};
|
|
|
|
return (
|
|
<div className="min-h-screen flex items-center justify-center">
|
|
<div className="w-full max-w-md p-8 rounded-lg bg-gray-800">
|
|
<Head title="Log in" />
|
|
|
|
<h1 className="text-3xl font-bold mb-8 text-white">Masuk Untuk Melanjutkan</h1>
|
|
|
|
{status && <div className="mb-4 font-medium text-sm text-green-500">{status}</div>}
|
|
|
|
<form onSubmit={submit}>
|
|
<div className="mb-6">
|
|
<label htmlFor="nis" className="block text-xl mb-2 text-white">
|
|
Masukkan NIS
|
|
</label>
|
|
<input
|
|
id="nis"
|
|
type="text"
|
|
name="nis"
|
|
value={data.nis}
|
|
className="w-full p-3 border border-gray-700 rounded-lg text-gray-700"
|
|
placeholder="name@company.com"
|
|
autoComplete="username"
|
|
onChange={(e) => setData('nis', e.target.value)}
|
|
/>
|
|
{errors.nis && <p className="mt-1 text-sm text-red-500">{errors.nis}</p>}
|
|
</div>
|
|
|
|
<div className="mb-6">
|
|
<label htmlFor="password" className="block text-xl mb-2 text-white">
|
|
Password
|
|
</label>
|
|
<input
|
|
id="password"
|
|
type="password"
|
|
name="password"
|
|
value={data.password}
|
|
className="w-full p-3 border border-gray-700 rounded-lg"
|
|
placeholder="••••••••"
|
|
autoComplete="current-password"
|
|
onChange={(e) => setData('password', e.target.value)}
|
|
/>
|
|
{errors.password && <p className="mt-1 text-sm text-red-500">{errors.password}</p>}
|
|
</div>
|
|
|
|
<div className="flex items-center justify-between mb-6">
|
|
<div className="flex items-center">
|
|
<input
|
|
id="remember"
|
|
type="checkbox"
|
|
className="w-4 h-4 border border-gray-700 rounded"
|
|
name="remember"
|
|
checked={data.remember}
|
|
onChange={(e) => setData('remember', e.target.checked)}
|
|
/>
|
|
<label htmlFor="remember" className="ml-2 text-sm text-white">
|
|
Remember me
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<button
|
|
type="submit"
|
|
disabled={processing}
|
|
className="w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg text-center"
|
|
>
|
|
Sign in
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
Login.layout = (page) => page;
|
|
|
|
export default Login;
|
|
|