1- 'use client' ;
1+ import { AuthPage } from "@/components/auth-page" ;
22
3- import { useState } from 'react' ;
4- import { signIn } from 'next-auth/react' ;
5- import { useRouter } from 'next/navigation' ;
6- import { Button } from '@/components/ui/button' ;
7-
8- export default function LoginPage ( ) {
9- const router = useRouter ( ) ;
10- const [ email , setEmail ] = useState ( '' ) ;
11- const [ password , setPassword ] = useState ( '' ) ;
12- const [ error , setError ] = useState ( '' ) ;
13- const [ loading , setLoading ] = useState ( false ) ;
14-
15- const handleSubmit = async ( e : React . FormEvent ) => {
16- e . preventDefault ( ) ;
17- setLoading ( true ) ;
18- setError ( '' ) ;
19-
20- try {
21- const result = await signIn ( 'credentials' , {
22- redirect : false ,
23- email,
24- password,
25- } ) ;
26-
27- if ( result ?. error ) {
28- setError ( 'Invalid email or password' ) ;
29- } else {
30- router . push ( '/admin' ) ;
31- }
32- } catch ( err ) {
33- setError ( 'An error occurred during login' ) ;
34- } finally {
35- setLoading ( false ) ;
36- }
37- } ;
38-
39- return (
40- < div className = "flex min-h-screen items-center justify-center bg-gray-50" >
41- < div className = "w-full max-w-md space-y-8 rounded-lg bg-white p-8 shadow-lg" >
42- < div className = "text-center" >
43- < h1 className = "text-3xl font-bold" > Login</ h1 >
44- < p className = "mt-2 text-gray-600" > Cureos Hospital Management System</ p >
45- </ div >
46- { error && (
47- < div className = "rounded-md bg-red-50 p-3 text-sm text-red-600" >
48- { error }
49- </ div >
50- ) }
51- < form onSubmit = { handleSubmit } className = "mt-8 space-y-6" >
52- < div className = "space-y-4" >
53- < div >
54- < label htmlFor = "email" className = "block text-sm font-medium text-gray-700" >
55- Email
56- </ label >
57- < input
58- id = "email"
59- name = "email"
60- type = "email"
61- required
62- value = { email }
63- onChange = { ( e ) => setEmail ( e . target . value ) }
64- className = "mt-1 block w-full rounded-md border border-gray-300 px-3 py-2 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-blue-500"
65- placeholder = "Enter your email"
66- />
67- </ div >
68- < div >
69- < label htmlFor = "password" className = "block text-sm font-medium text-gray-700" >
70- Password
71- </ label >
72- < input
73- id = "password"
74- name = "password"
75- type = "password"
76- required
77- value = { password }
78- onChange = { ( e ) => setPassword ( e . target . value ) }
79- className = "mt-1 block w-full rounded-md border border-gray-300 px-3 py-2 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-blue-500"
80- placeholder = "Enter your password"
81- />
82- </ div >
83- </ div >
84- < Button
85- type = "submit"
86- disabled = { loading }
87- className = "w-full"
88- >
89- { loading ? 'Signing in...' : 'Sign in' }
90- </ Button >
91- </ form >
92- </ div >
93- </ div >
94- ) ;
95- }
3+ export default function Page ( ) {
4+ return < AuthPage /> ;
5+ }
0 commit comments