import React, { useState } from 'react'; import { Database, Loader2, LogIn, UserPlus } from 'lucide-react'; import { signIn, signUp } from '../lib/auth'; interface LoginPageProps { onLogin: () => void; } export function LoginPage({ onLogin }: LoginPageProps) { const [mode, setMode] = useState<'signin' | 'signup'>('signin'); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [successMsg, setSuccessMsg] = useState(null); const switchMode = (next: 'signin' | 'signup') => { setMode(next); setError(null); setSuccessMsg(null); setPassword(''); setConfirmPassword(''); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); setSuccessMsg(null); if (mode === 'signup' && password !== confirmPassword) { setError('Passwords do not match.'); return; } if (mode === 'signup' && password.length < 8) { setError('Password must be at least 8 characters.'); return; } setLoading(true); try { if (mode === 'signup') { await signUp(email.trim(), password); setSuccessMsg('Account created! Check your email to confirm, then sign in.'); switchMode('signin'); } else { await signIn(email.trim(), password); onLogin(); } } catch (err: any) { setError(err.message || 'Something went wrong.'); } finally { setLoading(false); } }; const isSignUp = mode === 'signup'; return (
Craze Scan

CRAZE SCAN

{isSignUp ? 'Create your account' : 'Product Data Intelligence'}

{/* Mode toggle */}
{error && (
{error}
)} {successMsg && (
{successMsg}
)}
setEmail(e.target.value)} placeholder="you@example.com" required autoFocus className="w-full bg-slate-900 border border-slate-700 rounded-md px-3 py-2.5 text-sm text-white placeholder-slate-500 focus:outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 transition-colors" />
setPassword(e.target.value)} placeholder="••••••••" required className="w-full bg-slate-900 border border-slate-700 rounded-md px-3 py-2.5 text-sm text-white placeholder-slate-500 focus:outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 transition-colors" />
{isSignUp && (
setConfirmPassword(e.target.value)} placeholder="••••••••" required className="w-full bg-slate-900 border border-slate-700 rounded-md px-3 py-2.5 text-sm text-white placeholder-slate-500 focus:outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 transition-colors" />
)}

Create an account to get started

); }