// ============================================================ // SCREENS — Home, Quiz, Result, BreedDetail, Catalog, Shop, Guide // ============================================================ const { useState: useS, useEffect: useE, useMemo: useM, useRef: useR } = React; function HomeScreen({ onNav, onSelectBreed, t }) { const featured = window.DATA.BREEDS.slice(0, 8); const dutchBreeds = window.DATA.BREEDS.filter(b => b.tags?.includes('nederlands')); const heroLayout = t.heroLayout || 'split-right'; const heroContent = (
Vind jouw ideale viervoeter

Welke hond
past echt
bij jou?

Beantwoord 13 eerlijke vragen en wij koppelen je aan je top 3 rassen — met diepgaande analyses, weekschema's en kostenplaatjes. Zonder gokwerk.

200+
Hondenrassen
volledig geanalyseerd
13
Vragen voor
een echte match
94%
Tevreden
baasjes (n=2.847)
); const heroImage =
; const heroTag = (
2.847 mensen vonden hun match deze maand
); return ( <>
{heroContent} {heroLayout !== 'centered' && heroImage}
{heroTag}
Hondenmatch · 4 minuten

Niet elke hond past
bij elk leven.

Onze quiz kijkt verder dan alleen "ik wil een schattige hond". We wegen je woonsituatie, energieniveau, ervaring en budget. Je krijgt een eerlijke top 3.

Vraag 3 van 13
Wat past het best bij jouw levensstijl?
Rustig — wandelingen, op de bank
Gemiddeld — fietsen, boswandelingen
Actief — hardlopen, sporten met hond
Populaire rassen

Een kleine selectie
uit onze 200+ rassen

Van de altijd vrolijke Labrador tot de eigenwijze Shiba Inu — elk ras heeft een eigen verhaal.

{featured.map(b => onSelectBreed(b)} />)}
Made in Holland

Nederlandse rassen
die we koesteren

{dutchBreeds.map(b => onSelectBreed(b)} />)}
Lange-lees · 8 min

Waarom Nederlandse rassen zo bijzonder zijn

Drentse Patrijshond, Stabij, Kooikerhondje — onze polders bracht honden voort die zachtaardig en allround zijn.

Webshop

Alles voor een
gelukkige hond

Van de eerste mand tot de senior-supplementen. Wij testen, jij geniet.

{window.DATA.CATEGORIES.map(c => (
onNav('shop')}>
{c.icon}
{c.name}
{c.count} producten
))}
PHOTO · DOG TRAINER WITH PUP
Het verhaal

Een hond is voor het leven —
laten we de juiste keuze maken.

Elk jaar belanden 25.000 honden in Nederlandse asielen, vaak omdat het niet de juiste match was.

Pootje is gebouwd door dierenartsen, gedragsdeskundigen en — vooral — bezorgde hondenliefhebbers.

); } function QuizScreen({ onComplete, t }) { const [step, setStep] = useS(0); const [answers, setAnswers] = useS({}); const [direction, setDirection] = useS(0); const Q = window.DATA.QUIZ; const current = Q[step]; const progress = (step / Q.length) * 100; const select = (v) => { setAnswers({ ...answers, [current.id]: v }); setTimeout(() => { if (step < Q.length - 1) { setDirection(1); setStep(step + 1); } else { onComplete({ ...answers, [current.id]: v }); } }, 280); }; const back = () => { if (step > 0) { setDirection(-1); setStep(step - 1); } }; return (
{String(step + 1).padStart(2, '0')} / {String(Q.length).padStart(2, '0')}
Hondenmatch
Vraag {step + 1}

{current.question}

{current.help &&

{current.help}

}
{current.options.map(opt => ( ))}
Druk op een antwoord om verder te gaan
); } function ResultScreen({ answers, onNav, onSelectBreed, t }) { const ranked = useM(() => { return [...window.DATA.ALL_BREEDS] .map(b => ({ ...b, score: window.DATA.scoreBreed(b, answers) })) .sort((a, b) => b.score - a.score); }, [answers]); const top = ranked[0]; const [revealed, setRevealed] = useS(false); useE(() => { const tm = setTimeout(() => setRevealed(true), 600); return () => clearTimeout(tm); }, []); return (
· Jouw match ·

Jij past bij
{top.name}

Geschiktheid{top.score}%

{top.name}

{top.group} · {top.size} · {top.lifespan} · {top.price}
PHOTO · {top.name.toUpperCase()}

Waarom deze match? {top.short}

Karaktereigenschappen

Ook interessant

{ranked.slice(1, 4).map(b => (
onSelectBreed(b)}>
🐶
{b.name}
{b.score}% match
))}
Pootje Plus

Ontgrendel alle 200+ ras-gidsen

Compleet kostenoverzicht, weekschema en persoonlijk matchadvies per ras.

); } function BreedDetailScreen({ breed, onBack, onSelectBreed, onNav }) { if (!breed) return null; const [bqDone, setBqDone] = useS(false); const bundle = window.DATA.bundleForBreed(breed); const related = window.DATA.BREEDS.filter(b => b.group === breed.group && b.id !== breed.id).slice(0, 3); return (
{breed.group} {breed.origin} {breed.size} {breed.lifespan}

{breed.name}

{breed.short}

FOTO · {breed.name.toUpperCase()}
{[ ['Gewicht', breed.weight], ['Levensspan', breed.lifespan], ['Oorsprong', breed.origin], ['Prijs pup', breed.price], ['Beweging', breed.care.beweging], ['Voer/mnd', breed.care.voer], ].map(([l, v]) => (
{l}
{v}
))}
{breed.unique && ( <>
Karakter-eigenaardigheid {breed.unique.quirk}
Perfect voor {breed.unique.perfectFor}
Niet voor {breed.unique.notFor}
Weet dit voor je begint {breed.unique.knowBefore}
Rode vlaggen {breed.unique.redFlags}
)}

Karaktereigenschappen

Kosten per maand

Dagschema (voorbeeld)

Aanbevolen voor {breed.name}

Wat heb je allemaal nodig?

{bundle.map(p => (
{p.tag}
{p.brand} {p.name} €{p.price.toFixed(2)}
))}
{related.length > 0 && (
Vergelijkbare rassen

Ook interessant in {breed.group}

{related.map(b => onSelectBreed(b)} />)}
)}
); } function CatalogScreen({ onSelectBreed }) { const [filter, setFilter] = useS('Alle'); const [search, setSearch] = useS(''); const groups = ['Alle', ...new Set(window.DATA.ALL_BREEDS.filter(b => !b.isFiller).map(b => b.group))]; const filtered = useM(() => { return window.DATA.ALL_BREEDS.filter(b => { const matchGroup = filter === 'Alle' || b.group === filter; const matchSearch = !search || b.name.toLowerCase().includes(search.toLowerCase()); return matchGroup && matchSearch; }); }, [filter, search]); return (
Alle rassen

200+ hondenrassen,
volledig geanalyseerd.

Van de trouwe Labrador tot de exotische Xoloitzcuintli — elk ras heeft z’n eigen karakter, zorgbehoefte en perfecte baasje.

setSearch(e.target.value)} placeholder="Zoek een ras..." style={{ width: '100%', maxWidth: 440, padding: '12px 18px', border: '1px solid var(--line)', borderRadius: 999, fontSize: 15, background: 'white', marginBottom: 8, display: 'block' }} />
{groups.map(g => ( ))}
{filtered.map(b => !b.isFiller && onSelectBreed(b)} />)}
); } function ShopScreen({ cart, onAdd }) { const [cat, setCat] = useS('alle'); const filtered = cat === 'alle' ? window.DATA.PRODUCTS : window.DATA.PRODUCTS.filter(p => p.cat === cat); return (
Webshop

Alles voor een
gelukkige hond.

Geselecteerde producten, getest en goedgekeurd door Pootje-redacteuren.

{[{ id: 'alle', name: 'Alles', icon: '🐾', count: window.DATA.PRODUCTS.length }, ...window.DATA.CATEGORIES].map(c => (
setCat(c.id)} style={cat === c.id ? { borderColor: 'var(--forest)', background: 'var(--paper)' } : {}}>
{c.icon}
{c.name}
{c.count} items
))}
{filtered.map(p => )}
); } function GuideScreen({ onNav }) { const articles = [ { tag: 'Gedrag', title: 'Hoe leer je je hond alleen te zijn?', min: 6, img: 'GEDRAG' }, { tag: 'Voeding', title: 'Rauw voer: voor- en nadelen', min: 8, img: 'VOEDING' }, { tag: 'Gezondheid', title: 'Vaccinaties: wat is verplicht in NL?', min: 5, img: 'GEZONDHEID' }, { tag: 'Opvoeding', title: 'Clicker-training stap voor stap', min: 10, img: 'OPVOEDING' }, { tag: 'Ras-gidsen', title: 'Border Collie vs. Australian Shepherd', min: 7, img: 'RASSEN' }, { tag: 'Budget', title: 'Wat kost een hond echt per jaar?', min: 4, img: 'BUDGET' }, ]; return (
Kennisbank

Alles over
hondenbezit.

Geschreven door dierenartsen en gedragsdeskundigen. Geen reclame, alleen kennis.

{articles.map((a, i) => (
ARTIKEL · {a.img}
{a.tag} · {a.min} min lezen

{a.title}

))}
Nieuwsbrief

Hondenkennis in je inbox

Wekelijks: gedrag, gezondheid en ras-inzichten van onze experts.

); } Object.assign(window, { HomeScreen, QuizScreen, ResultScreen, BreedDetailScreen, CatalogScreen, ShopScreen, GuideScreen });