'use client' import React, { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import { useTheme } from '@/lib/ThemeContext' import { useLanguage } from '@/lib/LanguageContext' interface LangOption { code: string name: string name_native: string flag: string rtl: boolean } const STORAGE_KEY = 'bp_native_language' export default function OnboardingPage() { const router = useRouter() const { isDark } = useTheme() const { setLanguage } = useLanguage() const [languages, setLanguages] = useState([]) const [selected, setSelected] = useState(null) const [role, setRole] = useState<'student' | 'parent'>('student') const [saving, setSaving] = useState(false) // Skip if already onboarded useEffect(() => { const stored = localStorage.getItem(STORAGE_KEY) if (stored) router.replace('/learn') }, [router]) // Load supported languages useEffect(() => { fetch('/api/user/languages') .then(r => r.ok ? r.json() : null) .then(d => { if (d?.languages) setLanguages(d.languages) }) .catch(() => { // Fallback if API unavailable setLanguages([ { code: 'de', name: 'Deutsch', name_native: 'Deutsch', flag: 'de', rtl: false }, { code: 'tr', name: 'Tuerkisch', name_native: 'Turkce', flag: 'tr', rtl: false }, { code: 'ar', name: 'Arabisch', name_native: '\u0627\u0644\u0639\u0631\u0628\u064a\u0629', flag: 'sy', rtl: true }, { code: 'uk', name: 'Ukrainisch', name_native: '\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430', flag: 'ua', rtl: false }, { code: 'ru', name: 'Russisch', name_native: '\u0420\u0443\u0441\u0441\u043a\u0438\u0439', flag: 'ru', rtl: false }, { code: 'pl', name: 'Polnisch', name_native: 'Polski', flag: 'pl', rtl: false }, ]) }) }, []) const handleContinue = async () => { if (!selected) return setSaving(true) // Save to backend try { await fetch('/api/user/language-preference?user_id=default', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ native_language: selected, role }), }) } catch {} // Save locally + set UI language localStorage.setItem(STORAGE_KEY, selected) setLanguage(selected) // Navigate if (role === 'parent') { router.push('/parent') } else { router.push('/learn') } } const greetings: Record = { de: 'Willkommen!', en: 'Welcome!', tr: 'Hos geldiniz!', ar: '\u0645\u0631\u062d\u0628\u0627!', uk: '\u041b\u0430\u0441\u043a\u0430\u0432\u043e \u043f\u0440\u043e\u0441\u0438\u043c\u043e!', ru: '\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c!', pl: 'Witamy!', } return (
{/* Greeting in multiple languages */}
{selected ? greetings[selected] || greetings.de : ( {Object.values(greetings).slice(0, 4).join(' / ')} )}

BreakPilot Sprache

{/* Role Selection */}
{(['student', 'parent'] as const).map(r => ( ))}
{/* Question */}

{role === 'student' ? 'Was ist deine Muttersprache?' : 'Welche Sprache sprechen Sie?'}

{/* Language Grid */}
{languages.map(lang => ( ))}
{/* Continue */}
) }