// ============================================================ // BREED QUIZ — "Past dit ras bij jou?" (per-ras mini-quiz) // Werkt voor elk van de 200 rassen. Geeft een match-score voor // DIT ras, een verdict, aandachtspunten, en als het niet past // een beter passend alternatief. // ============================================================ const { useState: useBQ } = React; function BreedQuiz({ breed, onSelectBreed, onNav }) { const Q = window.DATA.BREED_QUIZ; const [step, setStep] = useBQ(0); const [answers, setAnswers] = useBQ({}); const [done, setDone] = useBQ(false); const current = Q[step]; const progress = (step / Q.length) * 100; const select = (v) => { const next = { ...answers, [current.id]: v }; setAnswers(next); setTimeout(() => { if (step < Q.length - 1) setStep(step + 1); else setDone(true); }, 220); }; const restart = () => { setAnswers({}); setStep(0); setDone(false); }; if (done) { const score = window.DATA.scoreBreedFit(breed, answers); const verdict = window.DATA.fitVerdict(score); const alt = (verdict.key !== 'top') ? window.DATA.bestAlternative(breed, answers) : null; const showAlt = alt && alt.s >= score + 10; return (
Jouw uitslag

Past de {breed.name} bij jou?

{score}%
{verdict.label}

{verdict.note}

Past goed bij {breed.unique ? breed.unique.perfectFor : breed.short}
Let op {breed.unique ? breed.unique.notFor : 'Verdiep je in de eigenschappen voordat je beslist.'}
{showAlt && (
onSelectBreed && onSelectBreed(alt.b)}>
Misschien beter bij jou {alt.b.name} {alt.s}% match · {alt.b.size} · {alt.b.group}
)}
); } return (
Mini-quiz · {Q.length} vragen

Past de {breed.name} bij jou?

Vijf korte vragen, meteen een eerlijk antwoord voor juist dit ras.

{String(step + 1).padStart(2, '0')} / {String(Q.length).padStart(2, '0')}

{current.q}

{current.opts.map((o) => ( ))}
{step > 0 && }
); } window.BreedQuiz = BreedQuiz;