import React, { useState, useEffect } from 'react' import { Eye, EyeOff } from 'lucide-react' import { useAuth } from '../../contexts/AuthContext' import { invalidateSystemConfig } from '../../lib/config' import { OnboardingModeSelector } from '../auth/OnboardingModeSelector' import type { UserMode } from '../../lib/onboarding' import { useLanguage } from '../../contexts/LanguageContext' import { LanguageSwitcher } from '../common/LanguageSwitcher' import type { Language } from '../../i18n/translations' const labels = { zh: { welcome: '欢迎使用 NOFX', subtitle: '创建账号开始使用', email: '邮箱', emailPlaceholder: 'you@example.com', password: '密码', passwordPlaceholder: '至少 8 个字符', passwordError: '密码至少需要 8 个字符', submit: '开始使用', submitting: '创建中...', setupFailed: '创建失败,请重试', singleUser: '单用户系统 — 这是唯一的账号', }, en: { welcome: 'Welcome to NOFX', subtitle: 'Create your account to get started', email: 'Email', emailPlaceholder: 'you@example.com', password: 'Password', passwordPlaceholder: 'At least 8 characters', passwordError: 'Password must be at least 8 characters', submit: 'Get Started', submitting: 'Creating account...', setupFailed: 'Setup failed, please try again', singleUser: 'Single-user system — this is the only account', }, id: { welcome: 'Selamat Datang di NOFX', subtitle: 'Buat akun untuk memulai', email: 'Email', emailPlaceholder: 'you@example.com', password: 'Kata Sandi', passwordPlaceholder: 'Minimal 8 karakter', passwordError: 'Kata sandi minimal 8 karakter', submit: 'Mulai', submitting: 'Membuat akun...', setupFailed: 'Gagal membuat akun, coba lagi', singleUser: 'Sistem pengguna tunggal — ini satu-satunya akun', }, } as const export function SetupPage() { const { language } = useLanguage() const { register } = useAuth() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState('') const [loading, setLoading] = useState(false) const [mode, setMode] = useState('beginner') // Clean up any stale auth/onboarding state on setup page load useEffect(() => { localStorage.removeItem('auth_token') localStorage.removeItem('auth_user') localStorage.removeItem('user_id') localStorage.removeItem('nofx_beginner_onboarding_completed') localStorage.removeItem('nofx_beginner_wallet_address') }, []) const l = labels[language as keyof typeof labels] || labels.en const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError('') if (password.length < 8) { setError(l.passwordError) return } setLoading(true) const result = await register(email, password, undefined, mode) setLoading(false) if (result.success) { invalidateSystemConfig() } else { setError(result.message || l.setupFailed) } } return (
{/* Decorative background - simulates the main app behind a modal */} {/* Grid */}
{/* Glow spots */}
{/* Faux UI elements in background to simulate the app */}
{/* Fake header bar */}
{/* Fake content cards */}
{[...Array(4)].map((_, i) => (
))}
{/* Blur overlay */}
{/* Modal card */}
{/* Logo + Title */}
NOFX

{l.welcome}

{l.subtitle}

{/* Card */}
{/* Email */}
setEmail(e.target.value)} className="w-full bg-black/40 border border-white/10 rounded-xl px-4 py-3 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" placeholder={l.emailPlaceholder} required autoFocus />
{/* Password */}
setPassword(e.target.value)} className="w-full bg-black/40 border border-white/10 rounded-xl px-4 py-3 pr-11 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" placeholder={l.passwordPlaceholder} required />
{/* Error */} {error && (

{error}

)} {/* Submit */}

{l.singleUser}

) }