
import React, { useState } from 'react';
import type { Page, User } from '../types';

interface RegisterPageProps {
  handleRegister: (newUser: Omit<User, 'id'>) => boolean;
  navigateTo: (page: Page) => void;
}

const RegisterPage: React.FC<RegisterPageProps> = ({ handleRegister, navigateTo }) => {
    const [fullName, setFullName] = useState('');
    const [mobile, setMobile] = useState('');
    const [password, setPassword] = useState('');
    const [error, setError] = useState('');

    const onSubmit = (e: React.FormEvent) => {
        e.preventDefault();
        setError('');
        if(password.length < 6) {
            setError('পাসওয়ার্ড অবশ্যই ন্যূনতম ৬ অক্ষরের হতে হবে।');
            return;
        }
        const success = handleRegister({ fullName, mobile, password });
        if (success) {
            navigateTo('userDashboard');
        } else {
            setError('এই মোবাইল নম্বরটি দিয়ে ইতোমধ্যে একটি অ্যাকাউন্ট তৈরি করা আছে।');
        }
    };

    return (
        <div className="flex items-center justify-center min-h-[calc(100vh-160px)] bg-gray-50 py-12 px-4 sm:px-6 lg:px-8">
            <div className="max-w-md w-full space-y-8">
                <div>
                    <h2 className="mt-6 text-center text-3xl font-extrabold text-gray-900">নতুন অ্যাকাউন্ট তৈরি করুন</h2>
                </div>
                <form className="mt-8 space-y-6 bg-white p-8 rounded-lg shadow-lg" onSubmit={onSubmit}>
                    <div className="rounded-md shadow-sm -space-y-px">
                        <div>
                            <label htmlFor="fullName" className="sr-only">পুরো নাম</label>
                            <input id="fullName" name="fullName" type="text" required value={fullName} onChange={(e) => setFullName(e.target.value)} className="appearance-none rounded-none relative block w-full px-3 py-3 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-t-md focus:outline-none focus:ring-green-500 focus:border-green-500 focus:z-10 sm:text-sm" placeholder="পুরো নাম" />
                        </div>
                        <div>
                            <label htmlFor="mobile" className="sr-only">মোবাইল নম্বর</label>
                            <input id="mobile" name="mobile" type="tel" required value={mobile} onChange={(e) => setMobile(e.target.value)} className="appearance-none rounded-none relative block w-full px-3 py-3 border border-gray-300 placeholder-gray-500 text-gray-900 focus:outline-none focus:ring-green-500 focus:border-green-500 focus:z-10 sm:text-sm" placeholder="মোবাইল নম্বর" />
                        </div>
                        <div>
                            <label htmlFor="password"className="sr-only">পাসওয়ার্ড</label>
                            <input id="password" name="password" type="password" required value={password} onChange={(e) => setPassword(e.target.value)} className="appearance-none rounded-none relative block w-full px-3 py-3 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-green-500 focus:border-green-500 focus:z-10 sm:text-sm" placeholder="পাসওয়ার্ড (ন্যূনতম ৬ অক্ষর)" />
                        </div>
                    </div>

                    {error && <p className="text-sm text-red-600 text-center">{error}</p>}

                    <div>
                        <button type="submit" className="group relative w-full flex justify-center py-3 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500">
                            নিবন্ধন করুন
                        </button>
                    </div>

                    <div className="text-center">
                        <p className="text-sm text-gray-600">
                            ইতোমধ্যে অ্যাকাউন্ট আছে?{' '}
                            <a onClick={() => navigateTo('userLogin')} className="font-medium text-green-600 hover:text-green-500 cursor-pointer">
                                লগইন করুন
                            </a>
                        </p>
                    </div>
                </form>
            </div>
        </div>
    );
};

export default RegisterPage;
