'use client'; import { useState, FormEvent } from 'react'; import { useRouter } from 'next/navigation'; import { Lock, User, Loader2 } from 'lucide-react'; import { motion } from 'framer-motion'; import Image from 'next/image'; export default function AdminLogin() { const router = useRouter(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setError(''); setIsLoading(true); try { const response = await fetch('/api/admin/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username, password }), }); const data = await response.json(); if (!response.ok) { setError(data.error || 'Login failed'); setIsLoading(false); return; } // Successful login - redirect to dashboard router.push('/admin/dashboard'); } catch (err) { setError('Network error. Please try again.'); setIsLoading(false); } }; return (
{/* Monaco Background Image */}
{/* Overlay gradient for better readability */}
{/* Logo and Title */}
Puffin Offset Logo
Admin Portal Puffin Offset Management
{/* Login Card */}
{/* Error Message */} {error && ( {error} )} {/* Username Field */}
setUsername(e.target.value)} className="w-full pl-10 pr-4 py-3 bg-white border border-light-gray-border rounded-lg text-deep-sea-blue placeholder-deep-sea-blue/40 focus:outline-none focus:ring-2 focus:ring-deep-sea-blue/50 focus:border-deep-sea-blue transition-all" placeholder="Enter your username" required disabled={isLoading} />
{/* Password Field */}
setPassword(e.target.value)} className="w-full pl-10 pr-4 py-3 bg-white border border-light-gray-border rounded-lg text-deep-sea-blue placeholder-deep-sea-blue/40 focus:outline-none focus:ring-2 focus:ring-deep-sea-blue/50 focus:border-deep-sea-blue transition-all" placeholder="Enter your password" required disabled={isLoading} />
{/* Submit Button */} {isLoading ? ( Signing in... ) : ( 'Sign In' )}
{/* Footer */} © 2024 Puffin Offset. Secure admin access.
); }