/* ============================================================ BAN YARO — Gründer-Seite Öffentliches Leaderboard der 100 Gründer & Partner. ============================================================ */ window.Page_gruender = (() => { let _container = null; async function init(container, appState) { _container = container; _render(); _load(); } function refresh() { _load(); } function onDogChange() {} function _render() { _container.innerHTML = `
🏆

Die 100 Gründer von Ban Yaro

Nur 100 Menschen weltweit können sagen: Ich war von Anfang an dabei. Diese Plätze werden nie wieder vergeben.

Lade…
`; } async function _load() { const el = _container.querySelector('#grnd-content'); try { const d = await API.get('/partner/founders/stats'); if (!d || typeof d.total === 'undefined') throw new Error('Ungültige Antwort vom Server.'); el.innerHTML = _renderStats(d); } catch (e) { el.innerHTML = `

${e.message || 'Fehler beim Laden.'}

`; } } function _renderStats(d) { const pct = Math.round((d.total / d.max) * 100); const open = d.open; return `
${d.total} / ${d.max} Gründer ${open > 0 ? `${open} Plätze frei` : 'Geschlossen'}
${open > 0 ? `

Bist du dabei? Frag einen unserer Partner nach ihrem Einladungscode.

` : `

Alle 100 Gründer-Plätze sind vergeben. Diese Gruppe ist für immer geschlossen.

`}
${_renderSystem(open)} ${d.partners.length > 0 ? `

${UI.icon('trophy')} Partner-Challenge

Unsere Partner treten gegeneinander an — wer bringt die meisten Gründer?

${d.partners.map((p, i) => { const medal = i === 0 ? '🥇' : i === 1 ? '🥈' : i === 2 ? '🥉' : `#${i+1}`; const barPct = d.partners[0].uses > 0 ? Math.round((p.uses / d.partners[0].uses) * 100) : 0; return `
${medal}
${UI.escape(p.label)}
${p.uses}
`; }).join('')}
` : ''} ${d.founders.length > 0 ? `

${UI.icon('users')} Die Gründer

${d.founders.map(f => `
#${f.founder_number} ${UI.escape(f.name)}
`).join('')} ${Array.from({length: d.open}, (_, i) => `
#${d.total + i + 1} frei
`).join('')}
` : `

Noch keine Gründer — sei der Erste!

`} `; } // ---------------------------------------------------------- // "Wie funktioniert das?" — das Gründer-System erklären // ---------------------------------------------------------- function _renderSystem(open) { const step = (n, icon, title, text) => `
${n}
${UI.icon(icon)} ${title}
${text}
`; const benefit = (icon, title, text) => `
${icon}
${title}
${text}
`; return `

${UI.icon('seal-check')} Was steckt dahinter?

Ban Yaro wird von Hundemenschen für Hundemenschen aufgebaut. Die ersten 100, die über einen unserer Partner an Bord kommen, bekommen einen festen Platz in der Geschichte der App — sichtbar, dauerhaft und nie wieder vergeben.

So wirst du Gründer
${step(1, 'ticket', 'Einladungscode eines Partners', 'Unsere Partner (Hundeblogs, Trainer:innen, Vereine) haben persönliche Einladungscodes — als Link, QR-Code auf Sticker oder zum Eintippen. Registrierst du dich darüber, ist dein Gründer-Platz reserviert.')} ${step(2, 'paw-print', 'Erstes Hundeprofil anlegen', 'Sobald du deinen Hund anlegst, wird der reservierte Platz fest dir zugeschrieben — du erhältst deine feste Gründer-Nummer in der Reihenfolge der Anmeldung.')} ${step(3, 'seal-check', 'Für immer Gründer #N', 'Deine Nummer bleibt dir — egal was kommt. Auch wenn alle 100 Plätze vergeben sind, behältst du deinen.')}
Deine Vorteile
${benefit('🏅', 'Nummerierte Gründer-Badge', 'Ein „Gründer #N"-Abzeichen, dauerhaft sichtbar in deinem Profil und neben jedem Forum-Beitrag.')} ${benefit('👑', 'Lebenslang Ban Yaro Pro', 'Alle Pro-Funktionen — kostenlos, für immer. Auch wenn Pro später etwas kostet, bleibt es für Gründer gratis.')} ${benefit('🤝', 'Freunde mitbringen lohnt sich', 'Wer sich über deine Einladung registriert, bekommt Ban Yaro Pro dauerhaft zum halben Preis.')} ${benefit('🌱', 'Teil der Geschichte', 'Du gehörst zu den Menschen, die Ban Yaro von Anfang an getragen haben — das bleibt.')}
${open > 0 ? `Noch ${open} von 100 Plätzen frei. Du kennst keinen Partner? Hier siehst du, wer gerade einlädt.` : `Alle 100 Plätze sind vergeben — diese Gruppe ist für immer geschlossen.`}
`; } return { init, refresh, onDogChange }; })();