import { useState } from 'react'; import { QRCodeSVG } from 'qrcode.react'; import { useGameStore } from '../store/gameStore'; import { emit } from '../lib/socket'; import RulesModal from '../components/RulesModal'; type Mode = 'login' | 'register'; const inputCls = 'bg-circle text-green-score rounded-lg px-4 py-2 border border-gold/20 outline-none focus:border-gold/60 focus:ring-1 focus:ring-gold/30 placeholder:text-green-dim/60'; export default function Auth() { const [mode, setMode] = useState('login'); const [username, setUsername] = useState(localStorage.getItem('bridzik_name') ?? ''); const [code, setCode] = useState(''); const [showRules, setShowRules] = useState(false); const registration = useGameStore((s) => s.registration); const setRegistration = useGameStore((s) => s.setRegistration); const remember = (name: string) => localStorage.setItem('bridzik_name', name.trim()); const handleLogin = (e: React.FormEvent) => { e.preventDefault(); if (!username.trim() || code.trim().length < 6) return; remember(username); emit.login(username.trim(), code.trim()); }; const handleRegisterStart = (e: React.FormEvent) => { e.preventDefault(); if (!username.trim()) return; remember(username); emit.registerAccount(username.trim()); }; const handleConfirm = (e: React.FormEvent) => { e.preventDefault(); if (code.trim().length < 6) return; emit.confirmAccount(username.trim(), code.trim()); }; const switchMode = (m: Mode) => { setMode(m); setCode(''); setRegistration(null); }; return (

Bridžik

Prihlás sa kódom z aplikácie (napr. Google Authenticator).

{mode === 'login' && (
setUsername(e.target.value)} maxLength={40} placeholder="Používateľské meno" className={inputCls} /> setCode(e.target.value.replace(/\D/g, ''))} maxLength={6} placeholder="6-miestny kód" className={`${inputCls} tracking-widest font-mono`} />
)} {mode === 'register' && !registration && (
setUsername(e.target.value)} maxLength={40} placeholder="Zvoľ si používateľské meno" className={inputCls} />
)} {mode === 'register' && registration && (

Naskenuj QR kód do autentifikačnej aplikácie a opíš aktuálny kód.

Alebo zadaj ručne kľúč: {registration.secret}
setCode(e.target.value.replace(/\D/g, ''))} maxLength={6} placeholder="6-miestny kód" className={`${inputCls} tracking-widest font-mono`} />
)} {/* Rules are reachable before login — quiet link with the velvet divider motif. */}
{showRules && setShowRules(false)} />}
); }