// LoginView - Pagina di autenticazione con form di login function LoginView() { const { login, error: authError, loading } = useAuth(); const [email, setEmail] = React.useState(''); const [password, setPassword] = React.useState(''); const [showPassword, setShowPassword] = React.useState(false); const [localError, setLocalError] = React.useState(''); const handleSubmit = async (e) => { e.preventDefault(); setLocalError(''); if (!email.trim()) { setLocalError('Email obbligatoria'); return; } if (!password) { setLocalError('Password obbligatoria'); return; } const result = await login(email.trim(), password); if (!result.success) { setLocalError(result.error); } }; const error = localError || authError; return (
{/* Decorative elements */}
{/* Logo & Title */}

Gestionale Interno

Gestione Pratiche & Automazione

{/* Login Card */}

Accedi al tuo account

{/* Email */}
setEmail(e.target.value)} placeholder="tu@esempio.com" className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:border-transparent transition-all" disabled={loading} autoComplete="email" />
{/* Password */}
setPassword(e.target.value)} placeholder="••••••••" className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:border-transparent transition-all pr-12" disabled={loading} autoComplete="current-password" />
{/* Error message */} {error && (
{error}
)} {/* Submit button */} {/* Divider */}
oppure
{/* Google Sign In */} Accedi con Google
{/* Footer */}

Gestionale Interno © {new Date().getFullYear()}

); } window.LoginView = LoginView;