import { FormEvent, useState, useCallback } from 'react'; import { Eye, EyeOff } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { apiBaseUrl } from '@/lib/api-client'; import { isTauri, openUrl } from '@/lib/tauri'; type AuthFormProps = { mode: 'login' | 'register'; isSubmitting: boolean; error: string | null; googleOAuthEnabled: boolean; onSubmit: (payload: { name?: string; email: string; password: string }) => Promise; onFieldChange?: () => void; }; export function AuthForm({ mode, isSubmitting, error, googleOAuthEnabled, onSubmit, onFieldChange }: AuthFormProps) { const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); async function handleSubmit(event: FormEvent) { event.preventDefault(); await onSubmit({ name, email, password }); } const handleGoogleLogin = useCallback(async (e: React.MouseEvent) => { e.preventDefault(); const platform = isTauri() ? 'tauri' : 'web'; const googleUrl = `${apiBaseUrl}/api/v1/auth/google?platform=${platform}`; await openUrl(googleUrl); }, []); return ( {mode === 'login' ? 'Masuk Akun ZeaVis Edu' : 'Buat akun ZeaVis Edu'} {mode === 'login' ? 'Masuk untuk menyimpan diagnosis dan mengikuti review pakar.' : 'Daftar untuk menyimpan diagnosis dan mengikuti review pakar.'}
{mode === 'register' && (
{ setName(event.target.value); onFieldChange?.(); }} required />
)}
{ setEmail(event.target.value); onFieldChange?.(); }} required />
{ setPassword(event.target.value); onFieldChange?.(); }} required />
{error &&

{error}

}
{googleOAuthEnabled && ( )}
); }